devrites 2.6.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/README.md +85 -50
- package/SECURITY.md +65 -39
- package/bin/devrites.mjs +135 -51
- package/docs/agents/domain.md +58 -0
- package/docs/agents/issue-driven-rites.md +11 -0
- package/docs/agents/issue-tracker.md +29 -0
- package/docs/agents/triage-labels.md +15 -0
- package/docs/architecture.md +60 -35
- package/docs/capability-surface-selection.md +18 -0
- package/docs/cli.md +53 -0
- package/docs/command-map.md +59 -22
- package/docs/engine/agent-contract.md +92 -0
- package/docs/engine/commands.md +323 -0
- package/docs/engine/state-schema.md +134 -0
- package/docs/engine/workspace-schema.md +150 -0
- package/docs/extensions.md +178 -0
- package/docs/flow.md +19 -16
- package/docs/harness-compliance.md +45 -0
- package/docs/orchestration.md +6 -4
- package/docs/porting-to-a-new-harness.md +27 -0
- package/docs/quick-reference.md +22 -0
- package/docs/release.md +3 -3
- package/docs/skills.md +42 -48
- package/docs/usage.md +21 -8
- package/engine/.gosec.json +5 -0
- package/engine/Makefile +64 -0
- package/engine/commands.go +195 -0
- package/engine/go.mod +5 -0
- package/engine/harnessmatrix.go +60 -0
- package/engine/harnessmatrix_test.go +59 -0
- package/engine/hookpolicy.go +114 -0
- package/engine/hookpolicy_test.go +64 -0
- package/engine/hooks.go +336 -0
- package/engine/hooks_events_test.go +106 -0
- package/engine/hooks_workspace.go +603 -0
- package/engine/internal/devritespaths/paths.go +76 -0
- package/engine/internal/doctor/doctor.go +178 -0
- package/engine/internal/doctor/doctor_test.go +150 -0
- package/engine/internal/fsutil/copy.go +101 -0
- package/engine/internal/fsutil/replace_other.go +7 -0
- package/engine/internal/fsutil/replace_windows.go +31 -0
- package/engine/internal/gate/gate.go +243 -0
- package/engine/internal/gate/gate_test.go +145 -0
- package/engine/internal/harness/compliance.go +102 -0
- package/engine/internal/harness/harness.go +304 -0
- package/engine/internal/harness/harness_test.go +104 -0
- package/engine/internal/hostpack/hostpack.go +259 -0
- package/engine/internal/hostpack/hostpack_test.go +111 -0
- package/engine/internal/hostpack/templates/alias_skill.md.tmpl +11 -0
- package/engine/internal/hostpack/templates/devrites_readme.md.tmpl +14 -0
- package/engine/internal/install/install.go +1560 -0
- package/engine/internal/install/install_test.go +564 -0
- package/engine/internal/iohooks/detach_other.go +11 -0
- package/engine/internal/iohooks/detach_unix.go +11 -0
- package/engine/internal/iohooks/iohooks.go +546 -0
- package/engine/internal/iohooks/iohooks_test.go +130 -0
- package/engine/internal/lib/adoption.go +634 -0
- package/engine/internal/lib/adoption_test.go +91 -0
- package/engine/internal/lib/analyze.go +225 -0
- package/engine/internal/lib/archivesearch.go +93 -0
- package/engine/internal/lib/archivesearch_test.go +110 -0
- package/engine/internal/lib/budget.go +172 -0
- package/engine/internal/lib/buildreadiness.go +88 -0
- package/engine/internal/lib/checkacceptance.go +176 -0
- package/engine/internal/lib/closeout.go +69 -0
- package/engine/internal/lib/command_other.go +7 -0
- package/engine/internal/lib/command_unix.go +24 -0
- package/engine/internal/lib/context.go +236 -0
- package/engine/internal/lib/conventions.go +449 -0
- package/engine/internal/lib/coverage.go +147 -0
- package/engine/internal/lib/doubtcoverage.go +88 -0
- package/engine/internal/lib/evidencefresh.go +85 -0
- package/engine/internal/lib/extensions.go +619 -0
- package/engine/internal/lib/extensions_test.go +305 -0
- package/engine/internal/lib/footprint.go +239 -0
- package/engine/internal/lib/jsonout.go +115 -0
- package/engine/internal/lib/jsonout_test.go +57 -0
- package/engine/internal/lib/lanes.go +106 -0
- package/engine/internal/lib/learnings.go +391 -0
- package/engine/internal/lib/learnings_inject_test.go +77 -0
- package/engine/internal/lib/learnings_remediation_test.go +24 -0
- package/engine/internal/lib/ledger.go +298 -0
- package/engine/internal/lib/ledger_test.go +162 -0
- package/engine/internal/lib/mutationgate.go +85 -0
- package/engine/internal/lib/overrides.go +164 -0
- package/engine/internal/lib/overrides_test.go +112 -0
- package/engine/internal/lib/packageexistence.go +175 -0
- package/engine/internal/lib/preamble.go +159 -0
- package/engine/internal/lib/progress.go +168 -0
- package/engine/internal/lib/reconcile.go +173 -0
- package/engine/internal/lib/reconcile_test.go +197 -0
- package/engine/internal/lib/resolve.go +376 -0
- package/engine/internal/lib/resolve_remediation_test.go +49 -0
- package/engine/internal/lib/reviewers.go +143 -0
- package/engine/internal/lib/reviewers_test.go +45 -0
- package/engine/internal/lib/reviewerstats.go +199 -0
- package/engine/internal/lib/reviewerstats_test.go +104 -0
- package/engine/internal/lib/reviewintegrity.go +143 -0
- package/engine/internal/lib/reviewintegrity_test.go +103 -0
- package/engine/internal/lib/runbook.go +292 -0
- package/engine/internal/lib/runbook_context_test.go +119 -0
- package/engine/internal/lib/session.go +328 -0
- package/engine/internal/lib/session_test.go +110 -0
- package/engine/internal/lib/specparse.go +125 -0
- package/engine/internal/lib/specskeleton.go +79 -0
- package/engine/internal/lib/specvalidate.go +391 -0
- package/engine/internal/lib/specvalidate_test.go +185 -0
- package/engine/internal/lib/stuck.go +206 -0
- package/engine/internal/lib/templates/conventions_drift.tmpl +6 -0
- package/engine/internal/lib/templates/conventions_ledger_header.md +6 -0
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -0
- package/engine/internal/lib/testintegrity.go +203 -0
- package/engine/internal/lib/testintegrity_test.go +72 -0
- package/engine/internal/lib/tickafk.go +99 -0
- package/engine/internal/lib/util.go +68 -0
- package/engine/internal/migrate/migrate.go +213 -0
- package/engine/internal/migrate/migrate_test.go +105 -0
- package/engine/internal/orient/firstrun.go +50 -0
- package/engine/internal/orient/firstrun_test.go +72 -0
- package/engine/internal/orient/orient.go +69 -0
- package/engine/internal/orient/orient_test.go +25 -0
- package/engine/internal/profile/profile.go +270 -0
- package/engine/internal/state/concurrency_test.go +184 -0
- package/engine/internal/state/feature.go +309 -0
- package/engine/internal/state/lock_other.go +24 -0
- package/engine/internal/state/lock_unix.go +35 -0
- package/engine/internal/state/lock_windows.go +56 -0
- package/engine/internal/state/schema.go +102 -0
- package/engine/internal/state/snapshot.go +384 -0
- package/engine/internal/state/state_test.go +260 -0
- package/engine/internal/state/status.go +90 -0
- package/engine/internal/state/write.go +59 -0
- package/engine/internal/testutil/testutil.go +66 -0
- package/engine/internal/version/version.go +57 -0
- package/engine/internal/workflow/commands.go +64 -0
- package/engine/main.go +530 -0
- package/engine/profile_test.go +76 -0
- package/engine/subagent_orient_context.txt +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/decisions.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/plan.md +5 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/spec.md +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/status.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/tasks.md +1 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/spec.md +6 -0
- package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/noactive.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +17 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +16 -0
- package/engine/testdata/golden/TestParityBudget/default-active.golden +4 -0
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +5 -0
- package/engine/testdata/golden/TestParityBudget/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/no-feature.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/within.golden +6 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +7 -0
- package/engine/testdata/golden/TestParityCoverage/arg=full.golden +10 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +9 -0
- package/engine/testdata/golden/TestParityCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/bare.golden +3 -0
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +6 -0
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/red.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +5 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +4 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityLearnings/add.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/list.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/mine.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/unknown.golden +1 -0
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/ghost.golden +1 -0
- package/engine/testdata/golden/TestParityOrientSilentPath.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +1 -0
- package/engine/testdata/golden/TestParityPreamble/afk/a.golden +14 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +10 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +11 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +13 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +3 -0
- package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +6 -0
- package/engine/testdata/golden/TestParityResolve/answer.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/batch.golden +3 -0
- package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +8 -0
- package/engine/testdata/golden/TestParityResolve/drop.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/missing-answer.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/next-qid.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/no-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-found.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-open.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/full-afk.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/nophase.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/red.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +1 -0
- package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +2 -0
- package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +5 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +3 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +1 -0
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +2 -0
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +2 -0
- package/engine/testdata/golden/TestStatusLiveWorkspace.golden +10 -0
- package/engine/testdata/golden/TestStuckLogHashParity.golden +1 -0
- package/engine/testdata/golden/status/auth-tokens.txt +9 -0
- package/engine/testdata/golden/status/search-ranking.txt +9 -0
- package/engine/tests/adr_0003_gate_exit_code_test.go +32 -0
- package/engine/tests/adr_0004_required_by_phase_test.go +62 -0
- package/engine/tests/adr_0006_clock_seam_test.go +36 -0
- package/engine/tests/budget_test.go +77 -0
- package/engine/tests/cli_test.go +209 -0
- package/engine/tests/concurrency_cli_test.go +125 -0
- package/engine/tests/conventions_test.go +106 -0
- package/engine/tests/doctor_cli_test.go +62 -0
- package/engine/tests/gate_test.go +235 -0
- package/engine/tests/hook_test.go +390 -0
- package/engine/tests/hooks_io_test.go +218 -0
- package/engine/tests/json_contract_test.go +99 -0
- package/engine/tests/lib_parity_test.go +942 -0
- package/engine/tests/meta_test.go +67 -0
- package/engine/tests/migrate_cli_test.go +193 -0
- package/engine/tests/parity_analyze_test.go +55 -0
- package/engine/tests/parity_buildreadiness_test.go +42 -0
- package/engine/tests/parity_closeout_test.go +102 -0
- package/engine/tests/parity_githelpers_test.go +41 -0
- package/engine/tests/parity_learnings_test.go +90 -0
- package/engine/tests/parity_mutationgate_test.go +36 -0
- package/engine/tests/parity_packageexistence_test.go +64 -0
- package/engine/tests/parity_reconcile_test.go +88 -0
- package/engine/tests/parity_resolve_test.go +144 -0
- package/engine/tests/parity_test.go +380 -0
- package/engine/tests/parity_testintegrity_test.go +65 -0
- package/engine/tests/parity_tickafk_test.go +83 -0
- package/engine/validatepack.go +192 -0
- package/engine/validatepack_test.go +79 -0
- package/engine/validatepackskills.go +181 -0
- package/engine/validatepackskills_test.go +171 -0
- package/install.sh +67 -912
- package/pack/.claude/agents/devrites-code-reviewer.md +20 -3
- package/pack/.claude/agents/devrites-devex-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-doubt-reviewer.md +16 -3
- package/pack/.claude/agents/devrites-forge-judge.md +14 -4
- package/pack/.claude/agents/devrites-frontend-reviewer.md +27 -3
- package/pack/.claude/agents/devrites-performance-reviewer.md +18 -2
- package/pack/.claude/agents/devrites-plan-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-retrospector.md +12 -7
- package/pack/.claude/agents/devrites-security-auditor.md +20 -4
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-slice-wright.md +32 -16
- package/pack/.claude/agents/devrites-spec-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-strategy-reviewer.md +12 -2
- package/pack/.claude/agents/devrites-test-analyst.md +20 -3
- package/pack/.claude/settings.json +58 -8
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +22 -5
- package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +26 -53
- package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +2 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +10 -3
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +16 -13
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +15 -3
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +19 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/.claude/skills/devrites-interview/SKILL.md +30 -7
- package/pack/.claude/skills/devrites-lib/SKILL.md +35 -36
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +104 -20
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/README.md +14 -6
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/afk-hitl.md +10 -18
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/agents.md +81 -16
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/anti-patterns.md +3 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/context-hygiene.md +17 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/core.md +9 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/deprecation.md +21 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/developer-experience.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/documentation.md +9 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/observability.md +13 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/performance.md +1 -1
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/principles.md +3 -3
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/prose-style.md +18 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/security.md +45 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/tooling.md +29 -2
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +40 -76
- package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +19 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +3 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +17 -1
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +20 -7
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +25 -10
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +2 -2
- package/pack/.claude/skills/rite/SKILL.md +67 -42
- package/pack/.claude/skills/rite/reference/menu.md +4 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +31 -22
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +25 -25
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -2
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -1
- package/pack/.claude/skills/rite-build/SKILL.md +24 -256
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -3
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -7
- package/pack/.claude/skills/rite-build/reference/forge.md +17 -7
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/.claude/skills/rite-build/reference/output.md +41 -0
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -10
- package/pack/.claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/.claude/skills/rite-define/SKILL.md +76 -93
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +2 -1
- package/pack/.claude/skills/rite-define/reference/gates.md +3 -3
- package/pack/.claude/skills/rite-define/reference/plan-template.md +35 -6
- package/pack/.claude/skills/rite-doctor/SKILL.md +41 -16
- package/pack/.claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/.claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/.claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/.claude/skills/rite-frame/SKILL.md +14 -15
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +19 -17
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -6
- package/pack/.claude/skills/rite-learn/SKILL.md +46 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +35 -26
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +20 -7
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +15 -16
- package/pack/.claude/skills/rite-polish/SKILL.md +18 -23
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +31 -2
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-polish/reference/code.md +16 -5
- package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +5 -32
- package/pack/.claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +40 -10
- package/pack/.claude/skills/rite-prototype/SKILL.md +23 -2
- package/pack/.claude/skills/rite-prove/SKILL.md +41 -96
- package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +36 -13
- package/pack/.claude/skills/rite-quick/SKILL.md +19 -12
- package/pack/.claude/skills/rite-resolve/SKILL.md +21 -25
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/.claude/skills/rite-review/SKILL.md +43 -45
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-review.md +4 -22
- package/pack/.claude/skills/rite-review/reference/security-review.md +2 -2
- package/pack/.claude/skills/rite-seal/SKILL.md +40 -174
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +6 -9
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -14
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +3 -3
- package/pack/.claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +1 -1
- package/pack/.claude/skills/rite-ship/SKILL.md +45 -75
- package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-ship/reference/close-out.md +12 -1
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +32 -1
- package/pack/.claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/.claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/.claude/skills/rite-spec/SKILL.md +108 -60
- package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-spec/reference/investigation.md +34 -14
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +7 -37
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +23 -18
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +94 -118
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +128 -139
- package/pack/.claude/skills/rite-status/SKILL.md +26 -22
- package/pack/.claude/skills/rite-temper/SKILL.md +34 -27
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/significance.md +1 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +58 -70
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +7 -5
- package/pack/.claude/skills/rite-vet/reference/depth.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -3
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +16 -17
- package/pack/generated/README.md +10 -0
- package/pack/generated/claude/agents/devrites-code-reviewer.md +103 -0
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +104 -0
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +68 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +102 -0
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +84 -0
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +111 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +89 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +96 -0
- package/pack/generated/claude/agents/devrites-security-auditor.md +85 -0
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +90 -0
- package/pack/generated/claude/agents/devrites-slice-wright.md +210 -0
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +87 -0
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +72 -0
- package/pack/generated/claude/agents/devrites-test-analyst.md +64 -0
- package/pack/generated/claude/settings.json +103 -0
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +61 -0
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +73 -0
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +76 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +65 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +99 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +104 -0
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +69 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +51 -0
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +52 -0
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +134 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/claude/skills/rite/SKILL.md +142 -0
- package/pack/generated/claude/skills/rite/reference/menu.md +42 -0
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/claude/skills/rite-build/SKILL.md +84 -0
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/claude/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/generated/claude/skills/rite-define/SKILL.md +153 -0
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/claude/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +76 -0
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/claude/skills/rite-frame/SKILL.md +120 -0
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/claude/skills/rite-learn/SKILL.md +117 -0
- package/pack/generated/claude/skills/rite-plan/SKILL.md +95 -0
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +87 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/claude/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/claude/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +74 -0
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +110 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/claude/skills/rite-quick/SKILL.md +93 -0
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +109 -0
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +171 -0
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/claude/skills/rite-seal/SKILL.md +101 -0
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/claude/skills/rite-ship/SKILL.md +111 -0
- package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/SKILL.md +217 -0
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/claude/skills/rite-status/SKILL.md +107 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +126 -0
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +175 -0
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +75 -0
- package/pack/generated/codex/AGENTS.md +23 -0
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +101 -0
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +102 -0
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +66 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +100 -0
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +80 -0
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +109 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +93 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +94 -0
- package/pack/generated/codex/agents/devrites-security-auditor.toml +83 -0
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +88 -0
- package/pack/generated/codex/agents/devrites-slice-wright.toml +207 -0
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +85 -0
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +76 -0
- package/pack/generated/codex/agents/devrites-test-analyst.toml +62 -0
- package/pack/generated/codex/hooks.json +151 -0
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +73 -0
- package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +85 -0
- package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +88 -0
- package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +77 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +111 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +116 -0
- package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-lib/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +81 -0
- package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +63 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +64 -0
- package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +146 -0
- package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/codex/skills/rite/SKILL.md +154 -0
- package/pack/generated/codex/skills/rite/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite/reference/menu.md +42 -0
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +110 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/codex/skills/rite-build/SKILL.md +96 -0
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/codex/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +143 -0
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/codex/skills/rite-customize/SKILL.md +79 -0
- package/pack/generated/codex/skills/rite-customize/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-define/SKILL.md +165 -0
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/codex/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +88 -0
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-dogfood/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/SKILL.md +160 -0
- package/pack/generated/codex/skills/rite-explain/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/codex/skills/rite-frame/SKILL.md +132 -0
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +109 -0
- package/pack/generated/codex/skills/rite-handoff/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/codex/skills/rite-learn/SKILL.md +129 -0
- package/pack/generated/codex/skills/rite-learn/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-plan/SKILL.md +107 -0
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/codex/skills/rite-polish/SKILL.md +99 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/codex/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/codex/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/codex/skills/rite-pov/SKILL.md +58 -0
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-pr-feedback/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +86 -0
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +122 -0
- package/pack/generated/codex/skills/rite-prototype/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-prove/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/codex/skills/rite-quick/SKILL.md +105 -0
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +121 -0
- package/pack/generated/codex/skills/rite-resolve/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +183 -0
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/codex/skills/rite-seal/SKILL.md +113 -0
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/codex/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +123 -0
- package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/SKILL.md +229 -0
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/codex/skills/rite-status/SKILL.md +119 -0
- package/pack/generated/codex/skills/rite-status/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +138 -0
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +187 -0
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +87 -0
- package/pack/generated/codex/skills/rite-zoom-out/agents/openai.yaml +2 -0
- package/package.json +8 -4
- package/scripts/build-binaries.sh +75 -0
- package/scripts/build-host-artifacts.sh +100 -0
- package/scripts/build-release-tarball.sh +16 -2
- package/scripts/check-cross-refs.py +17 -3
- package/scripts/check-generated-skill-budget.mjs +41 -0
- package/scripts/check-instruction-size-baseline.mjs +79 -0
- package/scripts/check-invocation-integrity.py +113 -0
- package/scripts/check-no-global-writes.sh +22 -0
- package/scripts/check-no-personal-paths.py +50 -0
- package/scripts/check-reference-governance.mjs +82 -0
- package/scripts/check-reply-contract.sh +64 -0
- package/scripts/check-rule-uniqueness.sh +4 -32
- package/scripts/codex-generate.sh +300 -0
- package/scripts/devrites-detect.sh +2 -1
- package/scripts/eval-runner.py +4 -2
- package/scripts/eval-scorer.mjs +46 -0
- package/scripts/grade-feature.sh +24 -7
- package/scripts/install-lib.sh +112 -19
- package/scripts/pin.sh +4 -4
- package/scripts/release-check.sh +71 -0
- package/scripts/run-behavioral-evals.sh +34 -2
- package/scripts/run-evals.sh +45 -30
- package/scripts/run-live-behavioral-evals.py +180 -0
- package/scripts/run-outcome-evals.sh +27 -0
- package/scripts/run-routing-evals.py +342 -0
- package/scripts/run-tests.mjs +203 -0
- package/scripts/skill-pruning-audit.mjs +120 -0
- package/scripts/skills-inventory.mjs +107 -0
- package/scripts/validate-agent-composition.py +57 -0
- package/scripts/validate-command-parity.py +70 -0
- package/scripts/validate-frontmatter.py +43 -7
- package/scripts/validate-skill-anatomy.py +139 -0
- package/scripts/validate-workflow-security.py +22 -3
- package/scripts/validate-workspace-schema.py +512 -0
- package/scripts/validate.sh +174 -34
- package/uninstall.sh +22 -183
- package/update.sh +29 -185
- package/docs/cli-mcp.md +0 -62
- package/mcp/devrites-mcp.mjs +0 -105
- package/pack/.claude/hooks/devrites-a1-guard.sh +0 -99
- package/pack/.claude/hooks/devrites-allow.sh +0 -44
- package/pack/.claude/hooks/devrites-cursor.sh +0 -28
- package/pack/.claude/hooks/devrites-orient.sh +0 -53
- package/pack/.claude/hooks/devrites-redwatch.sh +0 -39
- package/pack/.claude/hooks/devrites-refresh-indexes.sh +0 -127
- package/pack/.claude/hooks/devrites-reviewer-readonly.sh +0 -37
- package/pack/.claude/hooks/devrites-statusline.sh +0 -18
- package/pack/.claude/hooks/devrites-stop-gate.sh +0 -45
- package/pack/.claude/hooks/devrites-wright-scope.sh +0 -64
- package/pack/.claude/hooks/hooks.json +0 -52
- package/pack/.claude/rules/code-review.md +0 -48
- package/pack/.claude/rules/development-workflow.md +0 -40
- package/pack/.claude/rules/git-workflow.md +0 -35
- package/pack/.claude/rules/spec-grammar.md +0 -106
- package/pack/.claude/rules/testing.md +0 -88
- package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +0 -78
- package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +0 -75
- package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +0 -47
- package/pack/.claude/skills/devrites-lib/scripts/conventions.py +0 -273
- package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +0 -51
- package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +0 -77
- package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +0 -156
- package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +0 -59
- package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +0 -63
- package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +0 -45
- package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +0 -74
- package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +0 -52
- package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +0 -68
- package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +0 -76
- package/pack/.claude/skills/devrites-lib/scripts/progress.sh +0 -103
- package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +0 -62
- package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +0 -123
- package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +0 -279
- package/pack/.claude/skills/devrites-lib/scripts/rites.sh +0 -41
- package/pack/.claude/skills/devrites-lib/scripts/spec-validate.sh +0 -130
- package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +0 -67
- package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +0 -87
- package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +0 -52
- package/scripts/merge-codex-hooks.mjs +0 -78
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/coding-style.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/error-handling.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/hooks.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/patterns.md +0 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Frontend quality standards (2026)
|
|
2
|
+
|
|
3
|
+
The measurable bar UI work is held to. Project conventions win where they're stricter;
|
|
4
|
+
these are the floor, not the ceiling.
|
|
5
|
+
|
|
6
|
+
## Performance — Core Web Vitals (field/p75 targets)
|
|
7
|
+
- **LCP** (Largest Contentful Paint) ≤ **2.5 s**
|
|
8
|
+
- **INP** (Interaction to Next Paint — the current responsiveness metric, replaced FID)
|
|
9
|
+
≤ **200 ms**
|
|
10
|
+
- **CLS** (Cumulative Layout Shift) ≤ **0.1**
|
|
11
|
+
- Keep an interactive page's shipped JS lean (a budget around **≤400 KB gzipped** is a
|
|
12
|
+
good default); lazy-load below-the-fold and heavy/optional code; minimize hydration;
|
|
13
|
+
size and reserve space for images/media to avoid layout shift.
|
|
14
|
+
|
|
15
|
+
## Accessibility — WCAG 2.2 AA
|
|
16
|
+
- **Semantic HTML first** — real `<button>`/`<nav>`/`<label>`/headings; ARIA only to fill
|
|
17
|
+
gaps semantics can't.
|
|
18
|
+
- **Keyboard**: every interactive element operable by keyboard; logical tab order; **focus
|
|
19
|
+
visible** with ≥ **3:1** contrast against its background (never remove the outline
|
|
20
|
+
without an equal replacement).
|
|
21
|
+
- **Contrast**: text ≥ **4.5:1** (≥ 3:1 for large text and UI/graphics).
|
|
22
|
+
- **Target size**: ≥ **24×24** CSS px (WCAG 2.2 AA, SC 2.5.8); prefer **44×44** for primary
|
|
23
|
+
touch targets.
|
|
24
|
+
- **No drag-only** interactions — provide a single-pointer alternative (SC 2.5.7).
|
|
25
|
+
- Labels/names on all controls; errors announced; respects `prefers-reduced-motion`.
|
|
26
|
+
- **Test** with keyboard, a screen reader, and an automated checker (e.g. axe) — early.
|
|
27
|
+
|
|
28
|
+
## Motion
|
|
29
|
+
- Purposeful only; UI feedback ~≤200 ms, transitions ~≤500 ms. Never animate to mask slow
|
|
30
|
+
loading. Honor `prefers-reduced-motion` (reduce/remove non-essential motion).
|
|
31
|
+
|
|
32
|
+
## Responsive
|
|
33
|
+
- Fluid layouts; no fixed widths that break. Verify at **320 / 768 / 1024 / 1440** px; no
|
|
34
|
+
horizontal scroll; survives **200% text zoom**.
|
|
35
|
+
- **`dvh`, not `vh`**, for full-height surfaces (`min-height: 100dvh`, never `h-screen` /
|
|
36
|
+
`100vh` — mobile address bars break them). A hero fits the *initial* viewport: headline
|
|
37
|
+
≤2 lines, primary CTA above the fold.
|
|
38
|
+
|
|
39
|
+
## Design system
|
|
40
|
+
- Use the project's **tokens** (spacing/type/color roles) — never hard-code a value a
|
|
41
|
+
token covers. Compose from existing components; one icon set.
|
|
42
|
+
|
|
43
|
+
### Consistency locks (one per surface)
|
|
44
|
+
Lock these in `design-brief.md` and hold them page-wide — mid-scroll drift ("a different
|
|
45
|
+
website by section 7") is a tell: **one accent** (no new accent appearing later on the
|
|
46
|
+
page), **one radius scale**, **one theme** (light or dark, not both).
|
|
47
|
+
|
|
48
|
+
## Numerical bar (enforceable specifics)
|
|
49
|
+
|
|
50
|
+
These are the hard numbers that move "good UI" from opinion to checkable.
|
|
51
|
+
Project tokens win when stricter; these are the floor.
|
|
52
|
+
|
|
53
|
+
### Color
|
|
54
|
+
- **OKLCH-only** for new tokens — perceptually uniform, predictable lightness
|
|
55
|
+
steps across hues. Stop reaching for HSL; the lightness lies.
|
|
56
|
+
- Example: `oklch(0.62 0.18 264)` for a saturated primary.
|
|
57
|
+
- **Never `#000` / `#fff`** as raw values. Pure black/white are too harsh and
|
|
58
|
+
too clinical; use a near-black (`oklch(0.18 0 0)`) and near-white
|
|
59
|
+
(`oklch(0.98 0 0)`) or the project's surface tokens.
|
|
60
|
+
- Contrast follows WCAG 2.2 — text ≥ 4.5:1, UI/graphics ≥ 3:1. Verify
|
|
61
|
+
against the *rendered* background, not the theoretical one.
|
|
62
|
+
- **Tint neutrals toward the brand hue** — pure-grey neutrals look sterile.
|
|
63
|
+
Nudge every grey 0.005–0.01 chroma toward the brand colour — invisible at
|
|
64
|
+
a glance, but the surface stops feeling generic.
|
|
65
|
+
- **Alpha is a smell** — heavy translucency usually means an incomplete palette.
|
|
66
|
+
Define explicit overlay/hover tokens; transparency is for focus rings and scrims.
|
|
67
|
+
- **Every colored surface token ships its `on-` pair** (`primary`/`on-primary`,
|
|
68
|
+
`destructive`/`on-destructive`, …) so contrast is designed in, not patched after.
|
|
69
|
+
|
|
70
|
+
#### Color commitment — pick the strategy before the palette
|
|
71
|
+
Decide *how committed* the surface is to colour before opening the picker.
|
|
72
|
+
Four positions on a single axis; pick one, then design within it:
|
|
73
|
+
|
|
74
|
+
| Strategy | Rough coverage | Use for |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| **Restrained** | tinted neutrals + 1 accent ≤ ~10% of the surface | Most product UI; brand surfaces that want to look quiet. |
|
|
77
|
+
| **Committed** | one saturated colour carries 30–60% of the surface | Brand pages with a strong identity; product feature surfaces that need a hero colour. |
|
|
78
|
+
| **Multi-role** | 3–4 named colour roles, each used deliberately | Brand campaigns; product data-viz with distinct meanings. |
|
|
79
|
+
| **Saturated** | the surface *is* the colour — full-bleed colour ground | Brand heroes, campaign pages, splash moments. |
|
|
80
|
+
|
|
81
|
+
Two corollaries:
|
|
82
|
+
- The "one accent ≤ ~10%" rule belongs to **Restrained only.** Committed /
|
|
83
|
+
Multi-role / Saturated exceed it deliberately. Don't collapse every
|
|
84
|
+
surface back to Restrained by reflex.
|
|
85
|
+
- *Register* (brand vs product) doesn't pick the strategy by itself — brand
|
|
86
|
+
surfaces aren't always Saturated, product surfaces aren't always
|
|
87
|
+
Restrained. Pick from the scene, not the category.
|
|
88
|
+
|
|
89
|
+
### Calibration — density & motion
|
|
90
|
+
Colour commitment fixes *how much colour*; two more axes fix *how much space* and
|
|
91
|
+
*how much movement*. Set one position on each — from the **scene sentence**, the same
|
|
92
|
+
way colour is picked — and carry both in `design-brief.md` so the build targets a
|
|
93
|
+
calibration instead of re-deciding it per slice.
|
|
94
|
+
|
|
95
|
+
**Density** — information per viewport; drives which spacing steps dominate:
|
|
96
|
+
|
|
97
|
+
| Position | Feels like | Spacing steps that dominate | Use for |
|
|
98
|
+
|---|---|---|---|
|
|
99
|
+
| **Airy** | gallery / calm / room to breathe | `32 / 48 / 64 / 80 / 96` | brand pages, onboarding, focus moments, low-data surfaces |
|
|
100
|
+
| **Balanced** | most product UI | `16 / 20 / 24 / 32` | dashboards, forms, settings — the default |
|
|
101
|
+
| **Dense** | cockpit / data-rich / power tool | `4 / 8 / 12 / 16` | tables, monitors, terminals, pro tools lived in all day |
|
|
102
|
+
|
|
103
|
+
**Motion** — how much the surface moves; drives which motion classes (table below) are in play:
|
|
104
|
+
|
|
105
|
+
| Position | Feels like | Motion classes in play | Use for |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| **Minimal** | crisp, almost still | Instant + State | dense tools, regulated/trust surfaces, reduced-motion-leaning |
|
|
108
|
+
| **Standard** | responsive, purposeful | Instant + State + Layout | most product + brand UI — the default |
|
|
109
|
+
| **Expressive** | choreographed, scroll-aware | + Entrance, deliberate sequencing | brand heroes, launch/campaign moments, story scroll |
|
|
110
|
+
|
|
111
|
+
Corollaries (same shape as colour commitment):
|
|
112
|
+
- Pick from the **scene sentence**, not the category — "an on-call SRE at 2am" → Dense +
|
|
113
|
+
Minimal; "a launch hero in afternoon light" → Airy + Expressive. Register doesn't decide
|
|
114
|
+
it by itself.
|
|
115
|
+
- `prefers-reduced-motion` overrides Motion **downward at runtime** regardless of position —
|
|
116
|
+
an Expressive surface still ships a Minimal path.
|
|
117
|
+
- The position is a target, not a straitjacket: a surface may break density locally for
|
|
118
|
+
emphasis — name the exception in the brief, don't let the whole page drift off it.
|
|
119
|
+
|
|
120
|
+
### Spacing
|
|
121
|
+
- **4pt base scale** (`4 / 8 / 12 / 16 / 20 / 24 / 32 / 40 / 48 / 64 / 80 /
|
|
122
|
+
96`). Project tokens may use a multiplier; never hardcode in-between
|
|
123
|
+
values.
|
|
124
|
+
- Inline spacing rhythms in multiples of 4 px. Optical alignments may need a
|
|
125
|
+
1 – 2 px nudge — record the *why* in a comment.
|
|
126
|
+
|
|
127
|
+
### Typography scale
|
|
128
|
+
- **Brand surfaces**: fluid `clamp()` headings (e.g.,
|
|
129
|
+
`clamp(2rem, 1rem + 3vw, 3.5rem)`). Display/body pairing OK.
|
|
130
|
+
- **Product surfaces**: **fixed rem scale** (1.125 – 1.2 ratio). One family
|
|
131
|
+
usually carries headings, body, labels, data.
|
|
132
|
+
- Body line-height ~1.5; headings ~1.1 – 1.25. Prose width ~ 65–75 ch.
|
|
133
|
+
- Display ceiling: `clamp()` max ≤ ~6rem — larger is shouting. Display
|
|
134
|
+
letter-spacing floor **≥ −0.04em**; tighter and the letters touch.
|
|
135
|
+
- `text-wrap: balance` on h1–h3; `text-wrap: pretty` on long prose.
|
|
136
|
+
|
|
137
|
+
### Motion
|
|
138
|
+
| Class | Duration | Use |
|
|
139
|
+
|---|---|---|
|
|
140
|
+
| Instant | 100 – 150 ms | Hover/press, tooltip enter, color shifts |
|
|
141
|
+
| State | 200 – 300 ms | Toggle, focus ring, dropdown |
|
|
142
|
+
| Layout | 300 – 500 ms | Modal/drawer enter, route transitions |
|
|
143
|
+
| Entrance | 500 – 800 ms | Page entrance, hero animation |
|
|
144
|
+
|
|
145
|
+
- **Exit at ~75 % of enter.** A 300 ms enter pairs with a 225 ms exit.
|
|
146
|
+
- **Bounce / elastic easing banned** unless the project's design system
|
|
147
|
+
explicitly uses it.
|
|
148
|
+
- Honor `prefers-reduced-motion` — reduce or remove non-essential motion
|
|
149
|
+
entirely.
|
|
150
|
+
|
|
151
|
+
### Dark mode (three-axis compensation)
|
|
152
|
+
A token-flip dark mode is sterile. When the project ships dark, compensate
|
|
153
|
+
three axes from light:
|
|
154
|
+
- **Line-height** `+0.05 – 0.10` (text breathes more on dark surfaces).
|
|
155
|
+
- **Letter-spacing** `+0.01 – 0.02 em` (perceived spacing tightens on dark).
|
|
156
|
+
- **Weight** `+1 step` for very small or low-contrast text.
|
|
157
|
+
|
|
158
|
+
If the project has dark tokens already, follow them. If not and dark is in
|
|
159
|
+
scope, propose the compensation rather than ship a flat invert.
|
|
160
|
+
|
|
161
|
+
### Focus & states (8 required)
|
|
162
|
+
Every interactive element ships **8 visual/interaction states**:
|
|
163
|
+
`default`, `hover`, `active`, `focus-visible`, `disabled`, `loading`,
|
|
164
|
+
`selected`, and an error/invalid surface when relevant.
|
|
165
|
+
- `:focus-visible` ring: **2 – 3 px**, **≥ 3:1** contrast against the
|
|
166
|
+
background, **offset 2 px** so the focus is unambiguous on dense layouts.
|
|
167
|
+
|
|
168
|
+
### Container queries vs viewport queries
|
|
169
|
+
- **Component breakpoints** — use **container queries** (`@container`). The
|
|
170
|
+
same card adapts to its column whether the viewport is 320 or 1920.
|
|
171
|
+
- **Page-level layout** — use viewport queries
|
|
172
|
+
(`@media (min-width: ...)`) for sidebar collapses, header reflows.
|
|
173
|
+
- Mixing the two is normal; using only one is usually a code smell.
|
|
174
|
+
|
|
175
|
+
### Semantic z-index scale
|
|
176
|
+
Pick a scale per surface role; never use raw `z-index: 9999`. Suggested
|
|
177
|
+
floor:
|
|
178
|
+
|
|
179
|
+
| Role | z |
|
|
180
|
+
|---|---|
|
|
181
|
+
| Base content | `auto` / `0` |
|
|
182
|
+
| Sticky header | `50` |
|
|
183
|
+
| Dropdown / popover | `100` |
|
|
184
|
+
| Drawer / sheet | `200` |
|
|
185
|
+
| Modal | `300` |
|
|
186
|
+
| Toast | `400` |
|
|
187
|
+
| System dialog / debug overlay | `500` |
|
|
188
|
+
|
|
189
|
+
### Materiality (elevation & surface)
|
|
190
|
+
Depth is earned, not defaulted. Reach **down** this ladder in order; stop at the first
|
|
191
|
+
rung that carries the structure.
|
|
192
|
+
- **Hairline first.** A **1 px border / divider** (a hairline in a near-neutral token)
|
|
193
|
+
defines structure before any shadow does. Borders separate; shadows lift. Most "cards"
|
|
194
|
+
want a hairline, not elevation.
|
|
195
|
+
- **Elevation is a token scale, not an ad-hoc value.** When a surface genuinely lifts
|
|
196
|
+
(menu, popover, dragged item), use a **small shadow set from the design system** with one
|
|
197
|
+
consistent light source — never a one-off `box-shadow`. The elevation step and the
|
|
198
|
+
semantic z-index role move together.
|
|
199
|
+
- **Texture needs contrast.** Grain / noise / pattern earns its place only when it reads
|
|
200
|
+
against the surface. Invisible texture is bytes with no signal — drop it.
|
|
201
|
+
- **Asset-led material.** Rich material (photographic grain, real product imagery,
|
|
202
|
+
generated art) comes from a **real raster / generated asset**, not an SVG/CSS
|
|
203
|
+
approximation of one. Don't fake a photo with gradients; ship the asset or use a flat
|
|
204
|
+
token.
|
|
205
|
+
- **No decorative glass.** `backdrop-filter: blur(...)` is for a fixed/sticky surface over
|
|
206
|
+
moving content (a sticky header, a sheet over scroll), never a default panel look
|
|
207
|
+
(`rite-polish/reference/anti-ai-slop.md`).
|
|
208
|
+
|
|
209
|
+
### NEVER (UI numerical bar)
|
|
210
|
+
- Never ship a pure `#000` or `#fff` raw value.
|
|
211
|
+
- Never hard-code a spacing value the 4 pt scale or project tokens cover.
|
|
212
|
+
- Never use bounce/elastic easing without an explicit design-system reason.
|
|
213
|
+
- Never animate an exit at 100 % of enter duration (feels uncontrolled).
|
|
214
|
+
- Never use raw `z-index` numbers outside the semantic scale.
|
|
215
|
+
- Never use viewport queries for component-internal reflows when the
|
|
216
|
+
component is reused at different widths.
|
|
217
|
+
- Never ship dark mode as a flat token invert (compensate three axes).
|
|
218
|
+
- Never reach for a shadow where a 1 px hairline carries the structure.
|
|
219
|
+
- Never invent a one-off `box-shadow` outside the elevation token set.
|
|
220
|
+
- Never ship texture / grain that doesn't read against its surface.
|
|
221
|
+
|
|
222
|
+
## Verification gate (a UI slice isn't done until all pass)
|
|
223
|
+
- [ ] Renders with **no console errors/warnings**
|
|
224
|
+
- [ ] **Keyboard**: tab through reaches everything; focus visible; Esc/Enter behave
|
|
225
|
+
- [ ] **Screen reader** conveys content + structure
|
|
226
|
+
- [ ] **All states**: default / loading / empty / error / success / disabled
|
|
227
|
+
- [ ] **Responsive** at 320 / 768 / 1024 / 1440; no overflow; zoom-safe
|
|
228
|
+
- [ ] **No accessibility violations** (axe or equivalent)
|
|
229
|
+
- [ ] Meets the **CWV budget** above (measure, don't assume)
|
|
230
|
+
- [ ] Aligned to the **design system** (tokens, components, type, spacing)
|
|
231
|
+
- [ ] Clickables show `cursor: pointer` + a hover state; icons are SVG from the one set
|
|
232
|
+
(no emoji); nothing trapped under fixed/sticky bars
|
|
233
|
+
- [ ] **Consistency locks hold** (one accent / one radius scale / one theme) and the
|
|
234
|
+
mechanical pre-flight passes (`rite-polish/reference/anti-ai-slop.md`)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Reuse first — frontend application
|
|
2
|
+
|
|
3
|
+
Frontend-specific application of the canonical reuse rule in
|
|
4
|
+
[`.agents/skills/devrites-lib/reference/standards/coding-style.md`](../../devrites-lib/reference/standards/coding-style.md#reuse-before-you-write)
|
|
5
|
+
(and the slightly longer treatment in `standards/patterns.md`). Same principle —
|
|
6
|
+
**reuse → extend → build new**, with the AHA caveat. This file walks it through for
|
|
7
|
+
components, styles, tokens, icons, hooks, utils, and helpers in a UI feature.
|
|
8
|
+
|
|
9
|
+
Consistency comes from **one source of truth**. Before creating any new component, style,
|
|
10
|
+
token, icon, hook, util, or helper for the feature, **search the project** for an
|
|
11
|
+
existing one that fits. Reuse it. Don't duplicate.
|
|
12
|
+
|
|
13
|
+
This applies to UI **and** non-UI code: utilities, helpers, types, validators, schemas,
|
|
14
|
+
formatters, hooks, query helpers — anything that might already exist.
|
|
15
|
+
|
|
16
|
+
## The decision (in order)
|
|
17
|
+
1. **Search first.** Use a code-intelligence index if available — codebase-memory-mcp first,
|
|
18
|
+
cross-checked with codegraph + graphify, else standard methods (LSP / Read/Grep/Glob); see
|
|
19
|
+
`../../devrites-lib/reference/standards/tooling.md` — to find
|
|
20
|
+
similar definitions; fall back to grep/glob over `components/`, design tokens, hooks/,
|
|
21
|
+
utils/, lib/. Look for things doing the *same job*, not just the same name.
|
|
22
|
+
2. **Exact fit → REUSE.** Compose / import the existing thing. No copy, no fork.
|
|
23
|
+
3. **Close fit → EXTEND.** Add a variant/prop/option that the existing component or util
|
|
24
|
+
can carry without distortion. Adding a prop to a button is fine; adding ten props that
|
|
25
|
+
each branch the internals is not.
|
|
26
|
+
4. **No fit → BUILD NEW**, in the project's idiom. If a similar need is likely to recur,
|
|
27
|
+
propose adding it to the shared system (component library / utils module). If it's
|
|
28
|
+
truly one-off, build it locally — don't pre-abstract.
|
|
29
|
+
|
|
30
|
+
## When to *avoid* reuse (the AHA caveat)
|
|
31
|
+
Reuse is good; **forcing** it isn't. **Avoid Hasty Abstractions**: if making the existing
|
|
32
|
+
thing fit means warping its API or breaking its contract for one caller, **don't**.
|
|
33
|
+
Duplication is cheaper than the wrong abstraction. Build a sibling component/util and let
|
|
34
|
+
a real pattern emerge from two or three callers before consolidating.
|
|
35
|
+
|
|
36
|
+
## Record the decision (per slice)
|
|
37
|
+
On each slice, note what was reused / extended / created new — so the seal can see the
|
|
38
|
+
consistency story and reviewers can spot silent duplication.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Existing reused: <Button, useToast, formatCents>
|
|
42
|
+
Extended: <Card — added variant="elevated">
|
|
43
|
+
Created new: <ExportProgress (no prior equivalent; propose for shared lib)>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Anti-patterns to name
|
|
47
|
+
- Silently re-implementing an existing component / hook / util because it was easier than
|
|
48
|
+
finding it. Search first.
|
|
49
|
+
- Copy-pasting a component from `components/` into the feature folder. That's a fork.
|
|
50
|
+
- Adding a second icon set / second toast library / second date util because the existing
|
|
51
|
+
one didn't quite fit — almost always extend the existing or ask first.
|
|
52
|
+
- Forcing reuse via 8 boolean props that branch the internals — that's an abstraction
|
|
53
|
+
collapsing under its own weight. Split it.
|
|
54
|
+
|
|
55
|
+
## Search hints
|
|
56
|
+
- **UI**: `components/ui/`, design-system package imports neighboring features use,
|
|
57
|
+
`tokens.*` / Tailwind config / theme files, icon barrel files, layout primitives.
|
|
58
|
+
- **Non-UI**: `lib/`, `utils/`, `helpers/`, `services/`, `validators/`, `schemas/`,
|
|
59
|
+
`hooks/`, language stdlib equivalents.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Shape before code
|
|
2
|
+
|
|
3
|
+
Decide what the UI *is* before how it looks. Aesthetics follow structure; structure
|
|
4
|
+
follows the user's goal. Skipping this is how you get pretty UI that doesn't work.
|
|
5
|
+
|
|
6
|
+
**The feature-level shape already exists.** `$rite-spec` ran `devrites-ux-shape` and wrote
|
|
7
|
+
`design-brief.md` (design direction, key states, interaction model). In `$rite-build` this
|
|
8
|
+
is a **per-slice refinement of that brief for the surface you're about to code** — confirm
|
|
9
|
+
the answers below against the brief and fill any slice-specific gaps; don't re-derive the
|
|
10
|
+
design. **Only shape from scratch here** when a UI slice has no `design-brief.md` (a spec
|
|
11
|
+
written before shaping) — then run `devrites-ux-shape` first, or answer these and write the
|
|
12
|
+
brief inline.
|
|
13
|
+
|
|
14
|
+
## Answer these before writing markup
|
|
15
|
+
1. **User goal** — what is the user here to accomplish? One sentence.
|
|
16
|
+
2. **Primary action** — the single most important thing on this surface. It must be
|
|
17
|
+
visually obvious. Everything else is secondary.
|
|
18
|
+
3. **Information hierarchy** — what must be seen first, second, third. Rank content;
|
|
19
|
+
the layout expresses the ranking.
|
|
20
|
+
4. **States** — design all of them, not just the happy path:
|
|
21
|
+
- default / populated
|
|
22
|
+
- loading (initial + subsequent)
|
|
23
|
+
- empty (with a clear next action — welcoming, not a dead end)
|
|
24
|
+
- error (what happened + how to recover)
|
|
25
|
+
- success
|
|
26
|
+
- disabled / read-only / no-permission
|
|
27
|
+
- long content / overflow / many items
|
|
28
|
+
5. **Responsive** — how it reflows from small (320) to large (1440). What collapses,
|
|
29
|
+
stacks, hides, or scrolls.
|
|
30
|
+
6. **Accessibility** — focus order, labels, contrast, keyboard operability, semantics.
|
|
31
|
+
7. **Interaction model** — what's inline vs. navigated vs. (rarely) a modal; optimistic
|
|
32
|
+
vs. pending; how feedback is given.
|
|
33
|
+
|
|
34
|
+
## Ask when ambiguous
|
|
35
|
+
If the visual direction or the UX flow isn't determined by the existing system + the
|
|
36
|
+
spec, ask the user (show 2–3 concrete options) before building. Guessing a flow is
|
|
37
|
+
expensive to undo once coded.
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
The answers live in the feature's `design-brief.md` (shaped at spec by `devrites-ux-shape`).
|
|
41
|
+
In build, append any slice-specific refinement to its **Build-time refinements** section;
|
|
42
|
+
if you shaped from scratch (no brief existed), write the brief now per
|
|
43
|
+
`../../devrites-ux-shape/reference/brief-template.md`. This drives the build and the polish
|
|
44
|
+
checklist.
|
|
45
|
+
|
|
46
|
+
## NEVER (shape)
|
|
47
|
+
|
|
48
|
+
- Never start coding markup without naming the **primary action** for the
|
|
49
|
+
surface.
|
|
50
|
+
- Never design only the populated/happy state. Empty / loading / error /
|
|
51
|
+
disabled / long-content are not optional.
|
|
52
|
+
- Never decide the visual direction by personal taste when the project has
|
|
53
|
+
an existing system. Discover first (`design-references.md`).
|
|
54
|
+
- Never invent a new flow when a neighboring feature already has one — match
|
|
55
|
+
the neighbor, then deviate only with a recorded reason.
|
|
56
|
+
- Never paper over an ambiguous spec with a "reasonable guess". Ask the user
|
|
57
|
+
with 2 – 3 concrete options.
|
|
58
|
+
- Never name a state for the *technical* condition (`isLoadingTrue`) when
|
|
59
|
+
the *user-facing* name (`Loading your invoices…`) tells the user what's
|
|
60
|
+
happening.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devrites-interview
|
|
3
|
+
description: Internal DevRites skill; DevRites agents invoke it explicitly, not by prompt match.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Codex compatibility
|
|
8
|
+
|
|
9
|
+
This is the Codex mirror of a DevRites skill. In Codex:
|
|
10
|
+
|
|
11
|
+
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
12
|
+
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
13
|
+
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here — Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
|
|
14
|
+
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review** — an inline pass shares the calling context and is weaker evidence.
|
|
15
|
+
- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
16
|
+
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers — NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# devrites-interview — extract intent
|
|
20
|
+
|
|
21
|
+
Close the gap between what the user said and what they want, at the cheapest moment —
|
|
22
|
+
before a plan, spec, or code exists.
|
|
23
|
+
|
|
24
|
+
## Protocol
|
|
25
|
+
- **State a confidence number.** Open with your one-line hypothesis of what the user wants and an
|
|
26
|
+
explicit **0–100%** confidence in it. The number forces honesty — if you wrote 85% but can't
|
|
27
|
+
predict how the user reacts to your next three questions, the number is wrong. Below **~70%**,
|
|
28
|
+
append the single thing still unresolved so the user can close the gap directly.
|
|
29
|
+
- **One question per turn.** Multiple questions get one answered and the rest ignored.
|
|
30
|
+
- **Attach your best guess** to every question, with the reason:
|
|
31
|
+
> "I'm assuming export is CSV only (covers the stated use case). Right, or also XLSX?"
|
|
32
|
+
This turns an open question into a cheap correction and exposes your model so the user
|
|
33
|
+
can fix the premise.
|
|
34
|
+
- **Highest-value question first** — order by how much the answer changes the build. A
|
|
35
|
+
question that moves the data model or acceptance criteria beats a cosmetic one.
|
|
36
|
+
- **Impact-priority + bounded blocking.** Order unknowns **scope > security/privacy > UX >
|
|
37
|
+
technical**, and cap **blocking** questions at **≤3** per pass — ask the few that actually gate
|
|
38
|
+
the spec; **default-and-record** the rest in `assumptions.md` (best-guess + why). A reversible
|
|
39
|
+
detail never earns a blocking question.
|
|
40
|
+
- **Structured options** when the space is enumerable — present them as the standard ranked
|
|
41
|
+
**option set** (`standards/afk-hitl.md` → "Option set"): recommended **first**, labelled
|
|
42
|
+
`(Recommended)`, each with a dimension-tagged rationale (`logic · infra · business ·
|
|
43
|
+
architecture`, + `security`/`UX`/`risk` when in scope), plus the escape hatch. Render via
|
|
44
|
+
`AskUserQuestion` when the harness has it:
|
|
45
|
+
```
|
|
46
|
+
1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
|
|
47
|
+
2. <alternative> — <rationale + the trade-off it accepts>
|
|
48
|
+
3. Something else — I'll describe it
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Stop condition
|
|
52
|
+
Stop **opening new questions** when **any** holds — don't interrogate past the point of value.
|
|
53
|
+
(Stopping the interview ≠ deciding for the user: a material call still goes back as a ranked
|
|
54
|
+
option set — confidence lowers the question's *cost* to a one-pick confirm, not its *owner*.)
|
|
55
|
+
- **Confidence — the predict-three test.** The 95% bar is checkable, not a feeling: *can you
|
|
56
|
+
predict the user's reaction to the next three questions you would ask?* If yes, you're done
|
|
57
|
+
extracting. If several rounds pass and you still can't predict, something foundational is
|
|
58
|
+
missing — step back and name it, don't grind out more questions.
|
|
59
|
+
- **Convergence** — the last 2–3 answers only rubber-stamped your guesses and didn't
|
|
60
|
+
move the spec.
|
|
61
|
+
- **Soft cap** — after ~8 material questions, proceed with your best-guess answers logged
|
|
62
|
+
in `assumptions.md` rather than asking more (hard-stop sooner if the ask is small).
|
|
63
|
+
|
|
64
|
+
Depth on the few that matter, not breadth for its own sake. If answers stop converging —
|
|
65
|
+
you keep circling one area without progress — **reframe once** (below) instead of asking
|
|
66
|
+
another question.
|
|
67
|
+
|
|
68
|
+
## Want vs. should-want
|
|
69
|
+
People answer with what they think they *should* want — the buzzword, the best practice, the
|
|
70
|
+
convention — not what they actually want. Watch for tells: abstract virtues ("scalable", "clean",
|
|
71
|
+
"modern"), deferral to what's conventional, an answer that could be pasted into any project. When
|
|
72
|
+
you hear one, ask the unlock question — *"if you didn't have to justify this to anyone, what would
|
|
73
|
+
you actually want?"* — it often does more than the previous five questions. Extract the real want,
|
|
74
|
+
then record it; don't design to the performed one.
|
|
75
|
+
|
|
76
|
+
## What counts as a yes
|
|
77
|
+
Approval is an **explicit** yes, and several common replies aren't one:
|
|
78
|
+
- *"Whatever you think is best"* / *"you decide"* — **delegation, not approval.** Re-ask with two
|
|
79
|
+
concrete options so the user chooses on the substance, not the deferral.
|
|
80
|
+
- *"Sounds good"* / *"sure, let's go"* — a polite exit; probe once that it's real agreement, not
|
|
81
|
+
fatigue, on anything material.
|
|
82
|
+
- **Silence** — not consent. Half of misalignment is silent disagreement about what *won't* be
|
|
83
|
+
built. Make the "out of scope" line explicit and get a yes on it too.
|
|
84
|
+
|
|
85
|
+
## Don't ask
|
|
86
|
+
- Things the codebase answers (read it first).
|
|
87
|
+
- Reversible implementation details (decide, log as an assumption).
|
|
88
|
+
- Everything at once "to be thorough."
|
|
89
|
+
|
|
90
|
+
## When the ask is vague — map the decision tree first
|
|
91
|
+
For a one-line or fuzzy ask (`"design a contact page"`), don't fire isolated questions.
|
|
92
|
+
First sketch the **decision tree** — the branches the answer splits into — and resolve
|
|
93
|
+
each branch **depth-first** with the protocol above. Domain branches per area:
|
|
94
|
+
`rite-spec/reference/interview-patterns.md`.
|
|
95
|
+
|
|
96
|
+
## Reframe (once, when stuck)
|
|
97
|
+
If the interview isn't converging, spend **one** turn challenging the premise rather than
|
|
98
|
+
refining it — *"is a form even the right answer here, or a mailto / booking link?"* A good
|
|
99
|
+
reframe collapses several open branches. Use it sparingly, then resume the protocol.
|
|
100
|
+
|
|
101
|
+
## /clarify mode — coverage scan of an existing spec
|
|
102
|
+
When invoked to clarify a written spec (not extract intent from scratch), scan it against the fixed
|
|
103
|
+
taxonomy and mark each **Clear / Partial / Missing**: Functional scope · Data model · Interaction
|
|
104
|
+
(API / UI states) · Non-functional (auth / latency / scale / compliance) · Edge cases (empty /
|
|
105
|
+
boundary / invalid / concurrent / failure). Then ask **≤5 prioritized questions** (impact order
|
|
106
|
+
above), targeting Missing before Partial, one per turn with a best-guess attached. **Integrate each
|
|
107
|
+
answer into the right spec section** as it lands — not just a Q&A log — and append a dated
|
|
108
|
+
**`## Clarifications`** block to `spec.md` (Q + resolution) for durable provenance. Re-run the scan
|
|
109
|
+
after answers; stop when every area is Clear or explicitly deferred, then re-score the affected
|
|
110
|
+
`checklists/<domain>.md`.
|
|
111
|
+
|
|
112
|
+
## Output
|
|
113
|
+
A short summary the caller can use: objective in one sentence, confirmed decisions,
|
|
114
|
+
still-open (non-blocking) items, recommended next step. If a workspace is active, write
|
|
115
|
+
Q&A to `questions.md`, confirmed calls to `decisions.md`, standing guesses to
|
|
116
|
+
`assumptions.md`. If not, just return the summary — don't create a workspace.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devrites-lib
|
|
3
|
+
description: Internal DevRites skill; DevRites agents invoke it explicitly, not by prompt match.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Codex compatibility
|
|
9
|
+
|
|
10
|
+
This is the Codex mirror of a DevRites skill. In Codex:
|
|
11
|
+
|
|
12
|
+
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
13
|
+
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
14
|
+
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here — Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
|
|
15
|
+
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review** — an inline pass shares the calling context and is weaker evidence.
|
|
16
|
+
- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
17
|
+
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers — NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# devrites-lib — internal shared helpers (not a command)
|
|
21
|
+
|
|
22
|
+
This is **not** a skill you run. It is the manifest for DevRites'
|
|
23
|
+
cross-cutting helper operations, each exposed as a subcommand of the global
|
|
24
|
+
`devrites` binary. A skill invokes one as `devrites <op>` — the same call from
|
|
25
|
+
any workspace, with no install layout or script path to resolve.
|
|
26
|
+
|
|
27
|
+
## Operations
|
|
28
|
+
|
|
29
|
+
Each is a subcommand of the global `devrites` binary, run as `devrites <op>`.
|
|
30
|
+
|
|
31
|
+
**Read-only — orient / gate (never mutate the workspace):**
|
|
32
|
+
|
|
33
|
+
- `devrites-engine preamble` — orientation digest for the active `.devrites/` feature:
|
|
34
|
+
prints `state.md`, the artifacts present, the run mode (HITL/AFK), and the
|
|
35
|
+
open-question tally by gate. Run first (step 0) by every workspace-operating
|
|
36
|
+
`rite-*` skill so the model orients deterministically instead of re-deriving
|
|
37
|
+
state from raw Markdown.
|
|
38
|
+
- `devrites-engine progress` — progress footer; the mirror of `devrites-engine preamble` (which runs
|
|
39
|
+
first). Run **last** (output step) by every lifecycle `rite-*` skill to render — from
|
|
40
|
+
`state.md`, with zero model drift — the `── rite-<phase> ──` header rule, the **slice
|
|
41
|
+
meter** (`Slice 3/5 ██████░░░░ <last-built> ✓`, or `Slices 5/5 ██████████ ✅ ALL
|
|
42
|
+
BUILT` at completion), and the **flow ribbon** (`spec ✓ define ✓ build ◉ … ship ○`).
|
|
43
|
+
The meter answers "how many slices left"; the `✅ ALL BUILT` marker answers "is the
|
|
44
|
+
build done". The skill prints its own what-was-done / next-step / hygiene lines beneath
|
|
45
|
+
it. Read-only; silent (exit 0) when there is no active workspace. Not for the workspace-less
|
|
46
|
+
utilities (`$rite-prototype`, `$rite-zoom-out`, `$rite-pressure-test`, `$rite-handoff`,
|
|
47
|
+
the `$rite` menu) — they have no phase/slice state to render.
|
|
48
|
+
- `reference/reply-contract.md` — the shared user-facing completion reply contract. It
|
|
49
|
+
standardizes the compact chat lines printed below `devrites-engine progress` for success,
|
|
50
|
+
awaiting-human, stopped/blocked, GO, NO-GO, and shipped states. The chat reply is a
|
|
51
|
+
status summary; durable detail stays in the workspace artifacts.
|
|
52
|
+
- `reference/model-tiers.md` — the dispatch-by-task-shape contract (extraction / generation /
|
|
53
|
+
ceiling). A skill names a **tier** by the shape of the work and never hardcodes a model name;
|
|
54
|
+
reviewers are ceiling on purpose. Carries the degradation rule for harnesses that cannot pick
|
|
55
|
+
models per agent. Loaded on demand by any skill that dispatches subagents.
|
|
56
|
+
- `devrites-engine build-readiness` — build-readiness gate. Exits non-zero on `$rite-build`'s
|
|
57
|
+
step-0 stop conditions so they hold by exit code, not by prose the model must
|
|
58
|
+
remember: `2` no `Plan approved` (→ `$rite-define`), `3` `awaiting_human`
|
|
59
|
+
(→ `$rite-resolve`), `4` `blocked` (→ `$rite-plan`), `5` no workspace, `0` ready.
|
|
60
|
+
- `devrites-engine evidence-fresh` — evidence-freshness gate for `$rite-seal`. Exits `3`
|
|
61
|
+
when any file in `touched-files.md` is newer than `evidence.md` /
|
|
62
|
+
`browser-evidence.md` (stale proof = NO-GO until re-proven), `0` when fresh.
|
|
63
|
+
- `devrites-engine check-acceptance` — executable acceptance gate. Compiles `spec.md`'s
|
|
64
|
+
acceptance IDs and exits `1` unless every one is checked (proven) in `seal.md`;
|
|
65
|
+
new workspaces use `AC-###`, while legacy archives may still carry old `[ACn]`
|
|
66
|
+
ids. Used by `$rite-seal` and by the outcome grader.
|
|
67
|
+
- `devrites-engine spec-validate` — spec-grammar gate (the spec-side mirror of
|
|
68
|
+
`devrites-engine check-acceptance`). Lints `spec.md`'s structured `### Requirement:` / `#### Scenario:`
|
|
69
|
+
blocks (SHALL/MUST present, ≥1 scenario each, every scenario has WHEN + THEN, headers
|
|
70
|
+
unique). Exits `1` on a grammar violation, `0` when valid **or** when the spec uses the flat
|
|
71
|
+
`AC-###` flat-bullet form (no structured blocks — nothing to lint, never a failure). Used by
|
|
72
|
+
`$rite-spec`'s readiness gate; see [`standards/spec-grammar.md`](reference/standards/spec-grammar.md).
|
|
73
|
+
|
|
74
|
+
**State mutators — write `state.md` / `questions.md` under one contract:**
|
|
75
|
+
|
|
76
|
+
- `devrites-engine tick-afk` — decrement the AFK slice budget; exits `3` at 0 (forced HITL stop).
|
|
77
|
+
- `devrites-engine resolve` — backs the `$rite-resolve` contract (answer / drop / batch).
|
|
78
|
+
- `devrites-engine close-out` — archive the workspace + clear `ACTIVE` on `$rite-ship`.
|
|
79
|
+
|
|
80
|
+
### Canonical footer snippet
|
|
81
|
+
|
|
82
|
+
Every lifecycle `rite-*` skill prints this as the **first lines of its output**, then its
|
|
83
|
+
own compact fact lines below per [`reply-contract.md`](reference/reply-contract.md):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
devrites-engine progress
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Unified entrypoint (tool-agnostic):**
|
|
90
|
+
|
|
91
|
+
- The `devrites` binary is that unified CLI, dispatching to all of the above (`orient` / `ready` /
|
|
92
|
+
`evidence-fresh` / `acceptance` / `spec-validate` / `tick-afk` / `resolve` / `close` /
|
|
93
|
+
`active` / `list` / `use`), so any agent or human can drive `.devrites/` without the skill
|
|
94
|
+
prose. See [`docs/cli.md`](../../../../docs/cli.md).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Using DevRites: intent map
|
|
2
|
+
|
|
3
|
+
This is an explicit reference, not a session-start autoload. Load it when the user asks which DevRites rite fits.
|
|
4
|
+
|
|
5
|
+
| User intent | Route | Notes |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| New feature / vague product idea | `$rite-spec` (Codex: `$rite-spec`) | Investigate first; do not plan from vibes. |
|
|
8
|
+
| Existing codebase / resume reality | `$rite-adopt` or `$rite-converge` | Adopt derives intent from code; converge appends remaining slices. |
|
|
9
|
+
| Review plan before code | `$rite-vet` | Every defined plan; depth scales to stakes. |
|
|
10
|
+
| Small safe fix | `$rite-quick` | Escalates on auth, migration, public API, destructive, ambiguous, or multi-slice work. |
|
|
11
|
+
| Prove UI/runtime | `$rite-prove` plus `devrites-browser-proof` | Capture real evidence. |
|
|
12
|
+
| Stuck / unfamiliar area | `$rite-zoom-out` | Map structure before changing code. |
|
|
13
|
+
| Teach me | `$rite-explain` | Human learning loop. |
|
|
14
|
+
| Ship? decide readiness | `$rite-seal` | Seal decides; it does not mutate git. |
|
|
15
|
+
| Execute ship after GO | `$rite-ship` | Requires GO/type-GO. |
|
|
16
|
+
| Whole lifecycle unattended | `$rite-autocomplete` | Clean baseline + checkpoint mode; stops on hard gates. |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Model tiers — dispatch by task shape, never by model name
|
|
2
|
+
|
|
3
|
+
The single source for how DevRites skills choose a model for a dispatched subagent. A skill
|
|
4
|
+
names a **tier** by the *shape of the work*; it never hardcodes provider SKUs (Claude,
|
|
5
|
+
OpenAI/ChatGPT, or otherwise) into skill content. Model names change and differ per harness; a tier is stable. Loaded on demand by
|
|
6
|
+
any skill that dispatches subagents (review fan-out, scouts, judges); not a skill itself.
|
|
7
|
+
|
|
8
|
+
## The three tiers
|
|
9
|
+
|
|
10
|
+
| Tier | For work that is… | Examples in DevRites | Model policy |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| **extraction** | search-and-quote: retrieval, grep, verbatim quoting, mechanical scanning — no judgement | archive-search scouts, footprint scanning, repo-profile gathering, an evidence-dossier scout | cheapest capable model **when the harness exposes a per-agent override**; otherwise inherit |
|
|
13
|
+
| **generation** | evidence-driven or mechanical verification: apply a rule to text, draft to a contract, check a claim against a source | drafting to a `design-brief`, mechanical convention checks, first-pass claim verification | mid-tier when the harness allows; otherwise inherit |
|
|
14
|
+
| **ceiling** | adversarial judgement and composition: the calls that decide GO/NO-GO or write the artifact a human reads | every reviewer in the seal/review fan-out, `devrites-forge-judge`, `devrites-plan-reviewer`, `$rite-explain` composition | the orchestrator's own model — inherited by declaring **no** model, never dispatched down |
|
|
15
|
+
|
|
16
|
+
**Reviewers are ceiling on purpose.** Adversarial review is where a cheap model costs the most —
|
|
17
|
+
a missed vulnerability or a rubber-stamp is far more expensive than the tokens saved. DevRites
|
|
18
|
+
agent definitions therefore declare **no** `model:` field: they inherit the ceiling. Do not add
|
|
19
|
+
one to a reviewer to save cost. The tier a scout runs on is where savings are safe.
|
|
20
|
+
|
|
21
|
+
## The degradation rule
|
|
22
|
+
|
|
23
|
+
Tiers are an optimization, never a correctness dependency. A skill written against tiers must run
|
|
24
|
+
correctly on a harness that cannot select models per agent, or has no subagent primitive at all:
|
|
25
|
+
|
|
26
|
+
1. **Per-agent model override unavailable** → dispatch the scout on the **inherited** model and
|
|
27
|
+
keep its **read budget and output cap**. The cost control falls back to structure, not model
|
|
28
|
+
choice — this is why every scout dispatch also carries an explicit read budget.
|
|
29
|
+
2. **No subagent primitive at all** → run the scout work **inline** in the orchestrator, with the
|
|
30
|
+
same budgets. The tier still tells you how much to spend, even with nothing to dispatch to.
|
|
31
|
+
|
|
32
|
+
A skill that only works when it can pick a cheap model is broken. The tier names the *intent*; the
|
|
33
|
+
budget enforces it regardless of what the harness can do.
|
|
34
|
+
|
|
35
|
+
## How a skill references a tier
|
|
36
|
+
|
|
37
|
+
Name the tier and the budget where you dispatch; never the model:
|
|
38
|
+
|
|
39
|
+
> Dispatch an **extraction-tier** scout (read budget: 20 files, output cap: the dossier path + a
|
|
40
|
+
> 3-line gist) to quote every call site of `X` into `<scratch>/dossier.md`.
|
|
41
|
+
|
|
42
|
+
Not: "dispatch a cheap Claude/OpenAI model to…". If a future reviewer needs to know why a scout is cheap,
|
|
43
|
+
this file is the answer; the skill stays legible and portable.
|