Most engineering planning problems are not caused by a lack of tickets.
They are caused by unclear conversion points.
An idea becomes a requirement too late. A requirement becomes a technical plan too casually. A technical plan becomes implementation work before the team has agreed on risks, constraints, tests, or ownership. Then the implementation gets blamed for problems that were already present in the planning artifacts.
This research starts from a practical question:
What should be known, written, clarified, assessed, approved, and tested before engineering development begins?
The answer is not “write more documents.”
The answer is:
- create the minimum artifact set needed to make decisions explicit
- preserve traceability from business intent to test evidence
- separate product requirements from technical design
- force clarification before implementation
- make task decomposition reviewable before coding starts
- use prompts as a manual operating system when you do not have tooling yet
- use a structured workflow when you need speed, consistency, and repeatability
On April 29, 2026, I reviewed current sources from GitHub, NIST, The Scrum Guide, Agile Alliance, NASA’s systems engineering handbook, SWEBOK, and the GitHub Spec Kit repository. Source links are listed at the end.
TL;DR
- Correct engineering development planning needs a clear chain from problem to requirements to analysis to plan to tasks to implementation to test evidence.
- The core documents are:
- project principles
- business case or problem brief
- feature specification
- clarification log
- requirements document
- acceptance criteria
- technical plan
- risk and dependency assessment
- test strategy
- implementation task list
- release and rollback plan
- decision log
- You can run the whole process manually with prompts, but you must be disciplined about artifacts and approval gates.
- The manual prompt-only process works best when each prompt produces one artifact and one decision.
- Spec Kit improves the workflow by giving the same planning flow a repeatable command structure: constitution, specify, clarify, plan, tasks, analyze, implement, and supporting checklists.
What “Correct Planning” Means
Correct planning is not a promise that the plan will never change.
Correct planning means the team can answer these questions before implementation:
- What problem are we solving?
- Who is affected?
- What outcome are we trying to change?
- What is explicitly in scope?
- What is explicitly out of scope?
- What requirements are functional?
- What requirements are non-functional?
- What assumptions are still unresolved?
- What technical constraints are already known?
- What risks could change the implementation approach?
- What tests prove the work is done?
- What documentation or approvals are required before release?
This matches a long-running principle in requirements engineering: requirements should be elicited, analyzed, specified, validated, and managed. SWEBOK describes requirements work as more than writing a list; it includes elicitation, analysis, specification, validation, and practical considerations such as process and tools.
In simpler delivery language:
planning is correct when it produces decisions engineers can safely build from.
The Artifact Set Every Development Effort Needs
Not every project needs a giant document package.
But every serious development effort needs some version of these artifacts.
1. Project Principles
This is the short governing document.
It should define:
- product priorities
- engineering standards
- architecture principles
- security expectations
- testing expectations
- documentation expectations
- review and approval rules
This prevents every feature from re-litigating the same questions.
Example decisions:
- “Every user-facing feature must define acceptance criteria before implementation.”
- “Every change touching authentication, billing, or data export requires a risk review.”
- “No feature is complete without automated tests or an explicit approved test exception.”
- “Performance-sensitive paths must include baseline and post-change measurements.”
2. Problem Brief
This document explains why the work exists.
It should include:
- current problem
- affected users
- business or operational impact
- evidence for the problem
- desired outcome
- non-goals
- success metrics
This is not the feature spec yet. It is the reason the feature deserves engineering time.
3. Feature Specification
This is the user-facing contract.
It should describe:
- personas or actors
- user journeys
- functional requirements
- non-functional requirements
- edge cases
- error states
- data inputs and outputs
- accessibility requirements
- privacy and security expectations
- analytics or observability needs
Good feature specs avoid implementation details unless the implementation choice is itself a requirement.
4. Clarification Log
Most teams under-document uncertainty.
A clarification log captures:
- unanswered questions
- decisions made
- decision owner
- date answered
- impact if unanswered
This matters because hidden ambiguity is one of the biggest sources of rework.
5. Requirement Inventory
Requirements should be numbered or named so they can be traced.
Example:
| ID | Requirement | Type | Priority | Verification |
|---|---|---|---|---|
| FR-001 | Users can save a dashboard view with a unique name. | Functional | Must | Unit, integration, E2E |
| NFR-001 | Saved view load time remains under 500 ms at p95. | Performance | Should | Load test |
| SEC-001 | Users cannot access saved views owned by another account. | Security | Must | Authorization test |
The key is not the table format.
The key is that every requirement can later map to a test or explicit review.
6. Acceptance Criteria
Acceptance criteria define observable completion.
They should be written so a reviewer can decide pass or fail.
Useful acceptance criteria include:
- happy path
- permission boundaries
- invalid input
- empty states
- failure states
- migration or backwards compatibility behavior
- accessibility expectations
- analytics and logging expectations
The Agile Alliance describes INVEST as a useful mnemonic for user stories: independent, negotiable, valuable, estimable, small, and testable. For planning, “testable” is the word to protect. If a story is not testable, implementation will drift.
7. Technical Plan
The technical plan translates requirements into an implementation approach.
It should include:
- affected systems
- architecture changes
- data model changes
- API changes
- dependency changes
- migration strategy
- security model
- performance considerations
- observability changes
- rollout strategy
- rollback strategy
- alternatives considered
This is where engineers should challenge feasibility before code starts.
8. Risk and Dependency Assessment
This artifact prevents surprise.
It should include:
- technical risks
- product risks
- security risks
- privacy risks
- operational risks
- dependency risks
- sequencing constraints
- required approvals
- unknowns that could change the plan
NIST’s Secure Software Development Framework is useful here because it treats secure development as part of the process, not a last-minute review. It includes practices around defining security requirements, protecting software, producing well-secured software, and responding to vulnerabilities.
9. Test Strategy
Testing should be planned before implementation because tests are the proof that requirements were met.
The test strategy should include:
- unit tests
- integration tests
- contract tests
- end-to-end tests
- accessibility checks
- security checks
- performance checks
- regression tests
- manual exploratory checks
- test data requirements
The Scrum Guide’s Definition of Done concept is useful here: quality expectations should be known, shared, and applied to increments of work. In planning terms, do not wait until the PR to decide what “done” means.
10. Implementation Task List
Tasks should be small enough to execute and review.
A useful task list includes:
- setup tasks
- data model tasks
- backend tasks
- frontend tasks
- test tasks
- migration tasks
- documentation tasks
- release tasks
- validation tasks
Each task should point back to at least one requirement or acceptance criterion.
11. Release and Rollback Plan
This document should answer:
- How will this be released?
- Is a feature flag needed?
- What is the rollout order?
- What monitoring confirms success?
- What alert would indicate failure?
- How do we roll back safely?
- Who owns the release decision?
12. Decision Log
The decision log protects context.
It should include:
- decision
- options considered
- chosen option
- reason
- date
- owner
- consequences
This is especially valuable for AI-assisted development because AI tools can generate plausible implementation paths without knowing which previous decisions are binding.
The Approval Gates
Planning artifacts are only useful if they create checkpoints.
A practical engineering development process has these gates:
| Gate | Approval Question | Required Artifacts |
|---|---|---|
| Intake | Is this problem worth solving now? | Problem brief, success metric |
| Specification | Do we understand the desired behavior? | Feature spec, requirements, acceptance criteria |
| Clarification | Are critical unknowns answered? | Clarification log |
| Technical Planning | Is the implementation approach sound? | Technical plan, risk assessment, test strategy |
| Tasking | Is the work decomposed enough to execute? | Task list mapped to requirements |
| Implementation | Does the code satisfy the approved plan? | PR, tests, documentation updates |
| Validation | Can we prove the requirements are met? | Test evidence, review notes, release checklist |
| Release | Can we safely ship and recover? | Rollout, monitoring, rollback plan |
The point is not bureaucracy.
The point is to stop pretending that implementation can cleanly fix planning gaps after the fact.
Manual Prompt-Only Process
You can run the entire process using only prompts.
The trick is to avoid one giant prompt.
Instead, treat prompts as a sequence of artifact generators and artifact reviewers.
Phase 1: Generate Context
Goal:
- understand the repository
- understand the business context
- identify relevant files, systems, and constraints
Prompt:
You are helping prepare an engineering development plan.
Review the available repository, product notes, previous issues, recent PRs, and any relevant documentation.
Produce a context brief with:
- product area
- affected users
- current system behavior
- relevant files or services
- known constraints
- existing patterns to preserve
- open questions
- risks from missing context
Do not propose implementation yet.
Approval output:
- context brief
- list of missing information
- owner for each missing input
Phase 2: Clarify the Problem
Goal:
- move from vague request to specific problem statement
Prompt:
Using the context brief, create a problem clarification document.
Separate:
- confirmed facts
- assumptions
- unknowns
- decisions needed
- non-goals
- success metrics
Then ask the smallest set of questions required before requirements can be written.
Approval output:
- clarified problem
- non-goals
- success metric
- unanswered questions
Phase 3: Generate Requirements
Goal:
- create explicit requirements before technical design
Prompt:
Create a requirements document for this development effort.
Include:
- functional requirements
- non-functional requirements
- security requirements
- accessibility requirements
- observability requirements
- data and API requirements
- edge cases
- acceptance criteria
Assign stable IDs to each requirement.
Every acceptance criterion must be testable.
Do not include implementation details unless they are strict constraints.
Approval output:
- requirements document
- acceptance criteria
- requirement IDs
Phase 4: Review Requirements for Ambiguity
Goal:
- catch weak requirements before implementation
Prompt:
Review the requirements as a skeptical engineering reviewer.
Find:
- ambiguous words
- hidden assumptions
- missing edge cases
- untestable acceptance criteria
- conflicting requirements
- missing security or privacy considerations
- missing operational requirements
For each issue, explain why it matters and suggest a precise rewrite.
Approval output:
- revised requirements
- clarification log
- approved requirement set
Phase 5: Technical Analysis
Goal:
- translate approved requirements into an implementation approach
Prompt:
Create a technical analysis for the approved requirements.
Include:
- affected architecture
- relevant files and modules
- data model changes
- API changes
- UI changes
- integrations
- migrations
- security model
- performance considerations
- observability plan
- alternatives considered
- recommended approach
Map each technical decision back to requirement IDs.
Approval output:
- technical analysis
- recommended approach
- alternatives considered
Phase 6: Risk Assessment
Goal:
- identify what could break, delay, or change the plan
Prompt:
Assess the technical plan for delivery risk.
Include:
- implementation risks
- dependency risks
- data migration risks
- security risks
- privacy risks
- testing risks
- rollout risks
- rollback risks
- unknowns that could invalidate the plan
For each risk, provide severity, likelihood, mitigation, and owner.
Approval output:
- risk register
- mitigation plan
- approval requirements
Phase 7: Test Strategy
Goal:
- define proof before coding
Prompt:
Create a test strategy for the approved requirements and technical plan.
For every requirement ID, define:
- test type
- test level
- test data
- expected evidence
- automation status
- manual validation needed, if any
Include regression, security, accessibility, performance, and observability checks where relevant.
Approval output:
- requirement-to-test matrix
- test plan
- known test gaps
Phase 8: Task Breakdown
Goal:
- convert the plan into executable engineering work
Prompt:
Create an implementation task list.
Rules:
- tasks must be independently executable where possible
- tasks must reference requirement IDs
- tasks must include test tasks
- tasks must include documentation tasks
- tasks must include release and validation tasks
- tasks must be ordered by dependency
- tasks must identify which work can happen in parallel
Do not write code yet.
Approval output:
- ordered task list
- parallelization opportunities
- dependency notes
Phase 9: Implementation
Goal:
- execute bounded tasks against approved artifacts
Prompt:
Implement the next approved task from the task list.
Before editing:
- restate the requirement IDs covered
- identify the files expected to change
- identify the tests expected to be added or updated
After editing:
- summarize the change
- list tests run
- list requirement IDs satisfied
- list any deviations from the approved plan
Approval output:
- code change
- tests
- deviation log
Phase 10: Validation and Release
Goal:
- prove the work meets the approved requirements
Prompt:
Validate the completed implementation against the approved artifacts.
Check:
- every requirement ID has evidence
- every acceptance criterion passes
- tests cover expected paths
- security and privacy requirements were addressed
- rollout and rollback plans are ready
- documentation is updated
- unresolved risks are documented
Produce a release readiness report with pass, fail, or needs review for each item.
Approval output:
- validation report
- release checklist
- remaining gaps
Common Manual Process Failure Modes
Prompt-only planning works, but it is fragile.
The most common failures are:
- the assistant mixes requirements and implementation too early
- clarification questions are skipped because the first draft sounds confident
- acceptance criteria are vague
- risk analysis is added after coding instead of before coding
- tasks are not mapped back to requirements
- tests are written for the implementation rather than the requirement
- approvals happen in chat but are not preserved as artifacts
- context changes without regenerating the plan
- the implementation prompt loses track of earlier decisions
The solution is not a bigger prompt.
The solution is a repeatable artifact flow.
Where GitHub Spec Kit Fits
GitHub Spec Kit is valuable because it turns the manual process above into a structured spec-driven workflow.
The GitHub repository describes Spec Kit as a toolkit for spec-driven development. The workflow is designed around a sequence of commands and artifacts that help teams move from intent to specification, clarification, planning, tasking, analysis, and implementation.
In practical terms, it gives engineering teams a faster way to run the same disciplined planning loop:
| Manual Phase | Spec Kit Equivalent |
|---|---|
| Project principles | Constitution |
| Problem and feature request | Specify |
| Clarification log | Clarify |
| Technical analysis | Plan |
| Task breakdown | Tasks |
| Consistency review | Analyze and checklist |
| Implementation | Implement |
The important point is not the command names.
The important point is that the workflow preserves phase separation.
Why It Is Faster
Spec Kit reduces repeated prompt design.
Instead of manually writing a new prompt for every phase, the team can use a known sequence:
constitution
-> specify
-> clarify
-> plan
-> tasks
-> analyze
-> implement
This is faster because:
- the artifact structure is already defined
- the assistant knows which phase it is in
- implementation does not start before planning artifacts exist
- task breakdown happens from approved context
- analysis can compare artifacts for inconsistency
- team members can review files instead of reconstructing chat history
Why It Is More Consistent
Manual prompts depend heavily on whoever writes the prompt that day.
Spec Kit makes the workflow consistent by creating a shared operating pattern:
- every feature starts from a known feature context
- every feature has a spec artifact
- clarification is an explicit phase
- technical planning is separate from requirements
- tasks are generated from the plan
- implementation is driven by the task list
This reduces variation between teams, projects, and individual AI sessions.
Why It Is More Solid
The planning process becomes stronger because artifacts can be reviewed independently.
For example:
- product can review the spec before engineering design
- engineering can review the plan before tasking
- QA can review acceptance criteria and test strategy
- security can review risk areas before code lands
- release owners can review rollout and rollback notes
This is the difference between “the AI said it understood” and “the team has approved artifacts.”
Why It Is Repeatable
Repeatability matters when the team wants to scale AI-assisted development beyond one person.
A repeatable process means:
- new team members know where to start
- reviewers know what to inspect
- AI agents get the same context shape each time
- work can be split across branches or worktrees more safely
- requirements, plans, and tasks can be compared across features
- retrospectives can improve the process instead of blaming individuals
This is also where issue tracking becomes useful.
GitHub Issues is designed for tracking ideas, feedback, tasks, and bugs. When planning artifacts are clear, issues become more than a to-do list. They become the execution layer for approved requirements and tasks.
A Recommended Hybrid Workflow
The strongest practical workflow is:
- Use manual prompts for exploration when the idea is still blurry.
- Convert the exploration into approved planning artifacts.
- Use Spec Kit to formalize the feature flow.
- Generate implementation tasks from approved requirements and technical planning.
- Convert tasks into issues when work needs to be assigned or tracked.
- Implement against the task list.
- Validate against requirement IDs and acceptance criteria.
This combines human judgment with repeatable AI-assisted structure.
Minimum Document Checklist
Before implementation starts, have these ready:
- project principles or engineering constitution
- problem brief
- feature specification
- clarification log
- requirement inventory
- acceptance criteria
- technical plan
- risk and dependency assessment
- test strategy
- implementation task list
- release and rollback plan
- decision log
For smaller work, these can be short.
For high-risk work, they should be explicit and approved.
Minimum Approval Checklist
Before implementation starts, confirm:
- product agrees the problem is worth solving
- requirements are testable
- non-goals are explicit
- critical ambiguity is resolved
- engineering agrees the technical plan is feasible
- security and privacy risks are assessed
- test strategy maps to requirements
- tasks are small enough to execute
- rollout and rollback are understood
Before release, confirm:
- every requirement has evidence
- every acceptance criterion is satisfied
- tests have passed
- risks are closed or accepted
- documentation is updated
- monitoring is ready
- rollback is possible
The Core Insight
AI makes it easier to generate code.
That increases the cost of unclear planning.
When code is cheap, the scarce resource becomes judgment:
- deciding what should be built
- deciding what should not be built
- deciding what must be proven
- deciding which risks are acceptable
- deciding when the work is ready
Correct planning for engineering development is the discipline of making those decisions visible before implementation accelerates.
Manual prompts can do it.
Spec Kit makes it faster, more consistent, more solid, and more repeatable.