{"id":"5de9ee5b-bafa-4c47-8af2-b74713bcf7ae","shortId":"5EgnfK","kind":"skill","title":"recipe-build","tagline":"Execute decomposed tasks in autonomous execution mode","description":"## Orchestrator Definition\n\n**Core Identity**: \"I am an orchestrator.\" (see subagents-orchestration-guide skill)\n\n**Execution Protocol**:\n1. **Delegate all work through Agent tool** — invoke sub-agents, pass deliverable paths between them, and report results (permitted tools: see subagents-orchestration-guide \"Orchestrator's Permitted Tools\")\n2. **Follow the 4-step task cycle exactly**: task-executor → escalation check → quality-fixer → commit\n3. **Enter autonomous mode** when user provides execution instruction with existing task files — this IS the batch approval\n4. **Scope**: Complete when all tasks are committed or escalation occurs\n\n**CRITICAL**: Run quality-fixer before every commit.\n\nWork plan: $ARGUMENTS\n\n## Pre-execution Prerequisites\n\n### Implementation Readiness Check\n\nBefore any task processing, locate the work plan to gate against. Resolution rule:\n1. List task files in `docs/plans/tasks/` matching the single-layer pattern `{plan-name}-task-*.md`. Layer-aware fullstack tasks (`{plan-name}-backend-task-*.md` / `{plan-name}-frontend-task-*.md`) are excluded here so a stale fullstack run does not redirect this recipe to the wrong work plan\n2. From the matched files, also exclude every file matching any of these patterns — they originate from other workflow phases and are not implementation tasks for this run's plan: `*-task-prep-*.md` (readiness preflight tasks), `_overview-*.md` (decomposition overview file), `*-phase*-completion.md` (per-phase completion files), `review-fixes-*.md` (post-implementation review fixes), `integration-tests-*-task-*.md` (integration-test add-on scaffolding)\n3. For each remaining file, extract the `{plan-name}` prefix as the segment that appears before `-task-`\n4. When at least one task file matches, the work plan is `docs/plans/{plan-name}.md` for the prefix that has the most recent task-file mtime; ties broken by the lexicographically last `{plan-name}`\n5. When no task file matches the restricted pattern, the work plan is the most-recent-mtime non-template `.md` in `docs/plans/`\n\nRead the work plan header and find the line `Implementation Readiness: <status>`. Apply this rule:\n\n| Status | Action |\n|--------|--------|\n| `ready` | Proceed to Consumed Task Set computation |\n| `escalated` | Read the work plan's Readiness Report section, surface remaining gaps to the user via AskUserQuestion: \"Implementation Readiness is `escalated` with the following remaining gaps: [list]. Continue execution? (y/n)\". On `y` proceed; on `n` stop |\n| `pending` | Present via AskUserQuestion: \"Implementation Readiness is `pending`. Run `/recipe-prepare-implementation [plan-path]` first to verify the work plan is implementable, then resume. Continue without preflight? (y/n)\". On `y` proceed; on `n` stop |\n| absent (line missing) | Treat as `pending` — older work plans created before the readiness marker existed should be preflighted explicitly |\n\n### Consumed Task Set\n\nCompute the **Consumed Task Set** for this run — the exact files this recipe owns, executes, and later deletes. Use the same restricted pattern as the Implementation Readiness Check:\n\n1. List task files in `docs/plans/tasks/` matching the single-layer pattern `{plan-name}-task-*.md` for the `{plan-name}` resolved by the readiness check. Layer-aware fullstack tasks are excluded\n2. Exclude every file matching: `*-task-prep-*.md`, `_overview-*.md`, `*-phase*-completion.md`, `review-fixes-*.md`, `integration-tests-*-task-*.md` (these originate from other workflow phases)\n\nEvery subsequent reference to \"task files\" in this recipe — Task Generation Decision Flow, Task Execution Cycle iteration, and Final Cleanup — uses this set, not the unrestricted `docs/plans/tasks/*.md` glob.\n\n### Task Generation Decision Flow\n\nAnalyze the Consumed Task Set and determine the action required:\n\n| State | Criteria | Next Action |\n|-------|----------|-------------|\n| Tasks exist | Consumed Task Set is non-empty | User's execution instruction serves as batch approval → Enter autonomous execution immediately |\n| No tasks + plan exists | Consumed Task Set is empty but the resolved work plan exists | Confirm with user → run task-decomposer |\n| Neither exists + Design Doc exists | No plan, no Consumed Task Set, but `docs/design/*.md` exists | Invoke work-planner to create work plan from Design Doc, then proceed to task decomposition |\n| Neither exists | No plan, no Consumed Task Set, no Design Doc | Report missing prerequisites to user and stop |\n\n## Task Decomposition Phase (Conditional)\n\nWhen the Consumed Task Set is empty:\n\n### 1. User Confirmation\n```\nNo task files in the Consumed Task Set.\nWork plan: docs/plans/[plan-name].md\n\nGenerate tasks from the work plan? (y/n):\n```\n\n### 2. Task Decomposition (if approved)\nInvoke task-decomposer using Agent tool:\n- `subagent_type`: \"dev-workflows:task-decomposer\"\n- `description`: \"Decompose work plan\"\n- `prompt`: \"Read work plan at docs/plans/[plan-name].md and decompose into atomic tasks. Output: Individual task files in docs/plans/tasks/. Granularity: 1 task = 1 commit = independently executable\"\n\n### 3. Verify Generation\nRecompute the Consumed Task Set using the same restricted pattern from the Consumed Task Set section above. Confirm it is now non-empty. If it is still empty, escalate to the user — task-decomposer either failed silently or produced files that don't match the expected pattern.\n\n**Flow**: Task generation → Consumed Task Set recompute → Autonomous execution (in this order)\n\n## Pre-execution Checklist\n\n- [ ] Confirmed Consumed Task Set is non-empty (computed in the Consumed Task Set section above)\n- [ ] Identified task execution order within the Consumed Task Set (dependencies)\n- [ ] **Environment check**: Can I execute per-task commit cycle?\n  - If commit capability unavailable → Escalate before autonomous mode\n  - Other environments (tests, quality tools) → Subagents will escalate\n\n## Task Execution Cycle (4-Step Cycle)\n**MANDATORY EXECUTION CYCLE**: `task-executor → escalation check → quality-fixer → commit`\n\nFor EACH task in the Consumed Task Set, YOU MUST:\n1. **Register tasks using TaskCreate**: Register work steps. Always include first task \"Map preloaded skills to applicable concrete rules\" and final task \"Verify the mapped rules before final JSON\"\n2. **Agent tool** (subagent_type: \"dev-workflows:task-executor\") → Pass task file path in prompt, receive structured response\n3. **CHECK task-executor response**:\n   - `status: \"escalation_needed\"` or `\"blocked\"` → STOP and escalate to user\n   - `requiresTestReview` is `true` → Execute **integration-test-reviewer**\n     - `needs_revision` → Return to step 2 with `requiredFixes`\n     - `approved` → Proceed to step 4\n   - `readyForQualityCheck: true` → Proceed to step 4\n4. **INVOKE quality-fixer**: Execute all quality checks and fixes. **Always pass** the current task file path as `task_file`\n5. **CHECK quality-fixer response**:\n   - `stub_detected` → Return to step 2 with `incompleteImplementations[]` details\n   - `blocked` → STOP and escalate to user\n   - `approved` → Proceed to step 6\n6. **COMMIT on approval**: Execute git commit\n\n**CRITICAL**: Parse every sub-agent response for status fields. Execute the matching branch in the 4-step cycle. Proceed to next task only after quality-fixer returns `approved`.\n\n## Scope Boundary for Subagents\n\nAppend the following block to every subagent prompt invoked from this recipe:\n\n```\nScope boundary for subagents:\nOperate within the task scope and referenced files in the prompt.\nUse loaded skills to execute that scope.\nEscalate when the required fix or investigation falls outside that scope.\n```\n\nVerify task files exist per Pre-execution Checklist, then enter autonomous execution mode. When requirement changes are detected during execution, escalate to the user with the change summary before continuing.\n\n## Post-Implementation Verification (After All Tasks Complete)\n\nAfter all task cycles finish, run verification agents **in parallel** before the completion report:\n\n1. **Invoke both in parallel** using Agent tool:\n   - code-verifier (subagent_type: \"dev-workflows:code-verifier\") → `doc_type: design-doc`, Design Doc path, `code_paths`: implementation file list (`git diff --name-only main...HEAD`)\n   - security-reviewer (subagent_type: \"dev-workflows:security-reviewer\") → Design Doc path, implementation file list\n\n2. **Consolidate results** — check pass/fail for each:\n   - code-verifier: **pass** when `status` is `consistent` or `mostly_consistent`. **fail** when `needs_review` or `inconsistent`. Collect `discrepancies` with status `drift`, `conflict`, or `gap`\n   - security-reviewer: **pass** when `status` is `approved` or `approved_with_notes`. **fail** when `needs_revision`. **blocked** → Escalate to user\n   - Present unified verification report to user\n\n3. **Fix cycle** (when any verifier failed):\n   - Consolidate all actionable findings into a single task file\n   - Execute task-executor with consolidated fixes → quality-fixer\n   - Re-run only the failed verifiers (by the criteria in step 2)\n   - Repeat until all pass or `blocked` → Escalate to user\n\n4. **All passed** → Proceed to Final Cleanup\n\n## Final Cleanup\n\nBefore the completion report, delete the implementation task files this recipe consumed. Their work is committed; `docs/plans/` is ephemeral working state and is not retained between recipe runs:\n\n- Delete every file in the Consumed Task Set\n- Delete every file matching `docs/plans/tasks/{plan-name}-phase*-completion.md` (the per-phase completion files generated by task-decomposer for this `{plan-name}`)\n- Delete the corresponding `docs/plans/tasks/_overview-{plan-name}.md` if present\n- Preserve the work plan itself (`docs/plans/{plan-name}.md`) — the user decides whether to delete it after final review\n\nIf task files cannot be deleted (filesystem error), report the failure but do not block the completion report.\n\n## Output Example\nImplementation phase completed.\n- Task decomposition: Generated under docs/plans/tasks/\n- Implemented tasks: [number] tasks\n- Quality checks: All passed\n- Commits: [number] commits created\n- Cleanup: Task files removed from docs/plans/tasks/","tags":["recipe","build","claude","code","workflows","shinpr","agent-skills","agentic-ai","ai-agents","automation","claude-code","claude-code-plugin"],"capabilities":["skill","source-shinpr","skill-recipe-build","topic-agent-skills","topic-agentic-ai","topic-ai-agents","topic-automation","topic-claude-code","topic-claude-code-plugin","topic-code-quality","topic-developer-tools","topic-development-workflow","topic-llm-orchestration","topic-productivity","topic-prompt-engineering"],"categories":["claude-code-workflows"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/shinpr/claude-code-workflows/recipe-build","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add shinpr/claude-code-workflows","source_repo":"https://github.com/shinpr/claude-code-workflows","install_from":"skills.sh"}},"qualityScore":"0.613","qualityRationale":"deterministic score 0.61 from registry signals: · indexed on github topic:agent-skills · 327 github stars · SKILL.md body (10,176 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-02T18:53:51.985Z","embedding":null,"createdAt":"2026-04-18T22:03:06.272Z","updatedAt":"2026-05-02T18:53:51.985Z","lastSeenAt":"2026-05-02T18:53:51.985Z","tsv":"'/recipe-prepare-implementation':406 '1':27,134,480,692,763,765,917,1195 '2':57,188,514,717,946,995,1041,1251,1347 '3':74,258,769,966,1309 '4':60,92,276,892,1002,1008,1009,1079,1357 '5':314,1030 '6':1055,1056 'absent':430 'action':353,583,588,1318 'add':255 'add-on':254 'agent':32,37,727,947,1068,1188,1201 'also':193 'alway':925,1020 'analyz':575 'appear':273 'append':1097 'appli':349 'applic':933 'approv':91,605,721,998,1051,1059,1092,1290,1292 'argument':113 'askuserquest':377,400 'atom':754 'autonom':8,76,607,828,879,1153 'awar':153,509 'backend':160 'backend-task':159 'batch':90,604 'block':976,1045,1100,1299,1353,1472 'boundari':1094,1110 'branch':1076 'broken':306 'build':3 'cannot':1461 'capabl':875 'chang':1158,1169 'check':69,120,479,506,864,902,967,1017,1031,1254,1491 'checklist':836,1150 'cleanup':561,1363,1365,1498 'code':1204,1212,1222,1259 'code-verifi':1203,1211,1258 'collect':1275 'commit':73,99,110,766,871,874,906,1057,1062,1381,1494,1496 'complet':94,235,1180,1193,1368,1416,1474,1480 'completion.md':231,526,1411 'comput':360,452,845 'concret':934 'condit':684 'confirm':625,694,789,837 'conflict':1280 'consist':1265,1268 'consolid':1252,1316,1330 'consum':357,449,454,577,591,614,640,668,687,700,774,784,824,838,848,859,912,1377,1399 'continu':388,420,1172 'core':13 'correspond':1430 'creat':439,652,1497 'criteria':586,1344 'critic':103,1063 'current':1023 'cycl':63,557,872,891,894,897,1081,1184,1311 'decid':1450 'decis':553,573 'decompos':5,631,725,736,738,752,807,1422 'decomposit':227,662,682,719,1482 'definit':12 'deleg':28 'delet':469,1370,1394,1402,1428,1453,1463 'deliver':39 'depend':862 'descript':737 'design':634,656,672,1217,1219,1245 'design-doc':1216 'detail':1044 'detect':1037,1160 'determin':581 'dev':732,952,1209,1240 'dev-workflow':731,951,1208,1239 'diff':1228 'discrep':1276 'doc':635,657,673,1214,1218,1220,1246 'docs/design':644 'docs/plans':288,337,705,746,1382,1443 'docs/plans/tasks':139,485,568,761,1406,1485,1503 'docs/plans/tasks/_overview-':1431 'drift':1279 'either':808 'empti':597,618,691,795,800,844 'enter':75,606,1152 'environ':863,882 'ephemer':1384 'error':1465 'escal':68,101,361,381,801,877,888,901,973,979,1048,1131,1163,1300,1354 'everi':109,195,516,542,1065,1102,1395,1403 'exact':64,461 'exampl':1477 'exclud':171,194,513,515 'execut':4,9,25,81,116,389,466,556,600,608,768,829,835,855,867,890,896,985,1014,1060,1073,1128,1149,1154,1162,1325 'executor':67,900,956,970,1328 'exist':84,444,590,613,624,633,636,646,664,1145 'expect':819 'explicit':448 'extract':263 'fail':809,1269,1295,1315,1340 'failur':1468 'fall':1138 'field':1072 'file':86,137,192,196,229,236,262,282,303,318,462,483,517,547,697,759,813,959,1025,1029,1120,1144,1225,1249,1324,1374,1396,1404,1417,1460,1500 'filesystem':1464 'final':560,937,944,1362,1364,1456 'find':344,1319 'finish':1185 'first':410,927 'fix':239,245,529,1019,1135,1310,1331 'fixer':72,107,905,1013,1034,1090,1334 'flow':554,574,821 'follow':58,384,1099 'frontend':167 'frontend-task':166 'fullstack':154,176,510 'gap':372,386,1282 'gate':130 'generat':552,572,710,771,823,1418,1483 'git':1061,1227 'glob':570 'granular':762 'guid':23,52 'head':1233 'header':342 'ident':14 'identifi':853 'immedi':609 'implement':118,211,243,347,378,401,417,477,1175,1224,1248,1372,1478,1486 'includ':926 'incompleteimplement':1043 'inconsist':1274 'independ':767 'individu':757 'instruct':82,601 'integr':247,252,532,987 'integration-test':246,251,531 'integration-test-review':986 'investig':1137 'invok':34,647,722,1010,1105,1196 'iter':558 'json':945 'last':310 'later':468 'layer':144,152,490,508 'layer-awar':151,507 'least':279 'lexicograph':309 'line':346,431 'list':135,387,481,1226,1250 'load':1125 'locat':125 'main':1232 'mandatori':895 'map':929,941 'marker':443 'match':140,191,197,283,319,486,518,817,1075,1405 'md':150,162,169,221,226,240,250,292,335,496,522,524,530,535,569,645,709,750,1435,1447 'miss':432,675 'mode':10,77,880,1155 'most':1267 'most-recent-mtim':328 'mtime':304,331 'must':916 'n':395,428 'name':148,158,165,267,291,313,494,501,708,749,1230,1409,1427,1434,1446 'name-on':1229 'need':974,990,1271,1297 'neither':632,663 'next':587,1084 'non':333,596,794,843 'non-empti':595,793,842 'non-templ':332 'note':1294 'number':1488,1495 'occur':102 'older':436 'one':280 'oper':1113 'orchestr':11,18,22,51,53 'order':832,856 'origin':203,537 'output':756,1476 'outsid':1139 'overview':225,228,523 'own':465 'parallel':1190,1199 'pars':1064 'pass':38,957,1021,1261,1286,1351,1359,1493 'pass/fail':1255 'path':40,409,960,1026,1221,1223,1247 'pattern':145,201,322,474,491,781,820 'pend':397,404,435 'per':233,869,1146,1414 'per-phas':232,1413 'per-task':868 'permit':46,55 'phase':207,230,234,525,541,683,1410,1415,1479 'plan':112,128,147,157,164,187,217,266,286,290,312,325,341,365,408,415,438,493,500,612,623,638,654,666,704,707,715,740,744,748,1408,1426,1433,1441,1445 'plan-nam':146,156,163,265,289,311,492,499,706,747,1407,1425,1432,1444 'plan-path':407 'planner':650 'post':242,1174 'post-implement':241,1173 'pre':115,834,1148 'pre-execut':114,833,1147 'prefix':268,295 'preflight':223,422,447 'preload':930 'prep':220,521 'prerequisit':117,676 'present':398,1303,1437 'preserv':1438 'proceed':355,393,426,659,999,1005,1052,1082,1360 'process':124 'produc':812 'prompt':741,962,1104,1123 'protocol':26 'provid':80 'qualiti':71,106,884,904,1012,1016,1033,1089,1333,1490 'quality-fix':70,105,903,1011,1032,1088,1332 're':1336 're-run':1335 'read':338,362,742 'readi':119,222,348,354,367,379,402,442,478,505 'readyforqualitycheck':1003 'receiv':963 'recent':300,330 'recip':2,182,464,550,1108,1376,1392 'recipe-build':1 'recomput':772,827 'redirect':180 'refer':544 'referenc':1119 'regist':918,922 'remain':261,371,385 'remov':1501 'repeat':1348 'report':44,368,674,1194,1306,1369,1466,1475 'requir':584,1134,1157 'requiredfix':997 'requirestestreview':982 'resolut':132 'resolv':502,621 'respons':965,971,1035,1069 'restrict':321,473,780 'result':45,1253 'resum':419 'retain':1390 'return':992,1038,1091 'review':238,244,528,989,1236,1244,1272,1285,1457 'review-fix':237,527 'revis':991,1298 'rule':133,351,935,942 'run':104,177,215,405,459,628,1186,1337,1393 'scaffold':257 'scope':93,1093,1109,1117,1130,1141 'section':369,787,851 'secur':1235,1243,1284 'security-review':1234,1242,1283 'see':19,48 'segment':271 'serv':602 'set':359,451,456,564,579,593,616,642,670,689,702,776,786,826,840,850,861,914,1401 'silent':810 'singl':143,489,1322 'single-lay':142,488 'skill':24,931,1126 'skill-recipe-build' 'source-shinpr' 'stale':175 'state':585,1386 'status':352,972,1071,1263,1278,1288 'step':61,893,924,994,1001,1007,1040,1054,1080,1346 'still':799 'stop':396,429,680,977,1046 'structur':964 'stub':1036 'sub':36,1067 'sub-ag':35,1066 'subag':21,50,729,886,949,1096,1103,1112,1206,1237 'subagents-orchestration-guid':20,49 'subsequ':543 'summari':1170 'surfac':370 'task':6,62,66,85,97,123,136,149,155,161,168,212,219,224,249,275,281,302,317,358,450,455,482,495,511,520,534,546,551,555,571,578,589,592,611,615,630,641,661,669,681,688,696,701,711,718,724,735,755,758,764,775,785,806,822,825,839,849,854,860,870,889,899,909,913,919,928,938,955,958,969,1024,1028,1085,1116,1143,1179,1183,1323,1327,1373,1400,1421,1459,1481,1487,1489,1499 'task-decompos':629,723,734,805,1420 'task-executor':65,898,954,968,1326 'task-fil':301 'task-prep':218,519 'taskcreat':921 'templat':334 'test':248,253,533,883,988 'tie':305 'tool':33,47,56,728,885,948,1202 'topic-agent-skills' 'topic-agentic-ai' 'topic-ai-agents' 'topic-automation' 'topic-claude-code' 'topic-claude-code-plugin' 'topic-code-quality' 'topic-developer-tools' 'topic-development-workflow' 'topic-llm-orchestration' 'topic-productivity' 'topic-prompt-engineering' 'treat':433 'true':984,1004 'type':730,950,1207,1215,1238 'unavail':876 'unifi':1304 'unrestrict':567 'use':470,562,726,777,920,1124,1200 'user':79,375,598,627,678,693,804,981,1050,1166,1302,1308,1356,1449 'verif':1176,1187,1305 'verifi':412,770,939,1142,1205,1213,1260,1314,1341 'via':376,399 'whether':1451 'within':857,1114 'without':421 'work':30,111,127,186,285,324,340,364,414,437,622,649,653,703,714,739,743,923,1379,1385,1440 'work-plann':648 'workflow':206,540,733,953,1210,1241 'wrong':185 'y':392,425 'y/n':390,423,716","prices":[{"id":"d6eeb607-d329-43c1-8e30-a2658137242c","listingId":"5de9ee5b-bafa-4c47-8af2-b74713bcf7ae","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"shinpr","category":"claude-code-workflows","install_from":"skills.sh"},"createdAt":"2026-04-18T22:03:06.272Z"}],"sources":[{"listingId":"5de9ee5b-bafa-4c47-8af2-b74713bcf7ae","source":"github","sourceId":"shinpr/claude-code-workflows/recipe-build","sourceUrl":"https://github.com/shinpr/claude-code-workflows/tree/main/skills/recipe-build","isPrimary":false,"firstSeenAt":"2026-04-18T22:03:06.272Z","lastSeenAt":"2026-05-02T18:53:51.985Z"}],"details":{"listingId":"5de9ee5b-bafa-4c47-8af2-b74713bcf7ae","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"shinpr","slug":"recipe-build","github":{"repo":"shinpr/claude-code-workflows","stars":327,"topics":["agent-skills","agentic-ai","ai-agents","automation","claude-code","claude-code-plugin","code-quality","developer-tools","development-workflow","llm-orchestration","productivity","prompt-engineering","skills"],"license":"mit","html_url":"https://github.com/shinpr/claude-code-workflows","pushed_at":"2026-05-02T15:39:17Z","description":"Production-ready development workflows for Claude Code, powered by specialized AI agents.","skill_md_sha":"d56dbb39311a9f8ff577679b72a084e6112dbcd5","skill_md_path":"skills/recipe-build/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/shinpr/claude-code-workflows/tree/main/skills/recipe-build"},"layout":"multi","source":"github","category":"claude-code-workflows","frontmatter":{"name":"recipe-build","description":"Execute decomposed tasks in autonomous execution mode"},"skills_sh_url":"https://skills.sh/shinpr/claude-code-workflows/recipe-build"},"updatedAt":"2026-05-02T18:53:51.985Z"}}