devrites 2.6.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/README.md +85 -50
- package/SECURITY.md +65 -39
- package/bin/devrites.mjs +135 -51
- package/docs/agents/domain.md +58 -0
- package/docs/agents/issue-driven-rites.md +11 -0
- package/docs/agents/issue-tracker.md +29 -0
- package/docs/agents/triage-labels.md +15 -0
- package/docs/architecture.md +60 -35
- package/docs/capability-surface-selection.md +18 -0
- package/docs/cli.md +53 -0
- package/docs/command-map.md +59 -22
- package/docs/engine/agent-contract.md +92 -0
- package/docs/engine/commands.md +323 -0
- package/docs/engine/state-schema.md +134 -0
- package/docs/engine/workspace-schema.md +150 -0
- package/docs/extensions.md +178 -0
- package/docs/flow.md +19 -16
- package/docs/harness-compliance.md +45 -0
- package/docs/orchestration.md +6 -4
- package/docs/porting-to-a-new-harness.md +27 -0
- package/docs/quick-reference.md +22 -0
- package/docs/release.md +3 -3
- package/docs/skills.md +42 -48
- package/docs/usage.md +21 -8
- package/engine/.gosec.json +5 -0
- package/engine/Makefile +64 -0
- package/engine/commands.go +195 -0
- package/engine/go.mod +5 -0
- package/engine/harnessmatrix.go +60 -0
- package/engine/harnessmatrix_test.go +59 -0
- package/engine/hookpolicy.go +114 -0
- package/engine/hookpolicy_test.go +64 -0
- package/engine/hooks.go +336 -0
- package/engine/hooks_events_test.go +106 -0
- package/engine/hooks_workspace.go +603 -0
- package/engine/internal/devritespaths/paths.go +76 -0
- package/engine/internal/doctor/doctor.go +178 -0
- package/engine/internal/doctor/doctor_test.go +150 -0
- package/engine/internal/fsutil/copy.go +101 -0
- package/engine/internal/fsutil/replace_other.go +7 -0
- package/engine/internal/fsutil/replace_windows.go +31 -0
- package/engine/internal/gate/gate.go +243 -0
- package/engine/internal/gate/gate_test.go +145 -0
- package/engine/internal/harness/compliance.go +102 -0
- package/engine/internal/harness/harness.go +304 -0
- package/engine/internal/harness/harness_test.go +104 -0
- package/engine/internal/hostpack/hostpack.go +259 -0
- package/engine/internal/hostpack/hostpack_test.go +111 -0
- package/engine/internal/hostpack/templates/alias_skill.md.tmpl +11 -0
- package/engine/internal/hostpack/templates/devrites_readme.md.tmpl +14 -0
- package/engine/internal/install/install.go +1560 -0
- package/engine/internal/install/install_test.go +564 -0
- package/engine/internal/iohooks/detach_other.go +11 -0
- package/engine/internal/iohooks/detach_unix.go +11 -0
- package/engine/internal/iohooks/iohooks.go +546 -0
- package/engine/internal/iohooks/iohooks_test.go +130 -0
- package/engine/internal/lib/adoption.go +634 -0
- package/engine/internal/lib/adoption_test.go +91 -0
- package/engine/internal/lib/analyze.go +225 -0
- package/engine/internal/lib/archivesearch.go +93 -0
- package/engine/internal/lib/archivesearch_test.go +110 -0
- package/engine/internal/lib/budget.go +172 -0
- package/engine/internal/lib/buildreadiness.go +88 -0
- package/engine/internal/lib/checkacceptance.go +176 -0
- package/engine/internal/lib/closeout.go +69 -0
- package/engine/internal/lib/command_other.go +7 -0
- package/engine/internal/lib/command_unix.go +24 -0
- package/engine/internal/lib/context.go +236 -0
- package/engine/internal/lib/conventions.go +449 -0
- package/engine/internal/lib/coverage.go +147 -0
- package/engine/internal/lib/doubtcoverage.go +88 -0
- package/engine/internal/lib/evidencefresh.go +85 -0
- package/engine/internal/lib/extensions.go +619 -0
- package/engine/internal/lib/extensions_test.go +305 -0
- package/engine/internal/lib/footprint.go +239 -0
- package/engine/internal/lib/jsonout.go +115 -0
- package/engine/internal/lib/jsonout_test.go +57 -0
- package/engine/internal/lib/lanes.go +106 -0
- package/engine/internal/lib/learnings.go +391 -0
- package/engine/internal/lib/learnings_inject_test.go +77 -0
- package/engine/internal/lib/learnings_remediation_test.go +24 -0
- package/engine/internal/lib/ledger.go +298 -0
- package/engine/internal/lib/ledger_test.go +162 -0
- package/engine/internal/lib/mutationgate.go +85 -0
- package/engine/internal/lib/overrides.go +164 -0
- package/engine/internal/lib/overrides_test.go +112 -0
- package/engine/internal/lib/packageexistence.go +175 -0
- package/engine/internal/lib/preamble.go +159 -0
- package/engine/internal/lib/progress.go +168 -0
- package/engine/internal/lib/reconcile.go +173 -0
- package/engine/internal/lib/reconcile_test.go +197 -0
- package/engine/internal/lib/resolve.go +376 -0
- package/engine/internal/lib/resolve_remediation_test.go +49 -0
- package/engine/internal/lib/reviewers.go +143 -0
- package/engine/internal/lib/reviewers_test.go +45 -0
- package/engine/internal/lib/reviewerstats.go +199 -0
- package/engine/internal/lib/reviewerstats_test.go +104 -0
- package/engine/internal/lib/reviewintegrity.go +143 -0
- package/engine/internal/lib/reviewintegrity_test.go +103 -0
- package/engine/internal/lib/runbook.go +292 -0
- package/engine/internal/lib/runbook_context_test.go +119 -0
- package/engine/internal/lib/session.go +328 -0
- package/engine/internal/lib/session_test.go +110 -0
- package/engine/internal/lib/specparse.go +125 -0
- package/engine/internal/lib/specskeleton.go +79 -0
- package/engine/internal/lib/specvalidate.go +391 -0
- package/engine/internal/lib/specvalidate_test.go +185 -0
- package/engine/internal/lib/stuck.go +206 -0
- package/engine/internal/lib/templates/conventions_drift.tmpl +6 -0
- package/engine/internal/lib/templates/conventions_ledger_header.md +6 -0
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -0
- package/engine/internal/lib/testintegrity.go +203 -0
- package/engine/internal/lib/testintegrity_test.go +72 -0
- package/engine/internal/lib/tickafk.go +99 -0
- package/engine/internal/lib/util.go +68 -0
- package/engine/internal/migrate/migrate.go +213 -0
- package/engine/internal/migrate/migrate_test.go +105 -0
- package/engine/internal/orient/firstrun.go +50 -0
- package/engine/internal/orient/firstrun_test.go +72 -0
- package/engine/internal/orient/orient.go +69 -0
- package/engine/internal/orient/orient_test.go +25 -0
- package/engine/internal/profile/profile.go +270 -0
- package/engine/internal/state/concurrency_test.go +184 -0
- package/engine/internal/state/feature.go +309 -0
- package/engine/internal/state/lock_other.go +24 -0
- package/engine/internal/state/lock_unix.go +35 -0
- package/engine/internal/state/lock_windows.go +56 -0
- package/engine/internal/state/schema.go +102 -0
- package/engine/internal/state/snapshot.go +384 -0
- package/engine/internal/state/state_test.go +260 -0
- package/engine/internal/state/status.go +90 -0
- package/engine/internal/state/write.go +59 -0
- package/engine/internal/testutil/testutil.go +66 -0
- package/engine/internal/version/version.go +57 -0
- package/engine/internal/workflow/commands.go +64 -0
- package/engine/main.go +530 -0
- package/engine/profile_test.go +76 -0
- package/engine/subagent_orient_context.txt +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/decisions.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/plan.md +5 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/spec.md +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/status.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/tasks.md +1 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/spec.md +6 -0
- package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/noactive.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +17 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +16 -0
- package/engine/testdata/golden/TestParityBudget/default-active.golden +4 -0
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +5 -0
- package/engine/testdata/golden/TestParityBudget/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/no-feature.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/within.golden +6 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +7 -0
- package/engine/testdata/golden/TestParityCoverage/arg=full.golden +10 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +9 -0
- package/engine/testdata/golden/TestParityCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/bare.golden +3 -0
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +6 -0
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/red.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +5 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +4 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityLearnings/add.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/list.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/mine.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/unknown.golden +1 -0
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/ghost.golden +1 -0
- package/engine/testdata/golden/TestParityOrientSilentPath.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +1 -0
- package/engine/testdata/golden/TestParityPreamble/afk/a.golden +14 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +10 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +11 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +13 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +3 -0
- package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +6 -0
- package/engine/testdata/golden/TestParityResolve/answer.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/batch.golden +3 -0
- package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +8 -0
- package/engine/testdata/golden/TestParityResolve/drop.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/missing-answer.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/next-qid.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/no-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-found.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-open.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/full-afk.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/nophase.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/red.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +1 -0
- package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +2 -0
- package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +5 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +3 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +1 -0
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +2 -0
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +2 -0
- package/engine/testdata/golden/TestStatusLiveWorkspace.golden +10 -0
- package/engine/testdata/golden/TestStuckLogHashParity.golden +1 -0
- package/engine/testdata/golden/status/auth-tokens.txt +9 -0
- package/engine/testdata/golden/status/search-ranking.txt +9 -0
- package/engine/tests/adr_0003_gate_exit_code_test.go +32 -0
- package/engine/tests/adr_0004_required_by_phase_test.go +62 -0
- package/engine/tests/adr_0006_clock_seam_test.go +36 -0
- package/engine/tests/budget_test.go +77 -0
- package/engine/tests/cli_test.go +209 -0
- package/engine/tests/concurrency_cli_test.go +125 -0
- package/engine/tests/conventions_test.go +106 -0
- package/engine/tests/doctor_cli_test.go +62 -0
- package/engine/tests/gate_test.go +235 -0
- package/engine/tests/hook_test.go +390 -0
- package/engine/tests/hooks_io_test.go +218 -0
- package/engine/tests/json_contract_test.go +99 -0
- package/engine/tests/lib_parity_test.go +942 -0
- package/engine/tests/meta_test.go +67 -0
- package/engine/tests/migrate_cli_test.go +193 -0
- package/engine/tests/parity_analyze_test.go +55 -0
- package/engine/tests/parity_buildreadiness_test.go +42 -0
- package/engine/tests/parity_closeout_test.go +102 -0
- package/engine/tests/parity_githelpers_test.go +41 -0
- package/engine/tests/parity_learnings_test.go +90 -0
- package/engine/tests/parity_mutationgate_test.go +36 -0
- package/engine/tests/parity_packageexistence_test.go +64 -0
- package/engine/tests/parity_reconcile_test.go +88 -0
- package/engine/tests/parity_resolve_test.go +144 -0
- package/engine/tests/parity_test.go +380 -0
- package/engine/tests/parity_testintegrity_test.go +65 -0
- package/engine/tests/parity_tickafk_test.go +83 -0
- package/engine/validatepack.go +192 -0
- package/engine/validatepack_test.go +79 -0
- package/engine/validatepackskills.go +181 -0
- package/engine/validatepackskills_test.go +171 -0
- package/install.sh +67 -912
- package/pack/.claude/agents/devrites-code-reviewer.md +20 -3
- package/pack/.claude/agents/devrites-devex-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-doubt-reviewer.md +16 -3
- package/pack/.claude/agents/devrites-forge-judge.md +14 -4
- package/pack/.claude/agents/devrites-frontend-reviewer.md +27 -3
- package/pack/.claude/agents/devrites-performance-reviewer.md +18 -2
- package/pack/.claude/agents/devrites-plan-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-retrospector.md +12 -7
- package/pack/.claude/agents/devrites-security-auditor.md +20 -4
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-slice-wright.md +32 -16
- package/pack/.claude/agents/devrites-spec-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-strategy-reviewer.md +12 -2
- package/pack/.claude/agents/devrites-test-analyst.md +20 -3
- package/pack/.claude/settings.json +58 -8
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +22 -5
- package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +26 -53
- package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +2 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +10 -3
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +16 -13
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +15 -3
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +19 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/.claude/skills/devrites-interview/SKILL.md +30 -7
- package/pack/.claude/skills/devrites-lib/SKILL.md +35 -36
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +104 -20
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/README.md +14 -6
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/afk-hitl.md +10 -18
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/agents.md +81 -16
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/anti-patterns.md +3 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/context-hygiene.md +17 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/core.md +9 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/deprecation.md +21 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/developer-experience.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/documentation.md +9 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/observability.md +13 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/performance.md +1 -1
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/principles.md +3 -3
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/prose-style.md +18 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/security.md +45 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/tooling.md +29 -2
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +40 -76
- package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +19 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +3 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +17 -1
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +20 -7
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +25 -10
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +2 -2
- package/pack/.claude/skills/rite/SKILL.md +67 -42
- package/pack/.claude/skills/rite/reference/menu.md +4 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +31 -22
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +25 -25
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -2
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -1
- package/pack/.claude/skills/rite-build/SKILL.md +24 -256
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -3
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -7
- package/pack/.claude/skills/rite-build/reference/forge.md +17 -7
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/.claude/skills/rite-build/reference/output.md +41 -0
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -10
- package/pack/.claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/.claude/skills/rite-define/SKILL.md +76 -93
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +2 -1
- package/pack/.claude/skills/rite-define/reference/gates.md +3 -3
- package/pack/.claude/skills/rite-define/reference/plan-template.md +35 -6
- package/pack/.claude/skills/rite-doctor/SKILL.md +41 -16
- package/pack/.claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/.claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/.claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/.claude/skills/rite-frame/SKILL.md +14 -15
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +19 -17
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -6
- package/pack/.claude/skills/rite-learn/SKILL.md +46 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +35 -26
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +20 -7
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +15 -16
- package/pack/.claude/skills/rite-polish/SKILL.md +18 -23
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +31 -2
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-polish/reference/code.md +16 -5
- package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +5 -32
- package/pack/.claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +40 -10
- package/pack/.claude/skills/rite-prototype/SKILL.md +23 -2
- package/pack/.claude/skills/rite-prove/SKILL.md +41 -96
- package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +36 -13
- package/pack/.claude/skills/rite-quick/SKILL.md +19 -12
- package/pack/.claude/skills/rite-resolve/SKILL.md +21 -25
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/.claude/skills/rite-review/SKILL.md +43 -45
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-review.md +4 -22
- package/pack/.claude/skills/rite-review/reference/security-review.md +2 -2
- package/pack/.claude/skills/rite-seal/SKILL.md +40 -174
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +6 -9
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -14
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +3 -3
- package/pack/.claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +1 -1
- package/pack/.claude/skills/rite-ship/SKILL.md +45 -75
- package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-ship/reference/close-out.md +12 -1
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +32 -1
- package/pack/.claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/.claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/.claude/skills/rite-spec/SKILL.md +108 -60
- package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-spec/reference/investigation.md +34 -14
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +7 -37
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +23 -18
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +94 -118
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +128 -139
- package/pack/.claude/skills/rite-status/SKILL.md +26 -22
- package/pack/.claude/skills/rite-temper/SKILL.md +34 -27
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/significance.md +1 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +58 -70
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +7 -5
- package/pack/.claude/skills/rite-vet/reference/depth.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -3
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +16 -17
- package/pack/generated/README.md +10 -0
- package/pack/generated/claude/agents/devrites-code-reviewer.md +103 -0
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +104 -0
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +68 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +102 -0
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +84 -0
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +111 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +89 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +96 -0
- package/pack/generated/claude/agents/devrites-security-auditor.md +85 -0
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +90 -0
- package/pack/generated/claude/agents/devrites-slice-wright.md +210 -0
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +87 -0
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +72 -0
- package/pack/generated/claude/agents/devrites-test-analyst.md +64 -0
- package/pack/generated/claude/settings.json +103 -0
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +61 -0
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +73 -0
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +76 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +65 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +99 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +104 -0
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +69 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +51 -0
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +52 -0
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +134 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/claude/skills/rite/SKILL.md +142 -0
- package/pack/generated/claude/skills/rite/reference/menu.md +42 -0
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/claude/skills/rite-build/SKILL.md +84 -0
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/claude/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/generated/claude/skills/rite-define/SKILL.md +153 -0
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/claude/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +76 -0
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/claude/skills/rite-frame/SKILL.md +120 -0
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/claude/skills/rite-learn/SKILL.md +117 -0
- package/pack/generated/claude/skills/rite-plan/SKILL.md +95 -0
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +87 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/claude/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/claude/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +74 -0
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +110 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/claude/skills/rite-quick/SKILL.md +93 -0
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +109 -0
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +171 -0
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/claude/skills/rite-seal/SKILL.md +101 -0
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/claude/skills/rite-ship/SKILL.md +111 -0
- package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/SKILL.md +217 -0
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/claude/skills/rite-status/SKILL.md +107 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +126 -0
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +175 -0
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +75 -0
- package/pack/generated/codex/AGENTS.md +23 -0
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +101 -0
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +102 -0
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +66 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +100 -0
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +80 -0
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +109 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +93 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +94 -0
- package/pack/generated/codex/agents/devrites-security-auditor.toml +83 -0
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +88 -0
- package/pack/generated/codex/agents/devrites-slice-wright.toml +207 -0
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +85 -0
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +76 -0
- package/pack/generated/codex/agents/devrites-test-analyst.toml +62 -0
- package/pack/generated/codex/hooks.json +151 -0
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +73 -0
- package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +85 -0
- package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +88 -0
- package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +77 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +111 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +116 -0
- package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-lib/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +81 -0
- package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +63 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +64 -0
- package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +146 -0
- package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/codex/skills/rite/SKILL.md +154 -0
- package/pack/generated/codex/skills/rite/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite/reference/menu.md +42 -0
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +110 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/codex/skills/rite-build/SKILL.md +96 -0
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/codex/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +143 -0
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/codex/skills/rite-customize/SKILL.md +79 -0
- package/pack/generated/codex/skills/rite-customize/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-define/SKILL.md +165 -0
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/codex/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +88 -0
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-dogfood/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/SKILL.md +160 -0
- package/pack/generated/codex/skills/rite-explain/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/codex/skills/rite-frame/SKILL.md +132 -0
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +109 -0
- package/pack/generated/codex/skills/rite-handoff/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/codex/skills/rite-learn/SKILL.md +129 -0
- package/pack/generated/codex/skills/rite-learn/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-plan/SKILL.md +107 -0
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/codex/skills/rite-polish/SKILL.md +99 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/codex/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/codex/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/codex/skills/rite-pov/SKILL.md +58 -0
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-pr-feedback/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +86 -0
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +122 -0
- package/pack/generated/codex/skills/rite-prototype/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-prove/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/codex/skills/rite-quick/SKILL.md +105 -0
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +121 -0
- package/pack/generated/codex/skills/rite-resolve/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +183 -0
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/codex/skills/rite-seal/SKILL.md +113 -0
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/codex/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +123 -0
- package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/SKILL.md +229 -0
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/codex/skills/rite-status/SKILL.md +119 -0
- package/pack/generated/codex/skills/rite-status/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +138 -0
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +187 -0
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +87 -0
- package/pack/generated/codex/skills/rite-zoom-out/agents/openai.yaml +2 -0
- package/package.json +8 -4
- package/scripts/build-binaries.sh +75 -0
- package/scripts/build-host-artifacts.sh +100 -0
- package/scripts/build-release-tarball.sh +16 -2
- package/scripts/check-cross-refs.py +17 -3
- package/scripts/check-generated-skill-budget.mjs +41 -0
- package/scripts/check-instruction-size-baseline.mjs +79 -0
- package/scripts/check-invocation-integrity.py +113 -0
- package/scripts/check-no-global-writes.sh +22 -0
- package/scripts/check-no-personal-paths.py +50 -0
- package/scripts/check-reference-governance.mjs +82 -0
- package/scripts/check-reply-contract.sh +64 -0
- package/scripts/check-rule-uniqueness.sh +4 -32
- package/scripts/codex-generate.sh +300 -0
- package/scripts/devrites-detect.sh +2 -1
- package/scripts/eval-runner.py +4 -2
- package/scripts/eval-scorer.mjs +46 -0
- package/scripts/grade-feature.sh +24 -7
- package/scripts/install-lib.sh +112 -19
- package/scripts/pin.sh +4 -4
- package/scripts/release-check.sh +71 -0
- package/scripts/run-behavioral-evals.sh +34 -2
- package/scripts/run-evals.sh +45 -30
- package/scripts/run-live-behavioral-evals.py +180 -0
- package/scripts/run-outcome-evals.sh +27 -0
- package/scripts/run-routing-evals.py +342 -0
- package/scripts/run-tests.mjs +203 -0
- package/scripts/skill-pruning-audit.mjs +120 -0
- package/scripts/skills-inventory.mjs +107 -0
- package/scripts/validate-agent-composition.py +57 -0
- package/scripts/validate-command-parity.py +70 -0
- package/scripts/validate-frontmatter.py +43 -7
- package/scripts/validate-skill-anatomy.py +139 -0
- package/scripts/validate-workflow-security.py +22 -3
- package/scripts/validate-workspace-schema.py +512 -0
- package/scripts/validate.sh +174 -34
- package/uninstall.sh +22 -183
- package/update.sh +29 -185
- package/docs/cli-mcp.md +0 -62
- package/mcp/devrites-mcp.mjs +0 -105
- package/pack/.claude/hooks/devrites-a1-guard.sh +0 -99
- package/pack/.claude/hooks/devrites-allow.sh +0 -44
- package/pack/.claude/hooks/devrites-cursor.sh +0 -28
- package/pack/.claude/hooks/devrites-orient.sh +0 -53
- package/pack/.claude/hooks/devrites-redwatch.sh +0 -39
- package/pack/.claude/hooks/devrites-refresh-indexes.sh +0 -127
- package/pack/.claude/hooks/devrites-reviewer-readonly.sh +0 -37
- package/pack/.claude/hooks/devrites-statusline.sh +0 -18
- package/pack/.claude/hooks/devrites-stop-gate.sh +0 -45
- package/pack/.claude/hooks/devrites-wright-scope.sh +0 -64
- package/pack/.claude/hooks/hooks.json +0 -52
- package/pack/.claude/rules/code-review.md +0 -48
- package/pack/.claude/rules/development-workflow.md +0 -40
- package/pack/.claude/rules/git-workflow.md +0 -35
- package/pack/.claude/rules/spec-grammar.md +0 -106
- package/pack/.claude/rules/testing.md +0 -88
- package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +0 -78
- package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +0 -75
- package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +0 -47
- package/pack/.claude/skills/devrites-lib/scripts/conventions.py +0 -273
- package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +0 -51
- package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +0 -77
- package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +0 -156
- package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +0 -59
- package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +0 -63
- package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +0 -45
- package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +0 -74
- package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +0 -52
- package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +0 -68
- package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +0 -76
- package/pack/.claude/skills/devrites-lib/scripts/progress.sh +0 -103
- package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +0 -62
- package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +0 -123
- package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +0 -279
- package/pack/.claude/skills/devrites-lib/scripts/rites.sh +0 -41
- package/pack/.claude/skills/devrites-lib/scripts/spec-validate.sh +0 -130
- package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +0 -67
- package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +0 -87
- package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +0 -52
- package/scripts/merge-codex-hooks.mjs +0 -78
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/coding-style.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/error-handling.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/hooks.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/patterns.md +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Convergence assessment — built / partial / absent
|
|
2
|
+
|
|
3
|
+
The rubric `/rite-converge` applies to every unit of intent. Load when running step 2–5.
|
|
4
|
+
|
|
5
|
+
## The unit set
|
|
6
|
+
|
|
7
|
+
Assess three kinds of unit against the live code:
|
|
8
|
+
|
|
9
|
+
1. **Acceptance criteria / scenarios** — each buildable `AC-###` and each `#### Scenario:`
|
|
10
|
+
(WHEN/THEN) in `spec.md`. `## Success metrics` lines are **not** units — they carry no
|
|
11
|
+
`AC-###` id, no slice can satisfy them, and this pass never enqueues one (`spec-grammar.md`).
|
|
12
|
+
2. **Plan touch-points** — the files/components/modules `plan.md` says get built or edited, and
|
|
13
|
+
each existing slice's stated **Produces** (the interface it was meant to expose).
|
|
14
|
+
3. **Principles** — each invariant in `.devrites/principles.md`, checked against the code as it
|
|
15
|
+
stands.
|
|
16
|
+
|
|
17
|
+
## The three verdicts
|
|
18
|
+
|
|
19
|
+
For each unit, decide **built / partial / absent** — and only *partial* and *absent* enqueue a
|
|
20
|
+
slice.
|
|
21
|
+
|
|
22
|
+
| Verdict | Test | Action |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| **built** | The behavior exists in the code **and** a test covers it (a criterion with code but no covering test is not built — `testing.md`). | Nothing — do not append. |
|
|
25
|
+
| **partial** | Some of it exists: happy path only, un-wired, untested, a TODO stub, or an edge case from the scenario's WHEN/THEN missing. | Append a slice for the **remainder**, its `Known-Gotchas` naming what's already there so `/rite-build` extends rather than rebuilds. |
|
|
26
|
+
| **absent** | No code implements it. | Append a full slice. |
|
|
27
|
+
|
|
28
|
+
Read the code to decide — do not infer from the plan. Use the code-intelligence index
|
|
29
|
+
(codebase-memory-mcp → codegraph → graphify, else LSP / grep) so the verdict reflects live
|
|
30
|
+
code, not the artifacts' claims. `devrites-engine analyze` / `devrites-engine coverage` tell you what's
|
|
31
|
+
*mapped*; only reading the code tells you what's *built*.
|
|
32
|
+
|
|
33
|
+
## Principle violations
|
|
34
|
+
|
|
35
|
+
A live violation of a declared invariant (secret in logs, money as float, a datastore added
|
|
36
|
+
with no ADR) is the **top-severity** gap regardless of coverage. It sorts **first** in the
|
|
37
|
+
appended batch as a remediation slice, and — because reshaping to honor an invariant can be an
|
|
38
|
+
irreversible-risk change — it pauses for a human even under AFK. Absent/empty principles file →
|
|
39
|
+
none declared → skip, never block.
|
|
40
|
+
|
|
41
|
+
## Spec drift vs code gap
|
|
42
|
+
|
|
43
|
+
Before appending a slice, separate the two failure directions:
|
|
44
|
+
|
|
45
|
+
- **Code gap** — the spec is right, the code falls short. → append a slice. (This skill's job.)
|
|
46
|
+
- **Spec drift** — the code is right, the requirement is stale or wrong. → **do not** append a
|
|
47
|
+
slice that bends correct code to a wrong spec. Stop, route through the Spec Drift Guard
|
|
48
|
+
(`rite-build/reference/spec-drift-guard.md`) + a recorded decision, and let `/rite-plan
|
|
49
|
+
repair` reshape intent. Convergence enqueues work; it never launders a spec bug into a code
|
|
50
|
+
task.
|
|
51
|
+
|
|
52
|
+
## Numbering + ordering the appended batch
|
|
53
|
+
|
|
54
|
+
- **Continue the ids** — the highest existing `SLICE-###` + 1, ascending. Never reuse or
|
|
55
|
+
renumber an existing id.
|
|
56
|
+
- **Order after the existing slices**, dependency-first among the new ones (`depends_on`);
|
|
57
|
+
a principle-remediation slice sorts before feature gaps.
|
|
58
|
+
- **Mark each** with `Convergence: <iso>` so a later reader (and `/rite-status`) can tell an
|
|
59
|
+
original slice from a converged-in one.
|
|
60
|
+
- **Nothing unmet → append nothing.** No batch header, no marker, `tasks.md` byte-for-byte
|
|
61
|
+
unchanged.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-customize
|
|
3
|
+
description: User-invoked helper for authoring DevRites overrides or extensions.
|
|
4
|
+
argument-hint: "[override <agent> | extension <name>]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /rite-customize — guided project customization
|
|
10
|
+
|
|
11
|
+
Create, list, validate, or scaffold one project-local DevRites customization without forking the pack.
|
|
12
|
+
|
|
13
|
+
Read [`devrites-lib/reference/standards/core.md`](../devrites-lib/reference/standards/core.md), then read `docs/extensions.md` if present; in an installed project, fall back to `.claude/skills/devrites-lib/reference/standards/core.md` plus the user's installed DevRites docs if available.
|
|
14
|
+
|
|
15
|
+
Fast paths:
|
|
16
|
+
- `list` → run `devrites-engine overrides list` and `devrites-engine extensions list`; stop.
|
|
17
|
+
- `validate` → run both validators; stop.
|
|
18
|
+
- `scaffold extension <name>` → create the smallest valid `.devrites/extensions/<name>/skill/SKILL.md` draft after approval, then validate.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
1. **Classify the ask.** Pick exactly one target:
|
|
23
|
+
- `list` → inspect only.
|
|
24
|
+
- `validate` → validate only.
|
|
25
|
+
- `override <agent>` → `.devrites/overrides/<agent>.md`
|
|
26
|
+
- `extension <name>` / `scaffold extension <name>` → `.devrites/extensions/<name>/`
|
|
27
|
+
- unclear → ask one blocking question with those options.
|
|
28
|
+
Done when the target kind and path are known.
|
|
29
|
+
2. **Load the existing surface.** Read the existing file/dir if present. For overrides, confirm the target agent exists under `.claude/agents/` or `pack/.claude/agents/`. For extensions, check whether `skill/SKILL.md` or `agent.md` already exists. Done when you know whether this is create or update.
|
|
30
|
+
3. **Draft the smallest artifact.**
|
|
31
|
+
- Override: write only added checks/emphasis. Do not restate base reviewer rules.
|
|
32
|
+
- Extension: create the smallest valid `skill/SKILL.md` or `agent.md` that matches the user's requested surface.
|
|
33
|
+
Done when the draft has no gate-waiver language and no global paths.
|
|
34
|
+
4. **Show before writing.** Present the path and full content (or a concise diff when updating), then wait. **Completion:** the user explicitly approves or aborts.
|
|
35
|
+
5. **Write and validate.** Create parent dirs, write the file(s), then run the matching validator:
|
|
36
|
+
```bash
|
|
37
|
+
devrites-engine overrides validate
|
|
38
|
+
devrites-engine extensions validate
|
|
39
|
+
```
|
|
40
|
+
If validation fails, fix the artifact once and re-run. Stop rather than guessing after a second failure.
|
|
41
|
+
|
|
42
|
+
## Rules
|
|
43
|
+
|
|
44
|
+
- Project-local only: write under `.devrites/overrides/` or `.devrites/extensions/`.
|
|
45
|
+
- A customization may add checks or raise weight; it may never relax a gate, waive a standard, bypass `type-GO`, or write global config.
|
|
46
|
+
- Sparse wins: do not copy shipped skills, agents, or standards unless the user explicitly asked for a new extension based on them.
|
|
47
|
+
- Scaffold means a tiny valid skeleton plus a TODO body, not a generated framework.
|
|
48
|
+
- No Codex mirroring by hand; extension sync is owned by `devrites-engine extensions sync`.
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
Reply-contract exception: customization utility; may run without an active feature.
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Done: created|updated <override|extension>.
|
|
56
|
+
Changed: <path(s)>
|
|
57
|
+
Evidence: <validator command + result>
|
|
58
|
+
Open: <none | validation error | user-aborted>
|
|
59
|
+
Next: <devrites-engine extensions sync | /rite-doctor | none>
|
|
60
|
+
Record: <path(s)>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Gotchas
|
|
64
|
+
|
|
65
|
+
- **Do not fork by accident.** If a reviewer override is enough, do not create a copied reviewer agent.
|
|
66
|
+
- **Do not weaken gates.** “Ignore”, “waive”, “lower severity”, or “skip type-GO” means rewrite the customization or refuse it.
|
|
67
|
+
- **Do not invent an extension surface.** If the user wants behavior outside DevRites' extension contract, say what the contract supports and stop.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-define
|
|
3
|
+
description: Define the first build plan from an approved spec: architecture, task slices, traceability, and state. Use when turning approved intent into its initial plan.
|
|
4
|
+
argument-hint: "[feature-slug]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-define — plan from the spec
|
|
9
|
+
|
|
10
|
+
Read the active feature's `spec.md` and turn it into a buildable workspace: feature
|
|
11
|
+
architecture, approach, a dependency-ordered set of **vertical slices**, traceability, and
|
|
12
|
+
the state cursor. The spec is the WHAT/WHY (from `/rite-spec`); this is the HOW. Splitting
|
|
13
|
+
spec, architecture, plan, tasks, and traceability keeps each file small and phase-owned.
|
|
14
|
+
**No code here.**
|
|
15
|
+
|
|
16
|
+
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
17
|
+
Pull these via `Read` when shaping the plan:
|
|
18
|
+
- `development-workflow.md` — small batches, trunk-always-green, definition of done.
|
|
19
|
+
- `principles.md` — the project invariants (`.devrites/principles.md`) the chosen approach must conform to.
|
|
20
|
+
- `documentation.md` — record plan-time decisions and rationale.
|
|
21
|
+
- `../workspace-artifact-schema.md` — artifact purposes, budgets, IDs, and read triggers.
|
|
22
|
+
|
|
23
|
+
## Operating rules
|
|
24
|
+
- **Requires a readied spec.** Read the active workspace first; if `.devrites/ACTIVE` is empty,
|
|
25
|
+
the workspace has no `spec.md`, its readiness gate hasn't passed, or any spec-quality
|
|
26
|
+
`checklists/<domain>.md` has an open CRITICAL → **STOP** and tell the user to run
|
|
27
|
+
`/rite-spec <feature>` first. **DO NOT plan from a missing or unreadied spec.**
|
|
28
|
+
- Prefer existing conventions; ask before adding a dependency or a second design system.
|
|
29
|
+
- **Author section by section, not in one dump.** Write `architecture.md` / `plan.md` one section
|
|
30
|
+
at a time and pause after each; a section resting on an open design choice or a shaky estimate can
|
|
31
|
+
be deepened right there with a technique from
|
|
32
|
+
[`elicitation.md`](../devrites-lib/reference/standards/elicitation.md) (Tournament for two viable
|
|
33
|
+
designs, Delphi for the estimate) before it hardens into slices.
|
|
34
|
+
- **Slice count is derived, never dictated.** The number of slices falls out of the work
|
|
35
|
+
— one per independently-shippable increment, sized by `slicing.md`, every acceptance
|
|
36
|
+
criterion mapped to ≥1 slice. A user-named count is a hint at most: slice logically and,
|
|
37
|
+
if your honest count differs, present it and why. Never pad or compress to hit a figure.
|
|
38
|
+
(`.devrites/AFK` `max_slices` is a separate AFK iteration budget, not the decomposition.)
|
|
39
|
+
- **Wide mechanical refactors slice expand → migrate → contract.** If one repeated change
|
|
40
|
+
crosses many files, don't fake vertical slices. Add a compatibility/adapter slice, migrate
|
|
41
|
+
small green batches, then remove the old path. If a batch cannot stay green, use an
|
|
42
|
+
integration branch plus a final verify slice.
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** — the always-on operating rules and anti-rationalizations.
|
|
46
|
+
Then **run the shared orientation preamble** — it confirms the active feature and which
|
|
47
|
+
artifacts exist (it prints `state.md`, the artifacts present, the run mode, and the
|
|
48
|
+
open-question tally):
|
|
49
|
+
```bash
|
|
50
|
+
devrites-engine preamble
|
|
51
|
+
devrites-engine snapshot
|
|
52
|
+
devrites-engine spec-skeleton ".devrites/work/$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
53
|
+
```
|
|
54
|
+
If there is no active workspace, no `spec.md`, `spec-skeleton` blocks, or its readiness gate hasn't passed →
|
|
55
|
+
**STOP** and tell the user to run `/rite-spec <feature>` first.
|
|
56
|
+
1. **Read the spec** — `spec.md` (objective, requirements, acceptance, **placement**,
|
|
57
|
+
design references, gaps/decisions), plus `references.md`, `decisions.md`,
|
|
58
|
+
`assumptions.md`, **`strategy.md` if present** (the scope mode, deferred / out-of-scope
|
|
59
|
+
register, and pre-mortem risks from `/rite-temper` — cut slices to mitigate the top risks
|
|
60
|
+
and respect the IN/OUT line; map coverage against the **hardened** spec), and
|
|
61
|
+
**`design-brief.md` if the feature touches UI** (the UX/UI contract `/rite-spec` shaped —
|
|
62
|
+
its key states, interaction model, and proof targets drive how UI slices are cut). If a blocking
|
|
63
|
+
`[NEEDS CLARIFICATION]` remains, stop → `/rite-spec`.
|
|
64
|
+
2. **Decide the architecture + approach** (the HOW the spec deliberately omitted): write
|
|
65
|
+
`architecture.md` for owning layer, boundaries, integration points, data/API/events,
|
|
66
|
+
dependencies, risks, and affected areas; write only the build strategy in `plan.md`.
|
|
67
|
+
Use a
|
|
68
|
+
code-intelligence index if available (see
|
|
69
|
+
`.claude/skills/devrites-lib/reference/standards/tooling.md`) for structure/impact; for the current API or behaviour of
|
|
70
|
+
an external library/framework the architecture will rely on, consult context7 if available.
|
|
71
|
+
Record significant options in `decisions.md` as `DEC-###` ADR entries.
|
|
72
|
+
**Deep-modules check** — while sketching the major modules, look for opportunities
|
|
73
|
+
to extract a **deep module**: a small, stable interface that hides a meaningful chunk
|
|
74
|
+
of behavior, and is therefore independently testable. A *shallow* module — interface
|
|
75
|
+
nearly as complex as its implementation — earns nothing; either deepen it or delete
|
|
76
|
+
it. Where a slice will produce a deep module, confirm with the user which deep
|
|
77
|
+
modules they want unit-tested in isolation (this informs the slice's "Tests to
|
|
78
|
+
write/run" field).
|
|
79
|
+
3. **Slice into vertical tasks** — each delivers one observable capability end-to-end and
|
|
80
|
+
is verifiable on its own; the **count emerges from the work, not a target number**;
|
|
81
|
+
first slice = thinnest useful end-to-end path; order by dependency (risk-first within a
|
|
82
|
+
tier). For a broad mechanical refactor, use expand → migrate batches → contract instead
|
|
83
|
+
of pretending each touched file is a product slice; every migrate batch must stay green,
|
|
84
|
+
or route through an integration branch + final verify slice. Use `rite-plan/reference/slicing.md` and
|
|
85
|
+
`rite-plan/reference/task-breakdown.md`. Mark per slice: **Frontend craft required**
|
|
86
|
+
and **Browser proof required** (UI), and whether it's **fullstack** (FE+BE → contract
|
|
87
|
+
first, see `devrites-frontend-craft/reference/fullstack.md`). **For UI slices, name which
|
|
88
|
+
of `design-brief.md`'s key states + interaction the slice delivers, and give it a binary
|
|
89
|
+
**Visual acceptance** target (state × viewport × input + target R-id/brief rule)** — so
|
|
90
|
+
the design contract maps onto slices, not just acceptance criteria.
|
|
91
|
+
4. **Map coverage** — every `AC-###` spec acceptance criterion maps to ≥1 `SLICE-###`
|
|
92
|
+
(`rite-spec/reference/acceptance-criteria.md`); no orphaned criteria, no slice without a
|
|
93
|
+
criterion. Lift covered/backstop `Edge Coverage` rows and resolved `Prohibitions (must-NOT)`
|
|
94
|
+
rows into `traceability.md` and `test-plan.md`; unresolved rows go to `assumptions.md` with
|
|
95
|
+
their gate/owner.
|
|
96
|
+
4a. **Parallel-lane sanity check** — after drafting `tasks.md` but before asking for plan
|
|
97
|
+
approval, run the advisory lane planner:
|
|
98
|
+
```bash
|
|
99
|
+
devrites-engine lanes plan "$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
100
|
+
```
|
|
101
|
+
Use it to spot independent read-only/review lanes and dependency mistakes, but do not
|
|
102
|
+
weaken DevRites' default of one production-write slice at a time.
|
|
103
|
+
4b. **Persist the traceability matrix** — write `traceability.md` (`AC/REQ ID → slice(s) →
|
|
104
|
+
test/proof → evidence ID → touched files → status`), the living map `/rite-prove` and
|
|
105
|
+
`/rite-seal` walk. Generate it with `devrites-engine coverage` when available, then save/rename
|
|
106
|
+
the output as `traceability.md`, or write the table by hand from the same inputs if the
|
|
107
|
+
script is absent:
|
|
108
|
+
```bash
|
|
109
|
+
S="$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
110
|
+
devrites-engine coverage "$S" > ".devrites/work/$S/traceability.md"
|
|
111
|
+
```
|
|
112
|
+
5. **Complexity & deviations gate** — justify anything off DevRites defaults (new dep,
|
|
113
|
+
extra abstraction, second design system) in the plan; if you can't justify it, simplify.
|
|
114
|
+
**Principles conformance:** read `.devrites/principles.md` (if present) and confirm the
|
|
115
|
+
approach honors every declared invariant. A plan that conflicts with one is not "a deviation
|
|
116
|
+
to justify away" — either reshape the approach to conform, or, when the conflict is genuine and
|
|
117
|
+
intended, route it through the Spec Drift Guard plus a recorded decision and a scoped principle
|
|
118
|
+
exception a human approves. Never ready a plan that silently violates an invariant. (Re-scored
|
|
119
|
+
as a blocking gate at `/rite-vet`; no file → none declared → nothing to check.)
|
|
120
|
+
6. **Write** `architecture.md`, `plan.md`, `tasks.md`, and `traceability.md`; update
|
|
121
|
+
`state.md` (phase: plan → next `/rite-vet`).
|
|
122
|
+
7. **Readiness gate** (bottom of plan-template): every acceptance criterion covered by a
|
|
123
|
+
slice, dependency order acyclic + risk-first, no unjustified deviation, rollback for
|
|
124
|
+
every destructive/migration step. **Stop and confirm** before code. Render the review-before-code
|
|
125
|
+
digest first: `Intent` (one sentence from the spec), `Done means` (acceptance coverage x/y),
|
|
126
|
+
`Plan sanity` (slice count + riskiest boundary/gate), and `Build exactly this?` (yes → approve;
|
|
127
|
+
no → `/rite-plan revise`). When the human confirms the plan, write `Plan approved: <iso>` to
|
|
128
|
+
`state.md` (see [state-workspace](../rite-spec/reference/state-workspace.md)); `/rite-build`
|
|
129
|
+
checks this exists before building.
|
|
130
|
+
|
|
131
|
+
## tasks.md slice format
|
|
132
|
+
|
|
133
|
+
Use the canonical slice grammar in
|
|
134
|
+
[`workspace-artifact-schema.md`](../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar).
|
|
135
|
+
Every slice must satisfy that complete field set; phase-specific gate details live in
|
|
136
|
+
[`reference/gates.md`](reference/gates.md).
|
|
137
|
+
|
|
138
|
+
> **Mid-flight discipline.** When tempted to skip vertical slicing, coverage mapping, or dependency-order discipline — see [`anti-patterns`](reference/anti-patterns.md) (Common Rationalizations + Red Flags). Load it the moment you reach for the excuse.
|
|
139
|
+
|
|
140
|
+
## Output
|
|
141
|
+
|
|
142
|
+
**Progress first** — run `devrites-engine progress`, then use the shared completion reply contract
|
|
143
|
+
([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
|
|
144
|
+
Default success shape:
|
|
145
|
+
```
|
|
146
|
+
Done: plan written for <slug>; <n> vertical slices defined.
|
|
147
|
+
Changed: architecture.md, plan.md, tasks.md, traceability.md, decisions.md, state.md
|
|
148
|
+
Evidence: not applicable; acceptance coverage <x/y> mapped in traceability.md
|
|
149
|
+
Open: <none | plan questions | Alternative: /rite-plan revise to reshape artifacts>; review digest: intent + coverage + plan sanity rendered
|
|
150
|
+
Next: /rite-vet
|
|
151
|
+
Record: .devrites/work/<slug>/plan.md
|
|
152
|
+
↻ Hygiene: /clear after user confirms the plan
|
|
153
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# rite-define — anti-patterns
|
|
2
|
+
|
|
3
|
+
Load this when standing a non-trivial planning decision in `/rite-define`,
|
|
4
|
+
or when the agent feels reluctance toward vertical slicing or coverage
|
|
5
|
+
mapping.
|
|
6
|
+
|
|
7
|
+
Pack-wide rationalizations + red flags: see [standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
|
|
8
|
+
|
|
9
|
+
## Phase-specific rationalizations
|
|
10
|
+
|
|
11
|
+
| Excuse | Rebuttal |
|
|
12
|
+
|---|---|
|
|
13
|
+
| "Spec is good enough; just start coding." | Plan separates HOW from WHAT for a reason — missed HOW shows up as drift at slice 3. |
|
|
14
|
+
| "One big slice is fine, the work is all related." | If slice 1 isn't shippable on its own, you're not slicing vertically — you're staging waterfall in disguise. |
|
|
15
|
+
| "Tests can come at build time, not in tasks." | Every slice's `Tests to write/run` line is the contract that proves its acceptance — leave it blank, lose the contract. |
|
|
16
|
+
| "Backend + frontend belong in one slice." | Fullstack goes contract-first: split the contract, then build a thin vertical slice that crosses both layers. |
|
|
17
|
+
| "I can skip mapping every spec criterion." | An unmapped criterion is one nobody will build. Coverage isn't bureaucracy. |
|
|
18
|
+
|
|
19
|
+
## Red Flags
|
|
20
|
+
|
|
21
|
+
- A slice with no acceptance criterion link back to `spec.md`.
|
|
22
|
+
- A slice whose name contains "and" — two capabilities smuggled into one slice (the "and" test, [slicing](../../rite-plan/reference/slicing.md)).
|
|
23
|
+
- No first slice that's end-to-end thin (every slice depends on infra that doesn't exist yet).
|
|
24
|
+
- A new dependency added without rationale in `decisions.md`.
|
|
25
|
+
- A slice that doesn't list "Existing to reuse / extend" (you didn't search).
|
|
26
|
+
- Plan readiness gate failing but you're about to call `/rite-build` anyway.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Gate taxonomy — advisory · validating · blocking · escalating
|
|
2
|
+
|
|
3
|
+
DevRites uses a four-gate model for HITL pauses, adapted from the regulated-agentic-workflow
|
|
4
|
+
governance pattern. Picking the right gate for each `Mode: HITL` slice is the difference
|
|
5
|
+
between a workflow that catches real risk and one that becomes a review queue.
|
|
6
|
+
|
|
7
|
+
> **Default failure mode:** marking every HITL slice as `blocking`. The same reviewer ends
|
|
8
|
+
> up approving low-stakes and high-stakes items at the same priority and the gate becomes
|
|
9
|
+
> a queue. Mix gate types per slice; most plans use 2-3 of the 4.
|
|
10
|
+
|
|
11
|
+
## The four gates
|
|
12
|
+
|
|
13
|
+
### advisory
|
|
14
|
+
|
|
15
|
+
**Stakes:** low. The slice can ship without the human's input; the question exists for
|
|
16
|
+
audit / future record / FYI.
|
|
17
|
+
|
|
18
|
+
**Behavior:** the slice runs. The question is logged to `questions.md` with
|
|
19
|
+
`gate: advisory` and an explanation. `state.md` does **not** flip to `awaiting_human`.
|
|
20
|
+
`/rite-status` surfaces the count but does not flag it as blocking.
|
|
21
|
+
|
|
22
|
+
**Example:** "We picked option A from the prototype's verdict but option B is also viable.
|
|
23
|
+
Recording the choice for posterity."
|
|
24
|
+
|
|
25
|
+
**SLA:** `none` — there is no waiting time because nothing is waiting.
|
|
26
|
+
|
|
27
|
+
### validating
|
|
28
|
+
|
|
29
|
+
**Stakes:** medium. The slice can be built but should not merge before a human signs off.
|
|
30
|
+
Async — the human reviews when they get to it, but the loop does not stall.
|
|
31
|
+
|
|
32
|
+
**Behavior:** in HITL mode, `/rite-build` pauses on this gate and writes
|
|
33
|
+
`Awaiting human` to `state.md`. In AFK mode with `allow_gates: [advisory, validating]`,
|
|
34
|
+
`/rite-build` builds the slice but marks it `built (pending review)` and writes the
|
|
35
|
+
validating question; the feature does not seal until the entry is resolved. An open
|
|
36
|
+
`gate: validating` entry is **merge-blocking by definition** — a slice marked
|
|
37
|
+
`built (pending review)` is not done, and seal is a NO-GO while it stands open.
|
|
38
|
+
|
|
39
|
+
**Example:** "Schema migration adds a non-null column with a default. Backfill plan is
|
|
40
|
+
recorded; reviewer should confirm the default is the right one for archived rows."
|
|
41
|
+
|
|
42
|
+
**SLA:** `4h` — the work continues but the validating queue should drain within hours,
|
|
43
|
+
not days.
|
|
44
|
+
|
|
45
|
+
### blocking
|
|
46
|
+
|
|
47
|
+
**Stakes:** high. The slice cannot proceed safely without the answer. Synchronous —
|
|
48
|
+
the loop stops.
|
|
49
|
+
|
|
50
|
+
**Behavior:** **always pauses regardless of `.devrites/AFK` config.** `/rite-build`
|
|
51
|
+
writes `Awaiting human`, sets `Status: awaiting_human`, fires the `notify:` hook, and
|
|
52
|
+
STOPs. The slice is not built until `/rite-resolve` lands.
|
|
53
|
+
|
|
54
|
+
**Examples:**
|
|
55
|
+
- Destructive migration (data loss risk).
|
|
56
|
+
- Auth/authz boundary change.
|
|
57
|
+
- Public API break.
|
|
58
|
+
- Spec drift that changes acceptance criteria.
|
|
59
|
+
- Tests / types / lint are red and the agent cannot tell whether the slice's contract is
|
|
60
|
+
wrong or the failing code is.
|
|
61
|
+
|
|
62
|
+
**SLA:** `15m` — synchronous gates demand fast turnaround; otherwise treat the work as
|
|
63
|
+
genuinely blocked and re-plan around it.
|
|
64
|
+
|
|
65
|
+
### escalating
|
|
66
|
+
|
|
67
|
+
**Stakes:** novel pattern. The question is not within the active reviewer's scope and
|
|
68
|
+
needs to route to a specialist (legal, security, principal engineer, designer-of-record).
|
|
69
|
+
|
|
70
|
+
**Behavior:** same pause behavior as `blocking`, but the `questions.md` entry includes a
|
|
71
|
+
`route:` field naming the specialist tag. `/rite-status` shows it under a separate
|
|
72
|
+
"Escalating" line so it doesn't compete with synchronous blockers for the same reviewer.
|
|
73
|
+
|
|
74
|
+
**Example:** "Slice introduces a contract with an external partner — needs legal review
|
|
75
|
+
of the data-sharing language."
|
|
76
|
+
|
|
77
|
+
**SLA:** `24h` — specialist routing implies the SLA is loose; if it needs to be tight,
|
|
78
|
+
it's actually `blocking`.
|
|
79
|
+
|
|
80
|
+
## Picking the gate
|
|
81
|
+
|
|
82
|
+
Apply this decision tree per HITL slice:
|
|
83
|
+
|
|
84
|
+
1. **Can the slice ship safely without the answer?**
|
|
85
|
+
- Yes → `advisory`.
|
|
86
|
+
- No → continue.
|
|
87
|
+
2. **Does the slice need a different reviewer than the default one?**
|
|
88
|
+
- Yes → `escalating`.
|
|
89
|
+
- No → continue.
|
|
90
|
+
3. **Can the slice be built but not merged until reviewed?**
|
|
91
|
+
- Yes → `validating`.
|
|
92
|
+
- No → `blocking`.
|
|
93
|
+
|
|
94
|
+
## SLA mapping
|
|
95
|
+
|
|
96
|
+
| Gate | SLA | Synchronous? |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| advisory | `none` | — (does not pause) |
|
|
99
|
+
| validating | `4h` | no (async; build continues, merge blocks) |
|
|
100
|
+
| blocking | `15m` | yes |
|
|
101
|
+
| escalating | `24h` | yes, but to a specialist |
|
|
102
|
+
|
|
103
|
+
SLAs are guidance for human reviewers and for tools that surface stale questions. DevRites
|
|
104
|
+
itself does not enforce them; `/rite-status` reports time since `raised_at` so the user
|
|
105
|
+
can see when a gate is slipping.
|
|
106
|
+
|
|
107
|
+
## AFK interaction
|
|
108
|
+
|
|
109
|
+
`.devrites/AFK` carries an `allow_gates:` list. AFK auto-handles a gate by logging the
|
|
110
|
+
question as advisory and proceeding **only when** the gate is in `allow_gates`. The
|
|
111
|
+
defaults and the always-pause rules:
|
|
112
|
+
|
|
113
|
+
| AFK `allow_gates` | advisory | validating | blocking | escalating |
|
|
114
|
+
|---|---|---|---|---|
|
|
115
|
+
| `[]` (or omitted) | log + proceed | pause | pause | pause |
|
|
116
|
+
| `[advisory]` (default) | log + proceed | pause | pause | pause |
|
|
117
|
+
| `[advisory, validating]` | log + proceed | build + queue | pause | pause |
|
|
118
|
+
| `[advisory, validating, blocking]` | log + proceed | build + queue | log + proceed* | pause |
|
|
119
|
+
|
|
120
|
+
\* but **never** for destructive migrations, auth/authz boundary changes, public API
|
|
121
|
+
breaks, or red tests/types/lint — those always pause. See
|
|
122
|
+
[`.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md) for the irreversible-risk
|
|
123
|
+
list.
|
|
124
|
+
|
|
125
|
+
`escalating` is never in `allow_gates` — specialist routing is not something AFK can
|
|
126
|
+
shortcut.
|
|
127
|
+
|
|
128
|
+
## Anti-patterns
|
|
129
|
+
|
|
130
|
+
- **One gate for everything.** Validates becomes a queue, blocks all work behind one
|
|
131
|
+
reviewer. Pick gates per slice.
|
|
132
|
+
- **Marking a destructive migration `validating` to "keep the loop moving".** Destructive
|
|
133
|
+
work is `blocking` regardless of the urge to ship.
|
|
134
|
+
- **`advisory` as a synonym for "I'm not sure but I don't want to ask".** If the slice
|
|
135
|
+
needs the answer, it's not advisory. Pick the right gate instead.
|
|
136
|
+
- **`escalating` with no `route:` field.** Without a specialist tag, an escalation is
|
|
137
|
+
just a slow blocker. Name who answers.
|
|
138
|
+
|
|
139
|
+
## Field shape in `tasks.md`
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
## SLICE-003: list endpoint
|
|
143
|
+
Mode: HITL
|
|
144
|
+
Gate: blocking
|
|
145
|
+
SLA: 15m
|
|
146
|
+
Checkpoint: Confirm (user_id, created_at) composite index choice vs two single-col indexes.
|
|
147
|
+
Blocked by: SLICE-002
|
|
148
|
+
...
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`Gate`, `SLA`, and `Checkpoint` are **required** when `Mode: HITL`. The plan readiness
|
|
152
|
+
gate in `plan-template.md` enforces this.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# `plan.md` template
|
|
2
|
+
|
|
3
|
+
Write **how** to build what `spec.md` defines. The plan is **living, not sacred** —
|
|
4
|
+
`/rite-plan` repairs it when reality disagrees. This is where technology choices live
|
|
5
|
+
(they're banned from the spec).
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Plan: <Feature>
|
|
9
|
+
Spec: ./spec.md Date: <date>
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
1–2 sentences: the primary requirement + the chosen approach.
|
|
13
|
+
|
|
14
|
+
## Technical context
|
|
15
|
+
- Language / runtime + version: <e.g. TypeScript 5, Node 20>
|
|
16
|
+
- Frameworks / libraries in play: <...>
|
|
17
|
+
- Storage / data: <...>
|
|
18
|
+
- Testing tools + commands: <from spec "Commands discovered">
|
|
19
|
+
- Target / platform / constraints: <...>
|
|
20
|
+
- `[NEEDS CLARIFICATION: ...]` for any unknown that affects the approach.
|
|
21
|
+
|
|
22
|
+
## Global constraints
|
|
23
|
+
Project-wide requirements from the spec that every slice implicitly includes — version
|
|
24
|
+
floors, dependency limits, naming/copy rules, platform requirements. One line each, exact
|
|
25
|
+
values **verbatim from spec.md** (a paraphrased constraint drifts by the time slice 4 builds).
|
|
26
|
+
|
|
27
|
+
## Approach
|
|
28
|
+
The strategy in a few sentences. Why this over the alternatives considered.
|
|
29
|
+
|
|
30
|
+
## Slice strategy
|
|
31
|
+
How the feature is split into vertical `SLICE-###` increments, why the order is
|
|
32
|
+
risk-first within dependency tiers, and which acceptance criteria each slice covers. For a
|
|
33
|
+
wide mechanical refactor, use expand → migrate batches → contract; keep every migrate batch
|
|
34
|
+
green, or name the integration branch + final verify slice.
|
|
35
|
+
|
|
36
|
+
## Architecture decisions
|
|
37
|
+
Key decisions + rationale (mirror into decisions.md). New pattern vs reuse — prefer
|
|
38
|
+
reuse of existing project conventions. Record architecture as invariants, not scaffolding:
|
|
39
|
+
include a decision only when two implementing slices could otherwise choose incompatibly. For each
|
|
40
|
+
medium+ decision, include `Binds:` (what future work must follow) and `Prevents:` (the divergence
|
|
41
|
+
or failure it avoids).
|
|
42
|
+
|
|
43
|
+
## Dependency graph
|
|
44
|
+
What must exist before what (text is fine):
|
|
45
|
+
- SLICE-001 (no deps) → SLICE-002 (needs SLICE-001) → SLICE-004 (needs SLICE-002, SLICE-003)
|
|
46
|
+
- SLICE-003 (independent / parallelizable)
|
|
47
|
+
|
|
48
|
+
## Implementation order
|
|
49
|
+
Ordered slice list + the reason for the order (risk-first within a dependency tier).
|
|
50
|
+
`MVP cut: after SLICE-00N — <what ships if we stop here>` — the earliest prefix of the order
|
|
51
|
+
that is a coherent, shippable feature on its own. This is the pre-agreed retreat position when
|
|
52
|
+
the feature stalls or `/rite-plan` pivots: every acceptance criterion above the cut is proven by
|
|
53
|
+
slices above the cut, and no slice above it depends on one below.
|
|
54
|
+
|
|
55
|
+
## Validation strategy
|
|
56
|
+
After which slices to run tests / build / browser proof. For UI slices, name the visual
|
|
57
|
+
acceptance targets from `design-brief.md`, not a generic "looks good" check.
|
|
58
|
+
|
|
59
|
+
**Key links** — the wiring the assembled feature must exhibit, one row each:
|
|
60
|
+
`<from> → <to> via <mechanism>` (route → handler via registration; producer → consumer via
|
|
61
|
+
event). List only cross-slice links whose absence no single
|
|
62
|
+
slice's tests would catch — `/rite-prove` walks each (step 5d). `Key links: none` is a
|
|
63
|
+
deliberate single-slice call.
|
|
64
|
+
|
|
65
|
+
## Complexity & deviations gate
|
|
66
|
+
List anything that deviates from DevRites defaults (prefer existing conventions, the
|
|
67
|
+
simplest approach, feature scope only, no new deps/design system) and **justify it**.
|
|
68
|
+
If you can't justify a deviation, simplify instead of recording it.
|
|
69
|
+
| Deviation | Why needed | Simpler option rejected because |
|
|
70
|
+
|-----------|-----------|---------------------------------|
|
|
71
|
+
| <e.g. new dependency X> | <reason> | <why the in-repo option won't work> |
|
|
72
|
+
|
|
73
|
+
## Rollback
|
|
74
|
+
How to back out each risky step (migration down, feature flag, revert boundary, backup).
|
|
75
|
+
|
|
76
|
+
## Scope boundaries
|
|
77
|
+
What this plan will NOT touch. Restate "Ask first" / "Never do" from the spec.
|
|
78
|
+
|
|
79
|
+
## Source docs needed
|
|
80
|
+
Framework/library docs to consult (triggers devrites-source-driven). Record URLs in
|
|
81
|
+
decisions.md / evidence.md when used.
|
|
82
|
+
|
|
83
|
+
## Readiness gate *(must pass before /rite-build)*
|
|
84
|
+
- [ ] Every spec acceptance criterion is covered by a slice
|
|
85
|
+
- [ ] Dependency order is acyclic and risk-first
|
|
86
|
+
- [ ] An `MVP cut` is named, self-contained (ACs above the cut proven above the cut, no dependency reaching below), and marks a genuinely shippable scope
|
|
87
|
+
- [ ] No unjustified deviation remains in the complexity gate
|
|
88
|
+
- [ ] Rollback exists for every destructive / migration step
|
|
89
|
+
- [ ] Every `Mode: HITL` slice has `Gate`, `SLA`, and `Checkpoint` populated
|
|
90
|
+
- [ ] Every UI slice names `Design brief states` and binary `Visual acceptance`
|
|
91
|
+
- [ ] `Key links` rows cover every cross-slice wiring (or state `none`)
|
|
92
|
+
- [ ] Any wide mechanical refactor is sliced expand → migrate batches → contract, with green migrate batches or an integration branch + final verify slice
|
|
93
|
+
- [ ] No `Gate: blocking` slice is implicitly chained behind an AFK slice without surfacing the dependency
|
|
94
|
+
```
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-doctor
|
|
3
|
+
description: Doctor DevRites setup or index health. Use when workflow wiring is broken, the user asks to check DevRites, or says "reindex". Not for application bugs.
|
|
4
|
+
argument-hint: "[--code | --reindex]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-doctor — health check
|
|
9
|
+
|
|
10
|
+
The on-demand deep report. The same checks run **silently at session start** (the orient
|
|
11
|
+
hook surfaces issues only when there are any); `/rite-doctor` runs them **verbosely** —
|
|
12
|
+
printing every check, pass or fail — so you can inspect health even when nothing is broken.
|
|
13
|
+
It covers version drift, Claude Code wiring, optional Codex mirrors/hooks, stale host artifacts, and missing install markers when those files are present. With `--code`, it also runs the read-only project code-health dashboard (`devrites-engine health`).
|
|
14
|
+
It also reports an in-progress git merge/rebase and points to `git-workflow.md`'s conflict
|
|
15
|
+
recovery playbook.
|
|
16
|
+
|
|
17
|
+
It is **read-only**: it never edits the workspace, never advances a phase, never blocks.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
1. Run the diagnose core verbosely (resolve across install layouts):
|
|
21
|
+
```bash
|
|
22
|
+
devrites-engine doctor --verbose; echo "doctor rc=$?"
|
|
23
|
+
```
|
|
24
|
+
1a. **Surface the learnings nudge** — point the user at `/rite-learn` when a pattern recurs across
|
|
25
|
+
shipped features (read-only; silent when there's nothing to say):
|
|
26
|
+
```bash
|
|
27
|
+
devrites-engine learnings nudge
|
|
28
|
+
```
|
|
29
|
+
1b. **Code-health dashboard (only when `$ARGUMENTS` includes `--code`).** Run the read-only check and surface the PASS/WARN/FAIL table; it appends `.devrites/health.jsonl` for trends and never blocks doctor:
|
|
30
|
+
```bash
|
|
31
|
+
devrites-engine health; echo "health rc=$?"
|
|
32
|
+
```
|
|
33
|
+
1c. **Validate project extensions + overrides** (read-only — report, don't sync). A user rite/
|
|
34
|
+
reviewer under `.devrites/extensions/` is held to the same schema as the shipped pack; a
|
|
35
|
+
reviewer override under `.devrites/overrides/` may add emphasis but never relax a gate:
|
|
36
|
+
```bash
|
|
37
|
+
devrites-engine extensions validate; echo "extensions rc=$?"
|
|
38
|
+
devrites-engine overrides validate; echo "overrides rc=$?"
|
|
39
|
+
```
|
|
40
|
+
- **extensions rc=1** — an extension is malformed (missing frontmatter, empty, duplicate name).
|
|
41
|
+
Fix the named file; once valid, the user mirrors it into the harness with
|
|
42
|
+
`devrites-engine extensions sync`.
|
|
43
|
+
- **overrides rc=1** — an override reads like it waives a gate. That is the one thing overrides
|
|
44
|
+
must not do — hand the user the offending file to rewrite as added emphasis, not a waiver.
|
|
45
|
+
1d. **Refresh indexes only when `$ARGUMENTS` includes `--reindex`.** Load and execute
|
|
46
|
+
`devrites-refresh-indexes`; report its synchronous refresh result, then continue the
|
|
47
|
+
diagnostic. This changes optional indexes, never project source or DevRites state.
|
|
48
|
+
2. Report the result. **rc=0** → "DevRites healthy" + the `ok:` checks. **rc=1** → list each
|
|
49
|
+
`issue:` line with the fix it names, then the single command that resolves the most urgent
|
|
50
|
+
one (a stale ACTIVE → `rite use <slug>` or `/rite-status`; an orphaned gate →
|
|
51
|
+
`/rite-resolve <qid>`; an incomplete install → reinstall). If the output includes
|
|
52
|
+
`git-state: merge in progress` or `git-state: rebase in progress`, make the next action the
|
|
53
|
+
`git-workflow.md` merge-conflict recovery playbook.
|
|
54
|
+
3. **Do not fix anything yourself** — doctor is diagnostic. Hand the user the fix command.
|
|
55
|
+
**Completion:** exactly one highest-priority fix command is reported and no source/workspace file changed.
|
|
56
|
+
|
|
57
|
+
## Gotchas
|
|
58
|
+
- Read-only — never write the workspace or advance a phase (that's the lifecycle skills' job).
|
|
59
|
+
- It diagnoses **DevRites** health, not the user's application — code bugs go to
|
|
60
|
+
`devrites-debug-recovery`; feature progress goes to `/rite-status`.
|
|
61
|
+
- Healthy is the common case; say so plainly and stop. Don't invent issues.
|
|
62
|
+
|
|
63
|
+
## Output
|
|
64
|
+
Reply-contract exception: workspace-less diagnostic. It does not render `devrites
|
|
65
|
+
progress`, but it follows the compact labels and one-next-action rule from
|
|
66
|
+
[`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md).
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Done: DevRites health checked; <OK | n issues>.
|
|
70
|
+
Changed: workspace only
|
|
71
|
+
Evidence: devrites-engine doctor --verbose rc=<0|1>; health <skipped|PASS|WARN|FAIL>; reindex <skipped|result>; learnings nudge <summary|none>; extensions/overrides <ok|n issues>
|
|
72
|
+
Open: <none | issue count and top issue>
|
|
73
|
+
Next: <single command for the most urgent issue>
|
|
74
|
+
Record: not applicable
|
|
75
|
+
↻ Hygiene: /clear if stopping; /compact (doctor issue) if fixing now
|
|
76
|
+
```
|