用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/evanfang0054/agent-harness --skill writing-plans命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
You MUST use this before any creative work — features, components, behavior changes. Explores intent, requirements, and design before implementation.
Use when implementation is done and tests pass, and the user must choose how to integrate or retain completed branch work.
Use when receiving code review feedback. Verify before implementing; technical correctness over blind agreement.
正在显示 SKILL.md
| name | writing-plans |
| description | Use when you have a spec or requirements for a multi-step task, before touching code |
| when_to_use | [feedforward] Triggered after brainstorming, before implementation, to decompose work into tasks. |
Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
Assume they are a skilled developer, but know almost nothing about our toolset or problem domain. Assume they don't know good test design very well.
Announce at start: "I'm using the writing-plans skill to create the implementation plan."
Save plans to: docs/agent-harness/plans/YYYY-MM-DD-<feature-name>.md
git check-ignore <dir>). If so, inform the user and suggest .agent-harness/plans/ as an alternative, but respect the user's choice.If the spec covers multiple independent subsystems, it should have been broken into sub-project specs during brainstorming. If it wasn't, suggest breaking this into separate plans — one per subsystem. Each plan should produce working, testable software on its own.
大型任务分段: If the task is full-stack, spans multiple apps, includes backend + frontend + AI, or will likely exceed 8 implementation tasks, do not create one monolithic plan. First output a directory-level execution map and 默认拆成多个 plan (for example: infrastructure / backend / frontend / design-polish). Each plan must have its own confirmation gate and testable outcome.
单会话承载上限 (issue #81): A single session should carry at most 2 active plans concurrently. To check the current count before starting a new plan:
docs/agent-harness/plans/*.md (or wherever the project stores plans).status: — if missing, treat as active.active (or status is absent), do not start a third.If a third plan is about to start while two are still in flight, stop and recommend one of:
agent-harness:retrospective to close the current session cleanlyEscape hatch: If multiple plans have hard dependencies (infrastructure + feature on top of it, backend + frontend contract work), stacking is legitimate. Note the dependency chain in the new plan's frontmatter (depends_on: <plan-file>) so the next plan-creation step knows not to count this as independent stacking.
Rationale: hack project sessions stacking 4 plans in one session triggered 8 compacts and ~96KB of accumulated summary text. Each compact forces re-establishing context, inflating input tokens. See loop-detection's semantic-loop section for the cross-reference.
GDD gate: Before writing implementation tasks, check whether the spec has a GDD / gate-driven-test-design artifact when the work carries non-trivial behavior, contract, or regression risk. If missing, stop and tell the user to generate GDD first (or explicitly skip GDD). Do not silently proceed into implementation tasks.
Design sync: If a design doc, prototype, or harness-design artifact exists, the plan must include explicit 设计同步点. Name the design token / interaction constraints, where they land in code, and which task verifies them. Do not let design intent live only in prose.
Before defining tasks, check for sprint contract:
docs/agent-harness/contracts/{feature-name}.contract.mdagent-harness:sprint-contract first
If contract exists: Plan tasks must trace to contract acceptance criteria.
知识库检索约定:开始前先读 docs/agent-harness/index.md,再按主题跳到子目录 index.md,禁止 **/*.md 全局通配。
Before defining tasks, map out which files will be created or modified and what each one is responsible for. This is where decomposition decisions get locked in.
This structure informs the task decomposition. Each task should produce self-contained changes that make sense independently.
A task is the smallest unit that carries its own test cycle and is worth a fresh reviewer's gate. When drawing task boundaries: fold setup, configuration, scaffolding, and documentation steps into the task whose deliverable needs them; split only where a reviewer could meaningfully reject one task while approving its neighbor. Each task ends with an independently testable deliverable.
Prefer tracer-bullet vertical slices:
Declare blocking edges:
For broad refactors, do not pretend the work is a normal feature slice. Mark tasks as Slice type: refactor and use expand-contract: Expand the new path, Migrate callers with verification, then Contract by removing the old path after behavior is proven unchanged.
Each step is one action (2-5 minutes):
Every plan MUST start with this frontmatter, followed by this header:
---
spec_ref: ../specs/<spec-file>.md
spec_topic: <topic-from-docs-agent-harness-index>
task_count: <number>
estimated_phases: [tests, implementation, verification]
dod: "<definition of done from sprint contract>"
---
# [Feature Name] Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use agent-harness:subagent-driven-development (recommended) or agent-harness:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** [One sentence describing what this builds]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries]
---
Before generating tasks, determine the commit strategy:
### Task N: [Component Name]
Blocking: none | Task X
Slice type: tracer-bullet | refactor | verification
Seam: <observable boundary for TDD, or none for non-TDD verification tasks>
**Files:**
- Create: `exact/path/to/file.py`
- Modify: `exact/path/to/existing.py:123-145`
- Test: `tests/exact/path/to/test.py`
**Interfaces:**
- Consumes: [what this task uses from earlier tasks — exact signatures]
- Produces: [what later tasks rely on — exact function names, parameter and return types]
- [ ] **Step 1: Write the failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
```
- [ ] **Step 2: Run test to verify it fails**
Run: `pytest tests/path/test.py::test_name -v`
Expected: FAIL with "function not defined"
- [ ] **Step 3: Write minimal implementation**
```python
def function(input):
return expected
```
- [ ] **Step 4: Run test to verify it passes**
Run: `pytest tests/path/test.py::test_name -v`
Expected: PASS
- [ ] **Step 5: Commit**
```bash
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
```
Every step must contain the actual content an engineer needs. These are plan failures — never write them:
After defining the task list, check whether any task involves a global pattern replacement (token rename, CSS class migration, API signature change, import path shift). If it does, run a project-wide search (Grep) for the pattern before finalizing the plan. List every affected file in the relevant task — do not assume the brainstorming-confirmed file list is exhaustive. A cleanup task that discovers 13 affected files when the plan listed 8 is a plan failure, not a win for the cleanup task.
When the plan references API types (interfaces, request/response types, DTOs), verify each referenced field exists before finalizing the plan:
data-contracts.ts, *.d.ts, auto-generated API types) and confirm every field name and type mentioned in the plan matchesThis prevents plan execution interruptions from type errors discovered during implementation.
After writing the complete plan, look at the spec with fresh eyes and check the plan against it. This is a checklist you run yourself — not a subagent dispatch.
结构前置校验(硬门禁):plan 落盘后、进入 self-review 之前,必须跑:
scripts/validate-handoff.sh --stage plan --file <plan-path>
失败则回到 plan 写作步骤补全 frontmatter / 字段。通过后再交 self-review 做语义审稿。
1. Spec coverage: Skim each section/requirement in the spec. Can you point to a task that implements it? List any gaps.
2. Placeholder scan: Search your plan for red flags — any of the patterns from the "No Placeholders" section above. Fix them.
3. Type consistency: Do the types, method signatures, and property names you used in later tasks match what you defined in earlier tasks? A function called clearLayers() in Task 3 but clearFullLayers() in Task 7 is a bug.
If you find issues, fix them inline. No need to re-review — just fix and move on. If you find a spec requirement with no task, add the task.
if scripts/validate-handoff.sh --stage plan --file "$PLAN"; then
scripts/log-phase-metric.sh --phase writing-plans --action gate --gate-result passed --spec-topic "$SPEC_TOPIC"
else
scripts/log-phase-metric.sh --phase writing-plans --action gate --gate-result failed --spec-topic "$SPEC_TOPIC"
fi
After saving the plan, offer execution choice:
"Plan complete and saved to docs/agent-harness/plans/<filename>.md. Two execution options:
1. Subagent-Driven (recommended) - I dispatch a fresh subagent per task, review between tasks, fast iteration
2. Inline Execution - Execute tasks in this session using executing-plans, batch execution with checkpoints
Which approach?"
If Subagent-Driven chosen:
If Inline Execution chosen: