Create implementation plan
Convert a feature, refactor, upgrade, design, architecture, infrastructure, data, or process goal into a deterministic Markdown plan under /plan/ with atomic phases, unique identifiers, explicit dependencies, files, tests, risks, assumptions, and validation checks.
When to invoke
- "Create an implementation plan for this feature."
- "Write a phased plan an AI agent can execute."
- "Plan this package upgrade with tasks and validation."
- "Create a /plan artifact for the refactor."
- "Turn this architecture change into implementation steps."
Inputs
Use the user's requested plan purpose as the source for the file name, goal, phases, and scope. If the purpose is ambiguous, infer the closest prefix from upgrade, refactor, feature, data, infrastructure, process, architecture, or design and state the assumption in the plan.
Plan rules
| Area |
Requirement |
| Audience |
AI agents and humans must be able to execute the plan without hidden context. |
| Language |
Use deterministic, unambiguous wording with no human interpretation required. |
| Phases |
Use discrete atomic phases with measurable completion criteria. |
| Tasks |
Include specific file paths, function names, exact implementation details, and dependencies when known. |
| Parallelism |
Tasks are parallelizable unless dependencies explicitly say otherwise. |
| Identifiers |
Use standardized unique prefixes: REQ-, TASK-, SEC-, CON-, GUD-, PAT-, GOAL-, ALT-, DEP-, FILE-, TEST-, RISK-, ASSUMPTION-. |
| Placeholders |
No placeholder text may remain in the final output. |
Save implementation plans in /plan/ using [purpose]-[component]-[version].md, for example upgrade-system-command-4.md or feature-auth-module-1.md.
Identifier uniqueness
Every declaration identifier must appear exactly once. A declaration is the leading cell in a TASK or GOAL table row, or a bullet such as - **REQ-001**: .... References to already declared IDs are allowed in task descriptions and dependency text.
Run these checks before finalizing, replacing PLAN_FILE with the actual path:
PLAN_FILE="/plan/<purpose>-<component>-<version>.md"
grep -oE '\| (TASK|GOAL)-[0-9]+ \|' "$PLAN_FILE" | sed -E 's/.*((TASK|GOAL)-[0-9]+).*//' | sort | uniq -d
grep -oE '^- \*\*(REQ|SEC|CON|GUD|RISK|ASSUMPTION|TASK|GOAL|FILE|TEST|PAT|ALT|DEP)-[0-9]+\*\*:' "$PLAN_FILE" | sed -E 's/^- \*\*([A-Z]+-[0-9]+)\*\*:.*//' | sort | uniq -d
grep -oE '(REQ|SEC|CON|GUD|RISK|ASSUMPTION|TASK|GOAL|FILE|TEST|PAT|ALT|DEP)-[0-9]+' "$PLAN_FILE" | sort | uniq -d
Checks 1 and 2 are gates and must return no rows. Check 3 is diagnostic and may include valid references. Prerequisites are a POSIX-compatible shell (sh or bash) with grep, sed, sort, and uniq; on Windows, use equivalent commands while preserving declaration-vs-reference logic.
Status and badge
The frontmatter status must be exactly one of Completed, In progress, Planned, Deprecated, or On Hold. The introduction must show a shields badge using https://img.shields.io/badge/status-<status>-<status_color>, where status colors are bright green, yellow, blue, red, or orange respectively.
Required plan template
---
goal: <Concise Title Describing the Package Implementation Plan's Goal>
version: <optional version such as 1.0 or date>
date_created: <YYYY-MM-DD>
last_updated: <optional YYYY-MM-DD>
owner: <optional team or individual>
status: 'Completed'|'In progress'|'Planned'|'Deprecated'|'On Hold'
tags: [<feature|upgrade|chore|architecture|migration|bug>]
---
# Introduction

<short introduction and goal>
## 1. Requirements & Constraints
- **REQ-001**: <requirement>
- **SEC-001**: <security requirement>
- **CON-001**: <constraint>
- **GUD-001**: <guideline>
- **PAT-001**: <pattern>
## 2. Implementation Steps
### Implementation Phase 1
- **GOAL-001**: <phase goal>
| Task | Description | Completed | Date |
| --- | --- | --- | --- |
| TASK-001 | <specific executable task> | | |
| TASK-002 | <specific executable task> | | |
### Implementation Phase 2
- **GOAL-002**: <phase goal>
| Task | Description | Completed | Date |
| --- | --- | --- | --- |
| TASK-003 | <specific executable task> | | |
## 3. Alternatives
- **ALT-001**: <alternative and rejection rationale>
## 4. Dependencies
- **DEP-001**: <library, framework, service, or component dependency>
## 5. Files
- **FILE-001**: <file path and planned change>
## 6. Testing
- **TEST-001**: <test or validation command>
## 7. Risks & Assumptions
- **RISK-001**: <risk>
- **ASSUMPTION-001**: <assumption>
## 8. Related Specifications / Further Reading
- <related spec or external documentation>
Procedure
- Determine the plan purpose prefix, component name, version number, and target file path under
/plan/.
- Inventory requirements, security constraints, guidelines, patterns, dependencies, files, tests, alternatives, risks, and assumptions from the user's request and repository context.
- Break work into phases with
GOAL-NNN declarations and atomic TASK-NNN table rows.
- Make each task executable by including paths, function names, configuration keys, validation commands, and dependencies.
- Write the plan file, then run the identifier uniqueness checks with
PLAN_FILE set to the new path.
- Re-number duplicates until declaration checks return no rows.
Compatibility vocabulary
Preserve these legacy terms, API names, command placeholders, and literal phrases when applying or migrating this skill:
${input:PlanPurpose}
- ** REQ-001 **: ...
ALT-NNN
ASSUMPTION-NNN
CON-NNN
DEP-NNN
FILE-NNN
GUD-NNN
LETTERS
PAT-NNN
REQ-NNN
RISK-NNN
SEC-NNN
TASK/GOAL
TEST-NNN
Team/Individual
bullet-style
case-sensitive
chore
cross-phase
decision-making
machine-parseable
migration
platform-native
re-number
re-run
self-containment
PlanPurpose
Output template
## Implementation plan result
**Status:** created | updated | blocked
**Plan file:** `/plan/<purpose>-<component>-<version>.md`
**Plan status:** Completed | In progress | Planned | Deprecated | On Hold
| Section | Result | Evidence |
| --- | --- | --- |
| Requirements | <count> | <REQ/SEC/CON/GUD/PAT IDs> |
| Tasks | <count> | <TASK IDs and phases> |
| Files | <count> | <FILE IDs> |
| Tests | <count> | <TEST IDs> |
| Validation | pass | Identifier declaration checks returned no rows |
Quality gate
1---2name: create-implementation-plan3description: Create deterministic implementation plan files for features, refactors, package upgrades, design, architecture, infrastructure, data, or process work. Use when the user asks for an implementation plan, phased execution plan, AI-executable plan, /plan artifact, or machine-readable roadmap for autonomous agents or humans.4---56<!-- Generated from harness/github-copilot/skills/create-implementation-plan/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Create implementation plan910Convert a feature, refactor, upgrade, design, architecture, infrastructure, data, or process goal into a deterministic Markdown plan under `/plan/` with atomic phases, unique identifiers, explicit dependencies, files, tests, risks, assumptions, and validation checks.1112## When to invoke1314- "Create an implementation plan for this feature."15- "Write a phased plan an AI agent can execute."16- "Plan this package upgrade with tasks and validation."17- "Create a /plan artifact for the refactor."18- "Turn this architecture change into implementation steps."1920## Inputs2122Use the user's requested plan purpose as the source for the file name, goal, phases, and scope. If the purpose is ambiguous, infer the closest prefix from `upgrade`, `refactor`, `feature`, `data`, `infrastructure`, `process`, `architecture`, or `design` and state the assumption in the plan.2324## Plan rules2526| Area | Requirement |27| --- | --- |28| Audience | AI agents and humans must be able to execute the plan without hidden context. |29| Language | Use deterministic, unambiguous wording with no human interpretation required. |30| Phases | Use discrete atomic phases with measurable completion criteria. |31| Tasks | Include specific file paths, function names, exact implementation details, and dependencies when known. |32| Parallelism | Tasks are parallelizable unless dependencies explicitly say otherwise. |33| Identifiers | Use standardized unique prefixes: `REQ-`, `TASK-`, `SEC-`, `CON-`, `GUD-`, `PAT-`, `GOAL-`, `ALT-`, `DEP-`, `FILE-`, `TEST-`, `RISK-`, `ASSUMPTION-`. |34| Placeholders | No placeholder text may remain in the final output. |3536Save implementation plans in `/plan/` using `[purpose]-[component]-[version].md`, for example `upgrade-system-command-4.md` or `feature-auth-module-1.md`.3738## Identifier uniqueness3940Every declaration identifier must appear exactly once. A declaration is the leading cell in a `TASK` or `GOAL` table row, or a bullet such as `- **REQ-001**: ...`. References to already declared IDs are allowed in task descriptions and dependency text.4142Run these checks before finalizing, replacing `PLAN_FILE` with the actual path:4344```bash45PLAN_FILE="/plan/<purpose>-<component>-<version>.md"4647grep -oE '\| (TASK|GOAL)-[0-9]+ \|' "$PLAN_FILE" | sed -E 's/.*((TASK|GOAL)-[0-9]+).*//' | sort | uniq -d4849grep -oE '^- \*\*(REQ|SEC|CON|GUD|RISK|ASSUMPTION|TASK|GOAL|FILE|TEST|PAT|ALT|DEP)-[0-9]+\*\*:' "$PLAN_FILE" | sed -E 's/^- \*\*([A-Z]+-[0-9]+)\*\*:.*//' | sort | uniq -d5051grep -oE '(REQ|SEC|CON|GUD|RISK|ASSUMPTION|TASK|GOAL|FILE|TEST|PAT|ALT|DEP)-[0-9]+' "$PLAN_FILE" | sort | uniq -d52```5354Checks 1 and 2 are gates and must return no rows. Check 3 is diagnostic and may include valid references. Prerequisites are a POSIX-compatible shell (`sh` or `bash`) with `grep`, `sed`, `sort`, and `uniq`; on Windows, use equivalent commands while preserving declaration-vs-reference logic.5556## Status and badge5758The frontmatter `status` must be exactly one of `Completed`, `In progress`, `Planned`, `Deprecated`, or `On Hold`. The introduction must show a shields badge using `https://img.shields.io/badge/status-<status>-<status_color>`, where status colors are bright green, yellow, blue, red, or orange respectively.5960## Required plan template6162```markdown63---64goal: <Concise Title Describing the Package Implementation Plan's Goal>65version: <optional version such as 1.0 or date>66date_created: <YYYY-MM-DD>67last_updated: <optional YYYY-MM-DD>68owner: <optional team or individual>69status: 'Completed'|'In progress'|'Planned'|'Deprecated'|'On Hold'70tags: [<feature|upgrade|chore|architecture|migration|bug>]71---7273# Introduction74757677<short introduction and goal>7879## 1. Requirements & Constraints8081- **REQ-001**: <requirement>82- **SEC-001**: <security requirement>83- **CON-001**: <constraint>84- **GUD-001**: <guideline>85- **PAT-001**: <pattern>8687## 2. Implementation Steps8889### Implementation Phase 19091- **GOAL-001**: <phase goal>9293| Task | Description | Completed | Date |94| --- | --- | --- | --- |95| TASK-001 | <specific executable task> | | |96| TASK-002 | <specific executable task> | | |9798### Implementation Phase 299100- **GOAL-002**: <phase goal>101102| Task | Description | Completed | Date |103| --- | --- | --- | --- |104| TASK-003 | <specific executable task> | | |105106## 3. Alternatives107108- **ALT-001**: <alternative and rejection rationale>109110## 4. Dependencies111112- **DEP-001**: <library, framework, service, or component dependency>113114## 5. Files115116- **FILE-001**: <file path and planned change>117118## 6. Testing119120- **TEST-001**: <test or validation command>121122## 7. Risks & Assumptions123124- **RISK-001**: <risk>125- **ASSUMPTION-001**: <assumption>126127## 8. Related Specifications / Further Reading128129- <related spec or external documentation>130```131132## Procedure1331341. Determine the plan purpose prefix, component name, version number, and target file path under `/plan/`.1352. Inventory requirements, security constraints, guidelines, patterns, dependencies, files, tests, alternatives, risks, and assumptions from the user's request and repository context.1363. Break work into phases with `GOAL-NNN` declarations and atomic `TASK-NNN` table rows.1374. Make each task executable by including paths, function names, configuration keys, validation commands, and dependencies.1385. Write the plan file, then run the identifier uniqueness checks with `PLAN_FILE` set to the new path.1396. Re-number duplicates until declaration checks return no rows.140141## Compatibility vocabulary142143Preserve these legacy terms, API names, command placeholders, and literal phrases when applying or migrating this skill:144145- `${input:PlanPurpose}`146- `- ** REQ-001 **: ...`147- `ALT-NNN`148- `ASSUMPTION-NNN`149- `CON-NNN`150- `DEP-NNN`151- `FILE-NNN`152- `GUD-NNN`153- `LETTERS`154- `PAT-NNN`155- `REQ-NNN`156- `RISK-NNN`157- `SEC-NNN`158- `TASK/GOAL`159- `TEST-NNN`160- `Team/Individual`161- `bullet-style`162- `case-sensitive`163- `chore`164- `cross-phase`165- `decision-making`166- `machine-parseable`167- `migration`168- `platform-native`169- `re-number`170- `re-run`171- `self-containment`172- `PlanPurpose`173174## Output template175176```markdown177## Implementation plan result178179**Status:** created | updated | blocked180**Plan file:** `/plan/<purpose>-<component>-<version>.md`181**Plan status:** Completed | In progress | Planned | Deprecated | On Hold182183| Section | Result | Evidence |184| --- | --- | --- |185| Requirements | <count> | <REQ/SEC/CON/GUD/PAT IDs> |186| Tasks | <count> | <TASK IDs and phases> |187| Files | <count> | <FILE IDs> |188| Tests | <count> | <TEST IDs> |189| Validation | pass | Identifier declaration checks returned no rows |190```191192## Quality gate193194- [ ] The file is saved under `/plan/` with `[purpose]-[component]-[version].md` naming.195- [ ] All required frontmatter fields and required section headers are present.196- [ ] Every task is atomic, executable, and contains enough context for an AI agent or human.197- [ ] Dependencies between tasks are explicit; otherwise tasks are safe to parallelize.198- [ ] No placeholder text remains.199- [ ] Identifier declaration checks for `PLAN_FILE` returned no rows.200- [ ] The broad duplicate scan was reviewed as diagnostic only.201- [ ] The status badge uses the allowed status and color mapping.