devrites 2.6.0 → 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 +77 -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 -913
- 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,25 @@
|
|
|
1
|
+
# Failure triage
|
|
2
|
+
|
|
3
|
+
When a test/build/runtime/browser check fails, triage before fixing. Delegates the deep
|
|
4
|
+
loop to `devrites-debug-recovery`.
|
|
5
|
+
|
|
6
|
+
## Triage ladder
|
|
7
|
+
1. **Reproduce** — run the failing command again; capture the exact error (quote it).
|
|
8
|
+
2. **Classify** the failure:
|
|
9
|
+
- test is right, code is wrong → fix the code (in scope).
|
|
10
|
+
- test is wrong/outdated → that may be **spec drift** (acceptance criteria wrong).
|
|
11
|
+
- environment/setup (missing dep, wrong node/ruby) → fix setup or record blocker.
|
|
12
|
+
- flaky (passes on re-run, timing/order) → note it; don't paper over with retries.
|
|
13
|
+
- external dependency down → record blocker; don't fake the result.
|
|
14
|
+
3. **Isolate** — minimize to the smallest failing case; bisect the diff if needed.
|
|
15
|
+
4. **Fix within scope** — the current slice/feature only. If the fix reaches outside
|
|
16
|
+
scope, stop and record a blocker in `state.md` (then `/rite-plan unblock`).
|
|
17
|
+
5. **Re-run** the same command; confirm green; record both attempts in `evidence.md`.
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
- Quote the real error text; don't paraphrase it away.
|
|
21
|
+
- Don't loosen/delete a failing assertion to get green — investigate whether it's drift.
|
|
22
|
+
- Don't add blanket retries/sleeps to hide flakiness.
|
|
23
|
+
- Three failed fix attempts on the same root cause → escalate: `devrites-debug-recovery`
|
|
24
|
+
for a hypothesis-driven pass, or ask the user.
|
|
25
|
+
- A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Proof ladder
|
|
2
|
+
|
|
3
|
+
Prefer real runtime evidence. For UI/browser work, try tools top-down and record which
|
|
4
|
+
rung you used. Detect, don't install — browser tooling setup is the user's call.
|
|
5
|
+
|
|
6
|
+
1. **Playwright MCP** (preferred when configured)
|
|
7
|
+
- Detect: the Playwright MCP `browser_*` tools are available (e.g. `browser_navigate`).
|
|
8
|
+
Capabilities: navigation, accessibility-tree snapshots, screenshots, ref-based
|
|
9
|
+
clicks/typing, console messages, network requests, `browser_evaluate`. Drives a
|
|
10
|
+
Playwright-managed browser; detect, don't install.
|
|
11
|
+
2. **Chrome DevTools MCP** (when configured — pairs with Playwright MCP for Lighthouse, the
|
|
12
|
+
perf trace, and deeper DOM) — screenshots, DOM, console, network, performance,
|
|
13
|
+
accessibility tree.
|
|
14
|
+
3. **Claude Code `/run` and `/verify`** (if available) — launch and observe the app;
|
|
15
|
+
prefer a project-specific run/verify skill if one exists.
|
|
16
|
+
4. **Project-native E2E** (only if already present) — Playwright, Cypress, Capybara,
|
|
17
|
+
Selenium. Use the project's existing commands; don't add a new framework.
|
|
18
|
+
5. **Manual fallback** — no tooling available: record the limitation and write exact
|
|
19
|
+
manual steps (route, action, expected result).
|
|
20
|
+
|
|
21
|
+
## Non-UI scope
|
|
22
|
+
The "ladder" for backend/CLI/data scope is just: targeted tests → build/typecheck/lint
|
|
23
|
+
→ runtime observation (a real request/response or CLI run). Same evidence rules apply.
|
|
24
|
+
|
|
25
|
+
## Stop conditions
|
|
26
|
+
- Auth wall reached → stop, ask the user; never type credentials from a screenshot.
|
|
27
|
+
- Destructive action required to prove → confirm with the user first.
|
|
28
|
+
- A screenshot tool returns a path → **open and describe it**; a path is not proof.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Test / build command discovery
|
|
2
|
+
|
|
3
|
+
Use the project's own commands. Never invent a test runner or build step. Discover from
|
|
4
|
+
these sources, in roughly this order of authority:
|
|
5
|
+
|
|
6
|
+
| Source | Look for |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `spec.md` → "Commands discovered" | already-found commands (trust first) |
|
|
9
|
+
| `package.json` `scripts` | `test`, `build`, `typecheck`, `lint`, `dev`, `e2e` |
|
|
10
|
+
| `Makefile` / `Justfile` / `Taskfile` | `test`, `build`, `check`, `lint` targets |
|
|
11
|
+
| `Gemfile` / `Rakefile` | `rake test`, `rspec`, `bin/rails test` |
|
|
12
|
+
| `pyproject.toml` / `tox.ini` / `noxfile.py` | `pytest`, `tox`, `nox` |
|
|
13
|
+
| `go.mod` | `go test ./...`, `go build ./...`, `go vet` |
|
|
14
|
+
| `Cargo.toml` | `cargo test`, `cargo build`, `cargo clippy` |
|
|
15
|
+
| CI configs (`.github/workflows`, `.gitlab-ci.yml`, `circleci`) | the exact commands CI runs — the source of truth for "green" |
|
|
16
|
+
| README / CONTRIBUTING | documented dev/test workflow |
|
|
17
|
+
| framework conventions | Rails/Django/Next/etc. defaults when nothing else is set |
|
|
18
|
+
|
|
19
|
+
## Targeted first
|
|
20
|
+
Run the **narrowest** command that exercises the slice (a single test file/path),
|
|
21
|
+
then widen. A full suite is slower and noisier; use it for the final check, not the
|
|
22
|
+
inner loop.
|
|
23
|
+
|
|
24
|
+
## Record what you found
|
|
25
|
+
Write the discovered commands back into `spec.md` → "Commands discovered" so later
|
|
26
|
+
phases (and `/rite-seal`) don't rediscover them. Note the runner version if it matters.
|
|
27
|
+
|
|
28
|
+
## If nothing exists
|
|
29
|
+
No tests in the project: say so. Propose the minimal test setup as a **follow-up**
|
|
30
|
+
(ask before adding a framework), and prove the slice via runtime observation meanwhile.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-quick
|
|
3
|
+
description: Express lane for a small reversible change: typo/copy/config, rate-limit constant, error message, local variable rename, feature flag, README link, one-file/function fix.
|
|
4
|
+
argument-hint: "<what to change>"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-quick — express lane for small changes
|
|
9
|
+
|
|
10
|
+
The full DevRites lifecycle is right for real features; it is **ceremony** for a typo, a
|
|
11
|
+
copy tweak, a one-function fix, or a small config change. `/rite-quick` keeps the
|
|
12
|
+
discipline that matters (idiom, TDD, evidence, escape-to-full-lifecycle) and drops the
|
|
13
|
+
artifacts that don't, in a **single pass**. Senior-engineer "right step, right time" made
|
|
14
|
+
executable, not advisory.
|
|
15
|
+
|
|
16
|
+
## The significance gate (the whole safety story)
|
|
17
|
+
|
|
18
|
+
**Run this first. If ANY of these holds, STOP and route to `/rite-spec` — do NOT use the
|
|
19
|
+
express lane:**
|
|
20
|
+
- Touches **auth / authz**, a **data migration**, a **public API contract**, or any
|
|
21
|
+
**destructive / data-loss** path (the irreversible-risk list — `standards/afk-hitl.md`).
|
|
22
|
+
- Spans **more than one vertical slice**, or more than a couple of files of real logic.
|
|
23
|
+
- **Ambiguous scope** — you'd have to guess what "done" means, or the ask hides a design
|
|
24
|
+
decision (data model, new dependency, second design system).
|
|
25
|
+
- Security-sensitive input handling, or a measurable performance-critical path.
|
|
26
|
+
- Would **break a declared project principle** (`.devrites/principles.md`) with no recorded,
|
|
27
|
+
human-approved exception — the express lane never relaxes a project gate; a needed exception is
|
|
28
|
+
a deliberate human decision, so route it to `/rite-spec`.
|
|
29
|
+
|
|
30
|
+
If none hold, the change is small + reversible + unambiguous → proceed. **When in doubt,
|
|
31
|
+
escalate** — the cost of the full lifecycle on a small change is minutes; the cost of the
|
|
32
|
+
express lane on a risky one is the failure mode the lifecycle exists to prevent.
|
|
33
|
+
|
|
34
|
+
## Rules consulted
|
|
35
|
+
Load this lane's conditional standards when needed:
|
|
36
|
+
- `coding-style.md` — naming, guard clauses, reuse-first.
|
|
37
|
+
- `testing.md` — TDD, **completeness** (every touched behavior/element asserted) +
|
|
38
|
+
**assertion strength** (no tautological tests; see it fail first), scaled to the change.
|
|
39
|
+
- `error-handling.md` / `security.md` — only if the change touches input/errors.
|
|
40
|
+
- `principles.md` — when `.devrites/principles.md` exists; a change that breaks an invariant is a gate, not a quick fix.
|
|
41
|
+
- `definition-of-done.md` — standing Done bar: acceptance mapped, fresh proof, no open hard gates, scoped edits, rollback/docs where needed.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
0. **Orient.** Read `core.md`. If a `.devrites/` workspace is active, run the preamble to
|
|
46
|
+
see it; `/rite-quick` does **not** require one and does **not** create the full tree.
|
|
47
|
+
1. **Significance gate** (above). Fail → STOP, tell the user to run `/rite-spec <feature>`.
|
|
48
|
+
2. **One-line contract.** Restate in 1–3 lines: the change, its **acceptance** (how you'll
|
|
49
|
+
know it works), and the **scope boundary** (what you will NOT touch). This is the entire
|
|
50
|
+
"spec + plan" for a quick change — keep it in the chat; optionally drop a `brief.md` +
|
|
51
|
+
`evidence.md` under `.devrites/work/<slug>/` if the user wants a record. This is the
|
|
52
|
+
`/rite-frame` FRAME move: if the acceptance won't reduce to a check that could be *false*,
|
|
53
|
+
the ask is ambiguous → escalate per the significance gate. Its AUDIT pass is the diff
|
|
54
|
+
self-review in step 5.
|
|
55
|
+
3. **Build with TDD.** Failing test first when behavior changes (see it fail for the right
|
|
56
|
+
reason) → smallest complete change in the **project's idiom** (reuse before you write,
|
|
57
|
+
anti-AI-slop) → cover every touched behavior / interactive element with a **real**
|
|
58
|
+
assertion. UI → check the states + a browser glance.
|
|
59
|
+
4. **Prove (scoped).** Run the **targeted** tests + typecheck / lint for what changed (not
|
|
60
|
+
the whole suite) → green. Record the command + output. A tautological test that can't
|
|
61
|
+
fail is not proof.
|
|
62
|
+
5. **Review-lite + ship.** Self-review the diff (correctness, scope, idiom, and — if
|
|
63
|
+
`.devrites/principles.md` exists — no declared invariant broken; this is `/rite-frame`'s AUDIT
|
|
64
|
+
pass — one pass, no subagent fan-out). Show the diff, then on the user's confirm commit it
|
|
65
|
+
(Conventional Commits, atomic) — or hand to `/rite-ship` if a workspace is active. **Never push
|
|
66
|
+
without the user asking.**
|
|
67
|
+
|
|
68
|
+
## Escalation (mid-flight) — the Spec Drift Guard still applies
|
|
69
|
+
If the "small" change turns out to be not small — a second slice appears, a real design
|
|
70
|
+
decision surfaces, scope grows past the boundary, or you hit an irreversible-risk item —
|
|
71
|
+
**STOP, say so, and route to `/rite-spec` / `/rite-define`**. Don't quietly grow a quick
|
|
72
|
+
fix into an unreviewed feature; that's the exact drift the lifecycle guards against.
|
|
73
|
+
|
|
74
|
+
## Output
|
|
75
|
+
Run `devrites-engine progress` when a workspace is active; otherwise skip it. Then use the
|
|
76
|
+
shared completion reply contract
|
|
77
|
+
([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
|
|
78
|
+
Default success shape:
|
|
79
|
+
```
|
|
80
|
+
Done: quick change complete — <one line>.
|
|
81
|
+
Changed: <files touched>
|
|
82
|
+
Evidence: tests <cmd -> pass>; assertion check <real asserts saw red | n/a>; boundary held yes
|
|
83
|
+
Open: <none | non-blocking follow-up | tracked workspace needs ship>
|
|
84
|
+
Next: <single recommended command>
|
|
85
|
+
Record: <commit/PR path | .devrites/work/<slug>/evidence.md | not applicable>
|
|
86
|
+
↻ Hygiene: /clear after commit
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If the quick boundary does not hold or an escalation remains, use `Stopped / blocked`
|
|
90
|
+
and route to the full lifecycle; do not render `Done`.
|
|
91
|
+
|
|
92
|
+
**DO NOT** use this lane to dodge the gate — the express lane is for changes that are
|
|
93
|
+
*actually* small, not for shipping risky work faster.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-resolve
|
|
3
|
+
description: User-invoked resume verb for answering, dropping, or batch-resolving open `questions.md` gates.
|
|
4
|
+
argument-hint: "<qid> \"<answer>\" | --drop <qid> [\"<reason>\"] | --batch <path-to-yaml>"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /rite-resolve — answer the human gate
|
|
10
|
+
|
|
11
|
+
`/rite-resolve` is the canonical resume verb for **async** human gates — a checkpoint that
|
|
12
|
+
already paused and **stopped the session** (an AFK blocking/escalating/irreversible queue, or a
|
|
13
|
+
HITL pause the human walked away from), plus `--batch`. When `/rite-build` asks a gap **inline**
|
|
14
|
+
via `AskUserQuestion` and the human is present, that pick resolves the gate **in place** through
|
|
15
|
+
the same `devrites-engine resolve` writer — you don't type `/rite-resolve` for it. For the async case this
|
|
16
|
+
skill takes the human's answer (or `--drop` / `--batch`), writes it to `questions.md`, updates
|
|
17
|
+
`state.md` (clears `Awaiting human`, sets `Status: running`), and recommends the next command.
|
|
18
|
+
|
|
19
|
+
It is **deliberately small**: one verb, one source of truth (`questions.md`), one cursor
|
|
20
|
+
(`state.md`). The full AFK / HITL contract lives in
|
|
21
|
+
[`afk-hitl.md`](../devrites-lib/reference/standards/afk-hitl.md).
|
|
22
|
+
|
|
23
|
+
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
24
|
+
|
|
25
|
+
Pull these via `Read` when shaping the resolve:
|
|
26
|
+
|
|
27
|
+
- `afk-hitl.md` — gate taxonomy, `questions.md` schema, AFK exception rules.
|
|
28
|
+
- `documentation.md` — record decisions and rationale where the answer changes scope.
|
|
29
|
+
|
|
30
|
+
## Operating rules
|
|
31
|
+
|
|
32
|
+
- **Requires an active workspace.** Read `.devrites/ACTIVE` first; if empty or the slug
|
|
33
|
+
has no `questions.md`, **STOP** and tell the user to run `/rite-spec <feature>` first.
|
|
34
|
+
- **One mutation per call.** A single qid (or `--batch` file) per invocation; never
|
|
35
|
+
silently coalesce multiple human decisions into one log entry.
|
|
36
|
+
- **Never overwrite an answered question.** If the qid's `status` is `answered` or
|
|
37
|
+
`dropped`, refuse with the existing answer; ask the user to open a new qid that
|
|
38
|
+
references the old one (the file is the audit trail).
|
|
39
|
+
- **If the answer materially changes scope, architecture, or acceptance**, route it
|
|
40
|
+
through the Spec Drift Guard (`/rite-plan repair`) **after** writing the answer — do
|
|
41
|
+
not modify `spec.md` / `plan.md` inside this skill.
|
|
42
|
+
- **The script is the source of truth.** Always invoke
|
|
43
|
+
`devrites-engine resolve` — it keeps `questions.md` + `state.md` consistent and emits the
|
|
44
|
+
next-action recommendation. The one `state.md` field this skill may write by hand is the
|
|
45
|
+
unblocked slice's `Slice mode` (step 4, the named exception); everything else goes through
|
|
46
|
+
the script, never by hand.
|
|
47
|
+
- **Human gates are for human-only decisions, not the agent's work.** A `questions.md` entry the
|
|
48
|
+
human must answer is a genuine *decision* (a scope / design / risk call only the human can make)
|
|
49
|
+
— not a task the agent can do itself. If a question is really agent-doable ("should I write the
|
|
50
|
+
test?", "go implement X"), don't record a human answer that punts the agent's own job back to it:
|
|
51
|
+
flag the mis-tag and route it to the right skill (`/rite-build`, `/rite-plan unblock`,
|
|
52
|
+
`devrites-debug-recovery`). The human resolves decisions; the agent does the work.
|
|
53
|
+
|
|
54
|
+
## Workflow
|
|
55
|
+
|
|
56
|
+
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** (operating rules + persistence discipline) before
|
|
57
|
+
touching the workspace.
|
|
58
|
+
Then run `devrites-engine preamble` for deterministic workspace orientation.
|
|
59
|
+
1. **Parse arguments.** `$ARGUMENTS` is one of:
|
|
60
|
+
- `<qid> "<answer>"` — answer the single open question.
|
|
61
|
+
- `--drop <qid>` (optional `"<reason>"`) — mark the question `dropped`; record
|
|
62
|
+
the reason inline.
|
|
63
|
+
- `--batch <path-to-yaml>` — bulk resolve, one entry per qid (see
|
|
64
|
+
[`reference/answer-protocol.md`](reference/answer-protocol.md) for the batch
|
|
65
|
+
format).
|
|
66
|
+
2. **Load context.** Read `state.md`, `questions.md`, and the relevant slice from
|
|
67
|
+
`tasks.md`. Confirm the qid is `status: open`. If `state.md` `Status` is not
|
|
68
|
+
`awaiting_human` and the question's `gate` is `blocking`, surface the inconsistency
|
|
69
|
+
before proceeding (don't auto-repair — flag it).
|
|
70
|
+
3. **Render preview.** Echo the qid, the question, the proposed answer (if any), the
|
|
71
|
+
user's answer, and which slice unblocks. Stop here and ask `confirm? (y/N)` **unless**
|
|
72
|
+
the answer was provided non-interactively via `--batch`.
|
|
73
|
+
4. **Mutate.** Run `devrites-engine resolve` with the same
|
|
74
|
+
arguments. The script:
|
|
75
|
+
- flips the qid's `status` to `answered` / `dropped` and stamps `answered_at` + `answer`;
|
|
76
|
+
- if the qid is in `state.md`'s `Awaiting human` block (single-question pause), clears
|
|
77
|
+
that block and sets `Status: running`;
|
|
78
|
+
- appends a `Log` line to `state.md`.
|
|
79
|
+
|
|
80
|
+
On resume, also clear or update the unblocked slice's `Slice mode` in `state.md`: if
|
|
81
|
+
the answer lets the slice proceed, drop the pause-time `Slice mode` so `/rite-build`
|
|
82
|
+
re-derives it on the next selection; if the answer re-shapes how the slice should be
|
|
83
|
+
built, set `Slice mode` to match.
|
|
84
|
+
5. **Post-resolve hand-off.** If the answer changes product behavior or acceptance →
|
|
85
|
+
recommend `/rite-plan repair`. Otherwise → recommend the slice's natural next action
|
|
86
|
+
(typically `/rite-build` for the slice that was awaiting).
|
|
87
|
+
**Completion:** the resolved state contains exactly one next command.
|
|
88
|
+
6. **STOP.** This skill does not run `/rite-build` itself — the user re-enters the
|
|
89
|
+
workflow explicitly.
|
|
90
|
+
|
|
91
|
+
> **Mid-flight discipline.** Don't edit `spec.md` / `plan.md` to "incorporate" the
|
|
92
|
+
> answer — that's `/rite-plan repair`. Don't silently retry a build after the answer
|
|
93
|
+
> lands — the user types the next command. Don't merge two open questions into one
|
|
94
|
+
> answered entry — each question is independently auditable.
|
|
95
|
+
|
|
96
|
+
## Output
|
|
97
|
+
|
|
98
|
+
**Progress first** — run `devrites-engine progress`, then use the shared completion reply contract
|
|
99
|
+
([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
|
|
100
|
+
Default success shape:
|
|
101
|
+
```
|
|
102
|
+
Done: resolved <qid> for <gate> at <slice/phase>.
|
|
103
|
+
Changed: questions.md, state.md, decisions.md <updated|n/a>
|
|
104
|
+
Evidence: not applicable; answer persisted before resume
|
|
105
|
+
Open: <none | remaining questions | plan repair needed>
|
|
106
|
+
Next: <single recommended command>
|
|
107
|
+
Record: .devrites/work/<slug>/questions.md
|
|
108
|
+
↻ Hygiene: no /clear needed; the answer is persisted
|
|
109
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Answer protocol — how `/rite-resolve` mutates the workspace
|
|
2
|
+
|
|
3
|
+
`/rite-resolve` is the single canonical writer for `questions.md` `status` flips and
|
|
4
|
+
`state.md` `Awaiting human` clearance. This file is the reference for the three input
|
|
5
|
+
shapes, the batch file format, and the rules the underlying `devrites-engine resolve` obeys.
|
|
6
|
+
|
|
7
|
+
## Three input shapes
|
|
8
|
+
|
|
9
|
+
### 1. Single answer
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/rite-resolve q-2026-05-28-001 "composite index — single key is fine for now, revisit at 1M rows"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- The qid must be `status: open`. Re-answering is refused (see "Never overwrite").
|
|
16
|
+
- The answer is recorded verbatim. Use straight quotes around the answer so the shell
|
|
17
|
+
preserves whitespace.
|
|
18
|
+
|
|
19
|
+
### 2. Drop
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
/rite-resolve --drop q-2026-05-28-002 "merged into q-...-003 after we narrowed the scope"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- A drop is **not** an answer — it removes the question from the active queue without
|
|
26
|
+
recording a decision. Use it when the question is obsolete, a duplicate, or absorbed
|
|
27
|
+
by a re-plan.
|
|
28
|
+
- The reason is an optional single trailing string, **strongly recommended** for the
|
|
29
|
+
audit trail. "obsolete" / "duplicate" / "absorbed by Slice N" are sufficient; if omitted,
|
|
30
|
+
`devrites-engine resolve` records the reason as `dropped`.
|
|
31
|
+
|
|
32
|
+
### 3. Batch
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
/rite-resolve --batch .devrites/work/<slug>/answers.batch
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The batch file is plain text, one resolution per line. Two line shapes:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
q-2026-05-28-001: composite index, revisit at 1M rows
|
|
42
|
+
q-2026-05-28-002: clinician sign-off required at runtime, not at plan time
|
|
43
|
+
--drop q-2026-05-28-003: merged into q-...-004
|
|
44
|
+
# Lines starting with # are comments. Blank lines ignored.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- One qid per line. The first colon is the separator; the rest of the line is the value.
|
|
48
|
+
- Order matters only for `state.md` clearance — the script processes top-to-bottom and
|
|
49
|
+
flushes `Awaiting human` after each match.
|
|
50
|
+
- Errors abort the batch at the first failing line so partial state is small and
|
|
51
|
+
diagnosable. (Re-run after fixing the offending line; already-applied lines refuse to
|
|
52
|
+
re-apply because their `status` is no longer `open`.)
|
|
53
|
+
|
|
54
|
+
## Never overwrite
|
|
55
|
+
|
|
56
|
+
A qid that is already `answered` or `dropped` refuses to be re-resolved. The audit trail
|
|
57
|
+
is the file — you do not edit history. If the original answer was wrong:
|
|
58
|
+
|
|
59
|
+
1. Open a new qid (the agent will, during the next `/rite-build` if the bad answer
|
|
60
|
+
re-surfaces; or you write it manually).
|
|
61
|
+
2. Reference the old qid in the new question's body (`supersedes: q-...-001`).
|
|
62
|
+
3. Resolve the new qid.
|
|
63
|
+
|
|
64
|
+
The same rule applies to `--drop`: a dropped question is not undropped. Re-raise it as
|
|
65
|
+
a new qid if it turns out to matter after all.
|
|
66
|
+
|
|
67
|
+
## State machine
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
open ──answer──▶ answered (terminal)
|
|
71
|
+
│
|
|
72
|
+
└──drop────▶ dropped (terminal)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Both terminals stamp `answered_at: <iso>` and write the answer/reason to `answer:`.
|
|
76
|
+
|
|
77
|
+
## `state.md` clearance rules
|
|
78
|
+
|
|
79
|
+
`state.md`'s `Awaiting human` block is **single-question by default** — `/rite-build`
|
|
80
|
+
writes one block at a time and pauses. When `/rite-resolve` matches the block's qid:
|
|
81
|
+
|
|
82
|
+
- the entire `Awaiting human` block is removed (header + fields);
|
|
83
|
+
- `- Status: running` is set;
|
|
84
|
+
- a `Log` line is appended: `- <iso> build: resolved <qid>`.
|
|
85
|
+
|
|
86
|
+
If `state.md`'s `Status` is `awaiting_human` but no `Awaiting human` block matches the
|
|
87
|
+
qid (drift between the two files), `/rite-resolve` flags the inconsistency and refuses
|
|
88
|
+
to silently fix it. Use `/rite-plan repair` to reconcile.
|
|
89
|
+
|
|
90
|
+
If the answer materially changes spec/plan, **do not** edit `spec.md` or `plan.md` inside
|
|
91
|
+
`/rite-resolve` — that's `/rite-plan repair`'s job. The skill's post-resolve hand-off
|
|
92
|
+
recommends `/rite-plan repair` whenever the answer touches acceptance criteria, scope,
|
|
93
|
+
or architecture.
|
|
94
|
+
|
|
95
|
+
## Multi-question awaiting
|
|
96
|
+
|
|
97
|
+
If a future evolution lets `/rite-build` queue multiple questions per pause, the
|
|
98
|
+
`Awaiting human` block becomes a YAML list. `/rite-resolve` will:
|
|
99
|
+
|
|
100
|
+
- match the qid in the list and remove only that entry;
|
|
101
|
+
- leave the rest of the list intact;
|
|
102
|
+
- flip `Status: running` only when the list is empty.
|
|
103
|
+
|
|
104
|
+
This shape is reserved — current `/rite-build` writes one question per pause.
|
|
105
|
+
|
|
106
|
+
## Why no auto-`/rite-build` after resolve
|
|
107
|
+
|
|
108
|
+
The user types the next command explicitly. Reasons:
|
|
109
|
+
|
|
110
|
+
1. The answer may need a `/rite-plan repair` first; auto-continuing would build against
|
|
111
|
+
a stale plan.
|
|
112
|
+
2. The user may want to `/rite-status` before resuming.
|
|
113
|
+
3. Atomicity: one verb, one mutation. Chaining is a hidden side-effect that hides bugs.
|
|
114
|
+
|
|
115
|
+
The output's `Next:` line is a recommendation, not an auto-run.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-review
|
|
3
|
+
description: Review polished feature diff for correctness, readability, architecture, security, tests proving acceptance, Critical/Important findings, and quality dimensions before seal.
|
|
4
|
+
argument-hint: "[scope: slice N | feature] [--full]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-review — feature-scoped review
|
|
9
|
+
|
|
10
|
+
Senior review of the **active feature scope only**. **Read the active workspace first**;
|
|
11
|
+
if none, tell the user to run `/rite-spec <feature>`.
|
|
12
|
+
|
|
13
|
+
> **Differs from built-in `/code-review` in:** `/code-review` is a generic
|
|
14
|
+
> diff review with no workspace context. `/rite-review` reads
|
|
15
|
+
> `.devrites/work/<slug>/spec.md` first, runs Spec ↔ Code-review axes as
|
|
16
|
+
> parallel subagents (see [`parallel-dispatch.md`](../devrites-lib/reference/parallel-dispatch.md)), and gates feeding
|
|
17
|
+
> into `/rite-seal`. Use `/code-review` for a one-off diff; use
|
|
18
|
+
> `/rite-review` for a DevRites feature where the spec is the contract.
|
|
19
|
+
|
|
20
|
+
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
21
|
+
Pull these via `Read` when the diff demands them:
|
|
22
|
+
- `code-review.md` — small PRs, severity labels, tests-first review focus.
|
|
23
|
+
- `review-checklist.md` — compact pass/fail sweep before reporting the verdict.
|
|
24
|
+
- `principles.md` — declared project invariants (`.devrites/principles.md`); a diff that violates one with no recorded exception is a Critical, blocking finding.
|
|
25
|
+
- `testing.md` — confirm the tests prove the spec, not just pass.
|
|
26
|
+
- `agents.md` — when to fan out to which review subagent.
|
|
27
|
+
- `security.md` — when input / auth / data / integrations / secrets are in scope.
|
|
28
|
+
- `security-checklist.md` — for the same security-sensitive scope, the compact trust-boundary sweep.
|
|
29
|
+
- `performance.md` — only when perf is relevant or a regression risk is visible.
|
|
30
|
+
|
|
31
|
+
## Operating rules
|
|
32
|
+
- **Feature scope only.** Review touched files + the diff. **NO whole-project refactors,
|
|
33
|
+
NO drive-by cleanup.** DO NOT delete suspected dead code outside this feature without
|
|
34
|
+
asking. Spec Drift Guard applies.
|
|
35
|
+
- **Reviews the finished product.** `/rite-polish` has already done **code simplification**
|
|
36
|
+
+ UI normalize/polish. Review judges; if it reveals a real complexity issue polish
|
|
37
|
+
missed, flag it as a finding — don't re-run a simplification sweep here.
|
|
38
|
+
- Findings are labeled (below). Re-prove after any change you make.
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
0. Read `.claude/skills/devrites-lib/reference/standards/core.md` first (the always-on operating rules); pull the
|
|
42
|
+
on-demand rules above as the diff demands them.
|
|
43
|
+
Then run `devrites-engine preamble` for deterministic workspace orientation.
|
|
44
|
+
1. Read `spec.md`, `tasks.md`, `state.md`, `decisions.md`, `evidence.md`,
|
|
45
|
+
`touched-files.md`, `.devrites/principles.md` (if present — the binding invariants to score
|
|
46
|
+
the diff against), and the `git diff`. For "what would this change break"
|
|
47
|
+
questions, prefer a code-intelligence index if available — codebase-memory-mcp first,
|
|
48
|
+
cross-checked with codegraph + graphify, else standard methods (LSP / Read/Grep/Glob); see
|
|
49
|
+
`.claude/skills/devrites-lib/reference/standards/tooling.md` — over file reads;
|
|
50
|
+
they answer impact/callers in one call. When a finding hinges on an external library's
|
|
51
|
+
current API, context7 if available can confirm the signature.
|
|
52
|
+
2. **Review tests first** — do they actually prove the acceptance criteria? Missing,
|
|
53
|
+
weak, or wrong tests are the first findings.
|
|
54
|
+
**Completion:** every acceptance criterion maps to a proven test or a labeled finding.
|
|
55
|
+
3. **Spec ↔ Code-review split (parallel sub-agents, fresh context).** A change can pass
|
|
56
|
+
one axis and fail the other — code that follows every project standard but
|
|
57
|
+
implements the wrong thing (Code-review pass, Spec fail), or code that does exactly
|
|
58
|
+
what the spec asked but breaks project conventions (Spec pass, Code-review fail).
|
|
59
|
+
Running them serially in one context lets one mask the other. So:
|
|
60
|
+
- Dispatch **two** read-only reviewers in **parallel** via the `Task` tool, each
|
|
61
|
+
with its own narrow brief and no cross-pollination:
|
|
62
|
+
- **Spec axis** → `devrites-spec-reviewer`: "Apply your documented discipline on
|
|
63
|
+
the active feature workspace + diff. Report (a) criteria the spec asked for that
|
|
64
|
+
are missing or partial, (b) behaviour in the diff the spec did not ask for
|
|
65
|
+
(scope creep / drift), (c) criteria implemented incorrectly. Quote the spec
|
|
66
|
+
line per finding. If the spec is missing or unreadable, report `Review gap:
|
|
67
|
+
missing spec` and do not infer requirements from the diff."
|
|
68
|
+
- **Code-review axis** → `devrites-code-reviewer`: "Apply your full documented
|
|
69
|
+
discipline (tests-first, correctness, readability, architecture, maintainability,
|
|
70
|
+
standards) on the active feature workspace + diff. Cite file:line per finding;
|
|
71
|
+
skip what tooling already enforces. Also flag the AI-codegen smells (silent/empty
|
|
72
|
+
catch, defensive try-catch bloat + redundant logging, single-use factory / needless
|
|
73
|
+
indirection, dependency creep where an in-repo option exists, a 100-line function
|
|
74
|
+
where 20 would do) and the silent-failure bugs (a missing value coerced to 0/''/[],
|
|
75
|
+
a dropped Result/err return, off-by-one / boundary, logic that contradicts the
|
|
76
|
+
comment/docstring/name). Per hunk, check whether working code was deleted that the
|
|
77
|
+
task did not ask to remove. Score the diff against `.devrites/principles.md` — a change
|
|
78
|
+
that breaks a declared invariant with no recorded, human-approved exception is a Critical.
|
|
79
|
+
Distinguish hard documented-standard violations from baseline smells; smells are judgment
|
|
80
|
+
calls unless a DevRites or project standard makes them binding."
|
|
81
|
+
- **Do NOT merge or re-rank** their findings. Present them under separate
|
|
82
|
+
`## Spec` and `## Code review` sub-sections in `review.md`. Surface contradictions
|
|
83
|
+
between the axes explicitly (e.g. "Spec axis says complete, Code-review axis says
|
|
84
|
+
untestable") — `/rite-seal` decides what blocks.
|
|
85
|
+
4. **Reconcile, don't re-review.** With the two parallel reports in hand, the inline
|
|
86
|
+
lead reconciles — it does **not** re-run the code-review axes over correctness /
|
|
87
|
+
readability / architecture / maintainability that `devrites-code-reviewer` already
|
|
88
|
+
covered. Stay in scope ([feature-scoped-review](reference/feature-scoped-review.md)).
|
|
89
|
+
Add only what the dispatched agents could not, then resolve overlaps and
|
|
90
|
+
contradictions before labeling. ([five-axis-review.md](reference/five-axis-review.md)
|
|
91
|
+
documents the axes the code-review agent applies.)
|
|
92
|
+
- **UI feature?** Apply the **UX rubric**
|
|
93
|
+
([nielsen-heuristics](reference/nielsen-heuristics.md)) and the
|
|
94
|
+
**cognitive-load lens** ([cognitive-load](reference/cognitive-load.md)) on the
|
|
95
|
+
UX axis — surface heuristics scoring ≤ 2 and any cognitive-load findings
|
|
96
|
+
(extraneous noise, missing progressive disclosure, vocabulary drift) at the
|
|
97
|
+
appropriate severity.
|
|
98
|
+
5. **Security** — apply `devrites-audit security`
|
|
99
|
+
([security-review](reference/security-review.md)) when user input, auth, data
|
|
100
|
+
storage, external integrations, secrets, or permissions are involved.
|
|
101
|
+
6. **Performance** — apply `devrites-audit perf`
|
|
102
|
+
([performance-review](reference/performance-review.md)) only when performance is
|
|
103
|
+
relevant or a regression risk is visible (measure first).
|
|
104
|
+
7. Apply only in-scope fixes; **run verification after changes** (`/rite-prove` logic).
|
|
105
|
+
8. Update `review.md`, `evidence.md`, and `state.md`.
|
|
106
|
+
9. **Guard against the silent reviewer.** After `review.md` is written, run:
|
|
107
|
+
```bash
|
|
108
|
+
devrites-engine review-integrity
|
|
109
|
+
devrites-engine review-fingerprints --write
|
|
110
|
+
```
|
|
111
|
+
Exit 1 means an adversarial axis reported nothing and justified nothing — a suspected
|
|
112
|
+
rubber-stamp. Re-run that axis or add its `No-findings:` justification; do not carry a silent
|
|
113
|
+
axis into `/rite-seal` (where it surfaces as an Important).
|
|
114
|
+
|
|
115
|
+
## Finding labels
|
|
116
|
+
- **Critical** — must fix before seal (correctness/security/data loss).
|
|
117
|
+
- **Important** — should fix before seal (likely bug, real maintainability risk).
|
|
118
|
+
- **Suggestion** — worth doing, not blocking.
|
|
119
|
+
- **Nit** — trivial/style.
|
|
120
|
+
- **FYI** — context, no action implied.
|
|
121
|
+
|
|
122
|
+
**Action decoration (orthogonal to severity).** Also tag each finding with how to act on it:
|
|
123
|
+
`blocking` (fix before seal), `non-blocking` (fix when convenient), or `if-minor` (fix only if the
|
|
124
|
+
change is already small — a pure noise-economics lever). Only a **`blocking` Critical** gates the
|
|
125
|
+
seal; a `non-blocking` / `if-minor` finding is recorded, not a stop.
|
|
126
|
+
|
|
127
|
+
## Confidence + signal-to-noise
|
|
128
|
+
Borrow `/rite-vet`'s discipline so review stays **trusted, not noisy** — a reviewer that posts
|
|
129
|
+
18 comments per PR teaches the team to ignore every one (below ~10% false-positive rate devs
|
|
130
|
+
investigate each finding; past ~30% they label the tool noisy and skip it):
|
|
131
|
+
- **Confidence-band each finding** (1–10) and state the band. A low-confidence finding (≤4)
|
|
132
|
+
you can't verify against the code is **suppressed** — roll it into one `Suppressed
|
|
133
|
+
(low-confidence): n` line, never raised as Critical/Important.
|
|
134
|
+
- **Verify before you escalate.** Every Critical/Important quotes the spec line or cites the
|
|
135
|
+
`file:line` that proves it — no unverified blockers.
|
|
136
|
+
- **Budget the noise.** Roll up trivia ("N style nits") into a single line; tooling already
|
|
137
|
+
catches style. Review's job is correctness + spec fidelity, not a lint dump.
|
|
138
|
+
- **A silent axis is suspicious, not clean.** An adversarial axis that raises nothing must earn
|
|
139
|
+
it: end its `## Spec` / `## Code review` section with a **`No-findings:`** line naming the
|
|
140
|
+
passes it ran (missing/partial/incorrect for spec; edge cases, error paths, the riskiest
|
|
141
|
+
decision, a changed behavior whose test may not cover it for code) and why each came back
|
|
142
|
+
empty. This is the mirror of confidence-banding — banding kills the false positive, this catches
|
|
143
|
+
the false negative ([`code-review.md` § Zero findings is suspicious](../devrites-lib/reference/standards/code-review.md)).
|
|
144
|
+
|
|
145
|
+
## Severity orientation (labels, not score)
|
|
146
|
+
|
|
147
|
+
After labeling, summarize findings as `Critical / Important / Suggestion / Nit /
|
|
148
|
+
FYI` counts. There is no composite number — `/rite-seal` gates on
|
|
149
|
+
`Critical == 0` and on acceptance + drift. Inventing a number invites gaming;
|
|
150
|
+
the labels do the work.
|
|
151
|
+
|
|
152
|
+
> **Mid-flight discipline.** When tempted to demote a Critical, hide a finding, fix without re-verification, or wander out of scope — see [`anti-patterns`](reference/anti-patterns.md). Load it the moment you reach for the excuse.
|
|
153
|
+
|
|
154
|
+
## Output → `review.md`
|
|
155
|
+
|
|
156
|
+
Write the detailed review to `review.md`. In chat, run `devrites-engine progress` first, then use
|
|
157
|
+
the shared completion reply contract
|
|
158
|
+
([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
|
|
159
|
+
Default success shape:
|
|
160
|
+
```
|
|
161
|
+
Done: review complete for <slice N | feature>.
|
|
162
|
+
Changed: review.md, review-fingerprints.jsonl, evidence.md <updated|n/a>, state.md
|
|
163
|
+
Evidence: open findings Critical 0 / Important <non-blocking n> / Suggestion <n> / Nit <n> / FYI <n>; re-verification <cmd -> pass|n/a>
|
|
164
|
+
Open: <none | non-blocking Important/Suggestion follow-ups>
|
|
165
|
+
Next: /rite-seal
|
|
166
|
+
Record: .devrites/work/<slug>/review.md
|
|
167
|
+
↻ Hygiene: /compact (review findings) if fixing now; /clear if clean
|
|
168
|
+
```
|
|
169
|
+
If a blocking Critical or required re-proof remains, use the shared `Stopped /
|
|
170
|
+
blocked` form and route `Fix:` to the single repair or `/rite-prove`; do not
|
|
171
|
+
recommend `/rite-seal`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# rite-review — anti-patterns
|
|
2
|
+
|
|
3
|
+
Load this when standing a non-trivial review decision, when tempted to
|
|
4
|
+
demote severity to hide a finding, or when crossing out of feature scope.
|
|
5
|
+
|
|
6
|
+
Pack-wide rationalizations + red flags: see
|
|
7
|
+
[standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
|
|
8
|
+
|
|
9
|
+
## Phase-specific rationalizations
|
|
10
|
+
|
|
11
|
+
| Excuse | Rebuttal |
|
|
12
|
+
|---|---|
|
|
13
|
+
| "Polish already cleaned this up; nothing to flag." | Polish finishes; review judges. If review still spots a real issue, flag it — don't re-run polish here. |
|
|
14
|
+
| "Tests pass, so they're adequate." | Adequacy = do they prove acceptance, including failure / boundary / empty paths? A passing test is not automatically a good test. |
|
|
15
|
+
| "Security audit isn't needed for this feature." | If the feature touches user input, auth, data storage, external integrations, secrets, or permissions — yes it is. |
|
|
16
|
+
| "I'll just fix everything I find in scope." | Some fixes belong in `/rite-plan` as drift, not as smuggled redesigns inside review. |
|
|
17
|
+
| "Performance is fine without measuring." | No claim without a number or a specified measurement. "Feels fast" is not a finding. |
|
|
18
|
+
|
|
19
|
+
## Severity gaming
|
|
20
|
+
|
|
21
|
+
| Excuse | Rebuttal |
|
|
22
|
+
|---|---|
|
|
23
|
+
| "Demoting a Critical to Important keeps the review clean." | Severity reflects the actual risk to ship — not the review you'd like. |
|
|
24
|
+
| "I won't surface this Critical; user can find it later." | Hidden Criticals are the worst-case play. The seal blocks anyway, and now you've burned trust. |
|
|
25
|
+
|
|
26
|
+
## Red Flags
|
|
27
|
+
|
|
28
|
+
- A finding without `file:line`.
|
|
29
|
+
- A finding without a severity label (Critical / Important / Suggestion / Nit / FYI).
|
|
30
|
+
- A Critical recorded but silently fixed instead of surfaced to the seal.
|
|
31
|
+
- A fix applied without re-verification afterwards.
|
|
32
|
+
- Review crossing into out-of-scope files because they "looked wrong".
|