spec-plan
Original:🇨🇳 Chinese
Translated
Use when you need to execute I1 (Implementation Plan) in the Spec Pack of sdlc-dev, convert requirements/design into `{FEATURE_DIR}/implementation/plan.md` (the single source of truth for execution checklist and status, SSOT), and provide an unambiguous task list for subsequent I2 execution.
3installs
Sourcezixun-github/aisdlc
Added on
NPX Install
npx skill4agent add zixun-github/aisdlc spec-planTags
Translated version includes tags in frontmatterSKILL.md Content (Chinese)
View Translation Comparison →spec-plan(I1: Implementation Plan / plan.md SSOT)
Overview
The goal of I1 is to convert and into a directly executable implementation plan , and use it as the only execution checklist and status SSOT (checkbox tasks + per-task steps + minimum verification + commit points + audit information by repository).
{FEATURE_DIR}/requirements/*{FEATURE_DIR}/design/*{FEATURE_DIR}/implementation/plan.mdAnnounce at start: "I am using the spec-plan skill to create the implementation plan (plan.md SSOT)."
When to use / When not to use
- Use cases
- You need to generate or update (mandatory for I1).
{FEATURE_DIR}/implementation/plan.md - You are ready to enter I2 execution, but there is no "checkable + executable" task list currently.
- You need to generate or update
- Do not use when
- fails and you cannot get
spec-context(you must stop at this point).FEATURE_DIR - Input side SSOT is insufficient: both and
requirements/solution.mddo not exist, and scope/acceptance criteria cannot be traced (you must mark NEEDS CLARIFICATION in plan.md and block entry into I2).requirements/prd.md
Gate Check / Stop Rules (Strictly Enforced)
REQUIRED SUB-SKILL: You are executing to get context, and echoing in the conversation ( is allowed).
spec-contextFEATURE_DIR=...(reuse)Stop immediately (if any of the following is met):
- is not obtained
FEATURE_DIR - Branch/directory is uncertain (you find yourself wanting to "guess the path")
.aisdlc/specs/... - Both and
requirements/solution.mdare missing, making the goal/scope/acceptance criteria untraceablerequirements/prd.md - Any key uncertainty cannot be evidenced in the input (must be written into , and explicitly "block entry into I2")
plan.md/## NEEDS CLARIFICATION
Input / Output (Persistence Conventions)
- Read (progressive disclosure, minimum necessary)
- Project level (must read its index or necessary fragments): ,
project/memory/*,project/contracts/project/adr/ - Spec level (read as little as needed): or
{FEATURE_DIR}/requirements/solution.md(at least one of them){FEATURE_DIR}/requirements/prd.md - Impact analysis (mandatory, if solution.md exists): Must read , extract the list of affected modules and invariants to be followed as constraint inputs for I1 (stop and go back to R1 to fill if missing)
{FEATURE_DIR}/requirements/solution.md#impact-analysis - Spec level (if exists and relevant): ,
{FEATURE_DIR}/design/design.md{FEATURE_DIR}/design/research.md - (if exists; used to identify the static list of submodules that can participate in the implementation)
.gitmodules
- Project level (must read its index or necessary fragments):
- Write (only one)
{FEATURE_DIR}/implementation/plan.md
Small Task Granularity (Reuse writing-plans)
Each step is an action (2-5 minutes), and written in to the extent that "anyone can execute it by copying":
plan.md- "Write failure test" (if applicable) - one step
- "Run to ensure it fails" - one step
- "Implement the minimum code that makes the test pass" - one step
- "Run verification to ensure it passes" - one step
- "Commit" (frequent commits) - one step
Constraint: I1 only writes plans, not code; but each task must state its minimum verification method (command + expected signal).
plan.md
Header (Mandatory)
plan.mdMust start with this header (see for the template):
./assets/plan-template.mdmarkdown
# [Requirement Name] Implementation Plan (SSOT)
> **Required Skill:** `spec-execute` (execute this plan in batches)
> **Context Acquisition:** Must first execute `spec-context` to get context and locate `{FEATURE_DIR}`, stop if failed
**Goal:** [One sentence describing what to deliver]
**Scope:** In / Out
**Architecture:** [2-3 sentences describing the method + key constraints]
**Acceptance Criteria:** [Reference AC/acceptance points from requirements/solution.md or requirements/prd.md]
**Impact Scope:** [Reference the list of affected modules from requirements/solution.md#impact-analysis]
**Invariants to Follow:** [Key API/Data contract invariants extracted from requirements/solution.md#impact-analysis]
**Submodule Scope:** [If `.gitmodules` exists, list the submodules involved in this requirement; write "None" if there are none]
---Plan Body (Mandatory)
- TL;DR: One sentence summarizing the plan goal and scope
- Scope and Boundary: In/Out (aligned with requirements and design)
- Impact Scope and Constraints (required):
- List of affected modules and impact types (reference )
requirements/solution.md#impact-analysis - API/Data contract invariants to be followed (list one by one, mark source module/anchor)
- Cross-module impact and coordination matters (based on dependency graph/impact analysis)
- List of affected modules and impact types (reference
- Code Workspace List (if applicable, required):
- Reference affected submodule paths from
.gitmodules - Mark whether each submodule is
required - Default branch requirement: same name as the root project
CURRENT_BRANCH - If there are exceptions, explicitly record
exception_reason
- Reference affected submodule paths from
- Milestones and Rhythm: Phase split, time estimation, deliverable list
- Dependencies and Resources: External system/team/permission/environment/data dependencies
- Risks and Verification: Risk list, verification method, Owner
- Acceptance Criteria: Key AC and acceptor corresponding to PRD/solution
- NEEDS CLARIFICATION (mandatory): Uniformly list unresolved uncertainties (entry to I2 is not allowed before resolution)
Task Structure (Reuse writing-plans, with SSOT/audit/gate check added)
plan.md- [ ]/- [x]Each task must include:
- Exact file path (create/modify/test)
- Verifiable acceptance points (testable conditions)
- Executable steps (command + expected output/signal)
- Commit points and minimum audit information (record by repo)
branch/commit/pr/changed_files
Task template (example skeleton):
markdown
## Task List (SSOT)
### Task T1: [Task Title]
- [ ] **Status:** Not started / In progress / Completed / Blocked (for blocking, the evidence path must be written)
**Code Repository Scope:**
- Root project:
- Submodule: (if applicable; fill in the path in `.gitmodules` and indicate `required=true/false`)
**Files:**
- Create: `exact/path/to/new.file`
- Modify: `exact/path/to/existing.file` (optional: accurate to paragraph/function)
- Test: `tests/exact/path/to/test.file` (if applicable)
**Acceptance Points:**
- [Verifiable condition 1]
- [Verifiable condition 2]
**Step 1: Write failure test (if applicable)**
- Modification point: `tests/...`
- Run: `[exact command]`
- Expected: FAIL (write the key failure signal you expect to see)
**Step 2: Write minimum implementation**
- Modification point: `path/to/file`
**Step 3: Run verification**
- Run: `[exact command]`
- Expected: PASS (write the key pass signal you expect to see)
**Step 4: Commit (frequent commits; commit message must be in Chinese)**
- Commit message: `[One sentence explaining why (Chinese)]`
- Audit information:
- repo: `root`
branch: `{CURRENT_BRANCH}`
commit: `<TBD>`
pr: `<TBD>`
changed_files: `<TBD>`
- repo: `<submodule path>` (if applicable)
branch: `{CURRENT_BRANCH}`
commit: `<TBD>`
pr: `<TBD>`
changed_files: `<TBD>`Command writing convention: Default for PowerShell; useto separate multiple commands on the same line (do not use;).&&
I1-DoD (Gate Check: No item is missing)
- The plan scope is consistent and traceable with ,
{FEATURE_DIR}/requirements/*{FEATURE_DIR}/design/* - Milestones are clear and acceptable (each item has corresponding deliverables or verifiable standards)
- Dependencies and risks have been listed, and there are minimum verification/mitigation actions (including Owner)
- Key acceptance criteria are traceable (at least reference or
requirements/prd.md)requirements/solution.md - Impact scope and constraints have been injected: contains the "Impact Scope and Constraints" paragraph, and the affected modules and invariants to be followed have been extracted from
plan.mdand listed one by onerequirements/solution.md#impact-analysis - If exists and the impact analysis hits submodules:
.gitmoduleshas declared the affected submodules,plan.mdmark, default same-name branch requirement and exception reasonrequired - There is a "Task List (SSOT)" in , and each task includes: file path, acceptance point, minimum verification method, commit point and audit information
plan.md - Any uncertain items are included in , and entry to I2 is not allowed before resolution
NEEDS CLARIFICATION
Keep in Mind (Quick Reference for High-frequency Rules)
- Always execute first to get context, get
spec-context, stop if failedFEATURE_DIR=... - Always write exact path, exact command and expected signal
- Do not write uncertainty as known; uniformly include it in and block I2
NEEDS CLARIFICATION - DRY, YAGNI, TDD, frequent commits (the commit rhythm should also be reflected in the plan)
- If this implementation involves submodules: first write down the affected submodules and same-name branch requirements in I1; submodule branch creation/verification occurs between I1 -> I2
Execution Handover (After writing plan.md)
After saving the plan, this skill no longer decides the "next step/execution method". Unified practice:
- Announce: has been persisted to disk and is the only SSOT on the implementation side
{FEATURE_DIR}/implementation/plan.md - Tip: Call immediately to route the next step (usually routed to I2:
using-aisdlc, then to Finish:spec-execute)finishing-development - If the user explicitly requires "this session uses subagent-driven-development for parallel execution", you should also call to clarify the routing conclusion before starting execution (to avoid a second routing source)
using-aisdlc
Post-completion Output and Automatic Routing (Mandatory)
After is persisted to disk, must complete the following actions (in order, cannot be omitted):
plan.md- Output ROUTER_SUMMARY (YAML format, for Router decision making):
yaml
ROUTER_SUMMARY:
stage: I1
artifacts:
- "{FEATURE_DIR}/implementation/plan.md"
needs_human_review: false
blocked: false
block_reason: ""
notes: "Soft checkpoint: plan.md is recommended for review; if no hard interrupt is triggered, the Router can continue to advance automatically"-
Executeimmediately: Pass the above
using-aisdlcas routing input to using-aisdlc, and the Router will determine the next step and advance automatically (no need to wait for the user to say "continue").ROUTER_SUMMARY- If the Router determines that it can automatically continue: continue to execute the next worker skill in the same round of conversation (such as I2, Finish, etc.)
- If the Router triggers a hard interrupt: stop and output the blocking reason, required input, and candidate next steps
-
Conversation Output: Before calling using-aisdlc, you can briefly state "The product of this stage has been persisted to disk, and using-aisdlc is being called to route the next step."