devrites 2.6.1 → 3.0.1

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 (1079) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/README.md +85 -50
  3. package/SECURITY.md +65 -39
  4. package/bin/devrites.mjs +135 -51
  5. package/docs/agents/domain.md +58 -0
  6. package/docs/agents/issue-driven-rites.md +11 -0
  7. package/docs/agents/issue-tracker.md +29 -0
  8. package/docs/agents/triage-labels.md +15 -0
  9. package/docs/architecture.md +60 -35
  10. package/docs/capability-surface-selection.md +18 -0
  11. package/docs/cli.md +53 -0
  12. package/docs/command-map.md +59 -22
  13. package/docs/engine/agent-contract.md +92 -0
  14. package/docs/engine/commands.md +323 -0
  15. package/docs/engine/state-schema.md +134 -0
  16. package/docs/engine/workspace-schema.md +150 -0
  17. package/docs/extensions.md +178 -0
  18. package/docs/flow.md +19 -16
  19. package/docs/harness-compliance.md +45 -0
  20. package/docs/orchestration.md +6 -4
  21. package/docs/porting-to-a-new-harness.md +27 -0
  22. package/docs/quick-reference.md +22 -0
  23. package/docs/release.md +3 -3
  24. package/docs/skills.md +42 -48
  25. package/docs/usage.md +21 -8
  26. package/engine/.gosec.json +5 -0
  27. package/engine/Makefile +64 -0
  28. package/engine/commands.go +195 -0
  29. package/engine/go.mod +5 -0
  30. package/engine/harnessmatrix.go +60 -0
  31. package/engine/harnessmatrix_test.go +59 -0
  32. package/engine/hookpolicy.go +114 -0
  33. package/engine/hookpolicy_test.go +64 -0
  34. package/engine/hooks.go +336 -0
  35. package/engine/hooks_events_test.go +106 -0
  36. package/engine/hooks_workspace.go +603 -0
  37. package/engine/internal/devritespaths/paths.go +76 -0
  38. package/engine/internal/doctor/doctor.go +178 -0
  39. package/engine/internal/doctor/doctor_test.go +150 -0
  40. package/engine/internal/fsutil/copy.go +101 -0
  41. package/engine/internal/fsutil/replace_other.go +7 -0
  42. package/engine/internal/fsutil/replace_windows.go +31 -0
  43. package/engine/internal/gate/gate.go +243 -0
  44. package/engine/internal/gate/gate_test.go +145 -0
  45. package/engine/internal/harness/compliance.go +102 -0
  46. package/engine/internal/harness/harness.go +304 -0
  47. package/engine/internal/harness/harness_test.go +104 -0
  48. package/engine/internal/hostpack/hostpack.go +259 -0
  49. package/engine/internal/hostpack/hostpack_test.go +111 -0
  50. package/engine/internal/hostpack/templates/alias_skill.md.tmpl +11 -0
  51. package/engine/internal/hostpack/templates/devrites_readme.md.tmpl +14 -0
  52. package/engine/internal/install/install.go +1560 -0
  53. package/engine/internal/install/install_test.go +564 -0
  54. package/engine/internal/iohooks/detach_other.go +11 -0
  55. package/engine/internal/iohooks/detach_unix.go +11 -0
  56. package/engine/internal/iohooks/iohooks.go +546 -0
  57. package/engine/internal/iohooks/iohooks_test.go +130 -0
  58. package/engine/internal/lib/adoption.go +634 -0
  59. package/engine/internal/lib/adoption_test.go +91 -0
  60. package/engine/internal/lib/analyze.go +224 -0
  61. package/engine/internal/lib/archivesearch.go +93 -0
  62. package/engine/internal/lib/archivesearch_test.go +110 -0
  63. package/engine/internal/lib/budget.go +172 -0
  64. package/engine/internal/lib/buildreadiness.go +88 -0
  65. package/engine/internal/lib/checkacceptance.go +176 -0
  66. package/engine/internal/lib/closeout.go +69 -0
  67. package/engine/internal/lib/command_other.go +7 -0
  68. package/engine/internal/lib/command_unix.go +24 -0
  69. package/engine/internal/lib/context.go +236 -0
  70. package/engine/internal/lib/conventions.go +449 -0
  71. package/engine/internal/lib/coverage.go +145 -0
  72. package/engine/internal/lib/doubtcoverage.go +88 -0
  73. package/engine/internal/lib/evidencefresh.go +85 -0
  74. package/engine/internal/lib/extensions.go +619 -0
  75. package/engine/internal/lib/extensions_test.go +305 -0
  76. package/engine/internal/lib/footprint.go +239 -0
  77. package/engine/internal/lib/jsonout.go +115 -0
  78. package/engine/internal/lib/jsonout_test.go +57 -0
  79. package/engine/internal/lib/lanes.go +106 -0
  80. package/engine/internal/lib/learnings.go +391 -0
  81. package/engine/internal/lib/learnings_inject_test.go +77 -0
  82. package/engine/internal/lib/learnings_remediation_test.go +24 -0
  83. package/engine/internal/lib/ledger.go +298 -0
  84. package/engine/internal/lib/ledger_test.go +162 -0
  85. package/engine/internal/lib/mutationgate.go +85 -0
  86. package/engine/internal/lib/overrides.go +164 -0
  87. package/engine/internal/lib/overrides_test.go +112 -0
  88. package/engine/internal/lib/packageexistence.go +175 -0
  89. package/engine/internal/lib/preamble.go +159 -0
  90. package/engine/internal/lib/progress.go +168 -0
  91. package/engine/internal/lib/reconcile.go +173 -0
  92. package/engine/internal/lib/reconcile_test.go +197 -0
  93. package/engine/internal/lib/resolve.go +376 -0
  94. package/engine/internal/lib/resolve_remediation_test.go +49 -0
  95. package/engine/internal/lib/reviewers.go +143 -0
  96. package/engine/internal/lib/reviewers_test.go +45 -0
  97. package/engine/internal/lib/reviewerstats.go +199 -0
  98. package/engine/internal/lib/reviewerstats_test.go +104 -0
  99. package/engine/internal/lib/reviewintegrity.go +143 -0
  100. package/engine/internal/lib/reviewintegrity_test.go +103 -0
  101. package/engine/internal/lib/runbook.go +292 -0
  102. package/engine/internal/lib/runbook_context_test.go +119 -0
  103. package/engine/internal/lib/session.go +328 -0
  104. package/engine/internal/lib/session_test.go +110 -0
  105. package/engine/internal/lib/specparse.go +125 -0
  106. package/engine/internal/lib/specskeleton.go +79 -0
  107. package/engine/internal/lib/specvalidate.go +391 -0
  108. package/engine/internal/lib/specvalidate_test.go +185 -0
  109. package/engine/internal/lib/stuck.go +206 -0
  110. package/engine/internal/lib/templates/conventions_drift.tmpl +6 -0
  111. package/engine/internal/lib/templates/conventions_ledger_header.md +6 -0
  112. package/engine/internal/lib/templates/conventions_orient_header.txt +1 -0
  113. package/engine/internal/lib/testintegrity.go +203 -0
  114. package/engine/internal/lib/testintegrity_test.go +72 -0
  115. package/engine/internal/lib/tickafk.go +99 -0
  116. package/engine/internal/lib/util.go +68 -0
  117. package/engine/internal/migrate/migrate.go +213 -0
  118. package/engine/internal/migrate/migrate_test.go +105 -0
  119. package/engine/internal/orient/firstrun.go +50 -0
  120. package/engine/internal/orient/firstrun_test.go +72 -0
  121. package/engine/internal/orient/orient.go +69 -0
  122. package/engine/internal/orient/orient_test.go +25 -0
  123. package/engine/internal/profile/profile.go +270 -0
  124. package/engine/internal/state/concurrency_test.go +184 -0
  125. package/engine/internal/state/feature.go +309 -0
  126. package/engine/internal/state/lock_other.go +24 -0
  127. package/engine/internal/state/lock_unix.go +35 -0
  128. package/engine/internal/state/lock_windows.go +56 -0
  129. package/engine/internal/state/schema.go +102 -0
  130. package/engine/internal/state/snapshot.go +384 -0
  131. package/engine/internal/state/state_test.go +260 -0
  132. package/engine/internal/state/status.go +90 -0
  133. package/engine/internal/state/write.go +59 -0
  134. package/engine/internal/testutil/testutil.go +66 -0
  135. package/engine/internal/version/version.go +57 -0
  136. package/engine/internal/workflow/commands.go +64 -0
  137. package/engine/main.go +530 -0
  138. package/engine/profile_test.go +76 -0
  139. package/engine/subagent_orient_context.txt +6 -0
  140. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/decisions.md +4 -0
  141. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/feature.md +8 -0
  142. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/plan.md +5 -0
  143. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/spec.md +6 -0
  144. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/status.md +4 -0
  145. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/tasks.md +1 -0
  146. package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/feature.md +8 -0
  147. package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/spec.md +6 -0
  148. package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +1 -0
  149. package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +1 -0
  150. package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +1 -0
  151. package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +1 -0
  152. package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +1 -0
  153. package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +2 -0
  154. package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +1 -0
  155. package/engine/testdata/golden/TestParityAnalyze/noactive.golden +1 -0
  156. package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +15 -0
  157. package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +16 -0
  158. package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +1 -0
  159. package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +15 -0
  160. package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +17 -0
  161. package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +16 -0
  162. package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +16 -0
  163. package/engine/testdata/golden/TestParityBudget/default-active.golden +4 -0
  164. package/engine/testdata/golden/TestParityBudget/extra-md.golden +5 -0
  165. package/engine/testdata/golden/TestParityBudget/no-active.golden +1 -0
  166. package/engine/testdata/golden/TestParityBudget/no-feature.golden +1 -0
  167. package/engine/testdata/golden/TestParityBudget/over-advisory.golden +6 -0
  168. package/engine/testdata/golden/TestParityBudget/over-strict.golden +6 -0
  169. package/engine/testdata/golden/TestParityBudget/within.golden +6 -0
  170. package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +2 -0
  171. package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +1 -0
  172. package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +1 -0
  173. package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +1 -0
  174. package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +2 -0
  175. package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +1 -0
  176. package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +1 -0
  177. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +2 -0
  178. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +2 -0
  179. package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +1 -0
  180. package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +1 -0
  181. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +1 -0
  182. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +2 -0
  183. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +1 -0
  184. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +1 -0
  185. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +2 -0
  186. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +1 -0
  187. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +1 -0
  188. package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +1 -0
  189. package/engine/testdata/golden/TestParityCheckAcceptance.golden +1 -0
  190. package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +2 -0
  191. package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +2 -0
  192. package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +1 -0
  193. package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +1 -0
  194. package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +1 -0
  195. package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +7 -0
  196. package/engine/testdata/golden/TestParityCoverage/arg=full.golden +10 -0
  197. package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +1 -0
  198. package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +1 -0
  199. package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +9 -0
  200. package/engine/testdata/golden/TestParityCoverage.golden +1 -0
  201. package/engine/testdata/golden/TestParityCursor/bare.golden +3 -0
  202. package/engine/testdata/golden/TestParityCursor/full-afk.golden +6 -0
  203. package/engine/testdata/golden/TestParityCursor/full-hitl.golden +5 -0
  204. package/engine/testdata/golden/TestParityCursor/no-active.golden +1 -0
  205. package/engine/testdata/golden/TestParityCursor/red.golden +5 -0
  206. package/engine/testdata/golden/TestParityCursor/zerogates.golden +5 -0
  207. package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +2 -0
  208. package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +2 -0
  209. package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +3 -0
  210. package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +3 -0
  211. package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +3 -0
  212. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +4 -0
  213. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +2 -0
  214. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +2 -0
  215. package/engine/testdata/golden/TestParityDoubtCoverage.golden +1 -0
  216. package/engine/testdata/golden/TestParityLearnings/add.golden +2 -0
  217. package/engine/testdata/golden/TestParityLearnings/list.golden +5 -0
  218. package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +2 -0
  219. package/engine/testdata/golden/TestParityLearnings/mine.golden +5 -0
  220. package/engine/testdata/golden/TestParityLearnings/nudge.golden +2 -0
  221. package/engine/testdata/golden/TestParityLearnings/unknown.golden +1 -0
  222. package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +3 -0
  223. package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +3 -0
  224. package/engine/testdata/golden/TestParityMutationGate/ghost.golden +1 -0
  225. package/engine/testdata/golden/TestParityOrientSilentPath.golden +1 -0
  226. package/engine/testdata/golden/TestParityPackageExistence/declared.golden +2 -0
  227. package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +2 -0
  228. package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +1 -0
  229. package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +1 -0
  230. package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +1 -0
  231. package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +1 -0
  232. package/engine/testdata/golden/TestParityPreamble/afk/a.golden +14 -0
  233. package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +18 -0
  234. package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +10 -0
  235. package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +18 -0
  236. package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +2 -0
  237. package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +11 -0
  238. package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +13 -0
  239. package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +4 -0
  240. package/engine/testdata/golden/TestParityProgress/arg=done.golden +3 -0
  241. package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +1 -0
  242. package/engine/testdata/golden/TestParityProgress/arg=mid.golden +4 -0
  243. package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +3 -0
  244. package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +3 -0
  245. package/engine/testdata/golden/TestParityProgress/arg=plan.golden +4 -0
  246. package/engine/testdata/golden/TestParityProgress/arg=seal.golden +3 -0
  247. package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +1 -0
  248. package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +2 -0
  249. package/engine/testdata/golden/TestParityReconcile/check-clean.golden +2 -0
  250. package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +1 -0
  251. package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +2 -0
  252. package/engine/testdata/golden/TestParityReconcile/check-no-claimed.golden +1 -0
  253. package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +2 -0
  254. package/engine/testdata/golden/TestParityReconcile/check-violation.golden +1 -0
  255. package/engine/testdata/golden/TestParityReconcile/inline-fallback/snapshot.golden +2 -0
  256. package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
  257. package/engine/testdata/golden/TestParityReconcile/not-git.golden +1 -0
  258. package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +2 -0
  259. package/engine/testdata/golden/TestParityReconcile/snapshot.golden +2 -0
  260. package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +2 -0
  261. package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +1 -0
  262. package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +1 -0
  263. package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +1 -0
  264. package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +9 -0
  265. package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +6 -0
  266. package/engine/testdata/golden/TestParityResolve/answer.golden +4 -0
  267. package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +9 -0
  268. package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +9 -0
  269. package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +2 -0
  270. package/engine/testdata/golden/TestParityResolve/batch.golden +3 -0
  271. package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +9 -0
  272. package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +8 -0
  273. package/engine/testdata/golden/TestParityResolve/drop.golden +4 -0
  274. package/engine/testdata/golden/TestParityResolve/missing-answer.golden +1 -0
  275. package/engine/testdata/golden/TestParityResolve/next-qid.golden +2 -0
  276. package/engine/testdata/golden/TestParityResolve/no-workspace.golden +1 -0
  277. package/engine/testdata/golden/TestParityResolve/not-found.golden +1 -0
  278. package/engine/testdata/golden/TestParityResolve/not-open.golden +1 -0
  279. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +2 -0
  280. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +1 -0
  281. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +1 -0
  282. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +2 -0
  283. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +2 -0
  284. package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +1 -0
  285. package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +1 -0
  286. package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +1 -0
  287. package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +1 -0
  288. package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +1 -0
  289. package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +1 -0
  290. package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +2 -0
  291. package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +1 -0
  292. package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +1 -0
  293. package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +1 -0
  294. package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +1 -0
  295. package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +2 -0
  296. package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +2 -0
  297. package/engine/testdata/golden/TestParitySpecValidate.golden +1 -0
  298. package/engine/testdata/golden/TestParityStatusline/full-afk.golden +2 -0
  299. package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +2 -0
  300. package/engine/testdata/golden/TestParityStatusline/no-active.golden +1 -0
  301. package/engine/testdata/golden/TestParityStatusline/nophase.golden +2 -0
  302. package/engine/testdata/golden/TestParityStatusline/red.golden +2 -0
  303. package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +1 -0
  304. package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +2 -0
  305. package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +2 -0
  306. package/engine/testdata/golden/TestParityStuckCheck/few.golden +2 -0
  307. package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +2 -0
  308. package/engine/testdata/golden/TestParityStuckCheck/identical.golden +2 -0
  309. package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +1 -0
  310. package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +1 -0
  311. package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +2 -0
  312. package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +2 -0
  313. package/engine/testdata/golden/TestParityStuckCheck/varied.golden +2 -0
  314. package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +2 -0
  315. package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +2 -0
  316. package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +2 -0
  317. package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +2 -0
  318. package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +2 -0
  319. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +2 -0
  320. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +2 -0
  321. package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +1 -0
  322. package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +1 -0
  323. package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +1 -0
  324. package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +2 -0
  325. package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +1 -0
  326. package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +1 -0
  327. package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +1 -0
  328. package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +1 -0
  329. package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +1 -0
  330. package/engine/testdata/golden/TestParityTickAfk/budget1.golden +2 -0
  331. package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +5 -0
  332. package/engine/testdata/golden/TestParityTickAfk/budget3.golden +2 -0
  333. package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +1 -0
  334. package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +2 -0
  335. package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +3 -0
  336. package/engine/testdata/golden/TestParityTickAfk/missingField.golden +2 -0
  337. package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +1 -0
  338. package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +1 -0
  339. package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +1 -0
  340. package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +1 -0
  341. package/engine/testdata/golden/TestParityTickAfk/none.golden +2 -0
  342. package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +1 -0
  343. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +1 -0
  344. package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +1 -0
  345. package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +1 -0
  346. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +2 -0
  347. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +1 -0
  348. package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +2 -0
  349. package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +2 -0
  350. package/engine/testdata/golden/TestStatusLiveWorkspace.golden +10 -0
  351. package/engine/testdata/golden/TestStuckLogHashParity.golden +1 -0
  352. package/engine/testdata/golden/status/auth-tokens.txt +9 -0
  353. package/engine/testdata/golden/status/search-ranking.txt +9 -0
  354. package/engine/tests/adr_0003_gate_exit_code_test.go +32 -0
  355. package/engine/tests/adr_0004_required_by_phase_test.go +62 -0
  356. package/engine/tests/adr_0006_clock_seam_test.go +36 -0
  357. package/engine/tests/budget_test.go +77 -0
  358. package/engine/tests/canonical_ac_ids_test.go +44 -0
  359. package/engine/tests/cli_test.go +209 -0
  360. package/engine/tests/concurrency_cli_test.go +125 -0
  361. package/engine/tests/conventions_test.go +106 -0
  362. package/engine/tests/doctor_cli_test.go +62 -0
  363. package/engine/tests/gate_test.go +235 -0
  364. package/engine/tests/hook_test.go +390 -0
  365. package/engine/tests/hooks_io_test.go +218 -0
  366. package/engine/tests/json_contract_test.go +99 -0
  367. package/engine/tests/lib_parity_test.go +942 -0
  368. package/engine/tests/meta_test.go +67 -0
  369. package/engine/tests/migrate_cli_test.go +193 -0
  370. package/engine/tests/parity_analyze_test.go +55 -0
  371. package/engine/tests/parity_buildreadiness_test.go +42 -0
  372. package/engine/tests/parity_closeout_test.go +102 -0
  373. package/engine/tests/parity_githelpers_test.go +41 -0
  374. package/engine/tests/parity_learnings_test.go +90 -0
  375. package/engine/tests/parity_mutationgate_test.go +36 -0
  376. package/engine/tests/parity_packageexistence_test.go +64 -0
  377. package/engine/tests/parity_reconcile_test.go +88 -0
  378. package/engine/tests/parity_resolve_test.go +144 -0
  379. package/engine/tests/parity_test.go +380 -0
  380. package/engine/tests/parity_testintegrity_test.go +65 -0
  381. package/engine/tests/parity_tickafk_test.go +83 -0
  382. package/engine/validatepack.go +192 -0
  383. package/engine/validatepack_test.go +79 -0
  384. package/engine/validatepackskills.go +181 -0
  385. package/engine/validatepackskills_test.go +171 -0
  386. package/install.sh +67 -912
  387. package/pack/.claude/agents/devrites-code-reviewer.md +20 -3
  388. package/pack/.claude/agents/devrites-devex-reviewer.md +13 -3
  389. package/pack/.claude/agents/devrites-doubt-reviewer.md +16 -3
  390. package/pack/.claude/agents/devrites-forge-judge.md +14 -4
  391. package/pack/.claude/agents/devrites-frontend-reviewer.md +27 -3
  392. package/pack/.claude/agents/devrites-performance-reviewer.md +18 -2
  393. package/pack/.claude/agents/devrites-plan-reviewer.md +13 -3
  394. package/pack/.claude/agents/devrites-retrospector.md +12 -7
  395. package/pack/.claude/agents/devrites-security-auditor.md +20 -4
  396. package/pack/.claude/agents/devrites-simplifier-reviewer.md +17 -2
  397. package/pack/.claude/agents/devrites-slice-wright.md +32 -16
  398. package/pack/.claude/agents/devrites-spec-reviewer.md +17 -2
  399. package/pack/.claude/agents/devrites-strategy-reviewer.md +12 -2
  400. package/pack/.claude/agents/devrites-test-analyst.md +20 -3
  401. package/pack/.claude/settings.json +58 -8
  402. package/pack/.claude/skills/devrites-api-interface/SKILL.md +22 -5
  403. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  404. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +26 -53
  405. package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  406. package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  407. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -6
  408. package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -0
  409. package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +2 -3
  410. package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
  411. package/pack/.claude/skills/devrites-doubt/SKILL.md +10 -3
  412. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +16 -13
  413. package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +15 -3
  414. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +19 -0
  415. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  416. package/pack/.claude/skills/devrites-interview/SKILL.md +30 -7
  417. package/pack/.claude/skills/devrites-lib/SKILL.md +35 -36
  418. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +16 -0
  419. package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +43 -0
  420. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +104 -20
  421. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +111 -0
  422. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/README.md +14 -6
  423. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/afk-hitl.md +10 -18
  424. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/agents.md +81 -16
  425. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/anti-patterns.md +3 -4
  426. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  427. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  428. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
  429. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/context-hygiene.md +17 -0
  430. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/core.md +9 -18
  431. package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  432. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/deprecation.md +21 -0
  433. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/developer-experience.md +3 -3
  434. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  435. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/documentation.md +9 -1
  436. package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  437. package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  438. package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  439. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/observability.md +13 -0
  440. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/performance.md +1 -1
  441. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/principles.md +3 -3
  442. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/prose-style.md +18 -2
  443. package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  444. package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  445. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  446. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/security.md +45 -4
  447. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  448. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  449. package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  450. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +162 -0
  451. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/tooling.md +29 -2
  452. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  453. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +40 -76
  454. package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +19 -5
  455. package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +3 -6
  456. package/pack/.claude/skills/devrites-source-driven/SKILL.md +17 -1
  457. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +20 -7
  458. package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +25 -10
  459. package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +2 -2
  460. package/pack/.claude/skills/rite/SKILL.md +67 -42
  461. package/pack/.claude/skills/rite/reference/menu.md +4 -1
  462. package/pack/.claude/skills/rite-adopt/SKILL.md +31 -22
  463. package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -9
  464. package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  465. package/pack/.claude/skills/rite-autocomplete/SKILL.md +25 -25
  466. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -2
  467. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -1
  468. package/pack/.claude/skills/rite-build/SKILL.md +24 -256
  469. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -3
  470. package/pack/.claude/skills/rite-build/reference/anti-patterns.md +1 -1
  471. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  472. package/pack/.claude/skills/rite-build/reference/checkpoint.md +44 -0
  473. package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -7
  474. package/pack/.claude/skills/rite-build/reference/forge.md +17 -7
  475. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
  476. package/pack/.claude/skills/rite-build/reference/output.md +41 -0
  477. package/pack/.claude/skills/rite-build/reference/phase-contract.md +258 -0
  478. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -10
  479. package/pack/.claude/skills/rite-converge/SKILL.md +131 -0
  480. package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +35 -0
  481. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
  482. package/pack/.claude/skills/rite-customize/SKILL.md +67 -0
  483. package/pack/.claude/skills/rite-define/SKILL.md +82 -93
  484. package/pack/.claude/skills/rite-define/reference/anti-patterns.md +2 -1
  485. package/pack/.claude/skills/rite-define/reference/gates.md +3 -3
  486. package/pack/.claude/skills/rite-define/reference/plan-template.md +35 -6
  487. package/pack/.claude/skills/rite-doctor/SKILL.md +41 -16
  488. package/pack/.claude/skills/rite-dogfood/SKILL.md +49 -0
  489. package/pack/.claude/skills/rite-explain/SKILL.md +148 -0
  490. package/pack/.claude/skills/rite-explain/reference/intake.md +79 -0
  491. package/pack/.claude/skills/rite-frame/SKILL.md +14 -15
  492. package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
  493. package/pack/.claude/skills/rite-handoff/SKILL.md +19 -17
  494. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -6
  495. package/pack/.claude/skills/rite-learn/SKILL.md +46 -24
  496. package/pack/.claude/skills/rite-plan/SKILL.md +35 -26
  497. package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -1
  498. package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +3 -3
  499. package/pack/.claude/skills/rite-plan/reference/slicing.md +20 -7
  500. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +15 -16
  501. package/pack/.claude/skills/rite-polish/SKILL.md +18 -23
  502. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +31 -2
  503. package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +4 -1
  504. package/pack/.claude/skills/rite-polish/reference/code.md +16 -5
  505. package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +5 -32
  506. package/pack/.claude/skills/rite-pov/SKILL.md +46 -0
  507. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +49 -0
  508. package/pack/.claude/skills/rite-pressure-test/SKILL.md +40 -10
  509. package/pack/.claude/skills/rite-prototype/SKILL.md +23 -2
  510. package/pack/.claude/skills/rite-prove/SKILL.md +41 -96
  511. package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
  512. package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  513. package/pack/.claude/skills/rite-prove/reference/browser-proof.md +36 -13
  514. package/pack/.claude/skills/rite-quick/SKILL.md +19 -12
  515. package/pack/.claude/skills/rite-resolve/SKILL.md +21 -25
  516. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
  517. package/pack/.claude/skills/rite-review/SKILL.md +43 -45
  518. package/pack/.claude/skills/rite-review/reference/anti-patterns.md +1 -1
  519. package/pack/.claude/skills/rite-review/reference/performance-checklist.md +1 -1
  520. package/pack/.claude/skills/rite-review/reference/performance-review.md +4 -22
  521. package/pack/.claude/skills/rite-review/reference/security-review.md +2 -2
  522. package/pack/.claude/skills/rite-seal/SKILL.md +40 -174
  523. package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  524. package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +6 -9
  525. package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -14
  526. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +3 -3
  527. package/pack/.claude/skills/rite-seal/reference/output.md +7 -0
  528. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +211 -0
  529. package/pack/.claude/skills/rite-seal/reference/seal-template.md +1 -1
  530. package/pack/.claude/skills/rite-ship/SKILL.md +45 -75
  531. package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +9 -0
  532. package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +1 -1
  533. package/pack/.claude/skills/rite-ship/reference/close-out.md +12 -1
  534. package/pack/.claude/skills/rite-ship/reference/design-memory.md +2 -2
  535. package/pack/.claude/skills/rite-ship/reference/git-ship.md +32 -1
  536. package/pack/.claude/skills/rite-ship/reference/ledger.md +56 -0
  537. package/pack/.claude/skills/rite-ship/reference/rollout.md +43 -0
  538. package/pack/.claude/skills/rite-spec/SKILL.md +110 -60
  539. package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
  540. package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +4 -1
  541. package/pack/.claude/skills/rite-spec/reference/investigation.md +34 -14
  542. package/pack/.claude/skills/rite-spec/reference/question-protocol.md +7 -37
  543. package/pack/.claude/skills/rite-spec/reference/references-intake.md +23 -18
  544. package/pack/.claude/skills/rite-spec/reference/spec-template.md +94 -118
  545. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +128 -139
  546. package/pack/.claude/skills/rite-status/SKILL.md +26 -22
  547. package/pack/.claude/skills/rite-temper/SKILL.md +34 -27
  548. package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +1 -1
  549. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
  550. package/pack/.claude/skills/rite-temper/reference/significance.md +1 -1
  551. package/pack/.claude/skills/rite-vet/SKILL.md +64 -71
  552. package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -1
  553. package/pack/.claude/skills/rite-vet/reference/cross-model.md +7 -5
  554. package/pack/.claude/skills/rite-vet/reference/depth.md +1 -1
  555. package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -3
  556. package/pack/.claude/skills/rite-zoom-out/SKILL.md +16 -17
  557. package/pack/generated/README.md +10 -0
  558. package/pack/generated/claude/agents/devrites-code-reviewer.md +103 -0
  559. package/pack/generated/claude/agents/devrites-devex-reviewer.md +104 -0
  560. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +68 -0
  561. package/pack/generated/claude/agents/devrites-forge-judge.md +102 -0
  562. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +84 -0
  563. package/pack/generated/claude/agents/devrites-performance-reviewer.md +111 -0
  564. package/pack/generated/claude/agents/devrites-plan-reviewer.md +89 -0
  565. package/pack/generated/claude/agents/devrites-retrospector.md +96 -0
  566. package/pack/generated/claude/agents/devrites-security-auditor.md +85 -0
  567. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +90 -0
  568. package/pack/generated/claude/agents/devrites-slice-wright.md +210 -0
  569. package/pack/generated/claude/agents/devrites-spec-reviewer.md +87 -0
  570. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +72 -0
  571. package/pack/generated/claude/agents/devrites-test-analyst.md +64 -0
  572. package/pack/generated/claude/settings.json +103 -0
  573. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +61 -0
  574. package/pack/generated/claude/skills/devrites-audit/SKILL.md +73 -0
  575. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +76 -0
  576. package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  577. package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  578. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +65 -0
  579. package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  580. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
  581. package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  582. package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  583. package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  584. package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
  585. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +82 -0
  586. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +99 -0
  587. package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +71 -0
  588. package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  589. package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
  590. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
  591. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
  592. package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
  593. package/pack/generated/claude/skills/devrites-interview/SKILL.md +104 -0
  594. package/pack/generated/claude/skills/devrites-lib/SKILL.md +82 -0
  595. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +16 -0
  596. package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +43 -0
  597. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
  598. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +111 -0
  599. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +61 -0
  600. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
  601. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +192 -0
  602. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
  603. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  604. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  605. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
  606. package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +55 -0
  607. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
  608. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +119 -0
  609. package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  610. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +71 -0
  611. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  612. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  613. package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +35 -0
  614. package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  615. package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  616. package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +33 -0
  617. package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  618. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +38 -0
  619. package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +73 -0
  620. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +48 -0
  621. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +36 -0
  622. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +158 -0
  623. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +117 -0
  624. package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  625. package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  626. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  627. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +135 -0
  628. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  629. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  630. package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  631. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +162 -0
  632. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +99 -0
  633. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  634. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +69 -0
  635. package/pack/generated/claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
  636. package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +102 -0
  637. package/pack/generated/claude/skills/devrites-prose-craft/reference/structures.md +134 -0
  638. package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +51 -0
  639. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +52 -0
  640. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +134 -0
  641. package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  642. package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  643. package/pack/generated/claude/skills/rite/SKILL.md +142 -0
  644. package/pack/generated/claude/skills/rite/reference/menu.md +42 -0
  645. package/pack/generated/claude/skills/rite-adopt/SKILL.md +104 -0
  646. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +55 -0
  647. package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
  648. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -0
  649. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
  650. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +54 -0
  651. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
  652. package/pack/generated/claude/skills/rite-build/SKILL.md +84 -0
  653. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +145 -0
  654. package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +37 -0
  655. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
  656. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +44 -0
  657. package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +35 -0
  658. package/pack/generated/claude/skills/rite-build/reference/forge.md +181 -0
  659. package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +39 -0
  660. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +42 -0
  661. package/pack/generated/claude/skills/rite-build/reference/output.md +41 -0
  662. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +258 -0
  663. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
  664. package/pack/generated/claude/skills/rite-build/reference/tdd.md +26 -0
  665. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +140 -0
  666. package/pack/generated/claude/skills/rite-converge/SKILL.md +131 -0
  667. package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +35 -0
  668. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
  669. package/pack/generated/claude/skills/rite-customize/SKILL.md +67 -0
  670. package/pack/generated/claude/skills/rite-define/SKILL.md +159 -0
  671. package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +26 -0
  672. package/pack/generated/claude/skills/rite-define/reference/gates.md +152 -0
  673. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +94 -0
  674. package/pack/generated/claude/skills/rite-doctor/SKILL.md +76 -0
  675. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +49 -0
  676. package/pack/generated/claude/skills/rite-explain/SKILL.md +148 -0
  677. package/pack/generated/claude/skills/rite-explain/reference/intake.md +79 -0
  678. package/pack/generated/claude/skills/rite-frame/SKILL.md +120 -0
  679. package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +68 -0
  680. package/pack/generated/claude/skills/rite-handoff/SKILL.md +97 -0
  681. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +44 -0
  682. package/pack/generated/claude/skills/rite-learn/SKILL.md +117 -0
  683. package/pack/generated/claude/skills/rite-plan/SKILL.md +95 -0
  684. package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +24 -0
  685. package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +33 -0
  686. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
  687. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +65 -0
  688. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +33 -0
  689. package/pack/generated/claude/skills/rite-polish/SKILL.md +87 -0
  690. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +206 -0
  691. package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +30 -0
  692. package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +80 -0
  693. package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
  694. package/pack/generated/claude/skills/rite-polish/reference/code.md +100 -0
  695. package/pack/generated/claude/skills/rite-polish/reference/design-system-discovery.md +8 -0
  696. package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +109 -0
  697. package/pack/generated/claude/skills/rite-polish/reference/ui.md +136 -0
  698. package/pack/generated/claude/skills/rite-pov/SKILL.md +46 -0
  699. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +49 -0
  700. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +74 -0
  701. package/pack/generated/claude/skills/rite-prototype/SKILL.md +110 -0
  702. package/pack/generated/claude/skills/rite-prove/SKILL.md +104 -0
  703. package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
  704. package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +25 -0
  705. package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +49 -0
  706. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +25 -0
  707. package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +28 -0
  708. package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
  709. package/pack/generated/claude/skills/rite-quick/SKILL.md +93 -0
  710. package/pack/generated/claude/skills/rite-resolve/SKILL.md +109 -0
  711. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +115 -0
  712. package/pack/generated/claude/skills/rite-review/SKILL.md +171 -0
  713. package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +32 -0
  714. package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +92 -0
  715. package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
  716. package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +60 -0
  717. package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
  718. package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +80 -0
  719. package/pack/generated/claude/skills/rite-review/reference/performance-review.md +14 -0
  720. package/pack/generated/claude/skills/rite-review/reference/security-review.md +37 -0
  721. package/pack/generated/claude/skills/rite-seal/SKILL.md +101 -0
  722. package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +29 -0
  723. package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +60 -0
  724. package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +64 -0
  725. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +53 -0
  726. package/pack/generated/claude/skills/rite-seal/reference/output.md +7 -0
  727. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +211 -0
  728. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
  729. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +36 -0
  730. package/pack/generated/claude/skills/rite-ship/SKILL.md +111 -0
  731. package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +9 -0
  732. package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +25 -0
  733. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +42 -0
  734. package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +120 -0
  735. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +73 -0
  736. package/pack/generated/claude/skills/rite-ship/reference/ledger.md +56 -0
  737. package/pack/generated/claude/skills/rite-ship/reference/rollout.md +43 -0
  738. package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +33 -0
  739. package/pack/generated/claude/skills/rite-spec/SKILL.md +219 -0
  740. package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  741. package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
  742. package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +28 -0
  743. package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +56 -0
  744. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +84 -0
  745. package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +31 -0
  746. package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +62 -0
  747. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +73 -0
  748. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +110 -0
  749. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +156 -0
  750. package/pack/generated/claude/skills/rite-status/SKILL.md +107 -0
  751. package/pack/generated/claude/skills/rite-temper/SKILL.md +126 -0
  752. package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +29 -0
  753. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +65 -0
  754. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +53 -0
  755. package/pack/generated/claude/skills/rite-temper/reference/significance.md +46 -0
  756. package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +90 -0
  757. package/pack/generated/claude/skills/rite-vet/SKILL.md +180 -0
  758. package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +29 -0
  759. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +135 -0
  760. package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +43 -0
  761. package/pack/generated/claude/skills/rite-vet/reference/depth.md +53 -0
  762. package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +48 -0
  763. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +167 -0
  764. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +75 -0
  765. package/pack/generated/codex/AGENTS.md +23 -0
  766. package/pack/generated/codex/agents/devrites-code-reviewer.toml +101 -0
  767. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +102 -0
  768. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +66 -0
  769. package/pack/generated/codex/agents/devrites-forge-judge.toml +100 -0
  770. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +80 -0
  771. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +109 -0
  772. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +93 -0
  773. package/pack/generated/codex/agents/devrites-retrospector.toml +94 -0
  774. package/pack/generated/codex/agents/devrites-security-auditor.toml +83 -0
  775. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +88 -0
  776. package/pack/generated/codex/agents/devrites-slice-wright.toml +207 -0
  777. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +85 -0
  778. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +76 -0
  779. package/pack/generated/codex/agents/devrites-test-analyst.toml +62 -0
  780. package/pack/generated/codex/hooks.json +151 -0
  781. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +73 -0
  782. package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +2 -0
  783. package/pack/generated/codex/skills/devrites-audit/SKILL.md +85 -0
  784. package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +2 -0
  785. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +88 -0
  786. package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +2 -0
  787. package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  788. package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  789. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +77 -0
  790. package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +2 -0
  791. package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  792. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
  793. package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  794. package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  795. package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  796. package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +25 -0
  797. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +94 -0
  798. package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +2 -0
  799. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +111 -0
  800. package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +2 -0
  801. package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +71 -0
  802. package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  803. package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
  804. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
  805. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
  806. package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +60 -0
  807. package/pack/generated/codex/skills/devrites-interview/SKILL.md +116 -0
  808. package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +2 -0
  809. package/pack/generated/codex/skills/devrites-lib/SKILL.md +94 -0
  810. package/pack/generated/codex/skills/devrites-lib/agents/openai.yaml +2 -0
  811. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +16 -0
  812. package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +43 -0
  813. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
  814. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +111 -0
  815. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +61 -0
  816. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
  817. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +192 -0
  818. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
  819. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  820. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  821. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +141 -0
  822. package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +55 -0
  823. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
  824. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +119 -0
  825. package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  826. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +71 -0
  827. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  828. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  829. package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +35 -0
  830. package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  831. package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  832. package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +33 -0
  833. package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  834. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +38 -0
  835. package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +73 -0
  836. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +48 -0
  837. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +36 -0
  838. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +158 -0
  839. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +117 -0
  840. package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  841. package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  842. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  843. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +135 -0
  844. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  845. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  846. package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  847. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +162 -0
  848. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +99 -0
  849. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  850. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +81 -0
  851. package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +2 -0
  852. package/pack/generated/codex/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
  853. package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +102 -0
  854. package/pack/generated/codex/skills/devrites-prose-craft/reference/structures.md +134 -0
  855. package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +63 -0
  856. package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +2 -0
  857. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +64 -0
  858. package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +2 -0
  859. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +146 -0
  860. package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +2 -0
  861. package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  862. package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  863. package/pack/generated/codex/skills/rite/SKILL.md +154 -0
  864. package/pack/generated/codex/skills/rite/agents/openai.yaml +2 -0
  865. package/pack/generated/codex/skills/rite/reference/menu.md +42 -0
  866. package/pack/generated/codex/skills/rite-adopt/SKILL.md +116 -0
  867. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +55 -0
  868. package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +19 -0
  869. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +110 -0
  870. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +35 -0
  871. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +54 -0
  872. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
  873. package/pack/generated/codex/skills/rite-build/SKILL.md +96 -0
  874. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +145 -0
  875. package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +37 -0
  876. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +149 -0
  877. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +44 -0
  878. package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +35 -0
  879. package/pack/generated/codex/skills/rite-build/reference/forge.md +181 -0
  880. package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +39 -0
  881. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +42 -0
  882. package/pack/generated/codex/skills/rite-build/reference/output.md +41 -0
  883. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +258 -0
  884. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +43 -0
  885. package/pack/generated/codex/skills/rite-build/reference/tdd.md +26 -0
  886. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +140 -0
  887. package/pack/generated/codex/skills/rite-converge/SKILL.md +143 -0
  888. package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +35 -0
  889. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +61 -0
  890. package/pack/generated/codex/skills/rite-customize/SKILL.md +79 -0
  891. package/pack/generated/codex/skills/rite-customize/agents/openai.yaml +2 -0
  892. package/pack/generated/codex/skills/rite-define/SKILL.md +171 -0
  893. package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +26 -0
  894. package/pack/generated/codex/skills/rite-define/reference/gates.md +152 -0
  895. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +94 -0
  896. package/pack/generated/codex/skills/rite-doctor/SKILL.md +88 -0
  897. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +61 -0
  898. package/pack/generated/codex/skills/rite-dogfood/agents/openai.yaml +2 -0
  899. package/pack/generated/codex/skills/rite-explain/SKILL.md +160 -0
  900. package/pack/generated/codex/skills/rite-explain/agents/openai.yaml +2 -0
  901. package/pack/generated/codex/skills/rite-explain/reference/intake.md +79 -0
  902. package/pack/generated/codex/skills/rite-frame/SKILL.md +132 -0
  903. package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +68 -0
  904. package/pack/generated/codex/skills/rite-handoff/SKILL.md +109 -0
  905. package/pack/generated/codex/skills/rite-handoff/agents/openai.yaml +2 -0
  906. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +44 -0
  907. package/pack/generated/codex/skills/rite-learn/SKILL.md +129 -0
  908. package/pack/generated/codex/skills/rite-learn/agents/openai.yaml +2 -0
  909. package/pack/generated/codex/skills/rite-plan/SKILL.md +107 -0
  910. package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +24 -0
  911. package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +33 -0
  912. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +42 -0
  913. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +65 -0
  914. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +33 -0
  915. package/pack/generated/codex/skills/rite-polish/SKILL.md +99 -0
  916. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +206 -0
  917. package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +30 -0
  918. package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +80 -0
  919. package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
  920. package/pack/generated/codex/skills/rite-polish/reference/code.md +100 -0
  921. package/pack/generated/codex/skills/rite-polish/reference/design-system-discovery.md +8 -0
  922. package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +109 -0
  923. package/pack/generated/codex/skills/rite-polish/reference/ui.md +136 -0
  924. package/pack/generated/codex/skills/rite-pov/SKILL.md +58 -0
  925. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +61 -0
  926. package/pack/generated/codex/skills/rite-pr-feedback/agents/openai.yaml +2 -0
  927. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +86 -0
  928. package/pack/generated/codex/skills/rite-prototype/SKILL.md +122 -0
  929. package/pack/generated/codex/skills/rite-prototype/agents/openai.yaml +2 -0
  930. package/pack/generated/codex/skills/rite-prove/SKILL.md +116 -0
  931. package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +48 -0
  932. package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +25 -0
  933. package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +49 -0
  934. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +25 -0
  935. package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +28 -0
  936. package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +30 -0
  937. package/pack/generated/codex/skills/rite-quick/SKILL.md +105 -0
  938. package/pack/generated/codex/skills/rite-resolve/SKILL.md +121 -0
  939. package/pack/generated/codex/skills/rite-resolve/agents/openai.yaml +2 -0
  940. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +115 -0
  941. package/pack/generated/codex/skills/rite-review/SKILL.md +183 -0
  942. package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +32 -0
  943. package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +92 -0
  944. package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +26 -0
  945. package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +60 -0
  946. package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +130 -0
  947. package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +80 -0
  948. package/pack/generated/codex/skills/rite-review/reference/performance-review.md +14 -0
  949. package/pack/generated/codex/skills/rite-review/reference/security-review.md +37 -0
  950. package/pack/generated/codex/skills/rite-seal/SKILL.md +113 -0
  951. package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +29 -0
  952. package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +60 -0
  953. package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +64 -0
  954. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +53 -0
  955. package/pack/generated/codex/skills/rite-seal/reference/output.md +7 -0
  956. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +211 -0
  957. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +30 -0
  958. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +36 -0
  959. package/pack/generated/codex/skills/rite-ship/SKILL.md +123 -0
  960. package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +9 -0
  961. package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +25 -0
  962. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +42 -0
  963. package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +120 -0
  964. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +73 -0
  965. package/pack/generated/codex/skills/rite-ship/reference/ledger.md +56 -0
  966. package/pack/generated/codex/skills/rite-ship/reference/rollout.md +43 -0
  967. package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +33 -0
  968. package/pack/generated/codex/skills/rite-spec/SKILL.md +231 -0
  969. package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  970. package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +33 -0
  971. package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +28 -0
  972. package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +56 -0
  973. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +84 -0
  974. package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +31 -0
  975. package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +62 -0
  976. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +73 -0
  977. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +110 -0
  978. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +156 -0
  979. package/pack/generated/codex/skills/rite-status/SKILL.md +119 -0
  980. package/pack/generated/codex/skills/rite-status/agents/openai.yaml +2 -0
  981. package/pack/generated/codex/skills/rite-temper/SKILL.md +138 -0
  982. package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +29 -0
  983. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +65 -0
  984. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +53 -0
  985. package/pack/generated/codex/skills/rite-temper/reference/significance.md +46 -0
  986. package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +90 -0
  987. package/pack/generated/codex/skills/rite-vet/SKILL.md +192 -0
  988. package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +29 -0
  989. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +135 -0
  990. package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +43 -0
  991. package/pack/generated/codex/skills/rite-vet/reference/depth.md +53 -0
  992. package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +48 -0
  993. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +167 -0
  994. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +87 -0
  995. package/pack/generated/codex/skills/rite-zoom-out/agents/openai.yaml +2 -0
  996. package/package.json +8 -4
  997. package/scripts/build-binaries.sh +75 -0
  998. package/scripts/build-host-artifacts.sh +100 -0
  999. package/scripts/build-release-tarball.sh +16 -2
  1000. package/scripts/check-cross-refs.py +17 -3
  1001. package/scripts/check-generated-skill-budget.mjs +41 -0
  1002. package/scripts/check-instruction-size-baseline.mjs +79 -0
  1003. package/scripts/check-invocation-integrity.py +113 -0
  1004. package/scripts/check-no-global-writes.sh +22 -0
  1005. package/scripts/check-no-personal-paths.py +50 -0
  1006. package/scripts/check-reference-governance.mjs +82 -0
  1007. package/scripts/check-reply-contract.sh +64 -0
  1008. package/scripts/check-rule-uniqueness.sh +4 -32
  1009. package/scripts/codex-generate.sh +300 -0
  1010. package/scripts/devrites-detect.sh +2 -1
  1011. package/scripts/eval-runner.py +4 -2
  1012. package/scripts/eval-scorer.mjs +46 -0
  1013. package/scripts/grade-feature.sh +24 -7
  1014. package/scripts/install-lib.sh +112 -19
  1015. package/scripts/pin.sh +4 -4
  1016. package/scripts/release-check.sh +71 -0
  1017. package/scripts/run-behavioral-evals.sh +34 -2
  1018. package/scripts/run-evals.sh +45 -30
  1019. package/scripts/run-live-behavioral-evals.py +180 -0
  1020. package/scripts/run-outcome-evals.sh +27 -0
  1021. package/scripts/run-routing-evals.py +342 -0
  1022. package/scripts/run-tests.mjs +203 -0
  1023. package/scripts/skill-pruning-audit.mjs +120 -0
  1024. package/scripts/skills-inventory.mjs +107 -0
  1025. package/scripts/validate-agent-composition.py +57 -0
  1026. package/scripts/validate-command-parity.py +70 -0
  1027. package/scripts/validate-frontmatter.py +43 -7
  1028. package/scripts/validate-skill-anatomy.py +139 -0
  1029. package/scripts/validate-workflow-security.py +22 -3
  1030. package/scripts/validate-workspace-schema.py +512 -0
  1031. package/scripts/validate.sh +174 -34
  1032. package/uninstall.sh +22 -183
  1033. package/update.sh +29 -185
  1034. package/docs/cli-mcp.md +0 -62
  1035. package/mcp/devrites-mcp.mjs +0 -105
  1036. package/pack/.claude/hooks/devrites-a1-guard.sh +0 -99
  1037. package/pack/.claude/hooks/devrites-allow.sh +0 -44
  1038. package/pack/.claude/hooks/devrites-cursor.sh +0 -28
  1039. package/pack/.claude/hooks/devrites-orient.sh +0 -53
  1040. package/pack/.claude/hooks/devrites-redwatch.sh +0 -39
  1041. package/pack/.claude/hooks/devrites-refresh-indexes.sh +0 -127
  1042. package/pack/.claude/hooks/devrites-reviewer-readonly.sh +0 -37
  1043. package/pack/.claude/hooks/devrites-statusline.sh +0 -18
  1044. package/pack/.claude/hooks/devrites-stop-gate.sh +0 -45
  1045. package/pack/.claude/hooks/devrites-wright-scope.sh +0 -64
  1046. package/pack/.claude/hooks/hooks.json +0 -52
  1047. package/pack/.claude/rules/code-review.md +0 -48
  1048. package/pack/.claude/rules/development-workflow.md +0 -40
  1049. package/pack/.claude/rules/git-workflow.md +0 -35
  1050. package/pack/.claude/rules/spec-grammar.md +0 -106
  1051. package/pack/.claude/rules/testing.md +0 -88
  1052. package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +0 -78
  1053. package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +0 -75
  1054. package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +0 -47
  1055. package/pack/.claude/skills/devrites-lib/scripts/conventions.py +0 -273
  1056. package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +0 -51
  1057. package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +0 -77
  1058. package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +0 -156
  1059. package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +0 -59
  1060. package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +0 -63
  1061. package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +0 -45
  1062. package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +0 -74
  1063. package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +0 -52
  1064. package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +0 -68
  1065. package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +0 -76
  1066. package/pack/.claude/skills/devrites-lib/scripts/progress.sh +0 -103
  1067. package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +0 -62
  1068. package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +0 -123
  1069. package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +0 -279
  1070. package/pack/.claude/skills/devrites-lib/scripts/rites.sh +0 -41
  1071. package/pack/.claude/skills/devrites-lib/scripts/spec-validate.sh +0 -130
  1072. package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +0 -67
  1073. package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +0 -87
  1074. package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +0 -52
  1075. package/scripts/merge-codex-hooks.mjs +0 -78
  1076. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/coding-style.md +0 -0
  1077. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/error-handling.md +0 -0
  1078. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/hooks.md +0 -0
  1079. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/patterns.md +0 -0
package/bin/devrites.mjs CHANGED
@@ -1,27 +1,23 @@
1
1
  #!/usr/bin/env node
2
- // devrites npx entry point for the DevRites installer.
3
- //
4
- // A thin shim over the bundled bash installers. The npm package ships
5
- // install.sh / uninstall.sh / update.sh alongside pack/ and scripts/, so the
6
- // installer's network-bootstrap branch is skipped and the install runs offline,
7
- // locked to whatever @version was invoked. The bash scripts remain the single
8
- // source of truth for all install logic, flags, manifest, and guards.
2
+ // devrites - npx entry point for the engine-owned DevRites installer.
9
3
  import { spawnSync } from 'node:child_process';
10
- import { fileURLToPath } from 'node:url';
4
+ import { createHash } from 'node:crypto';
5
+ import { chmodSync, existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
6
+ import { tmpdir } from 'node:os';
11
7
  import { dirname, join } from 'node:path';
12
- import { existsSync, readFileSync } from 'node:fs';
8
+ import { fileURLToPath } from 'node:url';
13
9
 
14
10
  const here = dirname(fileURLToPath(import.meta.url));
15
- const root = dirname(here); // bin/ -> package root
11
+ const root = dirname(here);
16
12
 
17
- const SUBCOMMANDS = {
18
- install: 'install.sh',
19
- add: 'install.sh',
20
- uninstall: 'uninstall.sh',
21
- remove: 'uninstall.sh',
22
- update: 'update.sh',
23
- upgrade: 'update.sh',
24
- };
13
+ const SUBCOMMAND_ALIASES = new Map([
14
+ ['install', 'install'],
15
+ ['add', 'install'],
16
+ ['update', 'update'],
17
+ ['upgrade', 'update'],
18
+ ['uninstall', 'uninstall'],
19
+ ['remove', 'uninstall'],
20
+ ]);
25
21
 
26
22
  function pkgVersion() {
27
23
  try {
@@ -32,36 +28,123 @@ function pkgVersion() {
32
28
  }
33
29
 
34
30
  function printHelp() {
35
- process.stdout.write(`devrites install the full DevRites pack into a project
31
+ process.stdout.write(`devrites - install the DevRites pack into a project
36
32
 
37
33
  Usage:
38
- npx devrites [install] [flags] Install skills + agents + rules + hooks (default)
34
+ npx devrites [install] [flags] Install skills + agents + standards + hooks (default)
39
35
  npx devrites uninstall [flags] Remove a DevRites install (preserves .devrites/ state)
40
36
  npx devrites update [flags] Upgrade an existing install in place
41
37
 
42
- Common flags (passed straight through to the installer):
38
+ Common flags:
43
39
  --target DIR Install into DIR (default: current directory)
44
40
  --dry-run Show the plan, change nothing
45
41
  --force Overwrite existing non-DevRites files
46
- --rules-only Install only the engineering rules
47
42
  --no-codex Skip Codex support files (.agents, .codex, AGENTS.md)
48
43
  --short-aliases=all Also install /define /build /prove /seal
49
44
  --no-agents Skip the review subagents
45
+ --no-skills Skip skills and bundled engineering standards
46
+ --no-binary Skip installing the global devrites-engine binary
47
+ --no-rules Deprecated no-op; standards ship inside devrites-lib
48
+ --rules-only Deprecated no-op; installs normally for compatibility
50
49
 
51
50
  --version Print the devrites version
52
- --help Show this help (use "<subcommand> --help" for installer-level detail)
53
-
54
- DevRites is project-local — it never writes to ~/.claude or ~/.codex.
55
- Requires bash (Git Bash or WSL on Windows). No-Node fallback:
56
- curl -fsSL https://raw.githubusercontent.com/ViktorsBaikers/DevRites/main/install.sh | bash
51
+ --help Show this help
57
52
  `);
58
53
  }
59
54
 
55
+ function run(command, args, options = {}) {
56
+ return spawnSync(command, args, { stdio: options.stdio || 'inherit', cwd: options.cwd || process.cwd(), env: options.env || process.env });
57
+ }
58
+
59
+ function firstWorking(candidates, args, env = process.env) {
60
+ let lastError = null;
61
+ for (const candidate of candidates.filter(Boolean)) {
62
+ const res = run(candidate, args, { env });
63
+ if (!res.error) process.exit(res.status === null ? 1 : res.status);
64
+ lastError = res.error;
65
+ if (res.error.code !== 'ENOENT') break;
66
+ }
67
+ return lastError;
68
+ }
69
+
70
+ async function acquireEngine() {
71
+ const envEngine = process.env.DEVRITES_ENGINE_CLI || process.env.DEVRITES_CLI;
72
+ if (envEngine && existsSync(envEngine)) return envEngine;
73
+
74
+ const localBuilt = join(root, 'engine', 'devrites-engine');
75
+ if (existsSync(localBuilt)) return localBuilt;
76
+
77
+ const downloaded = await downloadEngine();
78
+ if (downloaded) return downloaded;
79
+
80
+ const engineDir = join(root, 'engine');
81
+ if (existsSync(join(engineDir, 'go.mod'))) {
82
+ const goBin = findGo();
83
+ const out = join(mkdtempSync(join(tmpdir(), 'devrites-engine-')), process.platform === 'win32' ? 'devrites-engine.exe' : 'devrites-engine');
84
+ const tag = `v${pkgVersion().replace(/^v/, '')}`;
85
+ if (goBin) {
86
+ const env = { ...process.env, GOCACHE: join(dirname(out), 'go-cache'), CGO_ENABLED: '0' };
87
+ const build = run(goBin, [
88
+ 'build',
89
+ '-trimpath',
90
+ '-ldflags',
91
+ `-s -w -X github.com/devrites/devrites/internal/version.Version=${tag}`,
92
+ '-o',
93
+ out,
94
+ '.',
95
+ ], { cwd: engineDir, stdio: 'ignore', env });
96
+ if (!build.error && build.status === 0) return out;
97
+ }
98
+ }
99
+
100
+ return 'devrites-engine';
101
+ }
102
+
103
+ function findGo() {
104
+ const direct = run('go', ['version'], { stdio: 'ignore' });
105
+ if (!direct.error && direct.status === 0) return 'go';
106
+ return null;
107
+ }
108
+
109
+ async function downloadEngine() {
110
+ const platform = process.platform === 'darwin' ? 'darwin' : process.platform === 'linux' ? 'linux' : process.platform === 'win32' ? 'windows' : null;
111
+ const arch = process.arch === 'x64' ? 'amd64' : process.arch === 'arm64' ? 'arm64' : null;
112
+ if (!platform || !arch) return null;
113
+ const repo = process.env.DEVRITES_REPO || 'ViktorsBaikers/DevRites';
114
+ const tag = process.env.DEVRITES_REF || `v${pkgVersion().replace(/^v/, '')}`;
115
+ const name = `devrites-${platform}-${arch}${platform === 'windows' ? '.exe' : ''}`;
116
+ const dir = mkdtempSync(join(tmpdir(), 'devrites-engine-'));
117
+ const out = join(dir, platform === 'windows' ? 'devrites-engine.exe' : 'devrites-engine');
118
+ const url = `https://github.com/${repo}/releases/download/${tag}/${name}`;
119
+ if (!await downloadURL(url, out, 0o755)) return null;
120
+ if (!await downloadURL(`${url}.sha256`, `${out}.sha256`)) return null;
121
+ const want = readFileSync(`${out}.sha256`, 'utf8').trim().split(/\s+/)[0];
122
+ const got = createHash('sha256').update(readFileSync(out)).digest('hex');
123
+ if (!want || got !== want) {
124
+ rmSync(out, { force: true });
125
+ return null;
126
+ }
127
+ chmodSync(out, 0o755);
128
+ return out;
129
+ }
130
+
131
+ async function downloadURL(url, out, mode = 0o644) {
132
+ try {
133
+ const res = await fetch(url);
134
+ if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
135
+ writeFileSync(out, Buffer.from(await res.arrayBuffer()), { mode });
136
+ return true;
137
+ } catch {
138
+ rmSync(out, { force: true });
139
+ return false;
140
+ }
141
+ }
142
+
60
143
  const argv = process.argv.slice(2);
61
144
  const first = argv[0];
62
145
 
63
146
  if (first === '--version' || first === '-v') {
64
- process.stdout.write(pkgVersion() + '\n');
147
+ process.stdout.write(`${pkgVersion()}\n`);
65
148
  process.exit(0);
66
149
  }
67
150
  if (first === '--help' || first === '-h') {
@@ -69,33 +152,34 @@ if (first === '--help' || first === '-h') {
69
152
  process.exit(0);
70
153
  }
71
154
 
72
- // Route the subcommand; default to install when the first arg is a flag or absent.
73
- let sub = 'install';
155
+ let command = 'install';
74
156
  let rest = argv;
75
- if (first && Object.prototype.hasOwnProperty.call(SUBCOMMANDS, first)) {
76
- sub = first;
157
+ if (first && SUBCOMMAND_ALIASES.has(first)) {
158
+ command = SUBCOMMAND_ALIASES.get(first);
159
+ rest = argv.slice(1);
160
+ } else if (first && !first.startsWith('-')) {
161
+ command = first;
77
162
  rest = argv.slice(1);
78
163
  }
79
164
 
80
- const script = join(root, SUBCOMMANDS[sub]);
81
- if (!existsSync(script)) {
82
- console.error(`devrites: bundled ${SUBCOMMANDS[sub]} not found at ${script}`);
83
- console.error('devrites: the package looks incomplete — reinstall, or use the curl | bash installer.');
84
- process.exit(1);
165
+ const engine = await acquireEngine();
166
+ const payloadDir = process.env.DEVRITES_HOST_ARTIFACT_DIR || join(root, 'pack', 'generated');
167
+ const installerCommand = command === 'install' || command === 'update' || command === 'uninstall';
168
+ const engineEnv = { ...process.env, DEVRITES_ENGINE_CLI: engine };
169
+ const args = [command];
170
+ if (installerCommand) {
171
+ args.push('--source-dir', root);
85
172
  }
86
-
87
- const res = spawnSync('bash', [script, ...rest], { stdio: 'inherit', cwd: process.cwd() });
88
-
89
- if (res.error) {
90
- if (res.error.code === 'ENOENT') {
91
- console.error('devrites: `bash` was not found on your PATH.');
92
- console.error('DevRites is bash-based. On Windows, run inside Git Bash or WSL,');
93
- console.error('or use the no-Node installer:');
94
- console.error(' curl -fsSL https://raw.githubusercontent.com/ViktorsBaikers/DevRites/main/install.sh | bash');
95
- process.exit(127);
96
- }
97
- console.error('devrites: failed to launch installer:', res.error.message);
98
- process.exit(1);
173
+ if (command === 'install' || command === 'update') {
174
+ args.push('--payload-dir', payloadDir);
99
175
  }
176
+ args.push(...rest);
100
177
 
101
- process.exit(res.status === null ? 1 : res.status);
178
+ const candidates = [engine, 'devrites-engine'];
179
+ const lastError = firstWorking(candidates, args, engineEnv);
180
+ if (lastError && lastError.code !== 'ENOENT') {
181
+ console.error('devrites: failed to launch devrites-engine:', lastError.message);
182
+ } else {
183
+ console.error('devrites: devrites-engine was not found and could not be acquired.');
184
+ }
185
+ process.exit(127);
@@ -0,0 +1,58 @@
1
+ # Domain Docs
2
+
3
+ How the engineering skills should consume this repo's domain documentation when exploring the codebase.
4
+
5
+ ## Before exploring, read these
6
+
7
+ - **`CONTEXT.md`** at the repo root, or
8
+ - **`CONTEXT-MAP.md`** at the repo root if it exists — it points at one `CONTEXT.md` per context. Read each one relevant to the topic.
9
+ - **`docs/adr/`** — read ADRs that touch the area you're about to work in. In multi-context repos, also check `src/<context>/docs/adr/` for context-scoped decisions.
10
+
11
+ If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest creating them upfront. DevRites creates or updates domain records lazily when a feature resolves a durable term, ambiguity, or decision.
12
+
13
+ ## File structure
14
+
15
+ Single-context repo (most repos):
16
+
17
+ ```
18
+ /
19
+ ├── CONTEXT.md
20
+ ├── docs/adr/
21
+ │ ├── 0001-event-sourced-orders.md
22
+ │ └── 0002-postgres-for-write-model.md
23
+ └── src/
24
+ ```
25
+
26
+ Multi-context repo (presence of `CONTEXT-MAP.md` at the root):
27
+
28
+ ```
29
+ /
30
+ ├── CONTEXT-MAP.md
31
+ ├── docs/adr/ ← system-wide decisions
32
+ └── src/
33
+ ├── ordering/
34
+ │ ├── CONTEXT.md
35
+ │ └── docs/adr/ ← context-specific decisions
36
+ └── billing/
37
+ ├── CONTEXT.md
38
+ └── docs/adr/
39
+ ```
40
+
41
+ ## Use the glossary's vocabulary
42
+
43
+ When your output names a domain concept (in an issue title, a refactor proposal, a hypothesis, a test name), use the term as defined in `CONTEXT.md`. Don't drift to synonyms the glossary explicitly avoids.
44
+
45
+ If the concept you need isn't in the glossary yet, that's a signal — either you're inventing language the project doesn't use (reconsider) or there's a real gap. Update `CONTEXT.md` only when the term is durable enough to help future work.
46
+
47
+ ## Maintain domain records only when they earn it
48
+
49
+ - New durable term → add it to `CONTEXT.md` with any avoided synonyms.
50
+ - Two terms collide → add a flagged ambiguity and the resolved canonical term.
51
+ - Decision constrains future work → add or update an ADR.
52
+ - One-off implementation detail → leave it out.
53
+
54
+ ## Flag ADR conflicts
55
+
56
+ If your output contradicts an existing ADR, surface it explicitly rather than silently overriding:
57
+
58
+ > _Contradicts ADR-0007 (event-sourced orders) — but worth reopening because…_
@@ -0,0 +1,11 @@
1
+ # Issue-driven rites
2
+
3
+ Local issue files are the source of truth; external trackers are references only.
4
+
5
+ ## Flow
6
+
7
+ 1. Create `.scratch/<slug>/issue.md` for the problem and optional `.scratch/<slug>/prd.md` for product detail.
8
+ 2. Start `/rite-spec <slug>` from those files; copy decisions into `.devrites/work/<slug>/`, not back to the tracker.
9
+ 3. Run the normal lifecycle: `/rite-define` → `/rite-vet` → `/rite-build` → `/rite-prove` → `/rite-review` → `/rite-seal`.
10
+ 4. `/rite-ship` may include `Closes #NNN` only after a recorded type-GO.
11
+ 5. Follow-ups go to a new local `.scratch/<next-slug>/issue.md` first; external auto-posting is out of scope.
@@ -0,0 +1,29 @@
1
+ # Issue tracker: Local Markdown
2
+
3
+ Issues and PRDs for this repo live as markdown files in `.scratch/`. For the end-to-end local issue → rites flow, see [issue-driven-rites.md](issue-driven-rites.md).
4
+
5
+ ## Conventions
6
+
7
+ - One feature per directory: `.scratch/<feature-slug>/`
8
+ - The PRD is `.scratch/<feature-slug>/PRD.md`
9
+ - Implementation issues are `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01`
10
+ - Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings)
11
+ - Comments and conversation history append to the bottom of the file under a `## Comments` heading
12
+
13
+ ## When a skill says "publish to the issue tracker"
14
+
15
+ Create a new file under `.scratch/<feature-slug>/` (creating the directory if needed).
16
+
17
+ ## When a skill says "fetch the relevant ticket"
18
+
19
+ Read the file at the referenced path. The user will normally pass the path or the issue number directly.
20
+
21
+ ## Investigation maps
22
+
23
+ For huge, foggy efforts, `/rite-pressure-test` may create an **investigation map** instead of pretending one session can settle the whole thing. No separate map command exists.
24
+
25
+ - **Map**: `.scratch/<effort>/map.md` with `Destination`, `Decisions so far`, `Not yet specified`, and `Out of scope`.
26
+ - **Child ticket**: `.scratch/<effort>/issues/NN-<slug>.md`, numbered from `01`, with one research/prototype/grilling/task question in the body. A `Type:` line records the ticket type; a `Status:` line records `open`/`claimed`/`resolved`.
27
+ - **Frontier**: one ticket per session. Pick the first open, unblocked, unclaimed ticket by number.
28
+ - **Blocking**: `Blocked by: NN, NN` near the top. A ticket is unblocked when every listed ticket is `resolved`.
29
+ - **Resolve**: append `## Answer`, set `Status: resolved`, then add a one-line context pointer to `map.md` under `Decisions so far`.
@@ -0,0 +1,15 @@
1
+ # Triage Labels
2
+
3
+ The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
4
+
5
+ | Label in mattpocock/skills | Label in our tracker | Meaning |
6
+ | -------------------------- | -------------------- | ---------------------------------------- |
7
+ | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
8
+ | `needs-info` | `needs-info` | Waiting on reporter for more information |
9
+ | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
10
+ | `ready-for-human` | `ready-for-human` | Requires human implementation |
11
+ | `wontfix` | `wontfix` | Will not be actioned |
12
+
13
+ When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
14
+
15
+ Edit the right-hand column to match whatever vocabulary you actually use.
@@ -5,6 +5,10 @@ that make an AI coding agent behave like a disciplined senior engineer: clarify
5
5
  spec+plan → build one verified slice → prove with evidence → polish → review → seal →
6
6
  ship.
7
7
 
8
+ For the `.devrites/` load order, file budgets, artifact schema, aliases,
9
+ traceability rules, and phase-relative completeness model, see
10
+ [`engine/workspace-schema.md`](engine/workspace-schema.md).
11
+
8
12
  ## Layers
9
13
 
10
14
  1. **Public workflow skills** — `.claude/skills/rite-*`, `user-invocable: true`. Each
@@ -19,8 +23,8 @@ ship.
19
23
  clears `ACTIVE`). Keeping the decision and the irreversible action as two
20
24
  separately-auditable steps is the point.
21
25
  2. **Public utility skills** — `.claude/skills/rite-zoom-out`,
22
- `rite-prototype`, `rite-handoff`, `rite-pressure-test`, and
23
- `rite-autocomplete` — public commands. `rite-autocomplete` is the
26
+ `rite-prototype`, `rite-handoff`, `rite-pressure-test`, `rite-pov`,
27
+ `rite-dogfood`, `rite-pr-feedback`, and `rite-autocomplete` — public commands. `rite-autocomplete` is the
24
28
  unattended orchestrator: it drives the whole lifecycle (spec → … → seal →
25
29
  ship) end-to-end, choosing the best option at each soft gate, pausing only
26
30
  on hard irreversible-risk / blocking / escalating gates or a NO-GO. The
@@ -38,9 +42,9 @@ ship.
38
42
  internal is governed by the `user-invocable:` flag, not by the name
39
43
  prefix.
40
44
 
41
- Engineering rules live at `.claude/rules/` (each `rite-*` skill Reads
42
- `.claude/rules/core.md` as its first step; the other 15 files load on
43
- demand no session-start autoload). Parallel reviewer fan-out at
45
+ Engineering rules live at `.claude/skills/devrites-lib/reference/standards/`.
46
+ Workspace-operating lifecycle rites load `core.md` first and disclose phase-specific
47
+ files on demand; compact utilities keep a narrower local contract. Parallel reviewer fan-out at
44
48
  `/rite-seal` is a reference file
45
49
  (`rite-seal/reference/parallel-dispatch.md`), not a skill.
46
50
  4. **Supporting references** — `reference/*.md` inside each skill. Long checklists,
@@ -58,44 +62,60 @@ ship.
58
62
  dispatched by `/rite-build` to write one slice in a clean context (the write-side mirror of
59
63
  the reviewers).
60
64
  6. **Engineering rules** — DevRites' own stack-agnostic rules installed to
61
- `.claude/rules/`. Each `rite-*` skill Reads `core.md` as its first step
62
- (step 0); 22 on-demand files load by the phase that needs them:
65
+ `.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
66
+ skills read `core.md` in step 0; compact utilities load only their local or conditional
67
+ rules. On-demand files load by the phase that needs them:
63
68
  - **Craft:** `coding-style.md` · `prose-style.md` · `patterns.md` · `error-handling.md` ·
64
- `testing.md` · `spec-grammar.md` · `documentation.md`.
69
+ `testing.md` · `spec-grammar.md` · `documentation.md` · `skill-authoring.md`.
65
70
  - **Quality / safety:** `code-review.md` · `principles.md` · `security.md` ·
66
71
  `performance.md` · `observability.md` · `developer-experience.md` · `deprecation.md` ·
67
72
  `anti-patterns.md`.
68
73
  - **Workflow / ops:** `development-workflow.md` · `git-workflow.md` ·
69
- `hooks.md` · `agents.md` · `context-hygiene.md` · `afk-hitl.md` · `tooling.md`.
74
+ `ci-cd.md` · `hooks.md` · `agents.md` · `context-hygiene.md` · `afk-hitl.md` ·
75
+ `tooling.md` · `elicitation.md`.
76
+ - **Checklists:** `definition-of-done.md` · `review-checklist.md` ·
77
+ `test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`.
70
78
  - **Index:** `README.md` (phase mapping, loading model).
71
79
 
72
80
  State lives in `.devrites/` as human-readable Markdown so it survives context
73
81
  compaction and new sessions. The optional `.devrites/AFK` sentinel toggles
74
82
  the session-level run mode (see "Run modes" below). See `usage.md` for the
75
- workspace file list, and [`command-map.md`](command-map.md) for the full
76
- per-skill catalog with triggers + I/O.
83
+ workspace file list, [`command-map.md`](command-map.md) for the full
84
+ per-skill catalog with triggers + I/O, and
85
+ [`capability-surface-selection.md`](capability-surface-selection.md) for where future
86
+ capabilities belong.
77
87
 
78
88
  ## Design rationale
79
89
 
80
- ### Why a shared orientation preamble (`devrites-lib`)
90
+ ### Why the engine owns shared orientation (`devrites-lib`)
81
91
  Every workspace-operating skill's first move is the same: orient on the active feature —
82
92
  slug, phase, artifacts present, run mode, open-question tally — before acting. Re-deriving
83
93
  that from raw Markdown in each skill was duplicated (step-0 prose across ~20 skills),
84
94
  token-heavy (counting open gates meant re-reading the append-only `questions.md`, which
85
95
  only grows), and error-prone (a missed AFK sentinel or a miscounted gate changes behavior).
86
- So orientation is computed once by one read-only script, `devrites-lib/scripts/preamble.sh`,
87
- which prints a compact digest each skill reads at step 0. `devrites-lib` is an internal
88
- library skill (`user-invocable: false`, not a command) that houses the cross-cutting
89
- scripts the preamble, the read-only gate scripts (`readiness.sh` / `evidence-fresh.sh` /
90
- `check-acceptance.sh`), the state mutators (`tick-afk.sh` / `resolve.sh` / `close-out.sh`),
91
- and the unified `devrites.sh` CLI that dispatches to all of them *inside* `skills/` so
92
- they ship on both the bash-installer and plugin channels. Skills resolve them with a three-layout snippet (installed `.claude/` → plugin
93
- `${CLAUDE_SKILL_DIR}` → repo `pack/`). Bundled-script execution is reliable on the
94
- bash-installer channel (CWD-relative `.claude/`); Claude Code does **not** expose a stable
95
- script path to skill-invoked bash on the plugin channel (only to hooks — confirmed against
96
- `anthropics/claude-code` issues #48230 / #38699), so there the preamble is best-effort via
97
- `${CLAUDE_SKILL_DIR}` and degrades gracefully to reading `state.md` directly. The preamble is read-only; all mutation stays in
98
- the dedicated scripts.
96
+ So orientation is computed once by the `devrites-engine` binary, which prints a compact
97
+ digest each skill reads at step 0. The same binary owns the read-only gates
98
+ (`build-readiness`, `evidence-fresh`, `check-acceptance`) and state mutators
99
+ (`tick-afk`, `resolve`, `close-out`), so Claude Code, Codex, CI, and humans
100
+ all exercise the same control plane. `devrites-lib` remains an internal library skill
101
+ (`user-invocable: false`, not a command) for shared references. The orientation
102
+ path is read-only; mutation stays in dedicated engine subcommands.
103
+
104
+ ### Why the engine owns install/update/uninstall semantics
105
+ Install/update/uninstall behavior lives in `engine/internal/install`: manifest writing
106
+ and pruning, shared-file marker merge/removal, Codex hook merge/removal, dry-run output,
107
+ binary lifecycle, and update flag replay all execute through `devrites-engine`. The
108
+ shell entrypoints (`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
109
+ (`bin/devrites.mjs`) remain bootstrap shims: they acquire a release bundle or engine
110
+ binary, then pass arguments through.
111
+
112
+ Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
113
+ install/uninstall must be self-contained enough to fetch the bundle before any sibling
114
+ files exist. Claude assets are authored under `pack/.claude/**`; Codex assets are
115
+ generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/agents`,
116
+ `.codex/hooks.json`, and `AGENTS.md` because Codex and Claude use
117
+ different project-local conventions. Those generated host artifacts are delivered by the
118
+ npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
99
119
 
100
120
  ### Why `/engine` was rejected
101
121
  A single `/engine` (or `/devrites`) mega-command would load every phase's instructions
@@ -125,15 +145,17 @@ are **disciplines**, not user commands. As `user-invocable: false` skills they:
125
145
  trigger conditions hit;
126
146
  - keep each public `SKILL.md` small by housing the heavy process elsewhere.
127
147
 
128
- ### Why spec and plan are separate phases (`/rite-spec`, `/rite-define`, `/rite-plan`)
148
+ ### Why spec, architecture, plan, tasks, and traceability are separate artifacts
129
149
  Doing investigation, spec, plan, and slicing in one batch lets things slip — a gap goes
130
150
  unasked, placement is guessed, a slice misses a requirement. DevRites splits them so each
131
- is focused and gated. `/rite-spec` **investigates deeply and writes `spec.md`** (what/why,
132
- placement, issues, gaps closed with the user, design references) and must pass its
133
- readiness gate. `/rite-define` then turns that **approved spec** into `plan.md` +
134
- `tasks.md` (the how + vertical slices), checking every acceptance criterion maps to a
135
- slice. The spec is fully covered before any planning begins. `/rite-plan` is the separate
136
- repair/reslice/re-order tool for an *active* plan when it goes stale or drifts.
151
+ is focused and gated. `/rite-spec` **investigates deeply and writes `spec.md`** (product
152
+ what/why, requirements, acceptance, non-goals, measurable success) and must pass its
153
+ readiness gate. `/rite-define` then turns that **approved spec** into `architecture.md`
154
+ (technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
155
+ `traceability.md` (AC/REQ slice proof evidence files). The spec is fully covered
156
+ before any building begins, but it does not become a long technical omnibus. `/rite-plan`
157
+ is the separate repair/reslice/re-order tool for an *active* plan when it goes stale or
158
+ drifts.
137
159
 
138
160
  ### Why `/rite-polish` is one skill with two progressive-disclosure halves
139
161
  Polish has two natural halves — **code** (simplify, dead code, naming, plus
@@ -211,12 +233,12 @@ keeps the loop alive when the answer can wait, and pauses hard when it can't. Th
211
233
  "AFK never silently accepts irreversible risk" rule — destructive migrations,
212
234
  auth/authz boundaries, public API breaks, red tests/types/lint — always pauses
213
235
  regardless of the sentinel. See
214
- [`pack/.claude/rules/afk-hitl.md`](../pack/.claude/rules/afk-hitl.md) for the full
236
+ [`pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md) for the full
215
237
  contract.
216
238
 
217
239
  ## Design choices at a glance
218
240
 
219
- - **Surface**: 24 public `rite-*` skills (36 total) — the thin `/rite` menu
241
+ - **Surface**: 29 public `rite-*` skills (42 total) — the thin `/rite` menu
220
242
  (carries the routing) + 8 lifecycle phases (`rite-spec`, `rite-define`,
221
243
  `rite-build`, `rite-prove`, `rite-polish`, `rite-review`, `rite-seal`,
222
244
  `rite-ship` — seal **decides**, ship **executes + closes**) + the
@@ -224,6 +246,9 @@ contract.
224
246
  reviews + the `rite-quick` express lane and `rite-frame` pre-flight/self-audit
225
247
  lens + `rite-adopt` (onboard an existing codebase) + `rite-learn` (cross-feature
226
248
  lessons) + `rite-status` + `rite-doctor` (install health) +
249
+ `rite-customize` (project-local overrides/extensions) +
250
+ `rite-pov` (external-option verdicts) + `rite-dogfood` (browser QA) +
251
+ `rite-pr-feedback` (review-thread closure) +
227
252
  the `rite-plan` replan verb + the `rite-resolve` resume verb + 4 ideation /
228
253
  handoff utilities (`rite-zoom-out`, `rite-prototype`, `rite-handoff`,
229
254
  `rite-pressure-test`) + `rite-autocomplete` (the unattended full-lifecycle
@@ -275,4 +300,4 @@ acceptance criteria.
275
300
  See the top-level tree in `README.md` and the installed-target tree in `usage.md`.
276
301
  Source pack lives under `pack/.claude/` (skills, agents, and rules); the installer copies
277
302
  it into a target project's `.claude/`, including DevRites' engineering rules in
278
- `.claude/rules/`.
303
+ `.claude/skills/devrites-lib/reference/standards/`.
@@ -0,0 +1,18 @@
1
+ # Capability surface selection
2
+
3
+ Pick the smallest surface that keeps the behavior deterministic:
4
+
5
+ | Need | Put it in |
6
+ |---|---|
7
+ | Deterministic gate or state mutation | `devrites-engine` command |
8
+ | Workflow judgment inside the current context | skill |
9
+ | Fresh-context judgment or adversarial review | agent |
10
+ | Optional repeated structured external tool | MCP |
11
+ | One-shot local deterministic action | script or engine subcommand |
12
+
13
+ Rules:
14
+
15
+ - Install and update through npm: `npx devrites ...`. No Claude/Codex plugin path.
16
+ - Prefer the engine for gates; prompts may call gates, not reimplement them.
17
+ - Prefer scripts for repo-local release/build glue that is not part of the user contract.
18
+ - Do not add a dependency for what the Go engine or shell can do in a few lines.
package/docs/cli.md ADDED
@@ -0,0 +1,53 @@
1
+ # Tool-agnostic state core — the `devrites-engine` CLI
2
+
3
+ DevRites' discipline lives in `.devrites/` Markdown files and the `devrites-engine`
4
+ engine binary, not in one chat harness. Any tool — Claude Code, Codex, Cursor,
5
+ Gemini CLI, CI, or a human — can drive the same deterministic gates from the
6
+ project root.
7
+
8
+ ## The `devrites-engine` CLI
9
+
10
+ Install DevRites normally, then run the engine from the project root:
11
+
12
+ ```bash
13
+ devrites-engine preamble # workspace digest for the active feature
14
+ devrites-engine snapshot [slug] # machine-readable workspace/status snapshot
15
+ devrites-engine build-readiness [slug] # build-readiness gate (exit 0 ready)
16
+ devrites-engine evidence-fresh [slug] # proof freshness gate (exit 0 fresh · 3 stale)
17
+ devrites-engine check-acceptance <dir> # acceptance gate (exit 0 proven · 1 gap)
18
+ devrites-engine ledger sync <dir> # fold a feature's spec deltas into the living capability ledger
19
+ devrites-engine ledger list|show <cap> # read the ledger — what the system already does
20
+ devrites-engine context show --json # report root, active workspace, and host command forms
21
+ devrites-engine timeline log|list # append/list session events, decisions, and state moves
22
+ devrites-engine health record|list # append/list compact workspace health history
23
+ devrites-engine review-fingerprints [slug] # stable IDs for review findings; --write saves JSONL
24
+ devrites-engine progress [slug] # compact phase/slice footer
25
+ devrites-engine resolve <qid> "<answer>" # answer a HITL gate
26
+ devrites-engine close-out <slug> # archive a shipped feature and clear ACTIVE
27
+ devrites-engine help
28
+ ```
29
+
30
+ The AFK-parsed read commands (`status`, `readiness`, `seal`, `spec-validate`,
31
+ `evidence-fresh`, `preamble`, `coverage`, `analyze`, `doctor`, `ledger`) accept
32
+ `--json`, which wraps the result in a stable envelope — see
33
+ [`engine/agent-contract.md`](engine/agent-contract.md). `snapshot` is already a
34
+ structured JSON contract and emits `schemaVersion: devrites.workspace.v1`
35
+ directly rather than wrapping human text. Snapshot consumers should read
36
+ `nextCommands.claude` or `nextCommands.codex` for the current host instead of
37
+ hardcoding a `/rite-*` or `$rite-*` command form.
38
+
39
+ The npm `devrites` shim remains the installer/updater/uninstaller entry point and
40
+ proxies these engine subcommands when `devrites-engine` is installed. Install and
41
+ update DevRites through `npx devrites ...`; DevRites is not distributed through
42
+ Claude or Codex plugin stores.
43
+
44
+ The exit code is the gate. A non-zero `build-readiness`,
45
+ `evidence-fresh`, or `check-acceptance` result is a hard stop that can be used
46
+ in an agent loop, a local script, or pre-merge CI.
47
+
48
+ ## Why this exists
49
+
50
+ DevRites workspaces and standards are tool-agnostic data. The CLI makes that
51
+ workflow drivable from agent loops, local scripts, CI, and humans without
52
+ reimplementing the discipline. A verdict from the CLI or a `rite-*` workflow
53
+ should agree because they run the same engine gates.