@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,165 @@
1
+ ---
2
+ name: orc-route
3
+ description: >
4
+ Plan-only lane router — you have a plan, this tells you which lane should build
5
+ it. Use for "/orc-route", "which lane for this plan?", "is this worth the full
6
+ orc run?". It reads the plan's own numbers (tasks, waves, files, top score,
7
+ risk) plus ORC's deterministic knowledge probes, then names ONE recommended
8
+ lane, the runners-up with the reason each lost, and any lane that is not
9
+ possible with the blocking condition named. It routes a PLAN and nothing else —
10
+ given a request in words it refuses and says why, because routing from a
11
+ sentence is guessing. Zero agents, user-invoked only, nothing is built.
12
+ ---
13
+
14
+ # ORC-ROUTE
15
+
16
+ **This is not a general "which command should I use" helper.** It only works on a
17
+ plan, on purpose.
18
+
19
+ A plan contains real numbers — tasks, the files each task touches, dependencies,
20
+ facets, scores. A sentence like *"add notifications"* contains none of them.
21
+ Routing from a plan is arithmetic. Routing from a sentence is guessing, and a
22
+ guess that looks like a calculation is worse than no answer.
23
+
24
+ The newcomer's "which of these commands do I type?" is answered by
25
+ `orc onboarding first-run`, not here. That is the trade: a narrow tool that is
26
+ always right, instead of a broad one that is sometimes wrong.
27
+
28
+ ## Input contract — reuse, never reinvent
29
+
30
+ A valid input is **exactly** what `../orc/references/plan-handoff.md` already
31
+ defines as a plan input:
32
+
33
+ - pasted planning-output (a block matching `../orc/schemas/planning-output.md` —
34
+ a `tasks:` list with `declared_files`, `depends_on`, `grounding[]`);
35
+ - a `plan-{name}.md` path the user points at;
36
+ - an `orc/planner/{name}/` checkpoint (the planner's "Save & stop" artifact).
37
+
38
+ Load that reference and use its definition — do NOT write a second one here. A
39
+ second definition of "what counts as a plan" is drift the contract lint cannot
40
+ see, and the two would eventually disagree about the same file.
41
+
42
+ Schema-validate against `../orc/schemas/planning-output.md`. A structurally
43
+ malformed plan is not a routing question: say which field is missing and point at
44
+ `/orc-plan`.
45
+
46
+ ## Refusal — anything that is not a plan
47
+
48
+ Do not guess. Do not quietly downgrade into a general suggestion box.
49
+
50
+ ```
51
+ This is not a plan, so I cannot route it.
52
+
53
+ I can only route a plan — a pasted ORC plan, a plan-<name>.md file, or a saved
54
+ planner checkpoint. What you gave me is a request in words.
55
+
56
+ Make a plan first with /orc-plan, then come back here.
57
+ ```
58
+
59
+ If the input is a plain request AND the user seems unsure what they even want,
60
+ you may add ONE line offering `/orc-grill` first. Offer it; never run it.
61
+
62
+ ## What it reads
63
+
64
+ Only the plan, plus the deterministic probes ORC already ships — **never an
65
+ ad-hoc `find`**, per `../_shared/detecting-artifacts.md`:
66
+
67
+ | Probe | Tells you |
68
+ |---|---|
69
+ | `orc wiki status` | wiki tier — the `/orc-fast` prerequisite |
70
+ | `orc pattern status <lang>` | cached code-pattern — the other `/orc-fast` prerequisite |
71
+ | `orc gotcha status` | whether this project has repair memory for the area |
72
+ | `orc diy status` | exit 0 = a compiled custom flow exists and is READY |
73
+
74
+ Signals taken from the plan itself: task count, wave count, total distinct files
75
+ in `declared_files`, the top facet score, whether any task carries a **cited**
76
+ `risk[]`, and whether `plan_confidence` is low.
77
+
78
+ Read nothing else. This lane opens no source file.
79
+
80
+ ## How it decides
81
+
82
+ Not a formula to hide behind — these are the real discriminators, in order:
83
+
84
+ 1. **Hard gates first.** A lane whose prerequisites fail is `not possible`, not
85
+ "runner-up". `/orc-fast` needs a FRESH or AGING wiki **and** a cached pattern
86
+ **and** a single-task plan — it runs ONE task, **and (v0.46.0) a plan carrying
87
+ any boundary REFUSE can never route there**: fast has one executor and no wave
88
+ to lift the refused task out of, so the gate has nowhere to act. `/orc-diy`
89
+ needs `orc diy status` to exit 0.
90
+ 2. **Risk beats size.** Any task with a cited `risk[]`, or `plan_confidence:
91
+ low`, recommends `/orc` — review and verify are what you are paying for, and
92
+ a small risky change is exactly the case that earns them.
93
+ 3. **Then size.** Roughly: 1 task with both `/orc-fast` gates green → `/orc-fast`;
94
+ 1–3 tasks, no risk, one wave → `/orc-mini`; anything multi-wave, or a top
95
+ score in the high bands, or more than a handful of files → `/orc`.
96
+ 4. **`/orc-ultra` is never a default.** Name it only when the plan itself
97
+ justifies maximum rigor (cited risk on more than one task, or a security-
98
+ surface plan), and say plainly that it costs the most.
99
+
100
+ State the numbers you decided from. A recommendation without its evidence cannot
101
+ be argued with, and the user is the one who knows whether the risk is real.
102
+
103
+ **Cost, when it is knowable (v0.46.0).** Run `orc budget forecast <plan> --json`
104
+ and add ONE cost column per lane, in the primary unit `budget_units` resolves to.
105
+ Routing stops being qualitative the moment "about 3x faster" becomes "1.23M vs
106
+ 0.41M raw, 18% vs 6% of a 5-hour window". Two rules ride with it: a band below
107
+ `budget_min_samples` makes the number a FLOOR and the column says so, and **exit 3
108
+ (no history) means the column is simply absent** — never a guessed figure, and
109
+ never a reason to withhold the recommendation itself, which does not depend on
110
+ cost.
111
+
112
+ ## Output shape
113
+
114
+ ```
115
+ Plan: merchant-notifications — 7 tasks, 3 waves, 14 files touched
116
+ top score 78, two tasks marked risky
117
+
118
+ → /orc the plan has risky tasks and a task above 70;
119
+ review and verify are worth paying for here
120
+ 1.23M raw · 18% of a 5-hour window on Max 20x
121
+ runner-up /orc-mini — about 3x faster and 0.41M raw (6% of a window),
122
+ but it skips full review and verification. Fine only if you
123
+ will read the diff yourself.
124
+ not possible /orc-fast — needs a fresh wiki (yours is STALE) and this plan
125
+ is 7 tasks; that lane runs ONE task. It also carries 1 boundary
126
+ REFUSE, which fast has no wave to lift out.
127
+
128
+ Start /orc now? [yes / no]
129
+ ```
130
+
131
+ Rules for that block:
132
+
133
+ - **Every runner-up names what it costs you**, not just that it is cheaper.
134
+ - **Every `not possible` names the blocking condition AND its fix** ("run
135
+ `/orc-wiki` to refresh"). A blocked lane with no stated fix is a dead end.
136
+ - **The final offer starts the recommended lane.** `no` ends the run cleanly.
137
+
138
+ ## Second entry point — one question after "Save & stop"
139
+
140
+ `../orc/subskills/orc-planner/SKILL.md` ends in a three-way branch. On **Save &
141
+ stop** ONLY, it asks:
142
+
143
+ > Want a lane recommendation for building this? [yes / no]
144
+
145
+ *Take into build* never asks — the lane is already chosen and running. *Poly
146
+ split & stop* never asks — it has its own per-repo handoff. One question, in
147
+ exactly one branch.
148
+
149
+ ## Behavior trace (always on — same as every lane)
150
+
151
+ Follow `../orc/references/trace-protocol.md`. Lane name `route`. Single-dispatch
152
+ tier: **exactly ONE end-of-run packet** to `orc-trace-writer-haiku-4-5`, solo,
153
+ after the offer is answered and BEFORE `log_dir/.current` is deleted. Run start
154
+ writes `log_dir/.current` = `run-route-<slug>-<DDMMYY>-<HHMMSS>.txt` AND
155
+ `touch the trace file` of that name in the SAME step. The packet carries the
156
+ probe results, the signals read from the plan, the recommendation, and — as
157
+ `decisions` — why the runners-up lost. A run that ends with
158
+ `zero new trace lines is a protocol violation`.
159
+
160
+ ## Rules this lane always keeps
161
+
162
+ Routes a plan, refuses anything else · zero agents, nothing dispatched · reuses
163
+ `plan-handoff.md`'s plan definition, never a second one · deterministic probes
164
+ only, never an ad-hoc `find` · reads no source file · never starts a lane the
165
+ user did not accept · never edits config or any project file.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: orc-verify
3
+ description: >
4
+ Standalone verification for ORC. Use for "verify my changes",
5
+ "/orc-verify", or "check the modified files". Runs INDEPENDENTLY —
6
+ no orchestrator, no planning, no run folder required. Verifies only the
7
+ git-modified changes in the working tree and shows a summary of results. Uses
8
+ Opus 5 medium effort. Read-only: it reports, it does not fix or commit.
9
+ ---
10
+
11
+ # ORC-VERIFY (standalone)
12
+
13
+ A focused, dependency-free verify pass. No intake, no planning, no checkpoint —
14
+ you point it at your uncommitted work and it tells you what's wrong.
15
+
16
+ Run as Opus 5, medium effort.
17
+
18
+ **Worked example** (orient only — never execute from it): `examples/verify-mock.md`.
19
+
20
+ ## Procedure
21
+
22
+ 1. **Gather the change surface** from git: `git diff --name-only` (unstaged +
23
+ staged) and, if useful, `git diff` for the actual hunks. Scope is ONLY the
24
+ modified/added files — do not review the whole repo.
25
+ 2. **Detect the stack** (package manager, test runner) from the repo.
26
+ If a cached pattern exists for a changed file's language — test it with the
27
+ deterministic probe `orc pattern status <lang>` (exit 0 = cached; see
28
+ `../_shared/detecting-artifacts.md`, never an ad-hoc `find` for
29
+ `.claude/orc/patterns/<lang>-pattern.md`) — read its Invariants +
30
+ Validation-gate sections and check the diff against them too (an invariant
31
+ violation or unmet enforceable gate line is P0). No cached pattern → skip
32
+ silently, never codify from here.
33
+ 3. **Verify the changes:**
34
+ - Run the build if one exists; capture failures.
35
+ - Run the tests that cover the changed files (or the full suite if scoping
36
+ isn't clean); capture failures.
37
+ - Check the diff for obvious breakage: broken imports, references to removed
38
+ symbols, unhandled errors introduced, type errors.
39
+ - **Adversarial pass (v0.33.0):** attack the diff the way the pipeline's
40
+ Phase 6 does — edge cases the change ignores (empty/zero/max, unicode),
41
+ error paths (each external call's failure), contract violations (response
42
+ shapes/status codes vs consumers), race/ordering on shared state, and
43
+ workflow breaks (dead wiring, broken commands). Same evidence rule.
44
+ 4. **Classify findings** on the P0–P3 severity ladder (same rule as the full
45
+ skill: P0 = failing build/tests, broken references, runtime errors ·
46
+ P1 = correctness/security risk · P2 = maintainability · P3 = cosmetic).
47
+ P0/P1 mean NOT ready to commit; P2/P3 are advisory. **Evidence-or-advisory
48
+ (same rule as the full pipeline):** every P0–P2 finding carries `file:line`
49
+ + the offending line(s) quoted VERBATIM from a file read this session; a
50
+ finding that can't be anchored is AUTO-P3 and never gates the verdict.
51
+ 5. **Show a summary** and STOP. This skill does not fix, stage, or commit.
52
+
53
+ ## Output (summary)
54
+
55
+ ```
56
+ ORC-VERIFY — <n> files changed
57
+ Build: <pass/fail/none> Tests: <x/y passing>
58
+ P0/P1 (gate — fix before commit):
59
+ - <P0|P1> <file:loc> <issue>
60
+ P2/P3 (advisory):
61
+ - <P2|P3> <file:loc> <issue>
62
+ Verdict: <READY / NEEDS FIXES>
63
+ ```
64
+
65
+ ## Behavior trace (PERMANENT — every ORC entry point traces; always on)
66
+
67
+ Standalone verify traces too — appended as each event happens, never batched
68
+ at the end (a phase ending with
69
+ `zero new trace lines is a protocol violation`). Resolve `log_dir`
70
+ (`../orc/config.md` default + `.claude/orc.config.yaml`) at start and follow
71
+ `../orc/references/trace-protocol.md`: write
72
+ `log_dir/.current` = `run-verify-<slug>-<DDMMYY>-<HHMMSS>.txt` and
73
+ `touch the trace file` of that name in the SAME step, first. Narration
74
+ is dispatched, not remembered: collect `PHASE` lines, `FINDING p0=… p1=… p2=…
75
+ p3=…`, `VERDICT pass|fail` and `FINISH` with their REAL timestamps plus
76
+ `decisions` (the WHY), dispatch the trace writer ONCE at run end (the
77
+ single-dispatch-lane packet), then delete `.current` (the hook bootstraps
78
+ `.current` + the skeleton on dispatch regardless).
79
+
80
+ ## Boundaries
81
+
82
+ - **Read-only.** Never edit, stage, commit, or push. Report only.
83
+ - **Independent.** Requires no orchestrator, no run folder, no intent-spec.
84
+ - If there are no git changes, say so and stop.
85
+ - Reminder: to see usage limits, tell the user to run `/usage` (never invoke it
86
+ programmatically).
@@ -0,0 +1,33 @@
1
+ # Example — Annotated Standalone Verify (dry run)
2
+
3
+ V: = verifier (Opus 5 medium) · U: = user. Nothing real. Runs INDEPENDENTLY — no
4
+ orchestrator, no planning, no run folder. Read-only: it reports, never fixes or commits.
5
+
6
+ U: /orc-verify
7
+
8
+ ## Scope — git-modified changes only
9
+ V: [git status/diff] 3 modified files: api/routes/orders.py, api/schemas.py,
10
+ tests/test_orders.py. Nothing staged beyond the working tree — verifying exactly
11
+ these changes (no repo-wide sweep).
12
+
13
+ ## Build + tests
14
+ V: [detects Python/poetry/pytest]
15
+ $ poetry run pytest tests/test_orders.py → 11 passed
16
+ $ poetry run mypy api/ → clean
17
+ Build/type/test: GREEN.
18
+
19
+ ## Diff sanity + findings (P0–P3 ladder)
20
+ V: Walks each hunk against intent inferred from the diff (every P0–P2 finding
21
+ anchored: file:line + the offending line quoted VERBATIM, else auto-P3):
22
+ ⛔ P1 api/routes/orders.py:42 — quote: `async def get_order(order_id: str):`
23
+ — new `/orders/{id}` route has no auth decorator; every sibling route
24
+ uses `@require_auth`. Security risk — likely unintended.
25
+ (Not P0: build/tests are green.)
26
+ • P3 api/schemas.py:18 — field `createdAt` breaks the snake_case convention
27
+ used elsewhere (`created_at`).
28
+ • P2 tests/test_orders.py — no negative-path test for a missing id.
29
+
30
+ ## Summary (read-only — no edits, no commit)
31
+ V: 1 P1, 1 P2, 1 P3. Tests green but the missing auth decorator gates the
32
+ commit (P0/P1 = fix before commit; P2/P3 advisory). I don't edit or commit —
33
+ hand this to /orc or fix manually, then re-run /orc-verify.
@@ -0,0 +1,325 @@
1
+ # orc-wiki
2
+
3
+ Builds and maintains a persistent, evidence-anchored project knowledge base (the
4
+ **wiki**) under project-root `wiki/`, plus a cross-repo **crosslink** subsystem.
5
+ Skill mechanics live in `SKILL.md`; freshness in `references/staleness.md`;
6
+ integrity in `references/integrity-check.md`; doc shape in `schemas/wiki-doc.md`;
7
+ crosslink mechanics in `references/crosslink.md`.
8
+
9
+ ## What the wiki is
10
+
11
+ `/orc-wiki` scans the codebase with Opus 4.8 high and writes `wiki/orc-feature-*`,
12
+ `wiki/orc-reference-*`, and `wiki/orc-architecture-overview.md`, an `INDEX.md`, and
13
+ the machine manifest `.claude/orc/wiki-meta.json`. Future ORC runs consult it —
14
+ precedence `code > fresh wiki > stale wiki (hints) > model priors`. Freshness is
15
+ computed on read (git commit distance), never stored. Expensive and often
16
+ multi-session — it always warns and gets consent before scanning.
17
+
18
+ ## Two halves: docs and registration
19
+
20
+ - **Docs** (`wiki/*.md`) — prose. Written by the skill's scan agents, because it
21
+ takes a model to read code and summarize it. This is the expensive half.
22
+ - **Registration** (`wiki/INDEX.md` + `.claude/orc/wiki-meta.json`) — the index
23
+ and manifest that make the docs *findable*. Every field is derived from the
24
+ docs' own headers, so the **`orc wiki sync` CLI** writes it: instant, free,
25
+ deterministic. No model is ever involved.
26
+
27
+ ```bash
28
+ orc wiki # registration state: registered / UNREGISTERED / corrupt / out of sync
29
+ orc wiki sync # (re)build INDEX.md + wiki-meta.json from the docs on disk
30
+ orc wiki sync --check # read-only; exit 1 if registration doesn't match the docs
31
+ ```
32
+
33
+ **If ORC or `orc crosslink` says it can't see your wiki, run `orc wiki sync` —
34
+ not a re-scan.** A wiki with docs but no manifest is UNREGISTERED, not missing:
35
+ the docs are fine, nothing indexed them. This is common and expected, because
36
+ `/orc-wiki` pauses every 5 areas by design, and a run stopped at a pause never
37
+ reached its assemble phase. Sync fixes it in a second, for free; re-scanning
38
+ buys you docs you already have. `/orc-wiki` also detects this on entry and
39
+ offers the repair without any scan.
40
+
41
+ ---
42
+
43
+ # Cross-repo crosslink — the complete guide
44
+
45
+ ## Why you'd want this
46
+
47
+ You have more than one repo, and they talk to each other:
48
+
49
+ - a **backend** that a **frontend dashboard** calls over HTTP, or
50
+ - a **backend** that calls **another service** over gRPC (maybe several).
51
+
52
+ Each repo's wiki only knows *its own* code. So when you ask ORC to build a new
53
+ gRPC call from `service-a` to `service-c`, it has no idea what `service-c`'s
54
+ `CreateInvoice` actually expects — it guesses the field names. **Crosslink fixes
55
+ that:** it lets `service-a`'s wiki read `service-c`'s wiki *at the exact boundary*
56
+ so the executor builds against the real contract.
57
+
58
+ **The one rule that makes it safe:** crosslink is **advisory and never blocking**,
59
+ and it only ever **reads** another repo's *wiki* — never its source code, and it
60
+ never writes anything in the other repo. If a linked repo is missing, un-scanned,
61
+ or out of date, you just get a warning and less context — your build never stops.
62
+
63
+ ## The mental model (30 seconds)
64
+
65
+ 1. Every repo **publishes** its own boundary (its endpoints / gRPC methods) as
66
+ small per-point "tag" files when you scan it — automatically.
67
+ 2. You **draw the graph** once with a CLI: "this repo calls that one over gRPC."
68
+ 3. ORC **connects the dots**: when a task touches a boundary, it hands the
69
+ executor the linked repo's real contract as a hint.
70
+
71
+ You do step 2 (coarse: which repos, which way). The machine does the rest.
72
+
73
+ ## Before you start
74
+
75
+ - ORC installed in **each** repo you want to link (`orc init`).
76
+ - The repos checked out as **siblings** (or anywhere reachable by a relative
77
+ path), e.g. `~/code/service-a`, `~/code/service-c`, `~/code/dashboard`.
78
+ - A terminal open in the **consuming** repo (the one that calls the others).
79
+
80
+ ---
81
+
82
+ ## Step 1 — give every repo a wiki
83
+
84
+ In **each** repo, run:
85
+
86
+ ```
87
+ /orc-wiki
88
+ ```
89
+
90
+ Besides the normal knowledge base, a scan also **publishes that repo's
91
+ boundary**: one small per-point tag file per endpoint / gRPC method under
92
+ `wiki/crosslink/<kind>/<slug>.md`, plus a `crosslink_provided` list in that
93
+ repo's `.claude/orc/wiki-meta.json`. This is **always on and happens per
94
+ scan-task**, in the same pass as the docs — whether or not anyone links to you
95
+ yet, so you never coordinate timing between teams. Every later scan/refresh
96
+ re-publishes in the same pass, and a refresh **never deletes** your tags
97
+ (a vanished endpoint is retired one-at-a-time, and only with your say-so).
98
+
99
+ > A repo with no outward boundary simply publishes nothing (each scan-task
100
+ > records that explicitly). That's fine.
101
+
102
+ ### Old wiki with no tags? Backfill — don't re-scan.
103
+
104
+ A wiki built **before v0.24.0** has docs but no `wiki/crosslink/` folder, because
105
+ publishing used to happen only at the end of a scan (so a run that stopped at one
106
+ of the 5-area pauses never reached it). The boundary is already described in your
107
+ docs' evidence-anchored `Contracts & shapes` rows, so recovering it needs no repo
108
+ scan:
109
+
110
+ ```
111
+ /orc-wiki crosslink
112
+ ```
113
+
114
+ This is the **CROSSLINK-ONLY** legacy-backfill branch. It reads those rows, opens
115
+ *only* the files they anchor to, writes the tag files, resolves what you consume,
116
+ and indexes it all with `orc wiki sync`. It never re-scans an area, never rewrites
117
+ a doc, and never touches coverage. **"No crosslink tags" is never a reason to pay
118
+ for a refresh.**
119
+
120
+ > On a wiki scanned at **v0.24.0 or later** you should never land here: tags
121
+ > publish on every scan/refresh automatically. If `orc wiki status` says
122
+ > `crosslink: UNPUBLISHED boundary` or `orc wiki sync --check` fails with
123
+ > "boundary documented but no crosslink tags", run the backfill above — that's
124
+ > the guard catching a gap, not a re-scan request.
125
+
126
+ > **Run it in the repo being CALLED.** Tags are published by the *provider*, so
127
+ > `no crosslink tags yet` about your backend is fixed in the **backend**, not in
128
+ > the frontend you're standing in. Running it in the caller publishes the
129
+ > caller's *own* surface — which for a typical frontend is nothing at all, since
130
+ > a pure consumer exposes no API and correctly publishes zero tags. If both repos
131
+ > call each other (e.g. backend webhooks into the frontend), run it in both.
132
+
133
+ ## Step 2 — draw the graph (in the consuming repo)
134
+
135
+ From the repo that *calls* the others, run:
136
+
137
+ ```
138
+ orc crosslink
139
+ ```
140
+
141
+ You'll get a tiny menu:
142
+
143
+ ```
144
+ ORC crosslink — self: service-a · 0 linked repo(s), 0 edge(s)
145
+ [1] add linked repo [2] list [3] remove [4] done
146
+ > 1
147
+ ```
148
+
149
+ Adding a link walks you through five short prompts. Here's a real one — linking
150
+ `service-a` to a gRPC dependency `service-c`:
151
+
152
+ ```
153
+ name for the linked repo (slug): service-c
154
+ repo path (repo ROOT, relative to this repo, e.g. ../service-z): ../service-c
155
+ ✓ wiki found · last_scan 11-07-2026 09:12:00 · FRESH · 8 tags
156
+
157
+ kinds this repo exposes/consumes (catalog):
158
+ 1) grpc 2) rest-endpoint 3) graphql
159
+ ... (18 in the catalog, plus type your own)
160
+ pick (numbers and/or names, comma-separated): 1
161
+
162
+ direction? [1] this repo CALLS them [2] they CALL this repo
163
+ > 1
164
+
165
+ linked to which repo?
166
+ 1) this repo (service-a)
167
+ > 1
168
+ ✓ added service-c · edge self ──grpc──▶ service-c (we consume → drift-checked)
169
+ ```
170
+
171
+ What each prompt means:
172
+
173
+ | Prompt | What to enter |
174
+ |--------|---------------|
175
+ | **name** | any short slug for the linked repo (`service-c`, `dashboard`) |
176
+ | **repo path** | the linked repo's **root folder**, relative to this repo (`../service-c`) — not its `wiki/` folder |
177
+ | **kinds** | how they connect — pick from the catalog (`grpc`, `rest-endpoint`, …) or type your own; "Other" is always allowed |
178
+ | **direction** | `[1]` = *you* call them (you'll get drift-checked against their contract); `[2]` = they call you |
179
+ | **linked to** | which repo is the other end — **option 1 is always this repo**; other repos you've added show up as 2, 3, … |
180
+
181
+ **The freshness line after you paste the path is the important safety check.** The
182
+ CLI reads the linked repo's `wiki-meta.json` right then and tells you:
183
+
184
+ - `✓ wiki found · … · FRESH · 8 tags` — great, fully linked.
185
+ - `⚠ no wiki-meta.json there — run orc-wiki in that repo first` — typo or you
186
+ skipped Step 1 there. The link is still saved (inert until they scan).
187
+ - `✗ path not found — saved as a PENDING edge` — wrong path; fix it later, it
188
+ resolves automatically when the path exists.
189
+
190
+ **Bulk-add (nice shortcut).** If the linked repo *already* declares a matching
191
+ link back at you, the CLI notices and offers to mirror it:
192
+
193
+ ```
194
+ service-c also declares service-c ──webhook──▶ service-a — mirror it into your config? (y/n) y
195
+ ✓ mirrored
196
+ ```
197
+
198
+ When you're done, pick `[4]`. On your first setup the CLI offers to add the
199
+ derived cache folder to `.gitignore` — say yes.
200
+
201
+ Everything you just did was written to **one file**: `.claude/orc-crosslink.config.yaml`.
202
+ The CLI never touches the linked repo.
203
+
204
+ ## Step 3 — let ORC connect the dots
205
+
206
+ Back in the consuming repo, run `/orc-wiki` once more (or your next scan/refresh).
207
+ Now that the graph exists, orc-wiki walks your call sites and:
208
+
209
+ - resolves the **exact** per-point contracts you depend on into
210
+ `.claude/orc/crosslink/needs.json` (you never hand-list endpoints), and
211
+ - mirrors snapshots of those contracts into `.claude/orc/crosslink/cache/`
212
+ (gitignored) so they're available even when the other repo isn't checked out.
213
+
214
+ That's it. You're set up.
215
+
216
+ ### One-shot alternative: `/orc-wiki crosslink compile`
217
+
218
+ Once the graph exists (Step 2), `/orc-wiki crosslink compile` does the whole
219
+ connect-the-dots pass in one command (v0.33.0): resolve/consume from the graph
220
+ (refresh `needs.json` + `cache/`) → generate the federation **ATLAS** (below) →
221
+ write the atlas into each linked repo → inject/update the CLAUDE.md pointer
222
+ block locally **and in each linked repo** (in-place block update, user content
223
+ byte-preserved; a peer with no CLAUDE.md gets a minimal file with only the
224
+ block). Every step is warn-only on failure, never a re-scan, never a doc
225
+ rewrite, and it ends with one summary line per repo touched. Hard
226
+ precondition: `.claude/orc-crosslink.config.yaml` with ≥1 edge — missing/empty
227
+ means it explains the `orc crosslink` CLI steps and stops.
228
+
229
+ ## The ATLAS — federation super-context (v0.33.0)
230
+
231
+ `wiki/crosslink/atlas.md` is ONE repo-agnostic document describing the whole
232
+ federation — every node, every edge (including transitive repos learned from
233
+ peer atlases), what each repo provides/consumes, and **peek hints** (which of a
234
+ repo's wiki docs answer which questions). The same document lives in EACH
235
+ linked repo; a header records `generated_from`, the `generated` timestamp, and
236
+ per-peer peek freshness. Freshness on read = `min(own wiki tier, oldest peek
237
+ age)` — computed on read, never stored; across copies, **newest wins** (trust
238
+ the newer `generated` stamp).
239
+
240
+ It is regenerated at the end of every scan/refresh (derived + cheap — never a
241
+ scan), and after writing the local copy the session **writes the same file into
242
+ each linked repo** — this is a sanctioned peer FILE write (exception #2 in
243
+ `references/crosslink.md`, next to orc-poly's handoff plan): never a commit,
244
+ never a push, never any other peer path, and any failure warns and continues.
245
+ `orc wiki sync` treats it as derived — never a registered doc, never
246
+ bulk-deleted by a refresh.
247
+
248
+ ## Step 4 — check it worked
249
+
250
+ ```
251
+ orc crosslink status
252
+ ```
253
+
254
+ ```
255
+ Crosslink status — self: service-a, 1 linked repo(s), 1 edge(s)
256
+
257
+ service-c:
258
+ ✓ wiki found · last_scan 11-07-2026 09:12:00 · FRESH · 8 tags
259
+
260
+ needs baseline: .claude/orc/crosslink/needs.json (per-point tags orc-wiki resolved)
261
+ ```
262
+
263
+ From now on, when you run `/orc`, `/orc-fast`, or `/orc-mini` and a task touches
264
+ that gRPC boundary, the executor gets `service-c`'s real `CreateInvoice` contract
265
+ handed to it as a hint — no more guessed field names.
266
+
267
+ ---
268
+
269
+ ## What lives where (after setup)
270
+
271
+ | File | Who writes it | Committed? | What it is |
272
+ |------|---------------|-----------|------------|
273
+ | `.claude/orc-crosslink.config.yaml` | `orc crosslink` CLI (you) | yes | the graph you drew |
274
+ | `wiki/crosslink/**` | `/orc-wiki` | yes | this repo's own published boundary tags |
275
+ | `.claude/orc/crosslink/needs.json` | `/orc-wiki` | yes | the exact contracts you depend on (drift baseline) |
276
+ | `.claude/orc/crosslink/cache/**` | `/orc-wiki` | **no** (gitignored) | mirrored snapshots of linked contracts |
277
+ | `wiki/crosslink/atlas.md` | `/orc-wiki` (derived; also written into each linked repo) | yes | the federation atlas — repo-agnostic super-context |
278
+
279
+ `orc update` never touches any of these.
280
+
281
+ ## Everyday use
282
+
283
+ - **Drift warnings.** If a contract you depend on changes or disappears, the next
284
+ `/orc-wiki` scan warns you *by exact tag* (`grpc:billing.v1.CreateInvoice
285
+ changed under you`). It's a **warning only** — nothing is ever blocked.
286
+ - **Keeping it current.** Re-run `/orc-wiki` (incremental refresh is cheap) in
287
+ the consuming repo to re-sync the cache and re-check drift.
288
+ - **Freshness you can trust.** A linked hint is only used as fresh when *both* the
289
+ provider's wiki is fresh *and* your snapshot is recent — the weaker of the two
290
+ wins, and it's labeled "cross-repo hints, not verified". Local code always wins
291
+ over any cross-repo hint.
292
+
293
+ ## Troubleshooting
294
+
295
+ | You see | What it means | Fix |
296
+ |---------|---------------|-----|
297
+ | `⚠ wiki found (N docs) but UNREGISTERED` | that repo's wiki is real and possibly complete — nothing ever indexed it (usually a scan stopped at a 5-area pause) | `orc wiki sync` in the linked repo — instant, free, **do not re-scan** |
298
+ | `⚠ wiki-meta.json there is unreadable` | the manifest is corrupt JSON | `orc wiki sync` in the linked repo rebuilds it from the docs |
299
+ | `⚠ no wiki there` | that repo genuinely has no docs | run `/orc-wiki` in the linked repo |
300
+ | `✓ inbound only (they call us)` | that repo only *consumes* your API — you read nothing from it | nothing to do; its tags/freshness are irrelevant on your side |
301
+ | `⚠ linked, but no edge yet` | you added the repo but never drew an edge | `orc crosslink` → add the edge; a node alone does nothing |
302
+ | `✗ path not found — PENDING` | the repo path is wrong or not checked out | fix the path with `orc crosslink` (remove + re-add), or check the repo out |
303
+ | `no crosslink tags yet (coarse hints only)` | that repo has wiki docs but never published its boundary — its scan stopped before the publish step, or its wiki predates crosslink | run **`/orc-wiki crosslink`** in that repo: publishes the tags from the docs it already has, no re-scan. (It also upgrades on that repo's next full scan — but don't pay for a scan just for this.) |
304
+ | `tier unknown (git unavailable there)` | linked folder isn't a git checkout | freshness falls back to the snapshot date — still works |
305
+ | executor didn't get a contract | the task didn't touch a linked boundary, or `needs.json` isn't built | run `/orc-wiki` in this repo to build the needs baseline |
306
+
307
+ ## The guarantees (why it's safe to adopt)
308
+
309
+ - **Advisory, never blocking** — every failure degrades to a warning; your build
310
+ never stops on a cross-repo issue.
311
+ - **Reads foreign *wiki* only** — never another repo's source. The whole
312
+ footprint is a few read-only wiki files + read-only git queries. The ONLY
313
+ writes into a peer are the two sanctioned file writes (the atlas +, via
314
+ `crosslink compile`, the CLAUDE.md pointer block) — file writes only, never
315
+ a commit or push, warn-only on failure.
316
+ - **No cross-team coordination** — publish and consume are independent; a repo on
317
+ an older wiki gives you coarse hints today and precise ones for free the day it
318
+ re-scans.
319
+
320
+ ## Git hygiene
321
+
322
+ Commit `.claude/orc-crosslink.config.yaml`, `.claude/orc/crosslink/needs.json`,
323
+ and `wiki/crosslink/**`. Keep `.claude/orc/crosslink/cache/**` out of git — it's
324
+ derived and regenerable. The `orc crosslink` CLI offers, once, to append the cache
325
+ path to `.gitignore`; it never edits `.gitignore` silently.