@azure-id/orc 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/CHANGELOG.md +2017 -0
  2. package/README-id.md +521 -0
  3. package/README.md +485 -0
  4. package/bin/build-agents.js +86 -0
  5. package/bin/cli.js +29050 -0
  6. package/bin/mockrun-catalog.js +267 -0
  7. package/bin/onboarding-content.js +172 -0
  8. package/bin/pricing.json +200 -0
  9. package/bin/providers.json +437 -0
  10. package/bin/ui.js +95 -0
  11. package/bin/verify-contracts.js +3277 -0
  12. package/bin/verify-package.js +498 -0
  13. package/bin/webui/api.js +1163 -0
  14. package/bin/webui/app.html +198 -0
  15. package/bin/webui/css/00-tokens.css +92 -0
  16. package/bin/webui/css/01-base.css +42 -0
  17. package/bin/webui/css/02-shell.css +103 -0
  18. package/bin/webui/css/03-components.css +462 -0
  19. package/bin/webui/css/04-motion.css +91 -0
  20. package/bin/webui/css/05-tour.css +100 -0
  21. package/bin/webui/css/06-responsive.css +108 -0
  22. package/bin/webui/css/panels/boundary.css +26 -0
  23. package/bin/webui/css/panels/challenge.css +151 -0
  24. package/bin/webui/css/panels/crosslink.css +194 -0
  25. package/bin/webui/css/panels/docs.css +254 -0
  26. package/bin/webui/css/panels/experiment.css +23 -0
  27. package/bin/webui/css/panels/extra.css +536 -0
  28. package/bin/webui/css/panels/flow.css +177 -0
  29. package/bin/webui/css/panels/handoff.css +67 -0
  30. package/bin/webui/css/panels/knowledge.css +86 -0
  31. package/bin/webui/css/panels/learn.css +154 -0
  32. package/bin/webui/css/panels/maintenance.css +55 -0
  33. package/bin/webui/css/panels/mockrun.css +268 -0
  34. package/bin/webui/css/panels/overview.css +100 -0
  35. package/bin/webui/css/panels/pact.css +43 -0
  36. package/bin/webui/css/panels/runs.css +105 -0
  37. package/bin/webui/css/panels/settings.css +227 -0
  38. package/bin/webui/css/panels/stats.css +87 -0
  39. package/bin/webui/fixtures/boundary.js +92 -0
  40. package/bin/webui/fixtures/challenge.js +825 -0
  41. package/bin/webui/fixtures/crosslink.js +31 -0
  42. package/bin/webui/fixtures/docs.js +982 -0
  43. package/bin/webui/fixtures/extra.js +1934 -0
  44. package/bin/webui/fixtures/flow.js +81 -0
  45. package/bin/webui/fixtures/handoff.js +35 -0
  46. package/bin/webui/fixtures/index.js +486 -0
  47. package/bin/webui/fixtures/knowledge.js +291 -0
  48. package/bin/webui/fixtures/maintenance.js +42 -0
  49. package/bin/webui/fixtures/mockrun.js +36 -0
  50. package/bin/webui/fixtures/pact.js +111 -0
  51. package/bin/webui/fixtures/runs.js +109 -0
  52. package/bin/webui/fixtures/settings.js +78 -0
  53. package/bin/webui/fixtures/shell.js +48 -0
  54. package/bin/webui/fixtures/stats.js +104 -0
  55. package/bin/webui/i18n/TERMS.md +134 -0
  56. package/bin/webui/i18n/en/banner.json +29 -0
  57. package/bin/webui/i18n/en/boundary.json +20 -0
  58. package/bin/webui/i18n/en/challenge.json +106 -0
  59. package/bin/webui/i18n/en/common.json +69 -0
  60. package/bin/webui/i18n/en/crosslink.json +69 -0
  61. package/bin/webui/i18n/en/docs.json +175 -0
  62. package/bin/webui/i18n/en/experiment.json +17 -0
  63. package/bin/webui/i18n/en/extra.json +313 -0
  64. package/bin/webui/i18n/en/flow.json +30 -0
  65. package/bin/webui/i18n/en/handoff.json +37 -0
  66. package/bin/webui/i18n/en/knowledge.json +141 -0
  67. package/bin/webui/i18n/en/learn.json +16 -0
  68. package/bin/webui/i18n/en/maintenance.json +52 -0
  69. package/bin/webui/i18n/en/mockrun.json +19 -0
  70. package/bin/webui/i18n/en/nav.json +19 -0
  71. package/bin/webui/i18n/en/overview.json +89 -0
  72. package/bin/webui/i18n/en/pact.json +36 -0
  73. package/bin/webui/i18n/en/runs.json +51 -0
  74. package/bin/webui/i18n/en/settings.json +49 -0
  75. package/bin/webui/i18n/en/stats.json +69 -0
  76. package/bin/webui/i18n/en/tour.json +33 -0
  77. package/bin/webui/i18n/id/banner.json +29 -0
  78. package/bin/webui/i18n/id/boundary.json +20 -0
  79. package/bin/webui/i18n/id/challenge.json +106 -0
  80. package/bin/webui/i18n/id/common.json +70 -0
  81. package/bin/webui/i18n/id/crosslink.json +69 -0
  82. package/bin/webui/i18n/id/docs.json +175 -0
  83. package/bin/webui/i18n/id/experiment.json +17 -0
  84. package/bin/webui/i18n/id/extra.json +313 -0
  85. package/bin/webui/i18n/id/flow.json +30 -0
  86. package/bin/webui/i18n/id/handoff.json +37 -0
  87. package/bin/webui/i18n/id/knowledge.json +141 -0
  88. package/bin/webui/i18n/id/learn.json +16 -0
  89. package/bin/webui/i18n/id/maintenance.json +52 -0
  90. package/bin/webui/i18n/id/mockrun.json +19 -0
  91. package/bin/webui/i18n/id/nav.json +19 -0
  92. package/bin/webui/i18n/id/overview.json +89 -0
  93. package/bin/webui/i18n/id/pact.json +36 -0
  94. package/bin/webui/i18n/id/runs.json +51 -0
  95. package/bin/webui/i18n/id/settings.json +49 -0
  96. package/bin/webui/i18n/id/stats.json +69 -0
  97. package/bin/webui/i18n/id/tour.json +33 -0
  98. package/bin/webui/js/00-core.js +115 -0
  99. package/bin/webui/js/01-i18n.js +149 -0
  100. package/bin/webui/js/02-ui.js +211 -0
  101. package/bin/webui/js/03-md.js +286 -0
  102. package/bin/webui/js/04-router.js +51 -0
  103. package/bin/webui/js/05-banners.js +172 -0
  104. package/bin/webui/js/06-edit.js +183 -0
  105. package/bin/webui/js/90-tour.js +488 -0
  106. package/bin/webui/js/91-shortcuts.js +126 -0
  107. package/bin/webui/js/99-boot.js +118 -0
  108. package/bin/webui/js/panels/boundary.js +104 -0
  109. package/bin/webui/js/panels/challenge.js +781 -0
  110. package/bin/webui/js/panels/crosslink.js +654 -0
  111. package/bin/webui/js/panels/docs.js +1338 -0
  112. package/bin/webui/js/panels/experiment.js +98 -0
  113. package/bin/webui/js/panels/extra.js +3011 -0
  114. package/bin/webui/js/panels/flow.js +297 -0
  115. package/bin/webui/js/panels/handoff.js +169 -0
  116. package/bin/webui/js/panels/knowledge.js +890 -0
  117. package/bin/webui/js/panels/learn.js +220 -0
  118. package/bin/webui/js/panels/maintenance.js +235 -0
  119. package/bin/webui/js/panels/mockrun.js +227 -0
  120. package/bin/webui/js/panels/overview.js +447 -0
  121. package/bin/webui/js/panels/pact.js +189 -0
  122. package/bin/webui/js/panels/runs.js +416 -0
  123. package/bin/webui/js/panels/settings.js +573 -0
  124. package/bin/webui/js/panels/stats.js +378 -0
  125. package/bin/webui/serve.js +557 -0
  126. package/mock-run/INDEX.md +106 -0
  127. package/mock-run/a-normal-day.md +587 -0
  128. package/mock-run/context-combiner.md +100 -0
  129. package/mock-run/extra-recovery.md +330 -0
  130. package/mock-run/extra-slots.md +177 -0
  131. package/mock-run/media/README.md +43 -0
  132. package/mock-run/orc-aftermath.md +392 -0
  133. package/mock-run/orc-boundary.md +356 -0
  134. package/mock-run/orc-brainstorm.md +177 -0
  135. package/mock-run/orc-budget.md +534 -0
  136. package/mock-run/orc-challenge-council.md +262 -0
  137. package/mock-run/orc-challenge.md +416 -0
  138. package/mock-run/orc-cli.md +200 -0
  139. package/mock-run/orc-diy.md +129 -0
  140. package/mock-run/orc-doc.md +448 -0
  141. package/mock-run/orc-explain.md +86 -0
  142. package/mock-run/orc-export.md +423 -0
  143. package/mock-run/orc-extra.md +392 -0
  144. package/mock-run/orc-fast.md +106 -0
  145. package/mock-run/orc-grill.md +151 -0
  146. package/mock-run/orc-handoff.md +480 -0
  147. package/mock-run/orc-pact.md +421 -0
  148. package/mock-run/orc-pattern.md +112 -0
  149. package/mock-run/orc-plan.md +108 -0
  150. package/mock-run/orc-pr-setup.md +126 -0
  151. package/mock-run/orc-quick.md +113 -0
  152. package/mock-run/orc-route.md +93 -0
  153. package/mock-run/orc-ui.md +125 -0
  154. package/mock-run/orc-ultra.md +103 -0
  155. package/mock-run/orc.md +157 -0
  156. package/mock-run/the-example-project.md +55 -0
  157. package/package.json +39 -0
  158. package/templates/agents/MODEL-MAPPING.md +168 -0
  159. package/templates/agents/orc-advisor-fable-5.md +50 -0
  160. package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -0
  161. package/templates/agents/orc-analyst-fable-5.md +115 -0
  162. package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -0
  163. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -0
  164. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -0
  165. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -0
  166. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -0
  167. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -0
  168. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -0
  169. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -0
  170. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -0
  171. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -0
  172. package/templates/agents/orc-claude-writer-opus-4-8-high.md +53 -0
  173. package/templates/agents/orc-claude-writer-opus-5-med.md +55 -0
  174. package/templates/agents/orc-context-combiner-opus-5-high.md +88 -0
  175. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -0
  176. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -0
  177. package/templates/agents/orc-executor-haiku-4-5.md +113 -0
  178. package/templates/agents/orc-executor-opus-4-7-high.md +114 -0
  179. package/templates/agents/orc-executor-opus-4-7-med.md +114 -0
  180. package/templates/agents/orc-executor-opus-4-8-high.md +114 -0
  181. package/templates/agents/orc-executor-opus-5-high.md +114 -0
  182. package/templates/agents/orc-executor-opus-5-low.md +114 -0
  183. package/templates/agents/orc-executor-opus-5-med.md +114 -0
  184. package/templates/agents/orc-executor-sonnet-4-6-high.md +114 -0
  185. package/templates/agents/orc-executor-sonnet-4-6-med.md +114 -0
  186. package/templates/agents/orc-executor-sonnet-5-high.md +114 -0
  187. package/templates/agents/orc-judge-fable-5.md +79 -0
  188. package/templates/agents/orc-judge-opus-5-xhigh.md +85 -0
  189. package/templates/agents/orc-learn-writer-opus-5-low.md +73 -0
  190. package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -0
  191. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +63 -0
  192. package/templates/agents/orc-planner-fable-5.md +152 -0
  193. package/templates/agents/orc-planner-mini-opus-5-med.md +69 -0
  194. package/templates/agents/orc-planner-mini-sonnet-5-high.md +67 -0
  195. package/templates/agents/orc-planner-opus-5-med.md +160 -0
  196. package/templates/agents/orc-retro-opus-5-med.md +73 -0
  197. package/templates/agents/orc-retro-sonnet-5-high.md +72 -0
  198. package/templates/agents/orc-reviewer-fable-5.md +57 -0
  199. package/templates/agents/orc-reviewer-opus-5-med.md +60 -0
  200. package/templates/agents/orc-scout-opus-5-low.md +40 -0
  201. package/templates/agents/orc-scout-sonnet-4-6-high.md +39 -0
  202. package/templates/agents/orc-system-analyst-opus-5-high.md +120 -0
  203. package/templates/agents/orc-test-author-opus-5-med.md +71 -0
  204. package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -0
  205. package/templates/agents/orc-verifier-opus-5-med.md +69 -0
  206. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +79 -0
  207. package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -0
  208. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +106 -0
  209. package/templates/commands/orc-aftermath.md +49 -0
  210. package/templates/commands/orc-analyze.md +21 -0
  211. package/templates/commands/orc-boundary.md +46 -0
  212. package/templates/commands/orc-brainstorm.md +51 -0
  213. package/templates/commands/orc-budget.md +54 -0
  214. package/templates/commands/orc-challenge.md +58 -0
  215. package/templates/commands/orc-claude.md +14 -0
  216. package/templates/commands/orc-diy.md +13 -0
  217. package/templates/commands/orc-doc.md +128 -0
  218. package/templates/commands/orc-explain.md +20 -0
  219. package/templates/commands/orc-export.md +46 -0
  220. package/templates/commands/orc-fast.md +15 -0
  221. package/templates/commands/orc-grill.md +40 -0
  222. package/templates/commands/orc-handoff.md +52 -0
  223. package/templates/commands/orc-learn.md +17 -0
  224. package/templates/commands/orc-mini.md +12 -0
  225. package/templates/commands/orc-pact.md +44 -0
  226. package/templates/commands/orc-pattern.md +15 -0
  227. package/templates/commands/orc-plan.md +22 -0
  228. package/templates/commands/orc-poly.md +21 -0
  229. package/templates/commands/orc-pr-driver.md +30 -0
  230. package/templates/commands/orc-pr-setup.md +31 -0
  231. package/templates/commands/orc-quick.md +33 -0
  232. package/templates/commands/orc-retro.md +17 -0
  233. package/templates/commands/orc-route.md +41 -0
  234. package/templates/commands/orc-ultra.md +17 -0
  235. package/templates/commands/orc-verify.md +11 -0
  236. package/templates/commands/orc-wiki.md +42 -0
  237. package/templates/commands/orc.md +16 -0
  238. package/templates/hooks/orc-effort-guard.js +178 -0
  239. package/templates/hooks/orc-statusline.js +305 -0
  240. package/templates/hooks/orc-trace.js +471 -0
  241. package/templates/hooks/orc-update-lib.js +125 -0
  242. package/templates/skills/_shared/README.md +50 -0
  243. package/templates/skills/_shared/detecting-artifacts.md +90 -0
  244. package/templates/skills/_shared/drift-recovery.md +98 -0
  245. package/templates/skills/_shared/extra-dispatch.md +1051 -0
  246. package/templates/skills/_shared/fable5-override.md +56 -0
  247. package/templates/skills/_shared/fallback-handoff.md +42 -0
  248. package/templates/skills/_shared/gh-stack-commands.md +65 -0
  249. package/templates/skills/_shared/gotchas.md +177 -0
  250. package/templates/skills/_shared/interview.md +144 -0
  251. package/templates/skills/_shared/lane-suspend.md +82 -0
  252. package/templates/skills/_shared/opus5-only.md +131 -0
  253. package/templates/skills/_shared/pr-templates.md +106 -0
  254. package/templates/skills/_shared/read-ladder.md +54 -0
  255. package/templates/skills/_shared/return-validation.md +145 -0
  256. package/templates/skills/_shared/smoke-gate.md +28 -0
  257. package/templates/skills/_shared/stack-plan.md +135 -0
  258. package/templates/skills/_shared/untrusted-input.md +63 -0
  259. package/templates/skills/context-combiner/SKILL.md +187 -0
  260. package/templates/skills/context-combiner/schemas/combined-report.md +78 -0
  261. package/templates/skills/context-combiner/schemas/combined-requirement-spec.md +87 -0
  262. package/templates/skills/orc/README.md +150 -0
  263. package/templates/skills/orc/SKILL.md +526 -0
  264. package/templates/skills/orc/config.md +389 -0
  265. package/templates/skills/orc/examples/full-run-mock.md +73 -0
  266. package/templates/skills/orc/references/analyst-gates.md +124 -0
  267. package/templates/skills/orc/references/effort-and-mode.md +224 -0
  268. package/templates/skills/orc/references/house-rules.md +20 -0
  269. package/templates/skills/orc/references/intake.md +120 -0
  270. package/templates/skills/orc/references/log-protocol.md +39 -0
  271. package/templates/skills/orc/references/pattern-gate.md +89 -0
  272. package/templates/skills/orc/references/plan-handoff.md +84 -0
  273. package/templates/skills/orc/references/preflight-report.md +220 -0
  274. package/templates/skills/orc/references/security-checklist.md +39 -0
  275. package/templates/skills/orc/references/stop-and-resume.md +160 -0
  276. package/templates/skills/orc/references/trace-protocol.md +314 -0
  277. package/templates/skills/orc/references/ultra-mode.md +123 -0
  278. package/templates/skills/orc/references/wave-grouping.md +121 -0
  279. package/templates/skills/orc/references/wiki-consult.md +177 -0
  280. package/templates/skills/orc/schemas/checkpoint.md +122 -0
  281. package/templates/skills/orc/schemas/intent-spec.md +42 -0
  282. package/templates/skills/orc/schemas/planning-output.md +279 -0
  283. package/templates/skills/orc/subskills/orc-checkpoint/SKILL.md +55 -0
  284. package/templates/skills/orc/subskills/orc-execution/SKILL.md +72 -0
  285. package/templates/skills/orc/subskills/orc-execution/core.md +151 -0
  286. package/templates/skills/orc/subskills/orc-execution/subagent.md +13 -0
  287. package/templates/skills/orc/subskills/orc-planner/SKILL.md +264 -0
  288. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -0
  289. package/templates/skills/orc/subskills/orc-pr/SKILL.md +51 -0
  290. package/templates/skills/orc/subskills/orc-pr/pr.md +22 -0
  291. package/templates/skills/orc/subskills/orc-pr/stack-gate.md +108 -0
  292. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -0
  293. package/templates/skills/orc/subskills/orc-review-verify/core.md +135 -0
  294. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -0
  295. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -0
  296. package/templates/skills/orc/subskills/orc-testgen/core.md +59 -0
  297. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -0
  298. package/templates/skills/orc-advisor/SKILL.md +60 -0
  299. package/templates/skills/orc-aftermath/SKILL.md +136 -0
  300. package/templates/skills/orc-aftermath/references/report.md +95 -0
  301. package/templates/skills/orc-analyze/SKILL.md +220 -0
  302. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -0
  303. package/templates/skills/orc-analyze/references/branching.md +51 -0
  304. package/templates/skills/orc-analyze/references/deep-mode.md +27 -0
  305. package/templates/skills/orc-analyze/references/thin-input.md +77 -0
  306. package/templates/skills/orc-analyze/schemas/report-audit.md +83 -0
  307. package/templates/skills/orc-analyze/schemas/report-prose.md +63 -0
  308. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -0
  309. package/templates/skills/orc-analyze/schemas/requirement-spec.md +77 -0
  310. package/templates/skills/orc-analyze-mini/SKILL.md +112 -0
  311. package/templates/skills/orc-analyze-mini/examples/quick-analysis-mock.md +31 -0
  312. package/templates/skills/orc-boundary/SKILL.md +208 -0
  313. package/templates/skills/orc-boundary/references/card.md +78 -0
  314. package/templates/skills/orc-boundary/references/gate.md +113 -0
  315. package/templates/skills/orc-brainstorm/SKILL.md +339 -0
  316. package/templates/skills/orc-brainstorm/references/brainstorm-doc.md +133 -0
  317. package/templates/skills/orc-brainstorm/references/lenses.md +152 -0
  318. package/templates/skills/orc-budget/SKILL.md +225 -0
  319. package/templates/skills/orc-budget/references/corpus.md +87 -0
  320. package/templates/skills/orc-challenge/README.md +142 -0
  321. package/templates/skills/orc-challenge/SKILL.md +255 -0
  322. package/templates/skills/orc-challenge/examples/code-module.md +110 -0
  323. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -0
  324. package/templates/skills/orc-challenge/examples/tsd-two-iterations.md +213 -0
  325. package/templates/skills/orc-challenge/references/conservation.md +107 -0
  326. package/templates/skills/orc-challenge/references/council.md +315 -0
  327. package/templates/skills/orc-challenge/references/cycle-state.md +185 -0
  328. package/templates/skills/orc-challenge/references/dimensions.md +121 -0
  329. package/templates/skills/orc-challenge/references/fix-brief.md +130 -0
  330. package/templates/skills/orc-challenge/references/intake.md +171 -0
  331. package/templates/skills/orc-challenge/references/kinds.md +44 -0
  332. package/templates/skills/orc-challenge/references/plain-english.md +98 -0
  333. package/templates/skills/orc-challenge/references/rubric.md +109 -0
  334. package/templates/skills/orc-challenge/references/sealed-slice.md +97 -0
  335. package/templates/skills/orc-challenge/references/verdict-doc.md +154 -0
  336. package/templates/skills/orc-claude/SKILL.md +199 -0
  337. package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -0
  338. package/templates/skills/orc-claude/references/refresh.md +76 -0
  339. package/templates/skills/orc-claude/references/template.md +109 -0
  340. package/templates/skills/orc-diy/README.md +142 -0
  341. package/templates/skills/orc-diy/SKILL.md +70 -0
  342. package/templates/skills/orc-diy/references/blocks/analyze.md +24 -0
  343. package/templates/skills/orc-diy/references/blocks/execution.md +42 -0
  344. package/templates/skills/orc-diy/references/blocks/extra.md +55 -0
  345. package/templates/skills/orc-diy/references/blocks/header.md +55 -0
  346. package/templates/skills/orc-diy/references/blocks/mock-example.md +22 -0
  347. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -0
  348. package/templates/skills/orc-diy/references/blocks/planning.md +34 -0
  349. package/templates/skills/orc-diy/references/blocks/review.md +18 -0
  350. package/templates/skills/orc-diy/references/blocks/scoring.md +16 -0
  351. package/templates/skills/orc-diy/references/blocks/security.md +25 -0
  352. package/templates/skills/orc-diy/references/blocks/ship.md +25 -0
  353. package/templates/skills/orc-diy/references/blocks/summary.md +18 -0
  354. package/templates/skills/orc-diy/references/blocks/testgen.md +17 -0
  355. package/templates/skills/orc-diy/references/blocks/trace.md +28 -0
  356. package/templates/skills/orc-diy/references/blocks/verify.md +25 -0
  357. package/templates/skills/orc-diy/references/blocks/wiki.md +26 -0
  358. package/templates/skills/orc-diy/references/compile.md +59 -0
  359. package/templates/skills/orc-diy/references/flow-schema.md +100 -0
  360. package/templates/skills/orc-diy/references/locked-blocks.md +37 -0
  361. package/templates/skills/orc-doc/README.md +229 -0
  362. package/templates/skills/orc-doc/SKILL.md +444 -0
  363. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -0
  364. package/templates/skills/orc-doc/references/chunking.md +527 -0
  365. package/templates/skills/orc-doc/references/gates.md +311 -0
  366. package/templates/skills/orc-doc/references/generation-rules.md +122 -0
  367. package/templates/skills/orc-doc/references/house-rules.md +170 -0
  368. package/templates/skills/orc-doc/references/import-targets.md +40 -0
  369. package/templates/skills/orc-doc/references/plain-language.md +66 -0
  370. package/templates/skills/orc-doc/references/portable-markdown.md +74 -0
  371. package/templates/skills/orc-doc/references/resume-protocol.md +228 -0
  372. package/templates/skills/orc-doc/references/templates/collaboration.md +118 -0
  373. package/templates/skills/orc-doc/references/templates/prd.md +133 -0
  374. package/templates/skills/orc-doc/references/templates/report.md +102 -0
  375. package/templates/skills/orc-doc/references/templates/tsd.md +122 -0
  376. package/templates/skills/orc-doc/references/templates/workflow.md +112 -0
  377. package/templates/skills/orc-explain/SKILL.md +57 -0
  378. package/templates/skills/orc-export/SKILL.md +154 -0
  379. package/templates/skills/orc-fast/SKILL.md +188 -0
  380. package/templates/skills/orc-grill/SKILL.md +207 -0
  381. package/templates/skills/orc-grill/references/grill-doc.md +105 -0
  382. package/templates/skills/orc-handoff/SKILL.md +204 -0
  383. package/templates/skills/orc-handoff/references/handoff-log.md +67 -0
  384. package/templates/skills/orc-handoff/references/surfaces.md +88 -0
  385. package/templates/skills/orc-judge/SKILL.md +82 -0
  386. package/templates/skills/orc-learn/SKILL.md +156 -0
  387. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -0
  388. package/templates/skills/orc-learn/references/deepen.md +70 -0
  389. package/templates/skills/orc-learn/references/refresh.md +65 -0
  390. package/templates/skills/orc-learn/references/template-knowledge.md +83 -0
  391. package/templates/skills/orc-learn/references/template-learning.md +67 -0
  392. package/templates/skills/orc-mini/SKILL.md +226 -0
  393. package/templates/skills/orc-mini/examples/mini-run-mock.md +50 -0
  394. package/templates/skills/orc-pact/SKILL.md +218 -0
  395. package/templates/skills/orc-pact/references/gate.md +70 -0
  396. package/templates/skills/orc-pact/references/ledger.md +99 -0
  397. package/templates/skills/orc-pattern/SKILL.md +124 -0
  398. package/templates/skills/orc-pattern/references/INDEX.md +73 -0
  399. package/templates/skills/orc-pattern/references/be-django.md +80 -0
  400. package/templates/skills/orc-pattern/references/be-express.md +82 -0
  401. package/templates/skills/orc-pattern/references/be-fastapi.md +107 -0
  402. package/templates/skills/orc-pattern/references/be-go.md +96 -0
  403. package/templates/skills/orc-pattern/references/be-nestjs.md +86 -0
  404. package/templates/skills/orc-pattern/references/be-postgres.md +98 -0
  405. package/templates/skills/orc-pattern/references/fe-a11y.md +36 -0
  406. package/templates/skills/orc-pattern/references/fe-angular.md +87 -0
  407. package/templates/skills/orc-pattern/references/fe-nextjs.md +65 -0
  408. package/templates/skills/orc-pattern/references/fe-perf.md +39 -0
  409. package/templates/skills/orc-pattern/references/fe-react.md +83 -0
  410. package/templates/skills/orc-pattern/references/fe-vue.md +75 -0
  411. package/templates/skills/orc-pattern/schemas/pattern-doc.md +62 -0
  412. package/templates/skills/orc-poly/SKILL.md +216 -0
  413. package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -0
  414. package/templates/skills/orc-poly/references/gather.md +70 -0
  415. package/templates/skills/orc-poly/references/poly-spec.md +84 -0
  416. package/templates/skills/orc-pr-driver/README.md +349 -0
  417. package/templates/skills/orc-pr-driver/SKILL.md +167 -0
  418. package/templates/skills/orc-pr-driver/references/conflict-playbook.md +78 -0
  419. package/templates/skills/orc-pr-driver/references/green-gate.md +105 -0
  420. package/templates/skills/orc-pr-driver/references/orc-run-split.md +99 -0
  421. package/templates/skills/orc-pr-setup/README.md +436 -0
  422. package/templates/skills/orc-pr-setup/SKILL.md +184 -0
  423. package/templates/skills/orc-pr-setup/references/certainty-gate.md +66 -0
  424. package/templates/skills/orc-pr-setup/references/layer-taxonomy.md +67 -0
  425. package/templates/skills/orc-quick/README.md +423 -0
  426. package/templates/skills/orc-quick/SKILL.md +306 -0
  427. package/templates/skills/orc-quick/references/context-doc.md +114 -0
  428. package/templates/skills/orc-quick/references/dispatch-gate.md +163 -0
  429. package/templates/skills/orc-quick/references/gh-mode.md +127 -0
  430. package/templates/skills/orc-retro/SKILL.md +222 -0
  431. package/templates/skills/orc-retro/examples/retro-mock.md +171 -0
  432. package/templates/skills/orc-route/SKILL.md +165 -0
  433. package/templates/skills/orc-verify/SKILL.md +86 -0
  434. package/templates/skills/orc-verify/examples/verify-mock.md +33 -0
  435. package/templates/skills/orc-wiki/README.md +325 -0
  436. package/templates/skills/orc-wiki/SKILL.md +322 -0
  437. package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -0
  438. package/templates/skills/orc-wiki/references/claude-md-injection.md +61 -0
  439. package/templates/skills/orc-wiki/references/crosslink-compile.md +39 -0
  440. package/templates/skills/orc-wiki/references/crosslink-kinds.md +57 -0
  441. package/templates/skills/orc-wiki/references/crosslink.md +284 -0
  442. package/templates/skills/orc-wiki/references/extra.md +79 -0
  443. package/templates/skills/orc-wiki/references/integrity-check.md +86 -0
  444. package/templates/skills/orc-wiki/references/orientation.md +51 -0
  445. package/templates/skills/orc-wiki/references/partial-refresh.md +203 -0
  446. package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -0
  447. package/templates/skills/orc-wiki/references/staleness.md +288 -0
  448. package/templates/skills/orc-wiki/schemas/crosslink-tag.md +166 -0
  449. package/templates/skills/orc-wiki/schemas/wiki-doc.md +120 -0
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: orc-checkpoint
3
+ description: >
4
+ Stateless persistence service for ORC — the checkpoint read/write engine. On a
5
+ trigger passed in by the orchestrator (batch_pause | token_limit |
6
+ phase_transition | crash_guard), it atomically writes
7
+ run/{slug}/checkpoint.json, regenerates the 10-line state-of-play.md, then reads
8
+ both back and validates; the read op locates the newest valid checkpoint for a
9
+ fresh-session resume. It makes NO judgment — it never decides WHEN to stop or
10
+ resume (the orchestrator owns that and passes the trigger in). Coordination
11
+ skill: always runs inline (loaded by the orchestrator), never spawned. Not for
12
+ direct user invocation.
13
+ ---
14
+
15
+ # orc-checkpoint
16
+
17
+ ## Boundary (locked in design)
18
+
19
+ - Orchestrator DECIDES: when to checkpoint, when to stop, when/whether to
20
+ resume. These judgments need full run context and never leave the orchestrator.
21
+ - This skill EXECUTES: serialize/write atomically, read/validate back. It makes
22
+ no judgment; the `trigger` is an input, already decided.
23
+
24
+ ## Write operation
25
+
26
+ Input: run_state (the checkpoint fields per `../../schemas/checkpoint.md`),
27
+ trigger (batch_pause | token_limit | phase_transition | crash_guard)
28
+
29
+ Minimal `run_state` shape (see `../../schemas/checkpoint.md` for the full field set):
30
+ ```json
31
+ { "run_slug": "merchant-notifications", "phase": 3, "updated_at": "2026-07-10T09:00:00Z",
32
+ "tasks": [ { "id": "T1", "status": "done", "actual_files": ["services/notify.ts"] } ],
33
+ "resume_pointer": "wave 2 of 3", "logging_enabled": true }
34
+ ```
35
+ Steps:
36
+ 1. Serialize run_state to JSON.
37
+ 2. Atomic write: temp file → rename to run/{run-slug}/checkpoint.json.
38
+ 3. Regenerate run/{run-slug}/state-of-play.md from the same state (10-line format per
39
+ `../../schemas/checkpoint.md`).
40
+ 4. Read back and validate both writes.
41
+ Return: { checkpoint_path, state_of_play_path, written_at, resume_pointer }
42
+
43
+ A failed or unvalidated write returns failure — the caller must NOT stop the
44
+ session on a failed write; it surfaces the failure instead.
45
+
46
+ ## Read operation
47
+
48
+ Input: run_id (or "newest")
49
+ Steps: locate the run subfolder, then newest valid checkpoint by updated_at → parse → validate schema.
50
+ Return: { run_state, resume_pointer } or failure if none valid.
51
+
52
+ ## What this skill never does
53
+
54
+ - Decide to stop. Announce a pause. Talk to the user. Modify task logic.
55
+ - Write anything other than the two files above.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: orc-execution
3
+ description: >
4
+ Executor worker for ORC — the single-task implementer. Given one task slice
5
+ (task_id, declared_files, constraints, spec_ref, log_digest), it implements
6
+ EXACTLY that task within its declared files, honors every hard-rule constraint,
7
+ creates/updates tests, emits milestone progress pings, and returns a strict
8
+ contract (status done|failed|partial|needs_context, actual_files, log_entries,
9
+ and claimed-vs-actual model/effort so the caller can catch a silent tier
10
+ downgrade). Dispatched once per task in an execution wave, on the scored model
11
+ pinned by its executor agent. Distinct from the review/verify/test-author
12
+ workers — this one writes the implementation. ALWAYS a spawned subagent; the
13
+ orchestrator never implements. Not for direct user invocation.
14
+ ---
15
+
16
+ # orc-execution
17
+
18
+ One entry point: the orchestrator spawns a subagent via the Task tool,
19
+ prepending `subagent.md` framing + the input slice, which points to `core.md`.
20
+ `core.md` is the AUTHORITATIVE spec (full input slice, procedure, and return
21
+ contract); the summary below orients — on any conflict, `core.md` wins.
22
+
23
+ ## What the worker does (summary)
24
+
25
+ 1. Absorb `log_digest` (prior DECISIONs/INTERFACEs/ANSWERs bind you); read `spec_ref`.
26
+ 2. Implement EXACTLY the task in the slice, touching only `declared_files[]`,
27
+ honoring every `constraints[]` hard rule AND the standing `house_rules` card
28
+ (surgical changes, simplicity-first, no unrequested scope, never claim
29
+ unobserved results, honest partial over false done); create/update
30
+ tests for what you build.
31
+ 3. Run the proof: build/test for your changes, capturing `evidence`
32
+ {command, exit_code, tail} VERBATIM (no runner → `no_runner_detected: true`);
33
+ self-check the diff against the slice's `acceptance[]` + `constraints[]` —
34
+ anything unsatisfied goes in `unmet[]` (non-empty = partial/failed, never done).
35
+ 4. Emit milestone pings ({percent, files_written[], notes}) as you go.
36
+ 5. Stay in your slice — need outside context? emit `needs_context`, don't fetch it.
37
+
38
+ ## Return shape (summary — full contract in `core.md`)
39
+
40
+ `{ task_id, actual_model, actual_effort, status: done|failed|partial|needs_context,
41
+ actual_files[], evidence, no_runner_detected, unmet[], log_entries[],
42
+ failure_reason, progress, context_request,
43
+ pattern_version, invariants_checked, tdd_state }`
44
+
45
+ When the slice carries a `pattern`, MATCH its conventions, satisfy every BLOCKING
46
+ invariant AND every enforceable `validation_gate[]` line (advisory gate lines are
47
+ informational); echo the `pattern_version` and set `invariants_checked: true` only after
48
+ re-checking your diff. A pattern task that returns false/absent here is malformed.
49
+
50
+ When the slice carries a `tdd_spec` (v0.33.0), run its materialized tests and
51
+ implement to green — implement→test→repair, capped at the slice's
52
+ `tdd_loop_max`; never edit a TDD test to make it pass (a wrong-looking test is
53
+ a spec bug — return it). Return `tdd_state: green|red` (green needs the passing
54
+ run in `evidence`; `done` with red is malformed).
55
+
56
+ **Crosslink injection (orchestrator-side, advisory).** At slice assembly, if a
57
+ task's declared files include a call site that matches an entry in
58
+ `.claude/orc/crosslink/needs.json`, prepend the cached tag contract (from
59
+ `.claude/orc/crosslink/cache/`) to the slice as `crosslink`, labeled with its
60
+ effective cross-repo tier + "hints, not verified". The executor MATCHES the
61
+ stated field names/types but never lets it override local code — it is advisory,
62
+ so there is NO return field and nothing to attest (unlike `pattern`). A task with
63
+ no boundary carries no `crosslink`.
64
+ On a UI task, if the environment ships a `frontend-design` skill, read and apply
65
+ it (skip silently when absent).
66
+
67
+ **Validation checkpoint before returning:** `status=failed` REQUIRES a
68
+ `failure_reason`; `needs_context` REQUIRES a `context_request` (capped at 2/task);
69
+ `actual_model` is quoted VERBATIM from your system prompt, never inferred;
70
+ `status=done` REQUIRES `evidence` when a runner exists (else
71
+ `no_runner_detected: true`) and an EMPTY `unmet[]`. A
72
+ malformed return is treated as failure by the caller.
@@ -0,0 +1,151 @@
1
+ # orc-execution — Core (mode-neutral)
2
+
3
+ A procedure specification: inputs, steps, outputs. Executed by a spawned
4
+ subagent; the orchestrator never runs this itself.
5
+
6
+ ## Input slice (you receive exactly this; you cannot pull more)
7
+
8
+ - task_id, description, spec_ref
9
+ - declared_files[] — the files you are expected to touch (incl. tests)
10
+ - acceptance[] — this task's sliced definition-of-done lines (from the
11
+ plan); self-check your diff against them before returning
12
+ - constraints[] — HARD RULES from the intent-spec, plus the task's
13
+ `spec_invariants` (analyst do-not-build invariants)
14
+ appended verbatim at slice assembly; never violate
15
+ - pattern — the resolved code-pattern for this task's language, or
16
+ null. When present: {conventions[] you MUST MATCH,
17
+ invariants[] that are BLOCKING, validation_gate[]
18
+ (enforceable acceptance checks you must SATISFY —
19
+ advisory lines are marked and informational),
20
+ pattern_version}. Agnostic
21
+ tasks carry invariants only (no conventions, no gate).
22
+ - wiki — project-wiki grounding for this task, or absent:
23
+ page CONTENT (full/mini) or page PATHS to read first
24
+ (fast), plus the freshness tier in force. Precedence
25
+ is always `code > fresh wiki > stale wiki (hints) >
26
+ model priors` — on any wiki-vs-code conflict the code
27
+ wins. You MUST return `wiki_used` naming the pages
28
+ you actually read, or `none`; see the return
29
+ contract. Absent on a task the orchestrator grounded
30
+ without the wiki.
31
+ - crosslink — the cross-repo boundary contract for a call site in
32
+ this task, or null. Present ONLY when a declared file
33
+ touches a boundary the orchestrator resolved from
34
+ `.claude/orc/crosslink/needs.json` + cache. It is
35
+ ADVISORY hints ("cross-repo fresh/aging/stale wiki")
36
+ labeled with an effective tier — MATCH the field
37
+ names/types/errors it states, but it never overrides
38
+ local code and there is nothing to attest (no return
39
+ field). Absent on any task with no boundary.
40
+ - gotchas — 0–3 repair-memory entries whose `scope` glob matches
41
+ this task's declared_files, or absent. Each is one
42
+ failure THIS PROJECT already hit and fixed
43
+ {trigger, symptom, cause, fix}. Read them as a
44
+ "don't re-pay for this" list, not as requirements:
45
+ they never override `acceptance[]`, `constraints[]`
46
+ or the pattern's invariants. Absent = no match, which
47
+ is the normal case — never treat absence as a signal.
48
+ Canonical: `.claude/skills/_shared/gotchas.md`.
49
+ - tdd_spec — this task's plan-time acceptance tests, or null
50
+ (TDD off, or every entry scoped out as
51
+ covered-by-existing / no-behavior / no-runner —
52
+ null is NOT "untested"). Present = the failing tests
53
+ a PAIRED TDD task already materialized, which your
54
+ work must
55
+ turn GREEN, plus `tdd_loop_max` (the repair cap).
56
+ Never edit a TDD test to make it pass — a test
57
+ that looks wrong is a spec bug: return it, don't
58
+ fix it.
59
+ - house_rules — the standing behavioral card (injected literally,
60
+ never a pointer): surgical changes, simplicity-first,
61
+ no unrequested scope, boring-solution preference
62
+ - log_digest — compacted decisions from prior waves; absorb before working
63
+ - worktree_path — null unless worktrees mode
64
+ - model, effort — informational (already applied by the caller)
65
+
66
+ ## Procedure
67
+
68
+ 1. Absorb log_digest — prior DECISIONs/INTERFACEs/ANSWERs bind you.
69
+ 2. Read spec_ref if provided.
70
+ 2a. **Read on the ladder** (`../../../_shared/read-ladder.md`): locate
71
+ (Grep/Glob) → outline → the ±40 lines around the anchor → full. Stop at the
72
+ step that answers the question; two full reads with no answer is
73
+ `needs_context`, not a third. TWO EXCEPTIONS — every `declared_files` path is
74
+ a FULL read before you edit it (an `old_string` rebuilt from an outline is a
75
+ corruption bug), and build/test output is always read whole.
76
+ 3. Perform the task within `worktree_path` (or the current tree if null).
77
+ Obey every `house_rules` line. Follow every constraint. If `pattern` is present, MATCH its conventions,
78
+ satisfy every BLOCKING invariant, and satisfy every enforceable
79
+ `validation_gate[]` line (re-read your diff to confirm before returning;
80
+ advisory gate lines are informational — never add tooling to meet one);
81
+ if `pattern` is null but carries invariants (agnostic), still satisfy them and
82
+ imitate the neighboring files you read. Create/update tests for what you build.
83
+ **UI task + a `frontend-design` skill present in the environment** (check
84
+ `.claude/skills/frontend-design/` or the plugin dir): read its SKILL.md and
85
+ apply its guidance to the UI work — skip silently when absent.
86
+ 4. **Run the proof, capture the evidence:** if the project has a runnable build
87
+ or test setup, run it for your changes and capture {command, exit_code, the
88
+ last ~5 output lines} — QUOTED VERBATIM, never paraphrased, never predicted.
89
+ No runner → set `no_runner_detected: true` instead. Never claim green you
90
+ did not observe. With a `tdd_spec`: run ITS tests too — implement → test →
91
+ repair up to `tdd_loop_max` iterations; still red at the cap → stop and
92
+ return `tdd_state: red` honestly (the failing tests listed in unmet[]).
93
+ 5. **Self-check before returning:** re-read your diff against every
94
+ `acceptance[]` line and every `constraints[]` rule. Anything you could not
95
+ satisfy goes in `unmet[]` — and a non-empty `unmet[]` means status `partial`
96
+ (or `failed`), never `done`. An honest partial beats a false done.
97
+ 6. **Milestone pings:** after each declared file completed or logical subtask
98
+ done, emit a brief progress ping: {percent, files_written[], notes}. These
99
+ bound what a mid-wave stop can save — do not skip them.
100
+ 7. Stay within your task. Discovering needed context outside your slice →
101
+ emit the needs_context return (below). Do NOT fetch it yourself.
102
+
103
+ ## Return contract (emit EXACTLY this structure; the caller validates)
104
+
105
+ - task_id
106
+ - actual_model — the model id quoted VERBATIM from your system prompt
107
+ ("The exact model ID is …"); NEVER inferred from priors;
108
+ `unknown` if no such line exists. Lets the caller catch
109
+ a silent tier downgrade (claimed-vs-actual model check)
110
+ - actual_effort — the value of $CLAUDE_EFFORT (read via Bash at start)
111
+ - status: done | failed | partial | needs_context
112
+ - actual_files[] — every file you truly touched (audited vs declared)
113
+ - evidence — {command, exit_code, tail} of the build/test you ran,
114
+ quoted VERBATIM (like actual_model — never invented).
115
+ REQUIRED when status=done and the project has a
116
+ runnable build/test; null when it has none
117
+ - no_runner_detected — true ONLY when the project exposes no runnable
118
+ build/test (explains a null evidence); else absent
119
+ - unmet[] — acceptance[]/constraints[] lines you could NOT
120
+ satisfy. MUST be empty when status=done — a
121
+ non-empty unmet[] forces partial/failed
122
+ - log_entries[] — cross-cutting decisions for the decision log,
123
+ tagged DECISION | CONSTRAINT | INTERFACE
124
+ - failure_reason — REQUIRED when status=failed (the why); else null
125
+ - progress — {percent, files_written[], notes} when partial; else null
126
+ - context_request — REQUIRED when status=needs_context: what you need
127
+ and why (e.g. "needs T1's type enum interface");
128
+ else null
129
+ - pattern_version — the `pattern.pattern_version` you applied; null if no
130
+ pattern was supplied
131
+ - invariants_checked — true ONLY if you verified every BLOCKING invariant in
132
+ `pattern` against your diff; false/null if no invariants
133
+ were supplied. A pattern task returning false/absent here
134
+ is a malformed return
135
+ - tdd_state — green | red | null. REQUIRED when the slice carried a
136
+ `tdd_spec`: green ONLY after its tests pass (run quoted
137
+ in `evidence`); red = cap hit/unresolved (failing tests
138
+ in unmet[]); null only without a tdd_spec. status=done
139
+ with red is malformed
140
+ - gotcha_recorded — REQUIRED when this return CLOSES a repair loop (you
141
+ drove a tdd_spec test red → green): the entry body
142
+ {trigger, symptom, cause, fix, scope}, or `none` + a
143
+ one-line reason. Absent on a repair-closing return is
144
+ malformed; not required when nothing was repaired. A
145
+ loop that hit `tdd_loop_max` and STOPPED returns
146
+ `none` — an unsolved failure is not a gotcha. You
147
+ RETURN it; the caller writes the file
148
+
149
+ Malformed returns are treated as failure by the caller. needs_context is
150
+ capped at 2 per task — a third means the slice or plan is wrong and escalates
151
+ to the user.
@@ -0,0 +1,13 @@
1
+ # orc-execution — Subagent wrapper (orchestrator prepends this at spawn)
2
+
3
+ You are an isolated execution worker. You have no memory of the wider run
4
+ beyond the slice below. Do exactly one task.
5
+
6
+ - Work only within your slice's declared_files and worktree_path (if set).
7
+ - Do not touch the checkpoint, state-of-play, or the raw decision log — your
8
+ log_entries are returned, and the orchestrator appends them.
9
+ - Emit milestone pings as you progress.
10
+ - When done (or blocked), emit the return structure from `core.md` and STOP.
11
+ Do not continue past your task.
12
+
13
+ [Orchestrator: append the input slice here at spawn time.]
@@ -0,0 +1,264 @@
1
+ ---
2
+ name: orc-planner
3
+ description: >
4
+ Requirement Planner for ORC (Opus 5 medium). Turns a detailed request OR a
5
+ System Analyst requirement-spec into orc's planning-output: right-sized tasks,
6
+ each with grounded declared_files (incl. tests), explicit depends_on, owns_area,
7
+ and spec_ref — self-checked for dependency cycles and same-file collisions. A
8
+ planner OPTION in orc Phase 1 and available standalone via /orc-plan (fires on
9
+ "plan this", "break this into tasks", "turn this spec into a task plan").
10
+ Distinct from the fast orc-planner-mini (Sonnet 5, single-pass): full grounding
11
+ and deep dependency tracing. The orchestrator dispatches this to a subagent — it
12
+ never plans itself.
13
+ ---
14
+
15
+ # orc-planner (Requirement Planner)
16
+
17
+ The orchestrator stays on top and **dispatches a planner subagent (Opus 5,
18
+ medium)** to produce the plan. Strictly planning: it does not implement, review,
19
+ or verify. Output contract is orc's `schemas/planning-output.md` (single-source;
20
+ do not redefine it here).
21
+
22
+ ## Input (accepts either)
23
+
24
+ - **A detailed typed request.** "Too thin to plan" has a definition: plannable ⇔
25
+ the request states (a) an observable outcome AND (b) an identifiable area of
26
+ the repo it lands in. Failing either → do NOT plan; recommend routing through
27
+ `orc-analyze` (requirement mode) instead — the same escalation valve intake
28
+ has, now covering the `/orc-plan` side door. A vague request planned anyway
29
+ yields a confidently vague plan.
30
+ - **A System Analyst requirement-spec** (`orc/analyzer/{name}/requirement-spec.md`).
31
+ Already scope-bounded and code-grounded. If its `git_head` ≠ current HEAD,
32
+ the orchestrator re-runs the evidence spot-check before dispatching you —
33
+ never plan against a spec flagged stale without the user's go-ahead.
34
+ - **An orc-poly `poly-spec.md`** (first line marker `orc-poly:spec`, from
35
+ `/orc-poly`). Switch to **Poly-repo split mode** below.
36
+
37
+ ## Poly-repo split mode (only on the `orc-poly:spec` marker)
38
+
39
+ The spec has a `repos[]` block (each: name, role, absolute `path`,
40
+ `in_scope[]`, `requirements[]`) and points at a frozen `interface-contract.md`.
41
+ Produce **one planning-output per `repos[]` entry** — never a merged plan:
42
+
43
+ - Scope each plan to that repo's `in_scope[]` and ground those paths against
44
+ THAT repo's files (a peer lives outside CWD — Glob/read via absolute paths).
45
+ - Embed the frozen `interface-contract.md` **verbatim** as a `Frozen contract`
46
+ section in every plan and copy each requirement's `contract_ref` into the
47
+ guarded task's `spec_invariants[]`, so the later per-repo `/orc` build cannot
48
+ drift from the boundary. Never paraphrase the contract — it is immutable.
49
+ - Write the HOST plan to
50
+ `poly-repo-implementation/<slug>/<host>-implementation-plan.md` in the HOST
51
+ repo; write each PEER plan **into that peer repo** at the same relative path
52
+ (Write to the absolute peer path — a plan file only, never peer source).
53
+ - Run coverage/grounding/cycle self-checks PER plan; carry the spec's
54
+ `git_head` staleness stamp into each. Scope and the contract are settled
55
+ upstream by orc-poly — never re-litigate them.
56
+ - **This is a split-and-STOP branch** — present the per-repo plans + the
57
+ per-repo build handoff and stop. A poly-spec NEVER takes into build here (the
58
+ build runs later, per repo, in its own session). See "Branch" below.
59
+
60
+ ## Grounding (conditional — the token-saving rule)
61
+
62
+ - **Standalone** (not chained from SA): read the repo and, if present and
63
+ non-empty, the `wiki/` overviews, to ground `declared_files` in real paths and
64
+ detect what already exists. Select pages via `wiki/INDEX.md` (lines carry doc
65
+ type, status, keywords); on v2 wikis pull each doc's `Contracts & shapes`
66
+ (file-anchored routes/tables/config) and `Testing map` (where the area's
67
+ tests live — feeds declared test files), plus the cross-cutting reference
68
+ maps (API surface / data model / glossary / config-env) when the plan
69
+ touches their domain. Wiki claims never outrank the code — on conflict,
70
+ ground in the file and treat the doc as stale. **Record grounding
71
+ provenance** in the plan (grounding: repo-read, plus what was consulted).
72
+ - **From System Analyst:** DO NOT re-read the repo to re-verify the spec's
73
+ claims. Trust the requirement-spec's `files` mappings as the grounding source
74
+ (SA already verified them). COPY the spec's file:line evidence into each
75
+ task's `grounding[]` entries — never drop it on the way through. NEW paths
76
+ the plan adds beyond the spec (tests, new modules) still need their own
77
+ grounding: Glob the parent dir — "trust the spec" never covers paths the spec
78
+ doesn't mention.
79
+
80
+ **Per-file attestation (hard gate — never prose).** Every `declared_files` path
81
+ gets a `grounding[]` entry: `{path, disposition: exists|new, evidence}`.
82
+ `exists` means YOU confirmed the path this session (globbed/read it — evidence
83
+ says which; from-SA, the spec's file:line is the evidence). `new` means a file
84
+ to be created — the evidence is the parent dir you confirmed exists. Never mark
85
+ `exists` on a path you did not confirm: the orchestrator Globs every `exists`
86
+ path at Phase 1 exit and bounces a plan with misses back to you (one retry,
87
+ then it escalates to the user). An ungrounded path is a malformed plan.
88
+
89
+ ## Context & invariants (non-actionable — carry, never build)
90
+
91
+ If the requirement-spec carries a **Context & invariants (do not build)** block,
92
+ it is anchored adjacent-scope context the Analyst gathered so the build respects
93
+ it. NEVER turn a context item into a task or a `declared_files` entry — the scope
94
+ perimeter is unchanged, only in-scope requirements become tasks. Where a listed
95
+ invariant is load-bearing for a specific task, copy it VERBATIM into that
96
+ task's `spec_invariants[]` (schema field) — the orchestrator appends
97
+ `spec_invariants` to the executor slice's `constraints[]`, so an invariant that
98
+ reaches the field demonstrably reaches the executor (hard rules to respect,
99
+ not to reimplement). The full block still travels with the spec via `spec_ref`.
100
+
101
+ ## Config
102
+
103
+ Resolve `max_wave_tasks` and `batch_pause_every` the standard way — `config.md`
104
+ defaults with the user override `.claude/orc.config.yaml` merged on top per key
105
+ (see config.md's "Config resolution" rule). You don't apply them (the
106
+ orchestrator does, after hand-back) — you read them only so the plan fits the
107
+ wave cap (e.g. with `max_wave_tasks: 3`, don't design 8 independent tasks
108
+ expecting all 8 to run at once).
109
+
110
+ ## Procedure (defend against bad plans)
111
+
112
+ 1. **Draft tasks** from the input, each a coherent unit one subagent can own,
113
+ tagging each with `requirements[]` — the R# ids (from-SA) or DoD line ids
114
+ (direct) it implements. `[]` only for pure-infra tasks WITH a stated reason.
115
+ 2. **Ground declared_files** per the rule above (incl. test files), filling
116
+ each task's `grounding[]` attestation as you go. Copy load-bearing spec
117
+ invariants into `spec_invariants[]` per the Context & invariants rule.
118
+ **Fill each task's `facets` block in the same pass** (you are already reading
119
+ every declared file — zero extra passes): `breadth` = `len(declared_files)`,
120
+ plus `novelty` / `logic` / `test_surface` / `uncertainty`, and any `risk`
121
+ entries — **each risk entry MUST cite** the file/requirement that makes it so
122
+ (an uncited risk bounces at the orchestrator's Phase 2 facet gate). You do
123
+ NOT emit `fan_in`/`fan_out` (the orchestrator computes them from `depends_on`)
124
+ and you do NOT compute the score — the orchestrator does, arithmetically, from
125
+ your facets. See `../../references/effort-and-mode.md`.
126
+ 3. **Slice per-task acceptance:** give each task an `acceptance[]` — the
127
+ intent-spec/requirement-spec definition-of-done lines that THIS task must
128
+ satisfy (executors self-check against them; review/verify localize failures
129
+ to a task). Each line CITES its source (`R3` / `DoD#2`) — a line with no
130
+ source is invented by definition. Never invent criteria the spec lacks.
131
+ 3b. **Author the `tdd_spec` (v0.33.0 — when the run's TDD policy is on; full
132
+ orc/ultra AND standalone `/orc-plan` always — a saved plan's only consumers
133
+ are the TDD-always build lanes). TDD IS SCOPED TO WHAT CAN ACTUALLY FAIL
134
+ (v0.41.0):** every entry carries a `disposition` from the closed set, DERIVED
135
+ from the facets you already produced — you are not judging this fresh:
136
+
137
+ | facets | disposition | test? |
138
+ |---|---|---|
139
+ | `test_surface: none` + `novelty: mechanical` | `no-behavior` (+`reason`) | **no** |
140
+ | `test_surface: update-existing` + `novelty: mechanical` | `covered-by-existing` (+`covered_by: path:line`) | **no** |
141
+ | otherwise | `new-surface` or `behavior-change` | yes |
142
+ | project has no test runner | `no-runner` (whole-run) | no |
143
+
144
+ `no-behavior` is the constant / i18n-string / docs / config case: a test there
145
+ could only restate its own assignment, so it costs plan, red-proof and
146
+ executor tokens while asserting nothing. `covered-by-existing` is the pure
147
+ refactor / move / file-split case — the behavior is unchanged and an existing
148
+ test already proves it; **the cited path MUST resolve**, because an
149
+ unverifiable claim here silently deletes coverage, and the Phase 1 gate Globs
150
+ it. `new-surface` MUST be red pre-implementation; `behavior-change` pairs a
151
+ regression-guard (EXPECTED green — that passing IS its assertion) with the new
152
+ assertion. Both need given/when/then + a RUNNABLE skeleton in the project's
153
+ own test framework (real target path).
154
+
155
+ **Safety floor:** a task with non-empty `facets.risk[]` — auth, money,
156
+ migration, security, concurrency, data-integrity — is NEVER
157
+ `covered-by-existing` or `no-behavior`. Deviating from the table needs a
158
+ one-line `reason`; the derivation is the default, and departing from it is
159
+ what needs justifying. Never silence: every scoped-out requirement is named
160
+ with its reason at preflight.
161
+
162
+ **Emit a PAIRED TDD TASK, never a Wave 0.** For each implementation task
163
+ carrying `new-surface`/`behavior-change` entries, emit a separate task
164
+ (`TDD: <what it proves>`, `declared_files` = just its test files); the
165
+ implementation task lists it in `depends_on`, and each entry's `task` names
166
+ its owner. TDD tasks are ORDINARY tasks — same conflict graph, same waves,
167
+ scored from their own facets — so independent red proofs share a wave and run
168
+ in parallel, while `depends_on` keeps every proof in an earlier wave than the
169
+ code it proves. **If no task needs one, emit none.** A `tdd_spec` target file
170
+ that is also a `new-tests` task's declared file is a collision the Phase 1
171
+ gate bounces — fold them yourself.
172
+ 4. **Right-size — with anchors, not adjectives:** a task normally owns **1–5
173
+ declared files and one `owns_area`**; >7 files or two unrelated areas →
174
+ split candidate; a whole change of ≤~10 lines in 1 file and
175
+ dependency-bound → merge candidate; a task must be completable by one
176
+ executor without another task's in-progress state. Deviating from an anchor
177
+ is allowed WITH a one-line reason (same override-with-reason pattern as
178
+ scoring). If two tasks share files, either merge or add a dependency so
179
+ they serialize.
180
+ 5. **Build depends_on explicitly**, then self-check the graph: any cycle? any
181
+ task consuming another's output without a declared dep? any same-file pair
182
+ missing a serializing dep? For each dependency, state WHY in one line so
183
+ the user can sanity-check the graph.
184
+ 6. **Coverage self-check:** every in-scope R# / DoD line appears in ≥1 task's
185
+ `requirements[]` — an orphan requirement is a MALFORMED plan; fix it (add a
186
+ task, extend one, or ask the user to explicitly descope) before presenting.
187
+ The orchestrator independently recomputes this at Phase 1 exit and bounces
188
+ orphans (one retry, then escalate).
189
+ 7. **Ask clearly; step back when unclear.** Set `plan_confidence: high|medium|low`
190
+ (+ a one-line reason). Every ambiguity you met while planning becomes an
191
+ `open_questions[]` entry — `{question, proposed_default, blocking: bool}`;
192
+ never silently pick a reading of an ambiguous requirement. `blocking: true`
193
+ means the plan can't be safely built until it's answered. If
194
+ `plan_confidence: low` OR you raised **>3 blocking questions**, recommend
195
+ stepping back to `orc-analyze` rather than forcing the plan through — the
196
+ orchestrator relays this and the user may override.
197
+ 8. **Show the plan ONCE** — tasks, files, deps — in plain terms. User approves
198
+ or edits (task breakdown/approach only; scope is settled upstream, never
199
+ re-litigated here).
200
+
201
+ ## Return echo (attestation the orchestrator recomputes)
202
+
203
+ Alongside the planning-output, return `coverage: {requirements: N, tasks: M,
204
+ orphans: []}` — self-attested, then independently recomputed by the
205
+ orchestrator's Phase 1 exit gate (spec R# set vs union of task
206
+ `requirements[]`), the same attestation + spot-check pairing as `grounding[]`.
207
+ The planning-output also carries, per task, the `facets` block (breadth =
208
+ `len(declared_files)`, novelty/logic/test_surface/uncertainty, cited `risk[]`)
209
+ the orchestrator scores from and re-validates (breadth + fan recompute, risk
210
+ citation); and at the top level `plan_confidence` + `open_questions[]` (Part E),
211
+ which the orchestrator relays in one batch. Record the plan's `plan_head` (HEAD
212
+ at plan time) so the executing session can detect cross-session drift.
213
+
214
+ ## Behavior trace (PERMANENT — every ORC entry point traces; always on)
215
+
216
+ Standalone `/orc-plan` traces too: the orchestrator resolves `log_dir` at start
217
+ and follows `../../references/trace-protocol.md` —
218
+ write `log_dir/.current` = `run-plan-<slug>-<DDMMYY>-<HHMMSS>.txt` and
219
+ `touch the trace file` of that name in the SAME step, before dispatching the
220
+ planner (a pointer to a missing file reads as dangling and the hook rotates); collect `PHASE`/`DISPATCH`/`VERIFY`/`FINISH` events with
221
+ their REAL timestamps plus `decisions` (the WHY), dispatch the trace writer ONCE
222
+ at run end (the single-dispatch-lane packet), then delete `.current`
223
+ (on take-into-build the trace stays open and the full run continues it; the hook
224
+ bootstraps `.current` + the skeleton on dispatch regardless).
225
+ Inside an /orc run, the run's trace already covers planning — never open a
226
+ second one.
227
+
228
+ ## Checkpoint before branching
229
+
230
+ Before the branch, WRITE A CHECKPOINT of the planning-output into
231
+ `orc/planner/{name}/` (internal): the plan md + a checkpoint.json snapshot via
232
+ the orchestrator's orc-checkpoint. This means a plan is never lost if the session
233
+ stops between planning and building, and a plan run can resume. Do NOT write
234
+ straight to a loose `plan-{name}.md` with no checkpoint.
235
+
236
+ ## Branch (plain-language choice)
237
+
238
+ - **Take into build** → hand the approved planning-output BACK to the
239
+ orchestrator. Control returns to orc, which then runs the FULL pipeline:
240
+ Phase 2 (score every task → show the effort/model table → dispatch style →
241
+ ask batch-pause frequency), Phase 3 (wave-grouping capped at
242
+ config.max_wave_tasks, checkpoints, pauses), through review/verify/ship. The
243
+ planner NEVER starts implementation itself. "Here's the plan — {N} tasks
244
+ grounded in your files. Approve and I'll take it through scoring and the full
245
+ build?"
246
+ - **Save & stop** → the plan is already checkpointed in `orc/planner/{name}/`;
247
+ also copy the readable `plan-{name}.md` out to the project root if the user
248
+ wants it. "Saved the plan (checkpointed) — stopping here." Then ask ONE extra
249
+ question — only on this branch: **"Want a lane recommendation for building
250
+ this? [yes / no]"**. Yes → run `../../../orc-route/SKILL.md` on this plan
251
+ (it is already a valid plan input) and print the `forecast:` block from
252
+ `../../references/preflight-report.md` alongside it, so price and lane land
253
+ together. No → stop. *Take into build* never asks (the lane is chosen and
254
+ running); *Poly split & stop* never asks (it has its own per-repo handoff).
255
+ - **Poly split & stop** (poly-spec input only) → the per-repo plans are written
256
+ (HOST here, each PEER into its repo). Present them and the handoff — "open
257
+ each repo in its own session and run `/orc` on its plan; every plan pins the
258
+ same frozen contract, so nothing drifts" — then STOP. Never take a poly-spec
259
+ into build; there is no scoring/wave phase for it here.
260
+
261
+ ## Mini
262
+
263
+ The fast lane uses `orc-planner-mini` (Sonnet 5 high), dispatched by orc-mini.
264
+ Same output contract; trimmed procedure. See that subskill.