{"id":"8f9a7b24-28c8-49c3-b37c-5b254f88eb6a","shortId":"9suKys","kind":"skill","title":"spec-implement","tagline":"Execute implementation tasks from an approved plan.json. Use when spec-plan has produced approved tasks and the human is ready to start coding. Tracks progress via beads (preferred) or harness-native todos, enforces TDD, reports between batches. Trigger when the user says \"implem","description":"# Spec Implement\n\nPick up tasks. Execute them. Track progress. Report. Stop when blocked.\n\n**Announce at start:** \"I'm using the spec-implement skill to execute this plan.\"\n\nThis skill does not make design decisions or modify the plan. If the plan is wrong, go\nback to spec-plan. If the design is wrong, go back to spec-brainstorm.\n\n## Prerequisites\n\nBefore starting, verify these exist:\n\n1. **Approved spec** — `docs/specs/YYYY-MM-DD-<feature>/design.md`\n2. **Approved plan** — `docs/specs/YYYY-MM-DD-<feature>/plan.json`\n3. **Tasks created** — In beads, harness todo list, or plan.json task list\n4. **Not on main/master** — Never start implementation on main/master without explicit\n   user consent. Create a branch or use a git worktree first.\n\nIf anything is missing, do not proceed. Tell the human what's needed.\n\n---\n\n## Step 1: Load and Review the Plan\n\nRead plan.json critically before writing code. Look for:\n\n- Unclear or ambiguous tasks\n- Missing file paths or incomplete validation criteria\n- Tasks that conflict with each other\n- Dependencies that don't match what you see in the codebase\n\nIf you find concerns, **raise them with the human before starting**. Don't guess. Don't\nassume. Don't force through blockers.\n\nIf no concerns, create task tracking and proceed.\n\n---\n\n## Step 2: Choose Execution Mode\n\nIf the human hasn't specified a mode, ask.\n\n### Autonomous Mode\n\n> \"Implement it all. Don't stop until you're done.\"\n\n- Execute all tasks in dependency order\n- Track progress: beads `bd update <id> --status in_progress` → `bd close <id>`, or harness todo list\n- Run type checking / linting continuously\n- Only stop if blocked\n\n### Batched Mode (default)\n\n> \"Do a few tasks at a time.\"\n\n- Execute 3-5 tasks\n- Stop and report: what was done, test output, anything unexpected\n- Wait for human feedback before continuing\n\n### Subagent Mode\n\n> \"Use subagents.\"\n\n- Invoke **code-subagents** for dispatch patterns and review cycle\n- Fresh subagent per task — no context pollution\n- Two-stage review after each: spec compliance, then code quality\n- Independent tasks dispatch in parallel, dependent tasks run sequentially\n\nDefault to batched if the human hasn't expressed a preference.\n\n---\n\n## Step 3: Execute Tasks\n\nFor each task, follow the plan exactly. Find the next ready task:\n\n**With beads (preferred):**\n```bash\nbd ready --label <feature> --json\n```\n\n**With harness todos:**\nCheck the todo list for the next unblocked task (respecting `depends_on` from plan.json).\n\nMark it in progress:\n\n**With beads:**\n```bash\nbd update <task-id> --status in_progress\n```\n\n**With harness todos:**\nUpdate the todo status to in_progress.\n\n### For each task\n\nRead the task's **inputs** first — understand what context you need.\nThen read the **description** — know what to build and the constraints.\n\nInvoke **oracle-testing** for test design. Write tests that cover the validation\ncriteria before writing implementation.\n\n```\n1. Read task inputs and description\n2. Write failing tests (cover validation criteria)\n3. Run them — verify they fail for the RIGHT reason\n4. Implement minimal code to make tests pass\n5. Refactor if needed (tests stay green)\n6. Commit (use code-conventional-commit for commit message)\n```\n\nDo NOT write implementation before tests. Do NOT skip \"verify it fails.\" Do NOT write\nmore code than needed to pass the test.\n\nVerify the task against its **validation** — run the tests listed in the task and check\nall acceptance criteria are met.\n\n### After each task: Review\n\nInvoke **code-review** to review the implementation before moving to the next task.\nThis catches issues early rather than accumulating debt across multiple tasks.\n\n### On completion\n\nMark the task done:\n\n**With beads:**\n```bash\nbd close <task-id> --reason \"Implemented with tests\"\n```\n\n**With harness todos:**\nMark the task as completed.\n\n### Referencing existing code\n\nWhen the plan or human references existing implementations (\"make it look like the\nusers table\"), read the referenced code before making changes. A reference communicates\nall implicit requirements without spelling them out.\n\n---\n\n## Step 4: Report (Batched Mode)\n\nAfter each batch:\n\n```\nCompleted: Tasks T1-T3\n- T1: UserEntity with validation ✓\n- T2: UserEntity tests (6 passing) ✓\n- T3: UserRepository ✓\n\nTest output: 6 passed, 0 failed\nType check: clean\n\nReady for feedback.\n```\n\nWait. Don't continue until the human responds.\n\n---\n\n## Step 5: Handle Feedback\n\nExpect short, terse corrections:\n\n- \"You didn't implement `deduplicateByTitle`.\"\n- \"This should be in the admin app. Move it.\"\n- \"wider\" / \"still cropped\"\n\nDon't ask for elaboration unless genuinely needed.\n\n### Steering patterns\n\n| Pattern | Example | What to do |\n|---------|---------|------------|\n| Cherry-pick | \"Use X for the first one. Ignore the fourth.\" | Item-level as directed |\n| Trim scope | \"Skip task T7.\" | Mark skipped, move on |\n| Protect interfaces | \"These signatures must not change.\" | Adapt callers |\n| Override | \"Use the library's built-in method.\" | Direct override |\n| Revert | \"I reverted. Now just do X.\" | Respect narrowed scope |\n\n### On revert\n\nIf the human reverts git changes and re-scopes, respect the narrowed scope completely.\nDon't salvage the previous approach. Don't ask \"are you sure?\"\n\n---\n\n## When to Stop and Ask\n\n**STOP immediately when:**\n\n- A test fails and you can't fix it within 2 attempts\n- You hit a dependency not covered in the plan\n- An instruction is unclear or ambiguous\n- The plan conflicts with the actual codebase\n- The design needs to change, not just the implementation\n- Verification fails repeatedly\n\n**When you stop:**\n\n1. Explain the blocker clearly\n2. Show what you tried\n3. Ask for direction\n\nDo not guess. Do not work around it. Stop and ask. **Ask for clarification rather than\nguessing.**\n\nIf the plan needs to change:\n\n> \"This needs a plan revision. Want me to go back to spec-plan?\"\n\nIf the design was wrong:\n\n> \"This changes design assumptions. Want me to go back to spec-brainstorm?\"\n\n---\n\n## When to Revisit Earlier Steps\n\n**Return to spec-plan when:**\n- Partner updates the plan based on your feedback\n- Tasks can't be completed as specified\n\n**Return to spec-brainstorm when:**\n- Fundamental approach needs rethinking\n- Implementation reveals design is wrong\n\n---\n\n## Completion\n\nWhen all tasks are done, verify and present the work.\n\n### Verification checklist\n\n1. **Run full test suite** — all tests must pass, not just the new ones\n2. **Run type check / lint** — clean output, no new warnings\n3. **Invoke code-review** — full review of all changes\n4. **Verify tasks closed** — `bd list --label <feature> --json` (beads) or check harness todo list — all tasks must be done\n5. **Diff review** — review the full diff against main/master. Look for:\n   - Files that changed but shouldn't have\n   - Debug code or temporary hacks left behind\n   - Inconsistencies between what was planned and what was built\n\n### Summary report\n\nPresent to the human:\n\n```\n## Feature Complete: {feature name}\n\n**Tasks:** {completed} / {total}\n**Tests:** {new tests added}, {total passing}\n**Files:** {created}, {modified}\n\n### What was built\n- [concise list of what was implemented]\n\n### Verification\n- Test suite: ✓ all passing\n- Type check: ✓ clean\n- Lint: ✓ clean\n- Code review: ✓ complete\n\n### Ready for review\n```\n\n### Next steps\n\nAfter all tasks complete and verified, the next step is **spec-finish**.\n\n> \"Implementation complete. Ready to validate, review, and prepare for PR?\"\n\nOffer the human their options:\n\n> **Finish** — invoke spec-finish to validate, review, stack commits\n> **Keep** — leave the branch for now, come back later\n> **Discard** — delete the branch, start over\n\nDon't choose for them. Present options and wait.\n\nIf validation finds bugs, loop back to implement. See **spec-orchestrator**\nfor iteration patterns.","tags":["spec","implement","atelier","martinffx","agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex","codex-skill"],"capabilities":["skill","source-martinffx","skill-spec-implement","topic-agent-skills","topic-agentic-coding","topic-anthropic","topic-claude-code","topic-claude-skills","topic-code-review","topic-codex","topic-codex-skill","topic-opencode","topic-prompt-engineering","topic-sdd","topic-spec-driven-development"],"categories":["atelier"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/martinffx/atelier/spec-implement","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add martinffx/atelier","source_repo":"https://github.com/martinffx/atelier","install_from":"skills.sh"}},"qualityScore":"0.461","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 23 github stars · SKILL.md body (7,826 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:24.380Z","embedding":null,"createdAt":"2026-05-10T07:03:12.787Z","updatedAt":"2026-05-18T19:05:24.380Z","lastSeenAt":"2026-05-18T19:05:24.380Z","tsv":"'-5':313 '/design.md':120 '/plan.json':125 '0':694 '1':116,174,488,892,1015 '2':121,247,494,853,897,1029 '3':126,312,384,501,902,1039 '4':138,511,667,1049 '5':519,711,1068 '6':526,686,692 'accept':575 'accumul':603 'across':605 'actual':875 'ad':1118 'adapt':783 'admin':728 'ambigu':190,869 'announc':62 'anyth':161,323 'app':729 'approach':828,994 'approv':9,18,117,122 'around':912 'ask':259,737,831,839,903,916,917 'assum':232 'assumpt':951 'attempt':854 'autonom':260 'back':94,105,938,956,1196,1218 'base':976 'bash':402,430,616 'batch':42,301,374,669,673 'bd':281,286,403,431,617,1053 'bead':31,130,280,400,429,615,1057 'behind':1092 'block':61,300 'blocker':237,895 'brainstorm':109,960,991 'branch':153,1192,1201 'bug':1216 'build':467 'built':791,1101,1126 'built-in':790 'caller':784 'catch':598 'chang':655,782,813,881,928,949,1048,1081 'check':294,410,573,697,1032,1059,1139 'checklist':1014 'cherri':751 'cherry-pick':750 'choos':248,1206 'clarif':919 'clean':698,1034,1140,1142 'clear':896 'close':287,618,1052 'code':27,185,337,361,514,530,552,585,633,652,1042,1087,1143 'code-conventional-commit':529 'code-review':584,1041 'code-subag':336 'codebas':215,876 'come':1195 'commit':527,532,534,1188 'communic':658 'complet':609,630,674,822,984,1002,1109,1113,1145,1154,1165 'complianc':359 'concern':219,240 'concis':1127 'conflict':201,872 'consent':150 'constraint':470 'context':350,457 'continu':296,330,705 'convent':531 'correct':717 'cover':481,498,860 'creat':128,151,241,1122 'criteria':198,484,500,576 'critic':182 'crop':734 'cycl':344 'debt':604 'debug':1086 'decis':83 'deduplicatebytitl':722 'default':303,372 'delet':1199 'depend':205,276,368,420,858 'descript':463,493 'design':82,101,477,878,945,950,999 'didn':719 'diff':1069,1074 'direct':766,794,905 'discard':1198 'dispatch':340,365 'docs/specs/yyyy-mm-dd-':119,124 'done':271,320,613,1007,1067 'earli':600 'earlier':964 'elabor':739 'enforc':38 'exact':393 'exampl':746 'execut':4,54,74,249,272,311,385 'exist':115,632,640 'expect':714 'explain':893 'explicit':148 'express':380 'fail':496,506,547,695,845,887 'featur':1108,1110 'feedback':328,701,713,979 'file':193,1079,1121 'find':218,394,1215 'finish':1163,1179,1183 'first':159,454,757 'fix':850 'follow':390 'forc':235 'fourth':761 'fresh':345 'full':1017,1044,1073 'fundament':993 'genuin':741 'git':157,812 'go':93,104,937,955 'green':525 'guess':229,908,922 'hack':1090 'handl':712 'har':35,131,289,408,437,624,1060 'harness-n':34 'hasn':254,378 'hit':856 'human':22,169,224,253,327,377,638,708,810,1107,1176 'ignor':759 'immedi':841 'implem':48 'implement':3,5,50,71,144,262,487,512,539,590,620,641,721,885,997,1132,1164,1220 'implicit':660 'incomplet':196 'inconsist':1093 'independ':363 'input':453,491 'instruct':865 'interfac':777 'invok':335,471,583,1040,1180 'issu':599 'item':763 'item-level':762 'iter':1226 'json':406,1056 'keep':1189 'know':464 'label':405,1055 'later':1197 'leav':1190 'left':1091 'level':764 'librari':788 'like':645 'lint':295,1033,1141 'list':133,137,291,413,568,1054,1062,1128 'load':175 'look':186,644,1077 'loop':1217 'm':66 'main/master':141,146,1076 'make':81,516,642,654 'mark':424,610,626,772 'match':209 'messag':535 'met':578 'method':793 'minim':513 'miss':163,192 'mode':250,258,261,302,332,670 'modifi':85,1123 'move':592,730,774 'multipl':606 'must':780,1022,1065 'name':1111 'narrow':804,820 'nativ':36 'need':172,459,522,554,742,879,926,930,995 'never':142 'new':1027,1037,1116 'next':396,416,595,1149,1158 'offer':1174 'one':758,1028 'option':1178,1210 'oracl':473 'oracle-test':472 'orchestr':1224 'order':277 'output':322,691,1035 'overrid':785,795 'parallel':367 'partner':972 'pass':518,556,687,693,1023,1120,1137 'path':194 'pattern':341,744,745,1227 'per':347 'pick':51,752 'plan':15,76,87,90,98,123,179,392,636,863,871,925,932,942,970,975,1097 'plan.json':10,135,181,423 'pollut':351 'pr':1173 'prefer':32,382,401 'prepar':1171 'prerequisit':110 'present':1010,1104,1209 'previous':827 'proceed':166,245 'produc':17 'progress':29,57,279,285,427,435,445 'protect':776 'qualiti':362 'rais':220 'rather':601,920 're':270,816 're-scop':815 'read':180,449,461,489,649 'readi':24,397,404,699,1146,1166 'reason':510,619 'refactor':520 'refer':639,657 'referenc':631,651 'repeat':888 'report':40,58,317,668,1103 'requir':661 'respect':419,803,818 'respond':709 'rethink':996 'return':966,987 'reveal':998 'revert':796,798,807,811 'review':177,343,355,582,586,588,1043,1045,1070,1071,1144,1148,1169,1186 'revis':933 'revisit':963 'right':509 'run':292,370,502,565,1016,1030 'salvag':825 'say':47 'scope':768,805,817,821 'see':212,1221 'sequenti':371 'short':715 'shouldn':1083 'show':898 'signatur':779 'skill':72,78 'skill-spec-implement' 'skip':544,769,773 'source-martinffx' 'spec':2,14,49,70,97,108,118,358,941,959,969,990,1162,1182,1223 'spec-brainstorm':107,958,989 'spec-finish':1161,1181 'spec-impl':1,69 'spec-orchestr':1222 'spec-plan':13,96,940,968 'specifi':256,986 'spell':663 'stack':1187 'stage':354 'start':26,64,112,143,226,1202 'status':283,433,442 'stay':524 'steer':743 'step':173,246,383,666,710,965,1150,1159 'still':733 'stop':59,267,298,315,837,840,891,914 'subag':331,334,338,346 'suit':1019,1135 'summari':1102 'sure':834 't1':677,679 't1-t3':676 't2':683 't3':678,688 't7':771 'tabl':648 'task':6,19,53,127,136,191,199,242,274,307,314,348,364,369,386,389,398,418,448,451,490,561,571,581,596,607,612,628,675,770,980,1005,1051,1064,1112,1153 'tdd':39 'tell':167 'temporari':1089 'ters':716 'test':321,474,476,479,497,517,523,541,558,567,622,685,690,844,1018,1021,1115,1117,1134 'time':310 'todo':37,132,290,409,412,438,441,625,1061 'topic-agent-skills' 'topic-agentic-coding' 'topic-anthropic' 'topic-claude-code' 'topic-claude-skills' 'topic-code-review' 'topic-codex' 'topic-codex-skill' 'topic-opencode' 'topic-prompt-engineering' 'topic-sdd' 'topic-spec-driven-development' 'total':1114,1119 'track':28,56,243,278 'tri':901 'trigger':43 'trim':767 'two':353 'two-stag':352 'type':293,696,1031,1138 'unblock':417 'unclear':188,867 'understand':455 'unexpect':324 'unless':740 'updat':282,432,439,973 'use':11,67,155,333,528,753,786 'user':46,149,647 'userent':680,684 'userrepositori':689 'valid':197,483,499,564,682,1168,1185,1214 'verif':886,1013,1133 'verifi':113,504,545,559,1008,1050,1156 'via':30 'wait':325,702,1212 'want':934,952 'warn':1038 'wider':732 'within':852 'without':147,662 'work':911,1012 'worktre':158 'write':184,478,486,495,538,550 'wrong':92,103,947,1001 'x':754,802","prices":[{"id":"f0936f7f-8bac-440e-a67c-a2571a3a3ae0","listingId":"8f9a7b24-28c8-49c3-b37c-5b254f88eb6a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"martinffx","category":"atelier","install_from":"skills.sh"},"createdAt":"2026-05-10T07:03:12.787Z"}],"sources":[{"listingId":"8f9a7b24-28c8-49c3-b37c-5b254f88eb6a","source":"github","sourceId":"martinffx/atelier/spec-implement","sourceUrl":"https://github.com/martinffx/atelier/tree/main/skills/spec-implement","isPrimary":false,"firstSeenAt":"2026-05-10T07:03:12.787Z","lastSeenAt":"2026-05-18T19:05:24.380Z"}],"details":{"listingId":"8f9a7b24-28c8-49c3-b37c-5b254f88eb6a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"martinffx","slug":"spec-implement","github":{"repo":"martinffx/atelier","stars":23,"topics":["agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex","codex-skill","opencode","prompt-engineering","sdd","spec-driven-development"],"license":"mit","html_url":"https://github.com/martinffx/atelier","pushed_at":"2026-05-18T06:56:45Z","description":"An atelier for Opencode, Claude Code, and other coding agents: spec-driven workflows, deep thinking, and code quality.","skill_md_sha":"877d226e87b8f3131c67c6c70a8a98602591faeb","skill_md_path":"skills/spec-implement/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/martinffx/atelier/tree/main/skills/spec-implement"},"layout":"multi","source":"github","category":"atelier","frontmatter":{"name":"spec-implement","description":"Execute implementation tasks from an approved plan.json. Use when spec-plan has produced approved tasks and the human is ready to start coding. Tracks progress via beads (preferred) or harness-native todos, enforces TDD, reports between batches. Trigger when the user says \"implement\", \"go\", \"start\", \"do it\", or after spec-plan completes task creation. Do NOT use without an approved plan — invoke spec-plan first."},"skills_sh_url":"https://skills.sh/martinffx/atelier/spec-implement"},"updatedAt":"2026-05-18T19:05:24.380Z"}}