@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,65 @@
1
+ # Worked example — orc-claude runs (mock; orient only, never execute from this)
2
+
3
+ ## Run 1 — UPDATE (existing hand-written CLAUDE.md, 610 lines)
4
+
5
+ U: /orc-claude
6
+ C: CLAUDE.md exists, no orc-claude:meta header → UPDATE mode. Spawns
7
+ orc-claude-writer-opus-4-8-high (the skill never writes the file itself).
8
+ W: Scans: pnpm monorepo (3 workspaces), turbo, eslint+prettier, vitest,
9
+ Postgres migrations under `packages/db/migrations`.
10
+ W: Copies CLAUDE.md → CLAUDE.md.bak. Injects meta header (v0.0.1, 12-07-2026,
11
+ line-budget: 400) + P0 placeholder at top, appends fenced sections:
12
+ commands, layout (ownership map), conventions, boundaries, workflow,
13
+ decisions, patterns, gotchas placeholder, testing, environment, glossary
14
+ placeholder. Skips `adr` (nothing scannable). Existing 610 lines: untouched.
15
+
16
+ ```
17
+ ORC-CLAUDE — update → CLAUDE.md v0.0.1 (12-07-2026)
18
+ Sections written: p0*, commands, layout, conventions, boundaries, workflow,
19
+ decisions, patterns, gotchas*, testing, environment, glossary* (*=fill yourself)
20
+ Skipped (empty scan): adr, pointers
21
+ Preserved untouched: user content (610 lines), no wiki block found
22
+ Conflicts flagged (NOT auto-edited):
23
+ - existing line 42 says "run yarn test" — repo uses pnpm (pnpm test)
24
+ Backup: CLAUDE.md.bak written (add it to .gitignore)
25
+ NOTE: file is 802 lines total (budget covers generated content only) — trim
26
+ unused user content yourself for better instruction-following.
27
+ ```
28
+
29
+ ## Run 2 — REFRESH, one stale section
30
+
31
+ U: /orc-claude (weeks later; `test` script renamed to `test:unit` + `test:e2e`)
32
+ C: Header found → REFRESH → spawns the writer.
33
+ W: Recomputes fingerprints: only `commands` differs (e3f1a2 → 8c04b1). Writes
34
+ .bak, replaces the commands fence interior, bumps 0.0.1 → 0.0.2,
35
+ updated: 03-08-2026. User's edits outside fences + the wiki block:
36
+ byte-identical. Returns actual_model=claude-opus-4-8, actual_effort=high.
37
+
38
+ ## Run 3 — REFRESH, noop
39
+
40
+ U: /orc-claude
41
+ W: All fingerprints match →
42
+ `CLAUDE.md up to date (v0.0.2, 03-08-2026)` — no write, no bump, no bak.
43
+
44
+ ## Run 4 — behavior trace (permanent, always on)
45
+
46
+ Same dispatch as any run, plus the minimal one-dispatch trace. The skill writes
47
+ the run pointer (`run-claude-<slug>-<DDMMYY>-<HHMMSS>.txt` into `log_dir`)
48
+ FIRST, records these events as they happen, and — as a single-dispatch lane —
49
+ dispatches the trace writer ONCE at run end to append them (`SPAWN`/`RETURN`
50
+ come from the `orc-trace.js` hook as they occur):
51
+
52
+ ```
53
+ [120726 09:14:02.110] writer DISPATCH orc-claude-writer :: refresh expect=opus-4-8/high
54
+ [120726 09:14:02.230] hook SPAWN orc-claude-writer-opus-4-8-high
55
+ [120726 09:15:47.900] hook RETURN
56
+ [120726 09:15:48.010] writer VERIFY writer actual=claude-opus-4-8/high ✅ MATCH
57
+ [120726 09:15:48.120] writer FINISH :: refresh CLAUDE.md v0.0.3
58
+ ```
59
+
60
+ Then the writer packet returns and the run pointer is deleted (in that order).
61
+ A noop refresh traces the same shape, ending
62
+ `FINISH :: noop`. No phase/score/gate/finding/verdict markers — orc-claude
63
+ runs none of those phases (they live inside the writer). The `orc-trace.js` hook
64
+ bootstraps the pointer on the writer dispatch, so the SPAWN/RETURN skeleton is
65
+ captured even if the skill's run-start step is skipped.
@@ -0,0 +1,76 @@
1
+ # Reference — Refresh Protocol (section-scoped, fingerprint-driven)
2
+
3
+ REFRESH runs when `CLAUDE.md` carries an `orc-claude:meta` header. It touches
4
+ ONLY stale fenced sections — small drift means a small diff (one section body,
5
+ the version, the date, one fingerprint).
6
+
7
+ ## Fingerprints
8
+
9
+ Each scanned section's fingerprint is a 6-hex digest of the CANONICAL INPUT
10
+ STRING that produced it — the inputs, not the prose — so cosmetic rewording of
11
+ generated text never marks a section stale.
12
+
13
+ Canonical input string per section (pipe-joined, sorted where a list):
14
+
15
+ | Section | Canonical input |
16
+ |---------|-----------------|
17
+ | `whatis` | manifest name+description fields + top-level dir names |
18
+ | `commands` | sorted `name=command` pairs of every verified script/target |
19
+ | `layout` | sorted top-level dir names (+ workspace package names) |
20
+ | `conventions` | sorted basenames+size of lint/format/type config files |
21
+ | `boundaries` (scanned half) | sorted `.gitignore` non-comment lines + generated/vendored dir names |
22
+ | `workflow` | CI workflow file basenames + detected branch/commit convention |
23
+ | `decisions` | dependency-manifest name (tiebreakers only change if stack changes) |
24
+ | `patterns` | sorted config basenames + primary language name |
25
+ | `testing` | test-runner name + test dir names |
26
+ | `adr` | manifest name+version field |
27
+ | `environment` | sorted env-var names found |
28
+ | `pointers` | sorted `docs/claude-*.md` basenames |
29
+
30
+ Compute with a real command — never mentally:
31
+
32
+ ```bash
33
+ node -e "console.log(require('crypto').createHash('md5').update(process.argv[1]).digest('hex').slice(0,6))" "<canonical input string>"
34
+ ```
35
+
36
+ `@user` sections have no fingerprint and are NEVER regenerated. For
37
+ `@user+scan` (boundaries), fingerprint and refresh only the scanned half; the
38
+ user half is untouchable.
39
+
40
+ ## The refresh algorithm
41
+
42
+ 1. Parse the `orc-claude:meta` header (version, updated, line-budget,
43
+ sections map). Malformed header → treat the file as foreign → UPDATE mode.
44
+ 2. Run the Phase-1 scan; recompute every scanned section's fingerprint.
45
+ 3. Diff against the header's `name@fingerprint` entries →
46
+ - **stale**: fingerprint changed → regenerate that fence's interior.
47
+ - **new**: a section that now scans non-empty but isn't in the file →
48
+ append it (fenced) and add it to the header map.
49
+ - **gone**: a scanned section whose inputs vanished entirely (e.g. tests
50
+ removed) → leave the fence but note it in the report; never silently
51
+ delete (the user may want the history). Flag, don't cut.
52
+ - **@user**: skip always.
53
+ 4. **No stale/new sections** → print
54
+ `CLAUDE.md up to date (v<X.Y.Z>, <DD-MM-YYYY>)` and STOP. No write, no
55
+ bump, no bak.
56
+ 5. Otherwise: write `CLAUDE.md.bak` (overwrite the old bak), apply the
57
+ section replacements inside their fences only, bump `version` by exactly
58
+ 0.0.1, set `updated:` to today (DD-MM-YYYY), rewrite the header's
59
+ fingerprint map, and re-emit the one-line visible trademark under the
60
+ header with the new version/date.
61
+ 6. Contradiction check: if the scan contradicts a user-authored line (e.g.
62
+ file says `yarn`, repo uses `pnpm`), list it under "Conflicts flagged" in
63
+ the report. NEVER edit the user's line.
64
+ 7. Budget: regenerated sections respect the persisted `line-budget` for
65
+ generated content, same overflow rule as CREATE (cut Zone B → `docs/` +
66
+ pointer). Existing user content never counts and is never trimmed.
67
+
68
+ ## Invariants (hold in every refresh)
69
+
70
+ - Exactly +0.0.1 per content-changing run; no bump on noop.
71
+ - DD-MM-YYYY everywhere a date is written.
72
+ - Nothing outside `orc-claude:section` fences and the `orc-claude:meta`
73
+ header is ever modified.
74
+ - The `ORC-WIKI:START`…`ORC-WIKI:END` block (owned by orc-wiki) is
75
+ byte-preserved even when it sits between generated sections.
76
+ - Zero questions to the user, in every branch.
@@ -0,0 +1,109 @@
1
+ # Reference — Generated CLAUDE.md Template
2
+
3
+ The exact shape orc-claude writes. Two zones: **Zone A (rules)** first — the
4
+ hot zone Claude must obey, kept short so nothing dilutes — then **Zone B
5
+ (reference)** — lookup material (tables, maps, checklists). Behavioral rules
6
+ never go in Zone B.
7
+
8
+ Sections whose scan came back empty are OMITTED entirely (no stubs). `@user`
9
+ sections are ALWAYS emitted as placeholders — they are the user's to fill and
10
+ are never regenerated by refresh.
11
+
12
+ ## The meta header (top of file, before everything)
13
+
14
+ ```markdown
15
+ <!-- orc-claude:meta
16
+ generated-by: orc-claude
17
+ version: 0.0.1
18
+ updated: 12-07-2026
19
+ line-budget: 400
20
+ sections: p0@user | commands@e3f1a2 | layout@9b21cc | conventions@41ad07 | boundaries@user+scan | workflow@c0ffee | decisions@d00d01 | patterns@5eed42 | gotchas@user | testing@77c2e1 | adr@1decaf | environment@ab12cd | glossary@user | pointers@f00baa
21
+ -->
22
+ > Generated by **orc-claude** v0.0.1 — 12-07-2026. Run `/orc-claude` to
23
+ > refresh stale sections only. Fill the placeholder sections yourself.
24
+ ```
25
+
26
+ - `version` starts at `0.0.1`, bumps by exactly 0.0.1 per content-changing run.
27
+ - `updated` is DD-MM-YYYY.
28
+ - `sections:` lists only sections actually present, as `name@fingerprint`;
29
+ `@user` marks never-regenerated sections; `@user+scan` marks a section with
30
+ a scanned half (refreshable) and a user half (untouchable). Fingerprint
31
+ recipe: `references/refresh.md`.
32
+
33
+ ## The fence grammar
34
+
35
+ Every generated section body sits inside:
36
+
37
+ ```markdown
38
+ <!-- orc-claude:section commands -->
39
+ ...content...
40
+ <!-- /orc-claude:section -->
41
+ ```
42
+
43
+ Refresh replaces ONLY the interior of a stale section's fences. Anything the
44
+ user writes OUTSIDE fences survives every run, verbatim. User edits INSIDE a
45
+ scanned fence are lost on that section's next refresh — the report warns about
46
+ this once.
47
+
48
+ ## Zone A — rules (target ≤ ~120 generated lines)
49
+
50
+ | # | Section | Fence name | Source | ~Lines | Content |
51
+ |---|---------|-----------|--------|-------|---------|
52
+ | 1 | `# P0 — non-negotiable rules` | `p0` | `@user` | 15 | Placeholder below. |
53
+ | 2 | `## What this is` | `whatis` | scan | 5 | 2–4 sentences: what the project does, who consumes it, the one architectural fact not obvious from the tree. |
54
+ | 3 | `## Commands` | `commands` | scan | 25 | Verified-real only: install, dev/run, build, test (+ single-test form), lint, typecheck, migrate. Per-workspace table if monorepo. |
55
+ | 4 | `## Boundaries` | `boundaries` | `@user+scan` | 15 | Scanned half: do-not-touch dirs (generated/vendored/legacy), lockfile + secrets rules, migration safety. User half: placeholder for zones only a human knows. |
56
+ | 5 | `## Workflow` | `workflow` | scan | 15 | Branch/commit conventions (from git history + CI), the pre-done verification loop, PR checklist if CI defines one. |
57
+ | 6 | `## Decision rules` | `decisions` | scan | 8 | 3–4 tiebreakers for ambiguity, e.g. "match existing patterns over introducing new ones; ask before adding dependencies". |
58
+
59
+ ### The P0 placeholder (emitted verbatim in CREATE/UPDATE)
60
+
61
+ ```markdown
62
+ <!-- orc-claude:section p0 -->
63
+ # P0 — non-negotiable rules
64
+ **IMPORTANT: these override everything below. YOU (the human) must fill this
65
+ section in yourself — orc-claude never writes rules on your behalf and never
66
+ asks. Each rule: one line + a short *why*. Delete this notice when done.**
67
+ - <your hard rule> — <why it exists>
68
+ - <your hard rule> — <why it exists>
69
+ <!-- /orc-claude:section -->
70
+ ```
71
+
72
+ ## Zone B — reference (the rest of the budget)
73
+
74
+ | # | Section | Fence name | Source | ~Lines | Content |
75
+ |---|---------|-----------|--------|-------|---------|
76
+ | 7 | `## Layout` | `layout` | scan | 20 | Annotated top-level dirs (non-obvious ones only, never file-by-file). Monorepo → package ownership map + cross-package edit rules. |
77
+ | 8 | `## Conventions` | `conventions` | scan | 30 | Deviations from defaults only: module system, "formatter owns style — don't hand-format", naming, error-handling shape, FE state/styling or BE API shape. |
78
+ | 9 | `## Patterns & anti-patterns` | `patterns` | scan | 35 | Do/don't table WITH reasons, sampled from real code. Seeded by scan; user grows it. |
79
+ | 10 | `## Gotchas` | `gotchas` | `@user` | 30 | Placeholder + note: "if you typed the same correction last session, it belongs here." Append-only; refresh never rewrites it. |
80
+ | 11 | `## Testing` | `testing` | scan | 25 | Unit vs integration split, mocks-or-not, fixture locations, evidence rule: "never claim done without test/build output". |
81
+ | 12 | `## Architecture decisions` | `adr` | scan | 25 | Mini-ADR list, one line each: decision + why + date. Scan seeds obvious ones; user/refresh appends. |
82
+ | 13 | `## Environment` | `environment` | scan | 15 | Required env-var NAMES only (never values), local-setup quirks, external service boundaries. |
83
+ | 14 | `## Domain glossary` | `glossary` | `@user` | 15 | Placeholder: business term ↔ code name mappings only a human knows. |
84
+ | 15 | `## Pointers` | `pointers` | scan | 10 | `@docs/...` imports for anything that overflowed the budget. |
85
+
86
+ `@user` placeholders (gotchas, glossary, boundaries' user half) each carry a
87
+ one-line bold note that the user must fill them themself, mirroring the P0
88
+ notice.
89
+
90
+ ## Budget rules
91
+
92
+ - Default budget: **400 generated lines** (header + all fences). Persist the
93
+ effective budget in `line-budget:`; a user-passed `budget=N` argument
94
+ overrides and is persisted.
95
+ - The budget NEVER applies to pre-existing user content. In UPDATE mode the
96
+ total file may exceed the budget — allowed; the report tells the user to
97
+ trim unused content themself.
98
+ - Over budget at generation time → cut Zone B first (largest section first),
99
+ moving the overflow into `docs/claude-<section>.md` + an `@docs/...` line in
100
+ Pointers. Zone A is never cut.
101
+
102
+ ## Placement rules (UPDATE mode)
103
+
104
+ - Meta header: very top of the file.
105
+ - Generated sections: appended after existing content as one contiguous block,
106
+ EXCEPT the P0 placeholder, which goes directly under the meta header so the
107
+ hot zone stays on top.
108
+ - Existing user headings are never moved to "make room".
109
+ - The orc-wiki managed block stays exactly where it is, byte-identical.
@@ -0,0 +1,142 @@
1
+ # ORC-DIY — Build your own ORC flow
2
+
3
+ > This guide is intentionally separate from the main project README. The root
4
+ > README covers installing and using the shipped lanes; **everything about
5
+ > composing your own lane lives here.**
6
+
7
+ ORC-DIY lets you assemble a custom orchestrator pipeline from ORC's real
8
+ parts — keep the phases you want, drop the ones you don't, pick the session
9
+ tier, and decide how autonomous the run is. The shape is chosen entirely in
10
+ your **terminal** (deterministic, zero model tokens); Claude only ever runs
11
+ the flow you compiled.
12
+
13
+ ```
14
+ orc diy init → orc diy set … (repeat) → orc diy compile → /orc-diy <request>
15
+ (config created) (shape your flow) (build the flow) (run it)
16
+ ```
17
+
18
+ ## 1. Bootstrap
19
+
20
+ **Easiest path — the interactive composer.** Run bare `orc diy` in a real
21
+ terminal: it creates the flow if none exists (pick full-lane defaults or a
22
+ preset from a numbered list), then lets you shape every key with numbered
23
+ pick-lists, shows the live gate status and validation issues as you go, and
24
+ offers to compile on exit. Everything below is the same thing, non-interactive:
25
+
26
+ ```bash
27
+ orc diy # interactive composer (create + shape + compile)
28
+ orc diy init # scriptable: create the default config (full-lane shape)
29
+ orc diy init --preset lean # or start from a preset: lean | paranoid | solo-fast
30
+ ```
31
+
32
+ This writes three project-scoped files (there is no global variant — `orc
33
+ diy` rejects `--global`; one flow per project):
34
+
35
+ | File | What it is | Who writes it |
36
+ |---|---|---|
37
+ | `.claude/orc-diy.config.yaml` | your flow choices | the CLI only |
38
+ | `.claude/orc/diy/flow.md` | human-readable flow spec (regenerated on every change) | the CLI only |
39
+ | `.claude/orc/diy/flow.lock.json` | hashes + compile stamp — the gate's state | the CLI only |
40
+
41
+ ## 2. Shape the flow
42
+
43
+ ```bash
44
+ orc diy show # current flow + gate status (READY / STALE / UNCONFIGURED)
45
+ orc diy set review blocking-only
46
+ orc diy set verify smoke
47
+ orc diy set scoring off
48
+ orc diy set fixed_executor orc-executor-sonnet-5-high
49
+ orc diy set session_tier opus-4-7-med
50
+ orc diy set autonomy semi
51
+ orc diy validate # re-check cross-key rules any time
52
+ ```
53
+
54
+ **`opus5_only` does not reach this lane.** That config forces every other
55
+ lane's roles to Opus 5, but a DIY flow's executors come from `flow.lock.json`,
56
+ which only `orc diy compile` writes. To run this lane on Opus 5, set
57
+ `fixed_executor`/`session_tier` here and re-compile.
58
+
59
+ The full key table lives in `references/flow-schema.md`. Highlights:
60
+
61
+ - **Phases** — `analyze`, `review`, `security`, `verify`, `testgen`,
62
+ `summary`, `wiki_gate`: each phase has off/on/strictness values. Order is
63
+ fixed; you choose presence and strictness.
64
+ - **Scoring** — `scoring on` keeps the per-task rubric; `scoring off` skips
65
+ it and sends every task to your `fixed_executor`.
66
+ - **Session tier** — `session_tier` is the model+effort the compiled flow
67
+ requires. DIY is SEPARATE from the baseline /orc rule — pick any tier from the
68
+ full grid: `sonnet-4-6-{med,high}`, `opus-4-7-{med,high}`,
69
+ `opus-4-8-{med,high,xhigh,max}`, `opus-5-{med,high,xhigh,max}`,
70
+ `fable-5-{med,high,xhigh,max}` (default
71
+ `opus-4-8-high`). The effort guard enforces the effort half deterministically
72
+ (the compiled effort OR higher on the ladder); the statusline warns on the
73
+ model half. Executor choices above the tier are rejected at validate time; the
74
+ score table is clipped to the tier at compile time.
75
+ - **Autonomy** — `interactive` (all asks), `semi` (routine asks
76
+ auto-accepted), `hands-off` (only hard stops + ship). Locked safety rules
77
+ are never overridden — see `references/locked-blocks.md` for what you can
78
+ NEVER configure away.
79
+ - **Ship** — `ship_mode`: `ask`, `commit`, `pr`, or `report-only`.
80
+
81
+ ## 3. Compile
82
+
83
+ ```bash
84
+ orc diy compile # deterministic stitch — no model, no tokens
85
+ ```
86
+
87
+ The compiler validates, cherry-picks the needed references from your
88
+ installed orc skill, stitches `.claude/orc/diy/FLOW-COMPILED.md`, and stamps
89
+ `flow.lock.json`. Details: `references/compile.md`.
90
+
91
+ **Every change requires a recompile.** The gate flips to STALE whenever:
92
+ - you change any key (`orc diy set` …),
93
+ - you update orc (`orc update` / `orc upgrade`),
94
+ - the compiled file is edited or deleted.
95
+
96
+ `/orc-diy` will not run a stale flow — it names the reason, tells you to run
97
+ `orc diy compile`, and offers the regular `/orc` lane for the request at
98
+ hand. `/orc-diy compile` in a session just runs the same CLI compiler.
99
+
100
+ ## 4. Run
101
+
102
+ ```
103
+ /orc-diy implement the CSV export endpoint
104
+ ```
105
+
106
+ The stub skill checks the gate, then follows your compiled flow: same run
107
+ folders, checkpoints, subagents, and evidence rules as the full lane — minus
108
+ the phases you removed, plus the strictness you chose.
109
+
110
+ ## Presets
111
+
112
+ | Preset | Shape |
113
+ |---|---|
114
+ | `lean` | analyze off, review blocking-only, verify smoke, summary short |
115
+ | `paranoid` | analyze full, security always, testgen on, verify full |
116
+ | `solo-fast` | scoring off → one Sonnet 5 high executor, review off, verify smoke, autonomy semi |
117
+
118
+ Presets are just config bundles — inspect with `orc diy show`, tweak with
119
+ `set`, and compile like any other flow.
120
+
121
+ ## Command reference
122
+
123
+ ```
124
+ orc diy INTERACTIVE composer (create/shape/compile in one menu)
125
+ orc diy init [--preset <name>] [--force] create (or overwrite) the config
126
+ orc diy show flow table + gate status
127
+ orc diy status [--json] gate status only (used by the skill/hooks)
128
+ orc diy set <key> <value> change one key (invalidates the compile)
129
+ orc diy validate run cross-key validation
130
+ orc diy compile build FLOW-COMPILED.md + stamp the lock
131
+ orc diy reset delete config, flow, lock, and compiled file
132
+ ```
133
+
134
+ ## Boundaries (read before getting creative)
135
+
136
+ - The CLI is the only writer. Never hand-edit the config, the lock, or the
137
+ compiled flow — and never ask Claude to; the skill refuses by contract.
138
+ - `references/locked-blocks.md` is compiled into every flow verbatim: the
139
+ orchestrator never implements, checkpoint discipline, wave conflict rules,
140
+ the severity ladder, and red-build ship blocking are not yours to remove.
141
+ - orc-diy needs the orc skill installed next to it (it cherry-picks by
142
+ reference); `orc init` installs both.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: orc-diy
3
+ description: >
4
+ User-composable ORC lane. Use for "/orc-diy" or "run my custom orc flow".
5
+ The pipeline shape (analyze/review/verify/security/testgen on-off, scoring
6
+ or a fixed executor, autonomy, ship mode, session tier) is configured
7
+ ENTIRELY through the `orc diy` CLI and compiled into a flow file —
8
+ never configured in-session. HARD-GATED: no config or a stale compile →
9
+ this skill never runs the custom flow; it explains the CLI steps and offers
10
+ plain /orc instead. "/orc-diy compile" re-runs the deterministic CLI
11
+ compiler. See references/flow-schema.md and references/compile.md.
12
+ ---
13
+
14
+ # ORC-DIY (stub — gate + dispatcher)
15
+
16
+ You are the entry gate for the user's compiled custom flow. You NEVER invent,
17
+ modify, or interpret flow configuration in-session — the `orc diy` CLI is the
18
+ only writer, the compiler is the only builder, and this stub only gates and
19
+ dispatches. All state lives in the project's `.claude/` (project-scoped; no
20
+ global variant).
21
+
22
+ ## Step 0 — route `compile`
23
+
24
+ If the invocation argument is `compile` (from `/orc-diy compile`): run
25
+ `orc diy compile` via Bash and relay its output. If the `orc` CLI is not on
26
+ PATH, tell the user to run `orc diy compile` in their own terminal — do NOT
27
+ reimplement the compiler in-session. Then end the turn. (`status` routes the
28
+ same way to `orc diy status`.)
29
+
30
+ ## Step 1 — the hard gate (every other invocation)
31
+
32
+ Run `orc diy status` via Bash and branch on the reported state. If the CLI is
33
+ unavailable, apply the same checks manually from
34
+ `.claude/orc-diy.config.yaml` + `.claude/orc/diy/flow.lock.json` per
35
+ `references/flow-schema.md` — and treat ANYTHING you cannot verify as STALE
36
+ (fail closed).
37
+
38
+ - **UNCONFIGURED** — no config exists. Tell the user, in this order: what
39
+ orc-diy is (one sentence), the exact bootstrap
40
+ (`orc diy init` → optionally `orc diy set <key> <value>` →
41
+ `orc diy compile` — see the skill's README for the full guide), then ask
42
+ ONE question: *"Run this request through the regular full `/orc` lane
43
+ instead?"* Yes → invoke the `orc` skill with the user's original request
44
+ carried over verbatim. No → end the turn. Never proceed on an
45
+ unconfigured flow, and never write the config yourself.
46
+ - **STALE** — configured but not runnable. Report the specific reason the
47
+ status gave (config changed since compile / orc was updated / compiled
48
+ flow modified or missing) and the fix (`orc diy compile`), then the same
49
+ single `/orc` fallback question as above. Never run a stale flow.
50
+ - **READY** — proceed to Step 2.
51
+
52
+ ## Step 2 — dispatch the compiled flow
53
+
54
+ Read `.claude/orc/diy/FLOW-COMPILED.md` and follow it as your orchestrator
55
+ spine for this run — it is self-contained: tier self-check, locked rules,
56
+ phase sequence, and the references it cherry-picks from the installed orc
57
+ skill. Honor its generated header: if its own self-gate fails, stop exactly
58
+ as it says. Do not consult this stub again for the rest of the run, and do
59
+ not load orc's SKILL.md as a spine (the compiled flow already references the
60
+ exact orc subskills and schemas it needs).
61
+
62
+ ## Hard rules
63
+
64
+ 1. The compiled flow is a build artifact — NEVER edit
65
+ `FLOW-COMPILED.md`, `flow.lock.json`, or `orc-diy.config.yaml` yourself,
66
+ and never "patch" the flow conversationally. Config changes go through
67
+ `orc diy set` + `orc diy compile`, both run by the user.
68
+ 2. Fail closed: any gate ambiguity = STALE, with the reason shown.
69
+ 3. The fallback ask is ONE question with two outcomes (`/orc` or stop) —
70
+ never a menu, never a silent fallback.
@@ -0,0 +1,24 @@
1
+ ## Phase: Analyze (doc intake)
2
+
3
+ <!-- diy:when analyze=off -->
4
+ Document analysis is DISABLED in this flow. If the user supplies a
5
+ requirements document, tell them this flow skips analysis and will plan
6
+ directly from their stated intent; offer `/orc-analyze` as a standalone step
7
+ if they want the doc grounded first.
8
+ <!-- /diy:when -->
9
+ <!-- diy:when analyze=mini -->
10
+ When the request includes a document (PDF path or pasted), dispatch the
11
+ trimmed analyst: follow `.claude/skills/orc-analyze-mini/SKILL.md` and hand
12
+ its requirement spec to planning. No doc → go straight to planning.
13
+ <!-- /diy:when -->
14
+ <!-- diy:when analyze=full -->
15
+ When the request includes a document (PDF path or pasted), dispatch the full
16
+ System Analyst: follow `.claude/skills/orc-analyze/SKILL.md` (the orchestrator
17
+ dispatches; it never analyzes itself) and hand the requirement spec to
18
+ planning. No doc → go straight to planning.
19
+ <!-- /diy:when -->
20
+ <!-- diy:when analyze=auto -->
21
+ Route doc intake exactly as the full lane does: a document present triggers
22
+ the System Analyst per the intake rules in
23
+ `.claude/skills/orc/references/intake.md`; otherwise proceed to planning.
24
+ <!-- /diy:when -->
@@ -0,0 +1,42 @@
1
+ ## Phase: Execution (waves)
2
+
3
+ Run execution exactly as the full lane's execution subskill defines it —
4
+ follow `.claude/skills/orc/subskills/orc-execution/SKILL.md` (slices
5
+ constructed by you, standing rules injected, evidence-bearing returns
6
+ validated against the contract) with these compiled overrides:
7
+
8
+ - Max parallel tasks per wave: **{{max_wave_tasks}}** (hard cap; overflow →
9
+ next wave; wave grouping per
10
+ `.claude/skills/orc/references/wave-grouping.md`).
11
+ - Stop-and-continue pause every **{{batch_pause_every}}** waves (checkpoint
12
+ confirmed BEFORE announcing any stop; resume per
13
+ `.claude/skills/orc/references/stop-and-resume.md`).
14
+ - Executor selection comes from this flow's scoring section above — never
15
+ from the shipped presets.
16
+
17
+ <!-- diy:when tdd=on -->
18
+ TDD execution: `tdd_spec` is SCOPED by each entry's `disposition` — only
19
+ `new-surface` and `behavior-change` get tests; `covered-by-existing` (cited
20
+ existing test) and `no-behavior` (constants, translation strings, docs, config)
21
+ get none, and a task with cited `risk[]` is never scoped out. A PAIRED TDD task
22
+ (never a Wave 0) materializes the remaining skeletons into real
23
+ FAILING tests (red proven before implementation; a `new-surface` pre-implementation
24
+ pass is a spec bug → block that requirement). Each implementation slice carries its
25
+ `tdd_spec`; executors implement to green (implement→test→repair, cap
26
+ `tdd_loop_max`; `TDD-RED`/`TDD-GREEN` per iteration) and return `tdd_state`
27
+ per `.claude/skills/_shared/return-validation.md` — including §6's worktree
28
+ delta: `git status --short` before/after each dispatch, any changed path
29
+ outside `declared_files` (a revert included) gates the wave close.
30
+ <!-- /diy:when -->
31
+
32
+ <!-- diy:when gotchas=on -->
33
+ Repair memory: probe `orc gotcha status` once at preflight (exit 0 = entries,
34
+ 1 = none — never a `find`) and print one line either way. Inject the
35
+ SCOPE-MATCHING entries into each slice beside `pattern` — glob vs that task's
36
+ `declared_files`, cap 3, highest `hits` first; zero matches = NO block, never an
37
+ empty one, and NEVER unfiltered. A return that CLOSED a repair loop carries
38
+ `gotcha_recorded`; dedupe it on `symptom`+`scope` (a match bumps `hits` and
39
+ `last_seen`) and append it to `.claude/orc/gotchas.md` YOURSELF — a subagent never
40
+ writes that file, and a loop that hit its cap and stopped records nothing. Full
41
+ contract: `.claude/skills/_shared/gotchas.md`.
42
+ <!-- /diy:when -->
@@ -0,0 +1,55 @@
1
+ ## Phase: Extra — may an executor run OFF Claude?
2
+
3
+ <!-- diy:when extra=on -->
4
+ This flow ALLOWS a foreign executor. Canonical contract:
5
+ `.claude/skills/_shared/extra-dispatch.md` — load it before the first dispatch.
6
+
7
+ Two things must both be true or nothing routes foreign: `config.extra_enabled`
8
+ is on, and a route row covers the score. Neither is decided here — **the flow
9
+ key decides WHETHER, the resolver decides WHERE**, per task, at run time:
10
+
11
+ ```
12
+ orc extra resolve <score> --role executor --risk <n> --json # 0 foreign · 1 Claude
13
+ ```
14
+
15
+ Route rows — **and slot rows** — are deliberately NOT baked into this compiled
16
+ flow the way the score table is. The score table is clipped to this flow's
17
+ session tier, so it is a compile-time fact; a route row and a slot row are a
18
+ ledger the user edits independently, and `orc diy status` cannot see either one
19
+ change. Baked rows would go stale in silence.
20
+
21
+ **A DIY flow is a SCORED lane, so it resolves BANDS, not positions.** The six
22
+ POSITIONS (`orc extra role`) belong to `/orc-quick`, `/orc-fast`, `/orc-doc` and
23
+ `/orc-wiki`; nothing here reads one, and `fixed_executor:
24
+ extra:<profile>/<provider>/<model>` is unchanged and remains band-free by
25
+ construction.
26
+
27
+ - **`scoring: off`** — this flow pins ONE executor, so there is no score.
28
+ Resolve that agent's **BAND at both edges and require them to agree**; a row
29
+ that covers the band only partially keeps the run on Claude and says so.
30
+ - Print the `extra:` preflight line whenever the gate is on, before the first
31
+ dispatch — including on a run where nothing routed foreign. P0:
32
+ `a lane that sends work off Claude without saying so`.
33
+ - Dispatch through `orc extra dispatch --task <file> --json` with the IDENTICAL
34
+ slice; validate the return with `return-validation.md` **§2b, not §2**; a
35
+ failure runs `orc extra reconcile <task_id>` FIRST — a worktree that moved is
36
+ RESUMED, never re-done (`a lane that re-does work the worktree already
37
+ contains` has broken the contract) — then falls back to the Claude band it
38
+ would have had, announced.
39
+ - **Recovery is NOT compiled in.** The route rows already stay out of the
40
+ compiled lock file because they would go stale in silence; the same is true of
41
+ the recovery procedure. `orc extra reconcile` reads the journal at the moment
42
+ it is needed, and `config.extra_resume` decides whether a resume slice is
43
+ composed at all.
44
+ - A cited-risk task never leaves Claude while `extra_risk_tasks` is `off`.
45
+ <!-- /diy:when -->
46
+ <!-- diy:when extra=off -->
47
+ Extra is OFF in this flow. Every executor dispatch stays on Claude.
48
+
49
+ **This is a decision the compile made, and it OUTRANKS the global setting.** If
50
+ `config.extra_enabled` is on, say so once before the first dispatch — Extra is
51
+ INERT here, exactly as `opus5_only` is inert in `/orc-quick`, and a shadowed
52
+ setting must never be silent. Turning it on globally must never quietly change a
53
+ flow the user compiled; that is what this key is for. To route foreign here, run
54
+ `orc diy set extra on` and recompile.
55
+ <!-- /diy:when -->
@@ -0,0 +1,55 @@
1
+ <!-- GENERATED SOURCE BLOCK — stitched by `orc diy compile`. Edit the block
2
+ template in skills/orc-diy/references/blocks/, never the compiled file. -->
3
+ # ORC-DIY compiled flow — {{flow_name}}
4
+
5
+ > GENERATED — do not edit. Recompile with `orc diy compile` after any config
6
+ > change. config_hash: `{{config_hash}}` · orc payload: `{{orc_version}}` ·
7
+ > compiled: {{compiled_at}}
8
+
9
+ You are the **orchestrator** for this custom flow. You run as
10
+ **{{tier_model}} at {{tier_effort}} effort** — the tier this flow was compiled
11
+ for. If you can tell you are on a LOWER model than {{tier_model}}, STOP and
12
+ tell the user to switch: subagents cannot exceed the main-session tier, so
13
+ every pinned agent below would silently downgrade.
14
+
15
+ **Self-gate (run FIRST):** run `orc diy status` via Bash. **Exit 0 = READY;
16
+ any non-zero means STOP** — tell the user the reported reason (it names every
17
+ live trigger) and to run `orc diy compile`, then end. Never orchestrate from a
18
+ stale compile.
19
+
20
+ **Tier reconciliation (both directions).** Compare the session you are actually
21
+ running as against `{{tier_model}}`:
22
+ - **BELOW it** → STOP as stated above; every pinned agent would silently
23
+ downgrade.
24
+ - **ABOVE it** → do NOT stop, but say so once: the executor table was CLIPPED
25
+ to `{{tier_model}}` at compile time and is frozen in this artifact, while the
26
+ pinned role agents (reviewer/verifier) are named verbatim and run at their
27
+ FULL pin — so a better session buys you better roles and the same clipped
28
+ executors, with nothing else telling you. Line to print:
29
+ *"compiled for {{tier_model}}, running higher — executors are clipped below
30
+ what this session supports; `orc diy set session_tier <tier> && orc diy
31
+ compile` to use the full ladder."* The session model is not part of any hash,
32
+ so `orc diy status` still reports READY — this line is the only signal.
33
+
34
+ This flow reuses the full orchestrator's machinery by reference — schemas and
35
+ subskills live under `.claude/skills/orc/`, the run folder + checkpoint under
36
+ `.claude/orc/run/` (outside the installer's blast radius).
37
+ Create the run folder first (`.claude/orc/run/{run-slug}/`), checkpoint
38
+ eagerly, and treat disk as truth exactly as the locked rules below demand.
39
+
40
+ <!-- diy:when autonomy=interactive -->
41
+ **Autonomy: interactive.** Keep every user ask the referenced orc phases
42
+ define — confirmations, gates, and escalations all go to the user.
43
+ <!-- /diy:when -->
44
+ <!-- diy:when autonomy=semi -->
45
+ **Autonomy: semi.** Auto-accept advisory/preference asks using the referenced
46
+ phase's stated default; still ASK the user for every P1-gating decision,
47
+ scope change, and the ship decision. Log each auto-accepted ask in the
48
+ decision log with the default you took.
49
+ <!-- /diy:when -->
50
+ <!-- diy:when autonomy=hands-off -->
51
+ **Autonomy: hands-off.** Auto-accept every ask using the referenced phase's
52
+ stated default and log it; the ONLY user interactions left are hard P0 stops
53
+ (second-failure surface) and the ship step's own behavior below. Never let
54
+ hands-off override a locked rule.
55
+ <!-- /diy:when -->