{"id":"1ba926bd-b190-4fc9-936e-ebeb0941be27","shortId":"hjTUkG","kind":"skill","title":"implement-plan","tagline":"Use when the user wants to execute an approved implementation plan and says any of \"do it\" (with a plan in scope), \"lets do it\" / \"let's do it\", \"confirmed\" (as approval to proceed on a plan), \"implement the plan\", \"implement this\", \"execute the plan\", \"start implementing\", \"work","description":"# Implement Plan\n\nDrive an approved implementation plan to completion: review-plan gate → per-task loop (implementer → verify → reviewer → triage → commit → tick) → end-of-plan review. Manual invocation only. Never auto-creates PRs.\n\n## Workflow\n\n### 1. Resolve the plan and check preconditions\n\n**Plan resolution** (priority order):\n1. Explicit path argument (e.g. `/implement-plan docs/plans/auth-rewrite.md`).\n2. `./PLAN.md` in cwd.\n3. Latest by mtime in `./docs/plans/*.md`.\n4. None resolve → **stop, ask the user**. Do not guess. Do not assume \"do it\" meant something else; if no plan, this skill should not have activated — exit cleanly.\n\nRead the plan file fully. Capture: total task count, unchecked task count, and any **Branch policy** section (see [reference.md → Plan header conventions](reference.md#plan-header-conventions)).\n\n**Precondition checks** (fail-fast — abort with a clear message if any fails):\n\n```sh\n# In a git repo?\ngit rev-parse --is-inside-work-tree >/dev/null 2>&1 || abort \"not a git repo\"\n\n# Working tree clean? Catches uncommitted + untracked.\n[ -z \"$(git status --porcelain)\" ] || abort \"working tree not clean — commit, stash, or discard first\"\n\n# origin remote exists?\ngit remote get-url origin >/dev/null 2>&1 || abort \"no 'origin' remote — see reference.md for fallback\"\n```\n\nIf the plan file itself is uncommitted, the clean-tree check will catch it. Tell the user to commit the plan first, then re-invoke.\n\n### 2. Pre-flight gate: review-plan\n\nInvoke the `review-plan` skill as a subagent. Pass the resolved plan path. Branch on the returned verdict:\n\n| Verdict | Action |\n|---|---|\n| `READY` | Continue to step 3. |\n| `NEEDS_REVISION` | Surface findings. Ask the user: **revise the plan, proceed anyway, or abort?** Do not pick for them. |\n| `BLOCKED` | Halt. Surface findings. Exit. The user must edit the plan and re-invoke. |\n\n**Do not skip this gate.** \"The plan looks fine\" is not a substitute for the review-plan checklist. See [reference.md](reference.md) for the rationalization table.\n\n### 3. Branch setup\n\nDetermine the target branch and base, then switch (or resume).\n\n#### Determine policy\n\nRead the plan's **Branch policy** section if present (see [reference.md → Plan header conventions](reference.md#plan-header-conventions)). Resolve, in priority order:\n\n1. **Plan declares `Chain: <ref>`** → chained-PR mode. Base = `<ref>`. Branch name = plan-derived default (or `Branch:` if also declared). Fetch the chain base if it's a remote ref.\n2. **Plan declares `Base: <ref>`** → use that base. Branch name = `Branch:` if declared, else plan-derived default.\n3. **Default** → base = `origin/<default-branch>`. Branch name = plan-derived default.\n\n**Plan-derived default branch name**: `impl/<plan-slug>`, where `<plan-slug>` is the plan filename without `.md`. Example: `docs/plans/2026-05-16-auth-rewrite.md` → `impl/2026-05-16-auth-rewrite`.\n\n**Default-branch detection**:\n\n```sh\nDEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|^refs/remotes/origin/||')\n[ -z \"$DEFAULT_BRANCH\" ] && abort \"could not detect origin's default branch — set Base: in plan or run 'git remote set-head origin -a'\"\n```\n\n#### Resume check\n\nBefore creating a branch, detect resume mode:\n\n```sh\nCURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)\nTICKED_COUNT=<count of '- [x]' lines in the plan>\n\nif [ \"$CURRENT_BRANCH\" = \"$TARGET_BRANCH\" ] && [ \"$TICKED_COUNT\" -gt 0 ]; then\n  # Resume mode: stay on this branch, skip branch creation.\n  echo \"Resuming on $CURRENT_BRANCH ($TICKED_COUNT tasks already done)\"\n  # Proceed to step 4.\nfi\n```\n\n#### Fresh branch creation\n\nIf not resuming:\n\n```sh\ngit fetch origin \"$BASE_BRANCH\"\n\n# If the target branch already exists, ask the user:\n#   - reuse it (e.g. you renamed and want to continue),\n#   - delete and recreate fresh from BASE,\n#   - or pick a different name.\n# Do NOT silently overwrite.\n\ngit switch -c \"$TARGET_BRANCH\" \"origin/$BASE_BRANCH\"\n```\n\nSurface a one-liner to the user: `Branch: <target> from <base> (latest @ <short-sha>)`.\n\n### 4. Per-task loop\n\nFor each unchecked `- [ ]` task in plan order:\n\n#### (a) Implementer subagent\n\nSpawn a `general-purpose` subagent at `model: sonnet` (per `subagent-model-routing`) with Edit/Write/Bash. Build the prompt per [reference.md → Implementer prompt template](reference.md#implementer-prompt-template).\n\n**Critical**: the parent reads the task's named files **once** and injects content inline. The subagent must NOT re-read them — that defeats the delegation and risks reading a different version.\n\nThe subagent returns one of: `DONE` / `DONE_WITH_CONCERNS` / `BLOCKED` / `NEEDS_CONTEXT`.\n\nImplementer must probe before claiming DONE — run the verification command, grep for the expected change, do not paraphrase \"should work\" as evidence. Per `~/.claude/rules/probe-not-assume.md`.\n\n#### (b) Verify in parent\n\nRun the `verify-when-complete` skill in the parent process (fmt → lint → build → test). This is not delegated — completion claims require fresh, parent-visible evidence (per Superpowers' verification-before-completion rule).\n\nOn failure: loop back to (a) with the failure output appended to the implementer's context. Max **2 retries**. Then escalate per step 4.\n\n#### (c) Reviewer subagent dispatch\n\nDetermine which reviewers apply based on what changed in this task. Use the table in [reference.md → Reviewer dispatch](reference.md#reviewer-dispatch).\n\nRun reviewers **serially**, not parallel — they all comment on the same diff and parallel runs produce duplicated findings.\n\nUse `model: opus` for reviewers. Deeper judgment than the implementer, and the model-mismatch partially defeats self-agreement bias when implementer and reviewer are otherwise the same family.\n\n#### (d) Triage findings\n\nIn the parent:\n- **P0, P1, `bug`, `risk`** → loop back to (a) with the finding text. Max **2 retries**. Then escalate.\n- **P2, P3, `nit`** → append to `./.implement-plan-nits.md` (a plan-scoped accumulator). Non-blocking.\n\n#### (e) Commit\n\nOne commit per task that leaves the tree buildable (per `commit-per-phase` rule). Conventional Commits subject. No `--amend` ever (per `git-no-amend` rule). If the task is intentionally mid-refactor and would leave the tree non-buildable, include `[skip-bisect]` in the commit message.\n\n#### (f) Tick the checkbox\n\nEdit the plan file in place: `- [ ]` → `- [x]`. Same commit as (e) is fine; this is metadata on the same logical change.\n\n#### (g) Next\n\nMove to the next unchecked task. Do not pause to ask \"should I continue?\" — that is one of the named red flags (see [reference.md → Red flags](reference.md#red-flags)).\n\n### Halt conditions (during the task loop)\n\nHalt the loop and surface to the user when any of:\n\n- Implementer returns `BLOCKED` or `NEEDS_CONTEXT`.\n- The same error has appeared 3 iterations on the same task (kill criterion).\n- A reviewer P0 finding has not been resolved within 2 retries.\n- The implementer encounters an architectural decision that is not in the plan (per `escalation` rule — never invent).\n- A destructive operation appears at execution time (even if review-plan didn't block it — double-check at the moment of action per `defer-external-orchestration`).\n\nSurface: current task number, status line, last subagent return, and the specific decision needed. Do not auto-resume after escalation — wait for the user.\n\n### 5. End-of-plan handoff\n\nWhen all `- [ ]` tasks are `- [x]`:\n\n1. **Spawn `review-all`** across the full branch diff against the plan's base ref. Surface its findings as one final cross-cutting review.\n2. **Surface the nits file** (`./.implement-plan-nits.md`). Ask: address now, defer, or discard?\n3. **Do NOT auto-create the PR** (per `defer-external-orchestration`). Print the suggested command, e.g.:\n   ```\n   gh pr create --draft --title \"<plan title>\" --body \"<...>\"\n   ```\n   Wait for the user to run it.\n\n---\n\n## Output (user-facing status updates)\n\nPer `terse-output`: one sentence per key moment. Not every step. Examples:\n\n- `Preconditions OK. Plan: docs/plans/2026-05-16-auth-rewrite.md (8 tasks).` — Step 1 done\n- `review-plan: READY (3 nits noted)` — Step 2 done\n- `Branch: impl/2026-05-16-auth-rewrite from origin/main (@a1b2c3d).` — Step 3 done (new branch) — or\n- `Resuming on impl/2026-05-16-auth-rewrite (3/8 tasks already done).` — Step 3 done (resume mode)\n- `Task 4/8: starting (touches internal/auth/jwt.go)` — task start\n- `Task 4/8: DONE; review-code clean; committed feat(auth): add JWT validator` — task end (single line)\n- `Task 5/8: implementer returned BLOCKED — needs cache library choice. Halting.` — escalation\n- `All 8 tasks complete. Running review-all.` — handoff to end-of-plan\n\nSilence between these is fine. Don't narrate deliberation.\n\n---\n\n## Plan path conventions\n\n- Plans live in `./docs/plans/` (working directory; typically a repo root) or `./PLAN.md` for ad-hoc.\n- Filename convention: `YYYY-MM-DD-<feature-slug>.md` (matches Superpowers' convention and most \"writing-plans\" skills).\n- This skill does not create plans. Use Claude Code's native Plan mode or a future writing-plans skill upstream.\n- Plans are **committed to the repo** before invocation — the clean-tree precondition in Step 1 enforces this. Plans are not session-scoped or hidden.\n- Plans may declare branch policy in a `## Branch policy` section near the top — see [reference.md → Plan header conventions](reference.md#plan-header-conventions). Absence means: fresh branch off `origin/<default>`.\n\n---\n\n## Cross-references\n\n- Pre-flight: `review-plan`\n- Post-implementation gate: `verify-when-complete`\n- Reviewer dispatch: `review-code`, `review-infrastructure`, `review-ci`, `review-database`, `review-security`, `review-observability`, `review-api-compat`\n- End-of-plan: `review-all`\n- Rules consulted: `subagent-prompt-contract`, `subagent-model-routing`, `parallelize-subagents`, `commit-per-phase`, `escalation`, `defer-external-orchestration`, `minimal-changes`, `confirm-before-implementing`, `git-no-amend`, `terse-output`, `auto-verify-after-rebase` (applies to the chained-PR case if a rebase is needed mid-loop), `probe-not-assume`\n\nFor detailed subagent prompt templates, the reviewer dispatch table, and the red-flag rationalization table, see [reference.md](reference.md).\n\n---\n\n## Sources\n\n- [obra/superpowers: subagent-driven-development](https://github.com/obra/superpowers/blob/main/skills/subagent-driven-development/SKILL.md), used under [MIT License](https://github.com/obra/superpowers/blob/main/LICENSE), copyright Jesse Vincent. The orchestrator-with-personas pattern and \"do not trust the report\" reviewer framing are drawn from this skill.\n- [Addy Osmani: Code Agent Orchestra](https://addyosmani.com/blog/code-agent-orchestra/) — Ralph Loop, kill criteria, focused-context-per-agent.\n- [Karpathy: Sequoia Ascent 2026](https://karpathy.bearblog.dev/sequoia-ascent-2026/) — context-as-program, specs-in-files-not-prompts.","tags":["implement","plan","skill","issue","paultyng","agent-skills","ai-tools","claude-code","cursor","dotfiles"],"capabilities":["skill","source-paultyng","skill-implement-plan","topic-agent-skills","topic-ai-tools","topic-claude-code","topic-cursor","topic-dotfiles"],"categories":["skill-issue"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/paultyng/skill-issue/implement-plan","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add paultyng/skill-issue","source_repo":"https://github.com/paultyng/skill-issue","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (10,927 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:09:01.073Z","embedding":null,"createdAt":"2026-05-18T13:21:26.236Z","updatedAt":"2026-05-18T19:09:01.073Z","lastSeenAt":"2026-05-18T19:09:01.073Z","tsv":"'/.claude/rules/probe-not-assume.md':754 '/.implement-plan-nits.md':919,1198 '/blog/code-agent-orchestra/)':1638 '/dev/null':201,238,495 '/docs/plans':116,1361 '/implement-plan':105 '/obra/superpowers/blob/main/license),':1608 '/obra/superpowers/blob/main/skills/subagent-driven-development/skill.md),':1601 '/plan.md':108,1369 '/sequoia-ascent-2026/)':1654 '0':553 '1':89,100,203,240,408,1167,1262,1426 '2':107,202,239,276,438,494,810,910,1083,1193,1272 '2026':1651 '3':111,309,370,455,1066,1205,1268,1280,1293 '3/8':1288 '4':118,577,643,816 '4/8':1298,1305 '5':1156 '5/8':1322 '8':1259,1333 'a1b2c3d':1278 'abbrev':540 'abbrev-ref':539 'abort':179,204,219,241,323,502 'absenc':1460 'accumul':924 'across':1172 'action':304,1125 'activ':144 'ad':1372 'ad-hoc':1371 'add':1314 'addi':1631 'address':1200 'addyosmani.com':1637 'addyosmani.com/blog/code-agent-orchestra/)':1636 'agent':1634,1647 'agreement':880 'alreadi':572,595,1290 'also':426 'amend':949,955,1546 'anyway':321 'api':1505 'appear':1065,1105 'append':803,917 'appli':824,1555 'approv':12,35,56 'architectur':1089 'argument':103 'ascent':1650 'ask':122,314,597,1018,1199 'assum':130,1573 'auth':1313 'auto':85,1148,1209,1551 'auto-cr':84,1208 'auto-resum':1147 'auto-verify-after-rebas':1550 'b':755 'back':796,902 'base':378,416,431,441,444,457,511,589,614,630,825,1181 'bias':881 'bisect':976 'block':329,728,927,1057,1116,1325 'bodi':1228 'branch':161,298,371,376,389,417,424,445,447,459,469,484,488,501,509,528,534,547,549,560,562,568,580,590,594,628,631,640,1175,1274,1283,1440,1444,1463 'bug':899 'build':674,772 'buildabl':938,972 'c':626,817 'cach':1327 'captur':152 'case':1561 'catch':212,262 'chain':411,413,430,1559 'chained-pr':412,1558 'chang':745,828,1005,1538 'check':94,175,260,524,1120 'checkbox':984 'checklist':362 'choic':1329 'ci':1493 'claim':735,779 'claud':1397 'clean':146,211,223,258,1310,1421 'clean-tre':257,1420 'clear':182 'code':1309,1398,1487,1633 'command':740,1221 'comment':850 'commit':73,224,268,929,931,941,946,979,993,1311,1413,1528 'commit-per-phas':940,1527 'compat':1506 'complet':60,764,778,791,1335,1482 'concern':727 'condit':1039 'confirm':33,1540 'confirm-before-impl':1539 'consult':1515 'content':699 'context':730,808,1060,1645,1656 'context-as-program':1655 'continu':306,608,1021 'contract':1519 'convent':168,173,398,403,945,1357,1375,1383,1454,1459 'copyright':1609 'could':503 'count':155,158,544,551,570 'creat':86,526,1210,1225,1394 'creation':563,581 'criteria':1642 'criterion':1073 'critic':687 'cross':1190,1467 'cross-cut':1189 'cross-refer':1466 'current':533,546,567,1132 'cut':1191 'cwd':110 'd':891 'databas':1496 'dd':1379 'decis':1090,1143 'declar':410,427,440,449,1439 'deeper':866 'default':422,454,456,464,468,483,487,500,508 'default-branch':482 'defeat':710,877 'defer':1128,1202,1215,1533 'defer-external-orchestr':1127,1214,1532 'deleg':712,777 'delet':609 'deliber':1354 'deriv':421,453,463,467 'destruct':1103 'detail':1575 'detect':485,505,529 'determin':373,383,821 'develop':1598 'didn':1114 'diff':854,1176 'differ':618,717 'directori':1363 'discard':227,1204 'dispatch':820,838,842,1484,1581 'docs/plans/2026-05-16-auth-rewrite.md':480,1258 'docs/plans/auth-rewrite.md':106 'done':573,724,725,736,1263,1273,1281,1291,1294,1306 'doubl':1119 'double-check':1118 'draft':1226 'drawn':1627 'drive':54 'driven':1597 'duplic':859 'e':928,995 'e.g':104,602,1222 'echo':564 'edit':337,985 'edit/write/bash':673 'els':135,450 'encount':1087 'end':76,1158,1318,1343,1508 'end-of-plan':75,1157,1342,1507 'enforc':1427 'error':1063 'escal':813,913,1098,1151,1331,1531 'even':1109 'ever':950 'everi':1252 'evid':752,785 'exampl':479,1254 'execut':10,46,1107 'exist':231,596 'exit':145,333 'expect':744 'explicit':101 'extern':1129,1216,1534 'f':981 'face':1239 'fail':177,186 'fail-fast':176 'failur':794,801 'fallback':248 'famili':890 'fast':178 'feat':1312 'fetch':428,587 'fi':578 'file':150,252,695,988,1197,1662 'filenam':476,1374 'final':1188 'find':313,332,860,893,907,1077,1185 'fine':352,997,1350 'first':228,271 'flag':1029,1033,1037,1587 'flight':279,1471 'fmt':770 'focus':1644 'focused-context-per-ag':1643 'frame':1625 'fresh':579,612,781,1462 'full':1174 'fulli':151 'futur':1405 'g':1006 'gate':64,280,348,1478 'general':661 'general-purpos':660 'get':235 'get-url':234 'gh':1223 'git':190,192,207,216,232,489,516,535,586,624,953,1544 'git-no-amend':952,1543 'github.com':1600,1607 'github.com/obra/superpowers/blob/main/license),':1606 'github.com/obra/superpowers/blob/main/skills/subagent-driven-development/skill.md),':1599 'grep':741 'gt':552 'guess':127 'halt':330,1038,1044,1330 'handoff':1161,1340 'head':520,542 'header':167,172,397,402,1453,1458 'hidden':1436 'hoc':1373 'impl':471 'impl/2026-05-16-auth-rewrite':481,1275,1287 'implement':2,13,41,44,50,52,57,69,656,679,684,731,806,870,883,1055,1086,1323,1477,1542 'implement-plan':1 'implementer-prompt-templ':683 'includ':973 'infrastructur':1490 'inject':698 'inlin':700 'insid':198 'intent':961 'internal/auth/jwt.go':1301 'invent':1101 'invoc':81,1418 'invok':275,284,343 'is-inside-work-tre':196 'iter':1067 'jess':1610 'judgment':867 'jwt':1315 'karpathi':1648 'karpathy.bearblog.dev':1653 'karpathy.bearblog.dev/sequoia-ascent-2026/)':1652 'key':1249 'kill':1072,1641 'last':1137 'latest':112,642 'leav':935,967 'let':26,29 'librari':1328 'licens':1605 'line':1136,1320 'liner':636 'lint':771 'live':1359 'logic':1004 'look':351 'loop':68,647,795,901,1043,1046,1569,1640 'manual':80 'match':1381 'max':809,909 'may':1438 'md':117,478,1380 'mean':1461 'meant':133 'messag':183,980 'metadata':1000 'mid':963,1568 'mid-loop':1567 'mid-refactor':962 'minim':1537 'minimal-chang':1536 'mismatch':875 'mit':1604 'mm':1378 'mode':415,531,556,1296,1402 'model':665,670,862,874,1522 'model-mismatch':873 'moment':1123,1250 'move':1008 'mtime':114 'must':336,703,732 'name':418,446,460,470,619,694,1027 'narrat':1353 'nativ':1400 'near':1447 'need':310,729,1059,1144,1326,1566 'never':83,1100 'new':1282 'next':1007,1011 'nit':916,1196,1269 'non':926,971 'non-block':925 'non-build':970 'none':119 'note':1270 'number':1134 'obra/superpowers':1594 'observ':1502 'ok':1256 'one':635,722,930,1024,1187,1246 'one-lin':634 'oper':1104 'opus':863 'orchestr':1130,1217,1535,1614 'orchestra':1635 'orchestrator-with-persona':1613 'order':99,407,654 'origin':229,237,243,458,506,521,588,629,1465 'origin/main':1277 'osmani':1632 'otherwis':887 'output':802,1236,1245,1549 'overwrit':623 'p0':897,1076 'p1':898 'p2':914 'p3':915 'parallel':847,856,1525 'parallelize-subag':1524 'paraphras':748 'parent':689,758,768,783,896 'parent-vis':782 'pars':195,538 'partial':876 'pass':293 'path':102,297,1356 'pattern':1617 'paus':1016 'per':66,645,667,677,753,786,814,932,939,942,951,1097,1126,1213,1242,1248,1529,1646 'per-task':65,644 'persona':1616 'phase':943,1530 'pick':326,616 'place':990 'plan':3,14,23,40,43,48,53,58,63,78,92,96,138,149,166,171,251,270,283,288,296,319,339,350,361,387,396,401,409,420,439,452,462,466,475,513,653,922,987,1096,1113,1160,1179,1257,1266,1345,1355,1358,1388,1395,1401,1408,1411,1429,1437,1452,1457,1474,1510 'plan-deriv':419,451,461,465 'plan-header-convent':170,400,1456 'plan-scop':921 'polici':162,384,390,1441,1445 'porcelain':218 'post':1476 'post-implement':1475 'pr':414,1212,1224,1560 'pre':278,1470 'pre-flight':277,1469 'precondit':95,174,1255,1423 'present':393 'print':1218 'prioriti':98,406 'probe':733,1571 'probe-not-assum':1570 'proceed':37,320,574 'process':769 'produc':858 'program':1658 'prompt':676,680,685,1518,1577,1664 'prs':87 'purpos':662 'ralph':1639 'ration':368,1588 're':274,342,706 're-invok':273,341 're-read':705 'read':147,385,690,707,715 'readi':305,1267 'rebas':1554,1564 'recreat':611 'red':1028,1032,1036,1586 'red-flag':1035,1585 'ref':437,492,541,1182 'refactor':964 'refer':1468 'reference.md':165,169,246,364,365,395,399,678,682,836,839,1031,1034,1451,1455,1591,1592 'refs/remotes/origin':498 'refs/remotes/origin/head':493 'remot':230,233,244,436,517 'renam':604 'repo':191,208,1366,1416 'report':1623 'requir':780 'resolut':97 'resolv':90,120,295,404,1081 'resum':382,523,530,555,565,584,1149,1285,1295 'retri':811,911,1084 'return':301,721,1056,1139,1324 'reus':600 'rev':194,537 'rev-pars':193,536 'review':62,71,79,282,287,360,818,823,837,841,844,865,885,1075,1112,1170,1192,1265,1308,1338,1473,1483,1486,1489,1492,1495,1498,1501,1504,1512,1580,1624 'review-al':1169,1337,1511 'review-api-compat':1503 'review-ci':1491 'review-cod':1307,1485 'review-databas':1494 'review-infrastructur':1488 'review-observ':1500 'review-plan':61,281,286,359,1111,1264,1472 'review-secur':1497 'reviewer-dispatch':840 'revis':311,317 'risk':714,900 'root':1367 'rout':671,1523 'rule':792,944,956,1099,1514 'run':515,737,759,843,857,1234,1336 'say':16 'scope':25,923,1434 'section':163,391,1446 'secur':1499 'sed':496 'see':164,245,363,394,1030,1450,1590 'self':879 'self-agr':878 'sentenc':1247 'sequoia':1649 'serial':845 'session':1433 'session-scop':1432 'set':510,519 'set-head':518 'setup':372 'sh':187,486,532,585 'silenc':1346 'silent':622 'singl':1319 'skill':140,289,765,1389,1391,1409,1630 'skill-implement-plan' 'skip':346,561,975 'skip-bisect':974 'someth':134 'sonnet':666 'sourc':1593 'source-paultyng' 'spawn':658,1168 'spec':1660 'specif':1142 'specs-in-files-not-prompt':1659 'start':49,1299,1303 'stash':225 'status':217,1135,1240 'stay':557 'step':308,576,815,1253,1261,1271,1279,1292,1425 'stop':121 'subag':292,657,663,669,702,720,819,1138,1517,1521,1526,1576,1596 'subagent-driven-develop':1595 'subagent-model-rout':668,1520 'subagent-prompt-contract':1516 'subject':947 'substitut':356 'suggest':1220 'superpow':787,1382 'surfac':312,331,632,1048,1131,1183,1194 'switch':380,625 'symbol':491 'symbolic-ref':490 'tabl':369,834,1582,1589 'target':375,548,593,627 'task':67,154,157,571,646,651,692,831,933,959,1013,1042,1071,1133,1164,1260,1289,1297,1302,1304,1317,1321,1334 'tell':264 'templat':681,686,1578 'ters':1244,1548 'terse-output':1243,1547 'test':773 'text':908 'tick':74,543,550,569,982 'time':1108 'titl':1227 'top':1449 'topic-agent-skills' 'topic-ai-tools' 'topic-claude-code' 'topic-cursor' 'topic-dotfiles' 'total':153 'touch':1300 'tree':200,210,221,259,937,969,1422 'triag':72,892 'trust':1621 'typic':1364 'uncheck':156,650,1012 'uncommit':213,255 'untrack':214 'updat':1241 'upstream':1410 'url':236 'use':4,442,832,861,1396,1602 'user':7,124,266,316,335,599,639,1051,1155,1232,1238 'user-fac':1237 'valid':1316 'verdict':302,303 'verif':739,789 'verifi':70,756,762,1480,1552 'verification-before-complet':788 'verify-when-complet':761,1479 'version':718 'vincent':1611 'visibl':784 'wait':1152,1229 'want':8,606 'within':1082 'without':477 'work':51,199,209,220,750,1362 'workflow':88 'would':966 'write':1387,1407 'writing-plan':1386,1406 'x':991,1166 'yyyi':1377 'yyyy-mm-dd':1376 'z':215,499","prices":[{"id":"1c3ee066-32f3-441c-a52d-ab656a3c4bf6","listingId":"1ba926bd-b190-4fc9-936e-ebeb0941be27","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"paultyng","category":"skill-issue","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:26.236Z"}],"sources":[{"listingId":"1ba926bd-b190-4fc9-936e-ebeb0941be27","source":"github","sourceId":"paultyng/skill-issue/implement-plan","sourceUrl":"https://github.com/paultyng/skill-issue/tree/main/skills/implement-plan","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:26.236Z","lastSeenAt":"2026-05-18T19:09:01.073Z"}],"details":{"listingId":"1ba926bd-b190-4fc9-936e-ebeb0941be27","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"paultyng","slug":"implement-plan","github":{"repo":"paultyng/skill-issue","stars":8,"topics":["agent-skills","ai-tools","claude-code","cursor","dotfiles"],"license":"mit","html_url":"https://github.com/paultyng/skill-issue","pushed_at":"2026-05-18T18:26:54Z","description":"Personal Claude Code / Cursor agent skills, rules, and config","skill_md_sha":"67bafae54e6c4807c517fd4631e121941c464df0","skill_md_path":"skills/implement-plan/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/paultyng/skill-issue/tree/main/skills/implement-plan"},"layout":"multi","source":"github","category":"skill-issue","frontmatter":{"name":"implement-plan","description":"Use when the user wants to execute an approved implementation plan and says any of \"do it\" (with a plan in scope), \"lets do it\" / \"let's do it\", \"confirmed\" (as approval to proceed on a plan), \"implement the plan\", \"implement this\", \"execute the plan\", \"start implementing\", \"work through the plan\", \"implement the next phase\", \"build it out\", \"knock out the plan\", or \"/implement-plan PATH\". Also use when a plan file (`./PLAN.md`, or any `./docs/plans/*.md`) is present and the user signals readiness to begin coding. Do NOT use when the user is still discussing, refining, or asking questions about the plan, nor when no plan exists — short imperatives like \"do it\" or \"confirmed\" alone are ambiguous; verify a plan is in scope before activating."},"skills_sh_url":"https://skills.sh/paultyng/skill-issue/implement-plan"},"updatedAt":"2026-05-18T19:09:01.073Z"}}