@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,98 @@
1
+ # Plain English — what the lint actually checks
2
+
3
+ `orc challenge lint <path> [--template <p>]` is the deterministic half of this
4
+ lane. **Everything a computer can decide must never cost a model token**, and
5
+ "is this English simple enough for a non-native reader" is *substantially*
6
+ computable.
7
+
8
+ ## Two honesty rules — stated here and printed by the command
9
+
10
+ 1. **It is a SIGNAL, not a verdict** — the `/orc-aftermath` rule. A long sentence
11
+ is not automatically a defect. The lint never blocks; it feeds the judge, who
12
+ decides whether it costs the STATED AUDIENCE anything.
13
+ 2. **It is English-specific and heuristic.** The grade formula is an estimate and
14
+ passive-voice detection is a pattern match. Say so, once, on the output.
15
+
16
+ Its real payoff: `lint.json` rides in the judge's slice, so the judge never
17
+ spends tokens counting sentences — it spends them on D2, the only dimension no
18
+ computer can reach. It is also useful standalone: `orc challenge lint README.md`
19
+ needs no cycle, no model, and no ORC run at all.
20
+
21
+ ## Structure (needs `--template`)
22
+
23
+ - heading tree extracted from both, at **depth 2–3 only** (the H1 is the
24
+ document's title; a title that differs from the template's is the document
25
+ being about something, not a missing section)
26
+ - required sections **missing**, **out of order**, or **invented**
27
+ - **empty ceremony** — a heading with under 15 words of body. A CONTAINER (its
28
+ next heading is deeper) is skipped: its children carry the body
29
+ - table column-count consistency
30
+ - code fences with no language tag
31
+ - relative links and `file:line` anchors that do not resolve on disk
32
+
33
+ ## Prose (no template needed)
34
+
35
+ | Check | Emits | Dimension |
36
+ |---|---|---|
37
+ | Acronym used before it is defined | `L-###` at first use | D5 |
38
+ | Sentence over 25 words | `L-###`, plus a p50/p90 distribution | D5 |
39
+ | Passive voice (be-verb + participle heuristic) | a **percentage**; findings only past 25% | D5 |
40
+ | Idioms / phrasal verbs (the list below) | `L-###` | D5 |
41
+ | Sentences opening with a bare `This`/`It`/`They` | `L-###` | D3 |
42
+ | Placeholder markers | `L-###` | D6 |
43
+ | Ambiguous quantifiers | `L-###` | D6 |
44
+ | Flesch–Kincaid grade estimate | one number | — |
45
+
46
+ **Sentences are measured over PARAGRAPHS, not over lines.** A hard-wrapped
47
+ 39-word sentence is still a 39-word sentence; splitting at the newline is how a
48
+ length check silently passes every wrapped document.
49
+
50
+ Code fences, tables, indented blocks, HTML comments, inline code and URL targets
51
+ are stripped before any prose metric runs. Counting a URL as a long sentence is
52
+ how a lint loses a reader's trust in one line of output.
53
+
54
+ ## The curated lists
55
+
56
+ Mirrored in `bin/cli.js` (`LINT_IDIOMS`, `LINT_MARKERS`, `LINT_VAGUE`,
57
+ `LINT_COMMON_ACRONYMS`) — documented drift the token lint cannot see, because a
58
+ word list is not a single token. Change both together.
59
+
60
+ ### Idioms and phrasal verbs
61
+
62
+ spin up · spun up · roll out · rolled out · kick off · kicked off · go-live ·
63
+ reach out · circle back · touch base · move the needle · low-hanging fruit ·
64
+ boil the ocean · ramp up · wind down · drill down · hash out · iron out ·
65
+ flesh out · in the weeds · on the same page · at the end of the day · bake in ·
66
+ baked in · double down · take a stab · ballpark · off the shelf
67
+
68
+ ### Placeholder markers
69
+
70
+ `TBD` · `TODO` · `???` · `tbc` · `as needed` · `and so on` · `etc.` · `FIXME`
71
+
72
+ ### Ambiguous quantifiers
73
+
74
+ some · several · appropriate · reasonable · quickly · efficient · efficiently ·
75
+ properly · adequate · sufficient · various · a number of · as required ·
76
+ if necessary · where applicable · robust · scalable · seamless
77
+
78
+ ### Acronyms every technical reader already has
79
+
80
+ API · HTTP · HTTPS · JSON · YAML · XML · URL · URI · ID · UI · UX · CPU · RAM ·
81
+ SQL · CSV · PDF · HTML · CSS · CI · CD · PR · MR · AWS · GCP · SDK · CLI · IDE ·
82
+ OS · TLS · SSL · DNS · TCP · UDP · REST · CRUD · UUID · README · SLA · SLO · QA ·
83
+ AI · ML · LLM · ADR · PRD · TSD · FAQ
84
+
85
+ Everything else must be expanded on first use. That is a D5 finding, not a style
86
+ opinion — a reader who does not know what `SoR` means cannot check whether the
87
+ sentence is true.
88
+
89
+ ## Thresholds
90
+
91
+ | | Default | Why |
92
+ |---|---|---|
93
+ | sentence length | 25 words | past this, a non-native reader re-reads |
94
+ | passive voice | 25% of sentences | a percentage, never a per-sentence finding |
95
+ | empty section | 15 words of body | below this it is ceremony, not content |
96
+
97
+ These are constants in the CLI, not config keys. A knob per threshold would turn
98
+ a signal into a negotiation.
@@ -0,0 +1,109 @@
1
+ # How the judge scores — and why it cannot pass anything
2
+
3
+ ## Severity
4
+
5
+ Reuses ORC's existing reviewer ladder, so nobody has to learn a second one.
6
+
7
+ | | Meaning in this lane |
8
+ |---|---|
9
+ | **P0** | The artifact actively **misleads**. A reader who follows it will build the wrong thing. |
10
+ | **P1** | The artifact is **incomplete or undecidable** at a load-bearing point. |
11
+ | **P2** | Advisory — real, worth fixing, not a blocker. |
12
+ | **P3** | Nit. |
13
+
14
+ Severity is about the CONSEQUENCE to the stated audience, never about how much
15
+ text is wrong. One missing number in an interface is a P0. Four paragraphs of
16
+ clumsy phrasing in a document nobody reads cold is a P3.
17
+
18
+ ## PASS
19
+
20
+ > **PASS is computed, never declared.**
21
+
22
+ `PASS` = zero open findings at or above `challenge_pass_severity` (default `p1`),
23
+ **after** accepted exceptions are subtracted, **and** every selected dimension
24
+ reported a result.
25
+
26
+ `orc challenge record` computes it. The judge cannot: it reports findings, and
27
+ that is all. This is not ceremony — it removes leniency as a possibility. A judge
28
+ that can pass something can be talked into passing something.
29
+ A judge that **can only find, or fail to find** cannot.
30
+
31
+ The second half is structural too: `record` REJECTS an iteration in which a
32
+ selected dimension reported nothing, so "every dimension reported" is guaranteed
33
+ before the severity question is even asked.
34
+
35
+ ## What a finding must carry
36
+
37
+ ```
38
+ id · dimension · severity · anchor(file:line) · quote · what_is_wrong ·
39
+ consequence · acceptance_line · serves
40
+ ```
41
+
42
+ - **`consequence`** — what a reader BUILDS wrong because of this. A finding with
43
+ no consequence is a preference.
44
+ - **`acceptance_line`** — what "fixed" looks like, concretely. It is what stops
45
+ the fixer guessing, and it is what gives the next judge an objective re-check
46
+ instead of a fresh opinion.
47
+ - **`serves`** — which goal element the finding advances (`goal`, `audience`,
48
+ `done_means`, or a named `out_of_scope` entry). **A finding with no `serves` is
49
+ out of scope and is DROPPED by the CLI.**
50
+
51
+ ## Zero findings is a legitimate outcome
52
+
53
+ Do not invent findings to look thorough. Do not soften one to be kind — you are
54
+ not the one who decides whether the artifact passes, so there is nothing to be
55
+ kind about.
56
+
57
+ ## The two escape valves
58
+
59
+ A loop with no exit is a trap.
60
+
61
+ - **`orc challenge accept <slug> <id> "reason"`** — the user accepts a blocking
62
+ finding as a known gap. It stops blocking immediately, it stays visible forever
63
+ in the report under **Accepted exceptions** with the reason. *Never automatic*
64
+ — the `/orc-pact` retirement rule.
65
+ - **`orc challenge rebut <slug> <id> "reason"`** — the user thinks the judge is
66
+ wrong. The next judge must address it explicitly and return `withdrawn` (with
67
+ an admission) or `upheld` (with NEW evidence, not a restatement). **A rebutted
68
+ finding the next verdict ignores makes the iteration malformed and it is
69
+ rejected.** Without this, one bad finding loops forever and the user's only
70
+ move is to give up.
71
+
72
+ ## Convergence, not a cap
73
+
74
+ There is no loop cap and there is no config key for one. Every other loop in ORC
75
+ (TDD 3, drift recovery 2, quick repair 3) runs inside one session and costs
76
+ tokens per turn. Here each turn is a separate human sitting down to work, and a
77
+ cap that refuses on iteration 6 would be refusing to review a hard document.
78
+
79
+ So: measure instead.
80
+
81
+ ```
82
+ convergence: 9 → 4 → 4 → 4 blocking findings over 4 iterations
83
+ ⚠ stalled — no net reduction in 3 iterations.
84
+
85
+ Three honest options:
86
+ 1 Narrow the rubric orc challenge init … --dimensions D1,D2,D6
87
+ 2 Accept them as known gaps orc challenge accept tsd-payments F-003 "…"
88
+ 3 Keep going /orc-challenge tsd-payments
89
+ ```
90
+
91
+ It prints once when `stalled` flips true, and again only if the count RISES.
92
+ Never a block, never a nag repeated every iteration.
93
+
94
+ ## Severity is about the consequence, never about who raised it
95
+
96
+ A council lens does not get a severity discount for being clever or a bump for
97
+ being enthusiastic. The ladder is unchanged and it asks one question: **what
98
+ happens to the STATED audience if this ships as written?**
99
+
100
+ `corroborated_by` — two lenses independently landing on the same defect — is the
101
+ strongest comprehension evidence this lane can produce, and it is **a signal,
102
+ never an automatic severity bump.** (The `/orc-aftermath` rule: churn is a
103
+ signal, not a verdict.) The judge may raise a severity because the corroboration
104
+ told it something about the consequence; it may never raise one because two
105
+ agents agreed.
106
+
107
+ And the contrarian's rule against manufacturing findings is the same rule
108
+ everybody else here lives under: **never invent a finding to look thorough, and
109
+ never soften one to look balanced.** Balance is the judge's job.
@@ -0,0 +1,97 @@
1
+ # The sealed slice
2
+
3
+ The single most important sentence in this lane:
4
+
5
+ > **the judge slice is SEALED** — its dispatch payload contains PATHS and IDs. It
6
+ > never contains prose written in this session.
7
+
8
+ **A fix is a claim; a verdict is evidence.** The moment the judge is handed a
9
+ summary of what changed, it is grading the summary. And the moment the session
10
+ that wrote the fix also writes the slice, the summary is written by the party
11
+ with an interest in passing.
12
+
13
+ ## The permitted field list — complete
14
+
15
+ ```
16
+ goals: orc/orc-challenge/tsd-payments/goals.md (frozen, v1)
17
+ artifact: docs/tsd-payments.md
18
+ template: orc/orc-challenge/tsd-payments/template.md (frozen, v1)
19
+ dimensions: <skill>/references/dimensions.md (selected: D1 D2 D3 D4 D5 D6)
20
+ lint: orc/orc-challenge/tsd-payments/iteration-02/lint.json
21
+ reader: orc/orc-challenge/tsd-payments/iteration-02/council/reader.md
22
+ contrarian: orc/orc-challenge/tsd-payments/iteration-02/council/contrarian.md
23
+ outsider: orc/orc-challenge/tsd-payments/iteration-02/council/outsider.md
24
+ executor: orc/orc-challenge/tsd-payments/iteration-02/council/executor.md
25
+ carry_ids: F-003 F-007 C-002
26
+ rebuttal_ids: F-007
27
+ ```
28
+
29
+ Every value is either a PATH or an ID. Nothing else may appear.
30
+
31
+ One row per **finding** lens on the roster, and no more. A council report is a
32
+ path to a file an *agent* wrote, so it does not breach the rule: the line this
33
+ rule actually draws is *"a summary written by the party with an interest in
34
+ passing"*, and no council member has one.
35
+
36
+ `goals.md` is a path, not prose — which is exactly why the goal is frozen to disk
37
+ at intake instead of being retyped into each dispatch. Every iteration's judge
38
+ reads the identical goal from the identical file, forever.
39
+
40
+ ## The two reports that may NEVER appear
41
+
42
+ **`council/principles.md` and `council/expansionist.md` are forbidden in the
43
+ judge's slice.** Handing a judge a document arguing that the frozen goal is wrong
44
+ biases every finding it produces afterwards, and an opportunity is not a defect
45
+ at all. **The three finding lenses feed the judge; the two non-finding lenses
46
+ feed the user** — see `council.md`.
47
+
48
+ ## What may NOT appear
49
+
50
+ - what changed since last time
51
+ - the diff, or `orc challenge diff`'s output
52
+ - the fix brief
53
+ - the previous `advice.md`
54
+ - the finding BODIES
55
+ - any sentence beginning "the user says", "they fixed", "this should now be"
56
+ - a severity suggestion, a hint about what to look at, or an expected outcome
57
+
58
+ **The judge opens `iteration-01/verdict.md` itself if it wants the carried
59
+ bodies.** Reading them from disk is fine; being handed a summary of them is not,
60
+ because a summary is where the bias enters.
61
+
62
+ ## The reader's slice is even tighter
63
+
64
+ `orc-challenge-reader-opus-5-low` gets the artifact path(s), the questionnaire
65
+ protocol, and **the `audience` line only**, lifted from `goals.md`.
66
+
67
+ *Why the audience but not the goal:* "a reader without context" is meaningless
68
+ until you say WHICH reader — a staff engineer and a non-native junior are
69
+ different instruments. But telling the reader what the document is *trying to
70
+ achieve* hands it the answers it is supposed to have to find, and D4 measures
71
+ exactly the gap between the two.
72
+
73
+ Its tools are `Read` and nothing else. Not `Glob`, not `Grep`, not `Bash`. **The
74
+ instrument is defined by what it cannot reach.**
75
+
76
+ ## The outsider's slice is the tightest in the lane
77
+
78
+ `orc-challenge-outsider-opus-5-low` gets **the artifact path(s) and its protocol.
79
+ Nothing else.** Not the goal, not the audience, not the kind, not the template,
80
+ not the repository. Its tools are `Read` and nothing else.
81
+
82
+ Tighter than the reader, which at least knows who it is reading as. The outsider
83
+ is not told, because the moment it can look anything up it stops being able to
84
+ measure what a stranger cannot find out.
85
+
86
+ ## The advisor's slice is the loose one, on purpose
87
+
88
+ `orc-challenge-advisor-opus-5-med` gets `goals.md`, the verdict's findings, the
89
+ council reports, the artifact and the repository. It needs the goal because ORDERING a fix is a goal
90
+ question: which repair unblocks the most of what the user actually wants. It is
91
+ dispatched only on a FAIL, and it never writes prose for the artifact.
92
+
93
+ ## Testable
94
+
95
+ `test/payload.test.js` greps this file and `../SKILL.md` for the sealed-slice
96
+ token and asserts the C4 dispatch block lists only path-shaped and ID-shaped
97
+ fields.
@@ -0,0 +1,154 @@
1
+ # `verdict.md` and the findings array
2
+
3
+ Two halves of one return. The **prose** is for a human reading the review; the
4
+ **array** is what `orc challenge record` gates and stores. They must agree —
5
+ `record` re-checks the file's sha forever after, so an edit to one without the
6
+ other shows up as `TAMPERED`.
7
+
8
+ ## The file
9
+
10
+ `orc/orc-challenge/<slug>/iteration-NN/verdict.md`. `NN` is zero-padded so
11
+ iteration 10 sorts after iteration 9.
12
+
13
+ This is the file the reader thinks of as "the review". It lives inside its
14
+ iteration folder because an iteration has four artifacts, not one:
15
+ `lint.json` · `reader-report.md` · `verdict.md` · `advice.md` (absent on PASS).
16
+
17
+ ```markdown
18
+ # Verdict — iteration 2 · tsd-payments
19
+
20
+ **Goal (frozen v1):** a backend team implements this without asking me anything
21
+ **Audience:** backend engineers, 2 of 5 non-native English readers
22
+ **Done means:** no open interface question and no TBD in §3–§7
23
+
24
+ Graded against template v1 · goal v1 · dimensions D1 D2 D3 D4 D5 D6
25
+
26
+ ## Summary
27
+
28
+ Two sentences. What state the artifact is in, and what is standing between it
29
+ and the stated goal. Not a list — the list is below.
30
+
31
+ ## Dimensions
32
+
33
+ | ID | Status | Findings | Note |
34
+ |---|---|---|---|
35
+ | D1 | CHECKED | 0 | every required section is present and carries content |
36
+ | D5 | NOT-CHECKED | — | challenge_reader is off |
37
+
38
+ ## Carried findings
39
+
40
+ | id | outcome | why |
41
+ |---|---|---|
42
+ | F-001 | resolved | §3.2 now names the window as 24h |
43
+ | F-003 | still-open | Scope is still `TBD` |
44
+ | F-004 | withdrawn | the rebuttal is right — it is a quotation from JIRA-4412 |
45
+
46
+ ## New findings
47
+
48
+ ### F-014 · P1 · D2 — docs/tsd-payments.md:118
49
+
50
+ > the idempotency window is applied appropriately
51
+
52
+ **What is wrong:** the window is never given a value anywhere in the document.
53
+ **Consequence:** two teams implementing from this will pick different windows,
54
+ and the mismatch only shows up in production.
55
+ **Fixed when:** §4.2 names the window in seconds and the dead-letter destination.
56
+ **Serves:** done_means
57
+ ```
58
+
59
+ **Every verdict restates the goal at the top.** Nobody should ever fix in the
60
+ dark.
61
+
62
+ ## The array
63
+
64
+ One object per finding — new AND carried, in the same array:
65
+
66
+ ```yaml
67
+ - id: F-014 # permanent. Never renumber, never reuse
68
+ dimension: D2 # one of D1…D7
69
+ severity: P1 # P0 | P1 | P2 | P3
70
+ anchor: "docs/tsd-payments.md:118" # real, resolvable
71
+ quote: "the idempotency window is applied appropriately"
72
+ what_is_wrong: "…"
73
+ consequence: "…" # what a reader BUILDS wrong
74
+ acceptance_line: "…" # what "fixed" looks like, concretely
75
+ serves: done_means # goal | audience | done_means | out_of_scope:<name>
76
+ # carried findings ALSO carry:
77
+ outcome: still-open # resolved | still-open | superseded | withdrawn
78
+ reason: "…" # required for withdrawn
79
+ superseded_by: F-021 # required for superseded
80
+ ```
81
+
82
+ Plus, at the top level of the return:
83
+
84
+ ```yaml
85
+ verdict_file: "iteration-02/verdict.md"
86
+ lint: { findings: 13, grade: 8.1 }
87
+ reader: { asked: 12, answered: 11, score: "11/12" }
88
+ dimensions:
89
+ - { id: D1, status: CHECKED, findings: 0 }
90
+ - { id: D5, status: NOT-CHECKED, reason: "challenge_reader is off" }
91
+ rebuttals_addressed:
92
+ - { id: F-004, result: withdrawn, reason: "agreed — it is a quotation" }
93
+ ```
94
+
95
+ ## What `record` rejects, by name
96
+
97
+ | Rejection | Rule |
98
+ |---|---|
99
+ | a selected dimension reported nothing | 6 — silence is indistinguishable from a forgotten check |
100
+ | `NOT-CHECKED` with no reason | 6 |
101
+ | coverage below 100% | 4 — with the missing ids named |
102
+ | an outcome on a finding that was not open | 4 |
103
+ | `withdrawn` with no reason, `superseded` with no id | 4 |
104
+ | an open rebuttal not addressed | the rebuttal contract |
105
+ | the verdict file is missing from disk | 10 |
106
+ | a bad severity or an unknown dimension | the enums |
107
+
108
+ And one thing it does NOT reject: a finding with no `serves`. That one is
109
+ **dropped**, counted, and reported — it is out of scope of the stated goal, which
110
+ is a judge working outside its brief, not a broken return.
111
+
112
+ ## Writing the return to disk
113
+
114
+ The skill writes the array to a temp JSON (inside the cycle folder), then:
115
+
116
+ ```bash
117
+ orc challenge record <slug> --iteration N --from orc/orc-challenge/<slug>/iteration-NN/verdict.json
118
+ ```
119
+
120
+ The CLI prints the `trace_line` for the iteration. Use it verbatim — do not
121
+ compose a second wording for it.
122
+
123
+ ## The council section (v0.49.1)
124
+
125
+ The verdict body gains one section, above the findings.
126
+
127
+ **One row per roster lens, and a NOT-RUN row keeps its slot with its reason** —
128
+ filtering it out makes *"the contrarian found nothing"* and *"the contrarian
129
+ never ran"* look identical. Rule 15.
130
+
131
+ ```
132
+ council v1 — 4 of 5 ran
133
+
134
+ RAN reader raised 3 · adopted 2 · merged 1 · rejected 0 · out-of-goal 0
135
+ RAN contrarian raised 6 · adopted 4 · merged 1 · rejected 1 · out-of-goal 0
136
+ RAN outsider raised 3 · adopted 1 · merged 2 · rejected 0 · out-of-goal 0
137
+ RAN executor raised 2 · adopted 2 · merged 0 · rejected 0 · out-of-goal 0
138
+ NOT-RUN principles usage limit reached mid-batch
139
+ ```
140
+
141
+ Then the **disposition table** — every id the council raised, with the ONE
142
+ disposition it got and its reason. `council_coverage_pct` must be 100 or
143
+ `orc challenge record` rejects the verdict and names the missing ids.
144
+
145
+ Every finding line carries its **lens**, and where two lenses landed on the same
146
+ defect, `also found by: outsider`. **Corroboration is a signal, never an
147
+ automatic severity bump.**
148
+
149
+ An **adopted council finding keeps the raiser's id.** `C-004` is `C-004` here and
150
+ in iteration 9.
151
+
152
+ The council executor's `monday_morning` list is printed verbatim — including
153
+ `monday_morning_stops_at`, which is the most legible sentence this lane produces
154
+ for a non-engineer.
@@ -0,0 +1,199 @@
1
+ ---
2
+ name: orc-claude
3
+ description: >
4
+ CLAUDE.md builder/updater for the LOCAL project. Use for "/orc-claude",
5
+ "build a CLAUDE.md", "update the CLAUDE.md", or "refresh the CLAUDE.md".
6
+ Runs INDEPENDENTLY — no orchestrator, no run folder. Scans the repo for
7
+ ground-truth facts (verified commands, layout, conventions, boundaries) and
8
+ writes a section-fenced, version-stamped CLAUDE.md at the repo root — even
9
+ when ORC itself is installed globally. Never asks questions: P0 rules are a
10
+ template the user fills in themself. Refresh regenerates ONLY stale sections
11
+ and bumps the file version by 0.0.1. Never trims user-authored content;
12
+ never touches the orc-wiki pointer block. The skill dispatches the pinned
13
+ orc-claude-writer-opus-4-8-high agent — it never writes the file itself.
14
+ ---
15
+
16
+ # ORC-CLAUDE (standalone)
17
+
18
+ Build or maintain the **local project's** `CLAUDE.md` from verified repo facts.
19
+ The target is ALWAYS `<repo root>/CLAUDE.md` of the current working directory —
20
+ never `~/.claude/CLAUDE.md`, even if ORC is installed globally.
21
+
22
+ **Dispatch, don't do.** Whatever model this chat runs on, the skill itself only
23
+ selects the mode and spawns `orc-claude-writer-opus-4-8-high` (the pinned
24
+ engine) — so the scan + writing always run at Opus 4.8 high regardless of the
25
+ caller's tier. When `opus5_only: true` the engine is
26
+ `orc-claude-writer-opus-5-med` instead (that mode FORCES it — see
27
+ `../_shared/opus5-only.md`), and it then needs an Opus 5 main session.
28
+ The one exception: the skill also writes the
29
+ trace pointer + a few markers around that spawn (behavior-trace logging is
30
+ permanent; see "Behavior trace"); that
31
+ tracing is its ONLY self-write — the `CLAUDE.md` write is always the writer's.
32
+ **Fully non-interactive: ask the user NOTHING.** No AskUserQuestion, no
33
+ confirmation prompts. Dispatch, relay the report, stop.
34
+
35
+ **Worked example** (orient only — never execute from it):
36
+ `examples/claude-run-mock.md`.
37
+
38
+ ## The three modes (auto-selected, in this order)
39
+
40
+ 1. **REFRESH** — `CLAUDE.md` exists AND contains an `orc-claude:meta` header.
41
+ Recompute section fingerprints; regenerate ONLY stale fenced sections;
42
+ bump `version` by exactly 0.0.1; update `updated:` (DD-MM-YYYY). Nothing
43
+ stale → report "up to date (vX.Y.Z)" and write NOTHING (no bump, no bak).
44
+ Protocol: `references/refresh.md`.
45
+ 2. **UPDATE** — `CLAUDE.md` exists but has NO `orc-claude:meta` header (a
46
+ foreign / hand-written file). Copy it to `CLAUDE.md.bak` first (one bak,
47
+ overwritten each run; offer a `.gitignore` line for it in the report). Then
48
+ inject the meta header at the top and append/merge fenced generated
49
+ sections at version `0.0.1`.
50
+ **NEVER trim, delete, reorder, or rewrite existing user content — not one
51
+ line.** If a generated section would duplicate what the user already wrote,
52
+ generate the slimmer remainder or skip that section. The merged file MAY
53
+ exceed the budget (e.g. 600 existing lines + generated → 800): that is OK
54
+ by design — end the report with a hard note that the user should trim
55
+ unused content themself for better instruction-following.
56
+ 3. **CREATE** — no `CLAUDE.md` at the repo root. Generate a fresh one from
57
+ `references/template.md` at version `0.0.1`.
58
+
59
+ Not inside a git repo / no project root findable → say so and stop.
60
+
61
+ ## Dispatch (the skill's only real job)
62
+
63
+ Behavior-trace logging is permanent (always on). Weave the **Trace:** steps below
64
+ into the procedure — this skill owns a minimal one-dispatch trace (full marker
65
+ set in "Behavior trace").
66
+
67
+ 1. Detect the repo root and pick the mode (REFRESH / UPDATE / CREATE above —
68
+ header sniff only; the writer re-verifies). **Trace:** open the run now —
69
+ write `log_dir/.current` = `run-claude-<slug>-<DDMMYY>-<HHMMSS>.txt` and
70
+ `touch the trace file` of that name in the SAME step, BEFORE the spawn (a
71
+ pointer to a file that does not exist reads as dangling — the hook rotates
72
+ away from it and the run splits across two files).
73
+ 2. Spawn `orc-claude-writer-opus-4-8-high` — or `orc-claude-writer-opus-5-med`
74
+ when `opus5_only` — with: `mode`, `repo_root`,
75
+ `budget` (from a `budget=N` argument, else null), and the paths to
76
+ `references/template.md` + `references/refresh.md`. **Trace:** emit
77
+ `DISPATCH orc-claude-writer :: <mode> expect=opus-4-8/high` just before the
78
+ spawn (`expect=opus-5/medium` under `opus5_only` — the expectation is
79
+ derived from the agent NAME you actually dispatched, never from this line's
80
+ default; the hook then adds `SPAWN`/`RETURN` on its own).
81
+ 3. On return, check `actual_model`/`actual_effort` against the pinned tier —
82
+ mismatch → prepend a tier-downgrade warning to the report. **Trace:** emit
83
+ `VERIFY writer actual=<model>/<effort> ✅ MATCH` (or
84
+ `⛔ DOWNGRADE expected=opus-4-8/high`).
85
+ 4. Relay the Phase-3 report verbatim. **Trace:** emit
86
+ `FINISH :: <mode_ran> CLAUDE.md v<X.Y.Z>` (mode_ran may be `noop`), then
87
+ delete `log_dir/.current`. Then stop. The skill NEVER writes CLAUDE.md
88
+ itself — not even in a "trivial" refresh.
89
+
90
+ The writer performs Phases 1–3 below.
91
+
92
+ ## Phase 1 — ground-truth scan (facts, never guesses)
93
+
94
+ Read-only. Detect from real files, never from memory:
95
+
96
+ - **Stack & manifests:** `package.json`, `pyproject.toml`, `go.mod`,
97
+ `Cargo.toml`, `pom.xml`/`build.gradle`, `*.csproj`, `composer.json`,
98
+ `Gemfile`, `mix.exs` … Monorepo? (workspaces, `pnpm-workspace.yaml`,
99
+ `turbo.json`, `nx.json`, multiple manifests).
100
+ - **Commands:** only invocations that PROVABLY exist — a script in a manifest,
101
+ a Makefile/Taskfile target, a CI step. Prefer the single-test form when the
102
+ runner supports one. **Never invent a command.** Unverifiable → omit.
103
+ - **Conventions:** lint/format/type configs (eslint, prettier, biome, ruff,
104
+ black, clippy, tsconfig strictness…) + a small sample of real source files.
105
+ Record only DEVIATIONS from language defaults.
106
+ - **Boundaries:** generated/vendored/build dirs (from `.gitignore` + tree),
107
+ lockfiles, migration dirs, obvious legacy zones.
108
+ - **Environment:** env-var NAMES referenced in code/config/`.env.example`
109
+ (never values), external services.
110
+
111
+ ## Phase 2 — generate / merge
112
+
113
+ Follow `references/template.md` exactly: the meta header, the section order
114
+ (Zone A rules → Zone B reference), and the fence grammar. Every generated
115
+ section sits inside `<!-- orc-claude:section <name> -->` …
116
+ `<!-- /orc-claude:section -->` fences so refresh can replace it surgically.
117
+ Sections whose scan came back empty are OMITTED, not stubbed.
118
+
119
+ **P0 is user-authored, always.** Emit the P0 placeholder template from
120
+ `references/template.md` with its hard fill-it-yourself note. Never invent P0
121
+ rules, never ask for them. Same for the other `@user` sections (Boundaries'
122
+ user half, Gotchas, Glossary): placeholder + note, then leave.
123
+
124
+ **Line budget — generated content only.** Default 400 lines, persisted as
125
+ `line-budget:` in the meta header. The budget counts ONLY orc-claude's own
126
+ output (header + fenced sections) — existing user content NEVER counts against
127
+ it and is NEVER trimmed to meet it. If generation would exceed the budget,
128
+ trim Zone B first: move overflow to a `docs/` file and leave an `@docs/...`
129
+ pointer. Zone A is never cut. The user may pass a different budget as an
130
+ argument (`/orc-claude budget=600`) — honor it and persist it in the header.
131
+
132
+ **Wiki block is untouchable.** If the file contains an `ORC-WIKI:START` /
133
+ `ORC-WIKI:END` block (managed by orc-wiki), byte-preserve it and generate no
134
+ wiki-overlapping content. orc-claude never writes inside another skill's
135
+ markers.
136
+
137
+ ## Phase 3 — report
138
+
139
+ Show a short summary and STOP:
140
+
141
+ ```
142
+ ORC-CLAUDE — <create|update|refresh> → CLAUDE.md v<X.Y.Z> (<DD-MM-YYYY>)
143
+ Sections written: <list> · skipped (empty scan): <list>
144
+ Sections stale→refreshed: <list> (refresh mode only)
145
+ Preserved untouched: user content (<n> lines), wiki block
146
+ Conflicts flagged (scan contradicts existing text — NOT auto-edited):
147
+ - <file says X, repo shows Y>
148
+ Backup: CLAUDE.md.bak <written|not needed> (add it to .gitignore)
149
+ NOTE: file is <n> lines total (budget covers generated content only) — trim
150
+ unused user content yourself for better instruction-following.
151
+ Fill in the P0 / Gotchas / Glossary placeholders yourself — orc-claude never
152
+ writes them for you.
153
+ ```
154
+
155
+ ## Behavior trace (PERMANENT — a minimal one-dispatch orchestrator; always on)
156
+
157
+ orc-claude owns the trace protocol for its run exactly
158
+ like the full orchestrator — but it is a SINGLE-DISPATCH lane, so it emits ONLY
159
+ the markers it can truthfully witness. It does **not** emit `PHASE`/`SCORE`/
160
+ `FINDING`/`VERDICT`: the scan/generate/report phases run INSIDE the writer
161
+ sub-agent (which self-traces nothing — it only returns `actual_model`/
162
+ `actual_effort`), and there is no scoring or review in this lane. Resolve
163
+ `log_dir` (`../orc/config.md` default + `.claude/orc.config.yaml`)
164
+ at start and follow `../orc/references/trace-protocol.md`. The marker set, in
165
+ order (all under actor `orc`, plus the hook's `SPAWN`/`RETURN`):
166
+
167
+ 1. `log_dir/.current` = `run-claude-<slug>-<DDMMYY>-<HHMMSS>.txt` — written FIRST
168
+ (the hook also bootstraps it on the writer dispatch, so the skeleton is never
169
+ lost, and the end-of-run packet renames a bootstrapped file).
170
+ 2. `DISPATCH orc-claude-writer :: <mode> expect=opus-4-8/high` — before the
171
+ spawn. The hook then appends `SPAWN`/`RETURN` around the dispatch. The mode
172
+ rides in this line's tail (and in `FINISH`), so no separate mode marker.
173
+ 3. `VERIFY writer actual=<model>/<effort> ✅ MATCH` or
174
+ `⛔ DOWNGRADE expected=opus-4-8/high` — from the writer's returned
175
+ `actual_model`/`actual_effort` (the one honesty signal this lane feeds
176
+ `/orc-retro`).
177
+ 4. `FINISH :: <mode_ran> CLAUDE.md v<X.Y.Z>` (mode_ran may be `noop`), then
178
+ delete `.current`.
179
+
180
+ Narration is **dispatched, never remembered**: record each marker with its REAL
181
+ timestamp as its event happens, then — as a single-dispatch lane — dispatch the
182
+ trace writer ONCE with the whole event list plus `decisions` (the WHY: mode
183
+ choice, what the user asked) after the writer return validates and BEFORE you
184
+ delete `.current`. Stamps are the run's timeline, never the write time, and a run
185
+ that ends with zero new trace lines is a protocol violation. A noop refresh still
186
+ traces the full cycle (ending `FINISH :: noop`) and still deletes `.current`.
187
+
188
+ ## Boundaries
189
+
190
+ - **Writes ONLY** `CLAUDE.md`, `CLAUDE.md.bak`, and (on budget overflow) a
191
+ `docs/` overflow file. Never edits source code, never commits, never pushes.
192
+ - **Never asks the user anything.** Placeholders + report notes replace every
193
+ question.
194
+ - **Never deletes or rewrites user-authored lines** — contradictions are
195
+ flagged in the report, not fixed.
196
+ - **Never touches** the orc-wiki managed block or any other skill's markers.
197
+ - Version bumps are always exactly +0.0.1; dates are always DD-MM-YYYY.
198
+ - Reminder: to see usage limits, tell the user to run `/usage` (never invoke
199
+ it programmatically).