agentic-flow-kit 1.8.2 → 2.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/README.md +113 -148
- package/bin/flow-kit.mjs +5 -2
- package/locales/en/installer.json +25 -0
- package/locales/en/overrides/.agents/commands/deploy.md +52 -0
- package/locales/en/overrides/.agents/commands/maintain.md +76 -0
- package/locales/en/overrides/.agents/commands/new-task.md +89 -0
- package/locales/en/overrides/.agents/commands/pipeline-run.md +56 -0
- package/locales/en/overrides/.agents/commands/pr-review.md +30 -0
- package/locales/en/overrides/.agents/commands/review.md +93 -0
- package/locales/en/overrides/.agents/commands/stages.md +256 -0
- package/locales/en/overrides/.agents/notes/pr-review-cost-discipline.md +48 -0
- package/locales/en/overrides/.agents/notes/process-order-rule.md +21 -0
- package/locales/en/overrides/.agents/notes/runtime-env.local.example.md +21 -0
- package/locales/en/overrides/.agents/pipelines/_TEMPLATE.md +75 -0
- package/locales/en/overrides/.agents/pipelines/pipeline-closing.md +28 -0
- package/locales/en/overrides/.agents/roles/implementer.md +28 -0
- package/locales/en/overrides/.agents/roles/independent-reviewer.md +39 -0
- package/locales/en/overrides/.agents/roles/pr-adjudicator.md +27 -0
- package/locales/en/overrides/.agents/roles/pr-finder.md +51 -0
- package/locales/en/overrides/.agents/roles/pr-verifier.md +44 -0
- package/locales/en/overrides/.agents/roles/ui-verifier.md +22 -0
- package/locales/en/overrides/.agents/roles/wiki-compiler.md +47 -0
- package/locales/en/overrides/.agents/skills/arena/SKILL.md +50 -0
- package/locales/en/overrides/.agents/skills/autonomous-run/SKILL.md +45 -0
- package/locales/en/overrides/.agents/skills/blast-radius/SKILL.md +53 -0
- package/locales/en/overrides/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
- package/locales/en/overrides/.agents/skills/dev-tour/SKILL.md +98 -0
- package/locales/en/overrides/.agents/skills/dream/SKILL.md +63 -0
- package/locales/en/overrides/.agents/skills/eval/SKILL.md +42 -0
- package/locales/en/overrides/.agents/skills/interrogate/SKILL.md +49 -0
- package/locales/en/overrides/.agents/skills/number-vetting/SKILL.md +35 -0
- package/locales/en/overrides/.agents/skills/page-refactor/SKILL.md +192 -0
- package/locales/en/overrides/.agents/skills/papercut-fix/SKILL.md +92 -0
- package/locales/en/overrides/.agents/skills/pause-safely/SKILL.md +31 -0
- package/locales/en/overrides/.agents/skills/perf/SKILL.md +42 -0
- package/locales/en/overrides/.agents/skills/review-method/SKILL.md +92 -0
- package/locales/en/overrides/.agents/skills/session-resume/SKILL.md +69 -0
- package/locales/en/overrides/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
- package/locales/en/overrides/.agents/skills/show-me-your-work/SKILL.md +57 -0
- package/locales/en/overrides/.agents/skills/tfs-pr/SKILL.md +95 -0
- package/locales/en/overrides/.agents/skills/verify-ui/SKILL.md +116 -0
- package/locales/en/overrides/.agents/skills/visual-parity/SKILL.md +35 -0
- package/locales/en/overrides/.agents/skills/why/SKILL.md +56 -0
- package/locales/en/overrides/.agents/skills/wiki/SKILL.md +53 -0
- package/locales/en/overrides/.claude/agents/implementer.md +9 -0
- package/locales/en/overrides/.claude/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.claude/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.claude/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.claude/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-review.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.cline/agents/implementer.yml +13 -0
- package/locales/en/overrides/.cline/agents/independent-reviewer.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-adjudicator.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-finder.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-verifier.yml +11 -0
- package/locales/en/overrides/.cline/agents/ui-verifier.yml +8 -0
- package/locales/en/overrides/.cline/agents/wiki-compiler.yml +14 -0
- package/locales/en/overrides/.cline/workflows/wf-deploy.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-maintain.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-new-task.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-pr-review.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-review.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-stages.md +8 -0
- package/locales/en/overrides/.codebuddy/CODEBUDDY.md +7 -0
- package/locales/en/overrides/.codebuddy/agents/implementer.md +9 -0
- package/locales/en/overrides/.codebuddy/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/ui-verifier.md +11 -0
- package/locales/en/overrides/.codebuddy/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.codebuddy/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-review.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.codebuddy/rules/backend-scope.md +5 -0
- package/locales/en/overrides/.codebuddy/rules/frontend-scope.md +5 -0
- package/locales/en/overrides/.codebuddy/skills/tfs-pr/SKILL.md +6 -0
- package/locales/en/overrides/.commandcode/agents/implementer.md +10 -0
- package/locales/en/overrides/.commandcode/agents/independent-reviewer.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-adjudicator.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-finder.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-verifier.md +9 -0
- package/locales/en/overrides/.commandcode/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.commandcode/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.commandcode/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-review.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.opencode/agents/implementer.md +51 -0
- package/locales/en/overrides/.opencode/agents/independent-reviewer.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-adjudicator.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-finder.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-verifier.md +18 -0
- package/locales/en/overrides/.opencode/agents/ui-verifier.md +45 -0
- package/locales/en/overrides/.opencode/agents/wiki-compiler.md +51 -0
- package/locales/en/overrides/.opencode/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-review.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.pi/agents/implementer.md +11 -0
- package/locales/en/overrides/.pi/agents/independent-reviewer.md +12 -0
- package/locales/en/overrides/.pi/agents/pr-adjudicator.md +12 -0
- package/locales/en/overrides/.pi/agents/pr-finder.md +11 -0
- package/locales/en/overrides/.pi/agents/pr-verifier.md +11 -0
- package/locales/en/overrides/.pi/agents/ui-verifier.md +11 -0
- package/locales/en/overrides/.pi/agents/wiki-compiler.md +11 -0
- package/locales/en/overrides/.qoder/agents/implementer.md +9 -0
- package/locales/en/overrides/.qoder/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.qoder/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.qoder/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.qoder/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-review.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.qwen/agents/implementer.md +10 -0
- package/locales/en/overrides/.qwen/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.qwen/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.qwen/agents/wiki-compiler.md +13 -0
- package/locales/en/overrides/.qwen/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-review.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.trae/agents/implementer.md +9 -0
- package/locales/en/overrides/.trae/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.trae/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.trae/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.trae/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-review.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.trae/rules/backend-scope.md +5 -0
- package/locales/en/overrides/.trae/rules/frontend-scope.md +5 -0
- package/locales/en/overrides/.zcode/agents/implementer.md +8 -0
- package/locales/en/overrides/.zcode/agents/independent-reviewer.md +8 -0
- package/locales/en/overrides/.zcode/agents/ui-verifier.md +8 -0
- package/locales/en/overrides/.zcode/agents/wiki-compiler.md +8 -0
- package/locales/en/overrides/AGENTS.md +52 -0
- package/locales/en/overrides/CLAUDE.md +20 -0
- package/locales/en/overrides/wiki/INDEX.md +33 -0
- package/locales/en/overrides/wiki/drafts-archive/README.md +6 -0
- package/locales/en/overrides/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
- package/locales/en/overrides/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
- package/locales/en/overrides/workflow/INDEX.md +13 -0
- package/locales/en/overrides/workflow/README.md +67 -0
- package/locales/en/overrides/workflow/archive/README.md +3 -0
- package/locales/en/overrides/workflow/delegations.md +4 -0
- package/locales/en/overrides/workflow/effective-policy.md +4 -0
- package/locales/en/overrides/workflow/gate-cost.md +4 -0
- package/locales/en/overrides/workflow/incidents/_TEMPLATE.md +49 -0
- package/locales/en/overrides/workflow/intents/_TEMPLATE.md +43 -0
- package/locales/en/overrides/workflow/metrics.md +4 -0
- package/locales/en/overrides/workflow/papercuts.md +3 -0
- package/locales/en/overrides/workflow/plans/_TEMPLATE.md +47 -0
- package/locales/en/overrides/workflow/regression-checklist.md +3 -0
- package/locales/en/overrides/workflow/specs/_TEMPLATE.md +86 -0
- package/locales/en/overrides/workflow/verify-evidence.md +4 -0
- package/locales/zh-CN/installer.json +25 -0
- package/package.json +23 -36
- package/schemas/install-manifest.schema.json +24 -0
- package/schemas/project-profile.schema.json +28 -0
- package/src/cli/args.mjs +41 -0
- package/src/cli/main.mjs +72 -0
- package/src/commands/add-host.mjs +29 -0
- package/src/commands/doctor.mjs +80 -0
- package/src/commands/install.mjs +149 -0
- package/src/commands/upgrade.mjs +30 -0
- package/src/git/config.mjs +61 -0
- package/src/hosts/registry.mjs +26 -0
- package/src/i18n.mjs +32 -0
- package/src/install/apply.mjs +124 -0
- package/src/install/manifest.mjs +40 -0
- package/src/install/plan.mjs +83 -0
- package/src/render/tokens.mjs +58 -0
- package/templates/engine/.agents/board/dev-tour.html +1940 -0
- package/templates/engine/.agents/board/index.html +835 -0
- package/templates/engine/.agents/commands/deploy.md +52 -0
- package/templates/engine/.agents/commands/maintain.md +76 -0
- package/templates/engine/.agents/commands/new-task.md +89 -0
- package/templates/engine/.agents/commands/pipeline-run.md +56 -0
- package/templates/engine/.agents/commands/pr-review.md +30 -0
- package/templates/engine/.agents/commands/review.md +93 -0
- package/templates/engine/.agents/commands/stages.md +256 -0
- package/templates/engine/.agents/config/commit-msg-rules.json +7 -0
- package/templates/engine/.agents/config/engine.json +11 -0
- package/templates/engine/.agents/config/gate-budgets.json +5 -0
- package/templates/engine/.agents/config/mechanism-registry.md +62 -0
- package/templates/engine/.agents/config/model-roles.json +26 -0
- package/templates/engine/.agents/config/model-roles.local.example.json +7 -0
- package/templates/engine/.agents/config/pr-review.json +67 -0
- package/templates/engine/.agents/config/principles.md +32 -0
- package/templates/engine/.agents/config/workflow-enums.txt +25 -0
- package/templates/engine/.agents/hooks/check-architecture.mjs +168 -0
- package/templates/engine/.agents/hooks/check-audit-fields.mjs +56 -0
- package/templates/engine/.agents/hooks/check-commit-plan-ref.mjs +84 -0
- package/templates/engine/.agents/hooks/check-confirm-order.mjs +281 -0
- package/templates/engine/.agents/hooks/check-delete-guard.mjs +63 -0
- package/templates/engine/.agents/hooks/check-notify-guard.mjs +55 -0
- package/templates/engine/.agents/hooks/commit-check.cjs +208 -0
- package/templates/engine/.agents/hooks/gates.json +33 -0
- package/templates/engine/.agents/hooks/local-pre-commit.mjs +27 -0
- package/templates/engine/.agents/hooks/pre-shell-check.cjs +361 -0
- package/templates/engine/.agents/hooks/pre-write-check.cjs +220 -0
- package/templates/engine/.agents/notes/gate-diet.md +75 -0
- package/templates/engine/.agents/notes/pr-review-cost-discipline.md +48 -0
- package/templates/engine/.agents/notes/process-order-rule.md +21 -0
- package/templates/engine/.agents/notes/runtime-env.local.example.md +21 -0
- package/templates/engine/.agents/pipelines/_TEMPLATE.md +75 -0
- package/templates/engine/.agents/pipelines/pipeline-closing.md +28 -0
- package/templates/engine/.agents/pipelines//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +16 -0
- package/templates/engine/.agents/roles/implementer.md +28 -0
- package/templates/engine/.agents/roles/independent-reviewer.md +39 -0
- package/templates/engine/.agents/roles/pr-adjudicator.md +27 -0
- package/templates/engine/.agents/roles/pr-finder.md +51 -0
- package/templates/engine/.agents/roles/pr-verifier.md +44 -0
- package/templates/engine/.agents/roles/ui-verifier.md +22 -0
- package/templates/engine/.agents/roles/wiki-compiler.md +47 -0
- package/templates/engine/.agents/scripts/agg-delegations.mjs +439 -0
- package/templates/engine/.agents/scripts/agg-judgments.mjs +301 -0
- package/templates/engine/.agents/scripts/agg-kb-usage.mjs +196 -0
- package/templates/engine/.agents/scripts/append-compensation.mjs +109 -0
- package/templates/engine/.agents/scripts/archive-sweep.mjs +229 -0
- package/templates/engine/.agents/scripts/auto-tour.mjs +77 -0
- package/templates/engine/.agents/scripts/board-port.mjs +17 -0
- package/templates/engine/.agents/scripts/check-doc-body-drift.mjs +102 -0
- package/templates/engine/.agents/scripts/check-engine-artifacts.mjs +54 -0
- package/templates/engine/.agents/scripts/check-hook-wiring.mjs +75 -0
- package/templates/engine/.agents/scripts/check-lane-surface.mjs +393 -0
- package/templates/engine/.agents/scripts/check-ledger-doc-presence.mjs +71 -0
- package/templates/engine/.agents/scripts/check-ledger-invariant.mjs +873 -0
- package/templates/engine/.agents/scripts/check-local-gate-config.mjs +95 -0
- package/templates/engine/.agents/scripts/check-local-gates.mjs +248 -0
- package/templates/engine/.agents/scripts/check-loop-kit.mjs +550 -0
- package/templates/engine/.agents/scripts/check-loop-rev-semantics.mjs +59 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s01-pairing.mjs +116 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s03x-regr-evidence.mjs +38 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s08-acceptance.mjs +130 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s15-fingerprint.mjs +152 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s23-convergence-audit.mjs +182 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s29-regr-enforcer.mjs +69 -0
- package/templates/engine/.agents/scripts/check-loop.mjs +131 -0
- package/templates/engine/.agents/scripts/check-regression-consistency.mjs +252 -0
- package/templates/engine/.agents/scripts/check-schema-residue.mjs +144 -0
- package/templates/engine/.agents/scripts/check-scope-range.mjs +156 -0
- package/templates/engine/.agents/scripts/check-scope.mjs +121 -0
- package/templates/engine/.agents/scripts/check-scripts-syntax.mjs +138 -0
- package/templates/engine/.agents/scripts/check-secrets-lite.mjs +239 -0
- package/templates/engine/.agents/scripts/check-secrets.mjs +104 -0
- package/templates/engine/.agents/scripts/check-test-impact-map.mjs +107 -0
- package/templates/engine/.agents/scripts/ci-assert-frontend-deps.mjs +42 -0
- package/templates/engine/.agents/scripts/ci-commit-hygiene.mjs +86 -0
- package/templates/engine/.agents/scripts/ci-install-gitleaks.mjs +75 -0
- package/templates/engine/.agents/scripts/ci-push-before.mjs +49 -0
- package/templates/engine/.agents/scripts/closeout.mjs +127 -0
- package/templates/engine/.agents/scripts/compact-ledgers.mjs +70 -0
- package/templates/engine/.agents/scripts/confirm-doc.mjs +737 -0
- package/templates/engine/.agents/scripts/delegation-presence.mjs +38 -0
- package/templates/engine/.agents/scripts/dev-tour-model.mjs +1398 -0
- package/templates/engine/.agents/scripts/dream-run.mjs +283 -0
- package/templates/engine/.agents/scripts/ensure-board.mjs +187 -0
- package/templates/engine/.agents/scripts/failure-attribution.mjs +11 -0
- package/templates/engine/.agents/scripts/fill-intent.mjs +60 -0
- package/templates/engine/.agents/scripts/fill-plan.mjs +105 -0
- package/templates/engine/.agents/scripts/fill-spec.mjs +72 -0
- package/templates/engine/.agents/scripts/gen-dev-tour.mjs +191 -0
- package/templates/engine/.agents/scripts/gen-effective-policy.mjs +113 -0
- package/templates/engine/.agents/scripts/gen-engine-map.mjs +292 -0
- package/templates/engine/.agents/scripts/gen-narrative-claims.mjs +275 -0
- package/templates/engine/.agents/scripts/gen-verify-evidence.mjs +115 -0
- package/templates/engine/.agents/scripts/gen-wiki-board.mjs +221 -0
- package/templates/engine/.agents/scripts/gen-workflow-index.mjs +201 -0
- package/templates/engine/.agents/scripts/gen-workflow-metrics.mjs +692 -0
- package/templates/engine/.agents/scripts/git-merge-jsonl.mjs +62 -0
- package/templates/engine/.agents/scripts/judgment-ledger.mjs +68 -0
- package/templates/engine/.agents/scripts/kb-cache-evict.mjs +50 -0
- package/templates/engine/.agents/scripts/kb-search.mjs +423 -0
- package/templates/engine/.agents/scripts/lane-surface-audit.mjs +145 -0
- package/templates/engine/.agents/scripts/ledger-loader.mjs +77 -0
- package/templates/engine/.agents/scripts/ledger-shards.mjs +346 -0
- package/templates/engine/.agents/scripts/metrics-core.mjs +131 -0
- package/templates/engine/.agents/scripts/pipeline-run.mjs +964 -0
- package/templates/engine/.agents/scripts/policy.mjs +250 -0
- package/templates/engine/.agents/scripts/pr-create.mjs +54 -0
- package/templates/engine/.agents/scripts/pr-review.mjs +1551 -0
- package/templates/engine/.agents/scripts/quote-grounding.mjs +233 -0
- package/templates/engine/.agents/scripts/regen-ledgers.mjs +59 -0
- package/templates/engine/.agents/scripts/rewrite-file.mjs +135 -0
- package/templates/engine/.agents/scripts/rule-budget.mjs +246 -0
- package/templates/engine/.agents/scripts/stage-gates.mjs +812 -0
- package/templates/engine/.agents/scripts/test-impact-lib.mjs +451 -0
- package/templates/engine/.agents/scripts/test-impact.mjs +105 -0
- package/templates/engine/.agents/scripts/trust-mode.mjs +130 -0
- package/templates/engine/.agents/scripts/verify-scope.mjs +163 -0
- package/templates/engine/.agents/scripts/verify-wiki-consistency.mjs +264 -0
- package/templates/engine/.agents/scripts/verify.mjs +847 -0
- package/templates/engine/.agents/scripts/warn-format.mjs +57 -0
- package/templates/engine/.agents/scripts/wf-journal.mjs +230 -0
- package/templates/engine/.agents/scripts/workflow-board-server.mjs +696 -0
- package/templates/engine/.agents/scripts/workflow-enums.mjs +70 -0
- package/templates/engine/.agents/scripts/workflows-check.mjs +260 -0
- package/templates/engine/.agents/settings.json +33 -0
- package/templates/engine/.agents/skills/arena/SKILL.md +50 -0
- package/templates/engine/.agents/skills/autonomous-run/SKILL.md +45 -0
- package/templates/engine/.agents/skills/blast-radius/SKILL.md +53 -0
- package/templates/engine/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
- package/templates/engine/.agents/skills/csharp-quality-gates/scripts/quality-gates.mjs +430 -0
- package/templates/engine/.agents/skills/dev-tour/SKILL.md +98 -0
- package/templates/engine/.agents/skills/dream/SKILL.md +63 -0
- package/templates/engine/.agents/skills/eval/SKILL.md +42 -0
- package/templates/engine/.agents/skills/eval/scripts/eval-score.mjs +59 -0
- package/templates/engine/.agents/skills/interrogate/SKILL.md +49 -0
- package/templates/engine/.agents/skills/interrogate/scripts/interrogate-plan.mjs +72 -0
- package/templates/engine/.agents/skills/number-vetting/SKILL.md +35 -0
- package/templates/engine/.agents/skills/page-refactor/SKILL.md +192 -0
- package/templates/engine/.agents/skills/page-refactor/references/templates.md +989 -0
- package/templates/engine/.agents/skills/papercut-fix/SKILL.md +92 -0
- package/templates/engine/.agents/skills/papercut-fix/references/response-template.md +81 -0
- package/templates/engine/.agents/skills/pause-safely/SKILL.md +31 -0
- package/templates/engine/.agents/skills/perf/SKILL.md +42 -0
- package/templates/engine/.agents/skills/review-method/SKILL.md +92 -0
- package/templates/engine/.agents/skills/review-method/golden-set.md +61 -0
- package/templates/engine/.agents/skills/session-resume/SKILL.md +69 -0
- package/templates/engine/.agents/skills/session-resume/scripts/worktree-audit.mjs +110 -0
- package/templates/engine/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
- package/templates/engine/.agents/skills/show-me-your-work/SKILL.md +57 -0
- package/templates/engine/.agents/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
- package/templates/engine/.agents/skills/show-me-your-work/scripts/decision-log.mjs +24 -0
- package/templates/engine/.agents/skills/tfs-pr/SKILL.md +95 -0
- package/templates/engine/.agents/skills/tfs-pr/scripts/tfs-pr.mjs +947 -0
- package/templates/engine/.agents/skills/verify-ui/SKILL.md +116 -0
- package/templates/engine/.agents/skills/verify-ui/features/.gitkeep +0 -0
- package/templates/engine/.agents/skills/verify-ui/scripts/gen-verify-feature.mjs +114 -0
- package/templates/engine/.agents/skills/visual-parity/SKILL.md +35 -0
- package/templates/engine/.agents/skills/why/SKILL.md +56 -0
- package/templates/engine/.agents/skills/why/scripts/why-evidence.mjs +74 -0
- package/templates/engine/.agents/skills/wiki/SKILL.md +53 -0
- package/templates/engine/.agents/tests/auto-tour.test.mjs +82 -0
- package/templates/engine/.agents/tests/dev-tour-model.test.mjs +452 -0
- package/templates/engine/.agents/tests/fill-plan-lite.test.mjs +46 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.md +14 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.model.json +179 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.md +21 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.model.json +194 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.md +20 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.model.json +207 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.md +24 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.model.json +225 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.md +15 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.model.json +160 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.md +29 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.model.json +266 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.md +17 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.model.json +207 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.md +39 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.model.json +359 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.md +16 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.model.json +131 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.md +29 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.model.json +190 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.md +39 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.model.json +362 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.md +24 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.model.json +224 -0
- package/templates/engine/.agents/tests/tools/gen-synthetic-plan.mjs +108 -0
- package/templates/git/.gitattributes +22 -0
- package/templates/git/.githooks/commit-msg +72 -0
- package/templates/git/.githooks/post-commit +62 -0
- package/templates/git/.githooks/pre-commit +197 -0
- package/templates/git/.githooks/pre-merge-commit +28 -0
- package/templates/git/.githooks/pre-push +201 -0
- package/templates/git/.gitignore.engine +11 -0
- package/templates/hosts/claude/CLAUDE.md +55 -0
- package/templates/hosts/claude/agents/implementer.md +7 -0
- package/templates/hosts/claude/agents/independent-reviewer.md +8 -0
- package/templates/hosts/claude/agents/pr-adjudicator.md +8 -0
- package/templates/hosts/claude/agents/pr-finder.md +8 -0
- package/templates/hosts/claude/agents/pr-verifier.md +8 -0
- package/templates/hosts/claude/agents/ui-verifier.md +8 -0
- package/templates/hosts/claude/agents/wiki-compiler.md +8 -0
- package/templates/hosts/claude/commands/wf-deploy.md +10 -0
- package/templates/hosts/claude/commands/wf-maintain.md +10 -0
- package/templates/hosts/claude/commands/wf-new-task.md +10 -0
- package/templates/hosts/claude/commands/wf-pipeline-run.md +10 -0
- package/templates/hosts/claude/commands/wf-pr-review.md +10 -0
- package/templates/hosts/claude/commands/wf-review.md +10 -0
- package/templates/hosts/claude/commands/wf-stages.md +10 -0
- package/templates/hosts/claude/settings.json +57 -0
- package/templates/hosts/cline/agents/implementer.yml +15 -0
- package/templates/hosts/cline/agents/independent-reviewer.yml +20 -0
- package/templates/hosts/cline/agents/pr-adjudicator.yml +18 -0
- package/templates/hosts/cline/agents/pr-finder.yml +19 -0
- package/templates/hosts/cline/agents/pr-verifier.yml +18 -0
- package/templates/hosts/cline/agents/ui-verifier.yml +17 -0
- package/templates/hosts/cline/agents/wiki-compiler.yml +20 -0
- package/templates/hosts/cline/hooks/PreToolUse.cjs +260 -0
- package/templates/hosts/cline/workflows/wf-deploy.md +8 -0
- package/templates/hosts/cline/workflows/wf-maintain.md +8 -0
- package/templates/hosts/cline/workflows/wf-new-task.md +8 -0
- package/templates/hosts/cline/workflows/wf-pipeline-run.md +8 -0
- package/templates/hosts/cline/workflows/wf-pr-review.md +8 -0
- package/templates/hosts/cline/workflows/wf-review.md +8 -0
- package/templates/hosts/cline/workflows/wf-stages.md +8 -0
- package/templates/hosts/codebuddy/CODEBUDDY.md +7 -0
- package/templates/hosts/codebuddy/agents/implementer.md +9 -0
- package/templates/hosts/codebuddy/agents/independent-reviewer.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-finder.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-verifier.md +10 -0
- package/templates/hosts/codebuddy/agents/ui-verifier.md +11 -0
- package/templates/hosts/codebuddy/agents/wiki-compiler.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-deploy.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-maintain.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-new-task.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-pipeline-run.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-pr-review.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-review.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-stages.md +10 -0
- package/templates/hosts/codebuddy/rules/backend-scope.md +5 -0
- package/templates/hosts/codebuddy/rules/frontend-scope.md +5 -0
- package/templates/hosts/codebuddy/settings.json +31 -0
- package/templates/hosts/codebuddy/skills/tfs-pr/SKILL.md +6 -0
- package/templates/hosts/commandcode/agents/implementer.md +10 -0
- package/templates/hosts/commandcode/agents/independent-reviewer.md +9 -0
- package/templates/hosts/commandcode/agents/pr-adjudicator.md +9 -0
- package/templates/hosts/commandcode/agents/pr-finder.md +9 -0
- package/templates/hosts/commandcode/agents/pr-verifier.md +9 -0
- package/templates/hosts/commandcode/agents/ui-verifier.md +11 -0
- package/templates/hosts/commandcode/agents/wiki-compiler.md +10 -0
- package/templates/hosts/commandcode/commands/wf-deploy.md +9 -0
- package/templates/hosts/commandcode/commands/wf-maintain.md +9 -0
- package/templates/hosts/commandcode/commands/wf-new-task.md +9 -0
- package/templates/hosts/commandcode/commands/wf-pipeline-run.md +9 -0
- package/templates/hosts/commandcode/commands/wf-pr-review.md +9 -0
- package/templates/hosts/commandcode/commands/wf-review.md +9 -0
- package/templates/hosts/commandcode/commands/wf-stages.md +9 -0
- package/templates/hosts/commandcode/settings.json +59 -0
- package/templates/hosts/opencode/agents/implementer.md +51 -0
- package/templates/hosts/opencode/agents/independent-reviewer.md +18 -0
- package/templates/hosts/opencode/agents/pr-adjudicator.md +18 -0
- package/templates/hosts/opencode/agents/pr-finder.md +18 -0
- package/templates/hosts/opencode/agents/pr-verifier.md +18 -0
- package/templates/hosts/opencode/agents/ui-verifier.md +45 -0
- package/templates/hosts/opencode/agents/wiki-compiler.md +51 -0
- package/templates/hosts/opencode/commands/wf-deploy.md +7 -0
- package/templates/hosts/opencode/commands/wf-maintain.md +7 -0
- package/templates/hosts/opencode/commands/wf-new-task.md +7 -0
- package/templates/hosts/opencode/commands/wf-pipeline-run.md +7 -0
- package/templates/hosts/opencode/commands/wf-pr-review.md +7 -0
- package/templates/hosts/opencode/commands/wf-review.md +7 -0
- package/templates/hosts/opencode/commands/wf-stages.md +7 -0
- package/templates/hosts/pi/agents/implementer.md +10 -0
- package/templates/hosts/pi/agents/independent-reviewer.md +11 -0
- package/templates/hosts/pi/agents/pr-adjudicator.md +11 -0
- package/templates/hosts/pi/agents/pr-finder.md +10 -0
- package/templates/hosts/pi/agents/pr-verifier.md +10 -0
- package/templates/hosts/pi/agents/ui-verifier.md +10 -0
- package/templates/hosts/pi/agents/wiki-compiler.md +10 -0
- package/templates/hosts/pi/extensions/lib/gates-core.cjs +196 -0
- package/templates/hosts/pi/extensions/shipyard-gates.ts +95 -0
- package/templates/hosts/pi/settings.json +5 -0
- package/templates/hosts/qoder/agents/implementer.md +9 -0
- package/templates/hosts/qoder/agents/independent-reviewer.md +10 -0
- package/templates/hosts/qoder/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/qoder/agents/pr-finder.md +10 -0
- package/templates/hosts/qoder/agents/pr-verifier.md +10 -0
- package/templates/hosts/qoder/agents/ui-verifier.md +10 -0
- package/templates/hosts/qoder/agents/wiki-compiler.md +10 -0
- package/templates/hosts/qoder/commands/wf-deploy.md +8 -0
- package/templates/hosts/qoder/commands/wf-maintain.md +8 -0
- package/templates/hosts/qoder/commands/wf-new-task.md +8 -0
- package/templates/hosts/qoder/commands/wf-pipeline-run.md +8 -0
- package/templates/hosts/qoder/commands/wf-pr-review.md +8 -0
- package/templates/hosts/qoder/commands/wf-review.md +8 -0
- package/templates/hosts/qoder/commands/wf-stages.md +8 -0
- package/templates/hosts/qoder/settings.json +63 -0
- package/templates/hosts/qwen/agents/implementer.md +8 -0
- package/templates/hosts/qwen/agents/independent-reviewer.md +8 -0
- package/templates/hosts/qwen/agents/pr-adjudicator.md +8 -0
- package/templates/hosts/qwen/agents/pr-finder.md +8 -0
- package/templates/hosts/qwen/agents/pr-verifier.md +8 -0
- package/templates/hosts/qwen/agents/ui-verifier.md +8 -0
- package/templates/hosts/qwen/agents/wiki-compiler.md +11 -0
- package/templates/hosts/qwen/commands/wf-deploy.md +9 -0
- package/templates/hosts/qwen/commands/wf-maintain.md +9 -0
- package/templates/hosts/qwen/commands/wf-new-task.md +9 -0
- package/templates/hosts/qwen/commands/wf-pipeline-run.md +9 -0
- package/templates/hosts/qwen/commands/wf-pr-review.md +9 -0
- package/templates/hosts/qwen/commands/wf-review.md +9 -0
- package/templates/hosts/qwen/commands/wf-stages.md +9 -0
- package/templates/hosts/qwen/settings.json +59 -0
- package/templates/hosts/trae/agents/implementer.md +9 -0
- package/templates/hosts/trae/agents/independent-reviewer.md +10 -0
- package/templates/hosts/trae/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/trae/agents/pr-finder.md +10 -0
- package/templates/hosts/trae/agents/pr-verifier.md +10 -0
- package/templates/hosts/trae/agents/ui-verifier.md +10 -0
- package/templates/hosts/trae/agents/wiki-compiler.md +10 -0
- package/templates/hosts/trae/commands/wf-deploy.md +8 -0
- package/templates/hosts/trae/commands/wf-maintain.md +8 -0
- package/templates/hosts/trae/commands/wf-new-task.md +8 -0
- package/templates/hosts/trae/commands/wf-pipeline-run.md +8 -0
- package/templates/hosts/trae/commands/wf-pr-review.md +8 -0
- package/templates/hosts/trae/commands/wf-review.md +8 -0
- package/templates/hosts/trae/commands/wf-stages.md +8 -0
- package/templates/hosts/trae/hooks.json +17 -0
- package/templates/hosts/trae/rules/backend-scope.md +5 -0
- package/templates/hosts/trae/rules/frontend-scope.md +5 -0
- package/templates/hosts/zcode/agents/implementer.md +8 -0
- package/templates/hosts/zcode/agents/independent-reviewer.md +8 -0
- package/templates/hosts/zcode/agents/ui-verifier.md +8 -0
- package/templates/hosts/zcode/agents/wiki-compiler.md +8 -0
- package/templates/hosts/zcode/config.json +31 -0
- package/templates/hosts/zcode/workflows/code-review.dwf.ts +428 -0
- package/templates/hosts/zcode/workflows/fullchain-flow-test.dwf.ts +898 -0
- package/templates/profiles/dotnet/.agents/config/lane-surfaces.txt +33 -0
- package/templates/profiles/dotnet/.agents/config/rule-budgets.txt +84 -0
- package/templates/profiles/dotnet/.agents/config/test-impact-map.json +590 -0
- package/templates/profiles/dotnet/.agents/config/workflow-modules.txt +18 -0
- package/templates/profiles/dotnet/.agents/hooks/commit-check.config.json +18 -0
- package/templates/profiles/dotnet/.agents/hooks/delete-guard-allowlist.txt +28 -0
- package/templates/profiles/dotnet/.agents/notes/runtime-env.md +178 -0
- package/templates/profiles/dotnet/AGENTS.md +52 -0
- package/templates/profiles/empty/.agents/config/lane-surfaces.txt +12 -0
- package/templates/profiles/empty/.agents/config/rule-budgets.txt +3 -0
- package/templates/profiles/empty/.agents/config/test-impact-map.json +8 -0
- package/templates/profiles/empty/.agents/config/workflow-modules.txt +2 -0
- package/templates/profiles/empty/.agents/hooks/commit-check.config.json +5 -0
- package/templates/profiles/empty/.agents/hooks/delete-guard-allowlist.txt +2 -0
- package/templates/profiles/empty/.agents/notes/runtime-env.md +44 -0
- package/templates/profiles/empty/AGENTS.md +52 -0
- package/templates/profiles/node/.agents/config/lane-surfaces.txt +12 -0
- package/templates/profiles/node/.agents/config/rule-budgets.txt +3 -0
- package/templates/profiles/node/.agents/config/test-impact-map.json +8 -0
- package/templates/profiles/node/.agents/config/workflow-modules.txt +2 -0
- package/templates/profiles/node/.agents/hooks/commit-check.config.json +5 -0
- package/templates/profiles/node/.agents/hooks/delete-guard-allowlist.txt +2 -0
- package/templates/profiles/node/.agents/notes/runtime-env.md +44 -0
- package/templates/profiles/node/AGENTS.md +52 -0
- package/templates/scaffold/wiki/INDEX.md +33 -0
- package/templates/scaffold/wiki/drafts-archive/README.md +7 -0
- package/templates/scaffold/wiki//344/272/247/345/223/201/351/234/200/346/261/202/.gitkeep +0 -0
- package/templates/scaffold/wiki//345/274/200/345/217/221/346/226/271/346/241/210/.gitkeep +0 -0
- package/templates/scaffold/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
- package/templates/scaffold/wiki//346/265/213/350/257/225/346/212/245/345/221/212/.gitkeep +0 -0
- package/templates/scaffold/wiki//347/224/250/346/210/267/345/212/237/350/203/275/.gitkeep +0 -0
- package/templates/scaffold/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
- package/templates/scaffold/wiki//351/241/271/347/233/256/350/247/204/350/214/203/.gitkeep +0 -0
- package/templates/scaffold/workflow/INDEX.md +13 -0
- package/templates/scaffold/workflow/README.md +67 -0
- package/templates/scaffold/workflow/archive/README.md +3 -0
- package/templates/scaffold/workflow/delegations.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/delegations.md +4 -0
- package/templates/scaffold/workflow/effective-policy.md +4 -0
- package/templates/scaffold/workflow/evidence/.gitkeep +0 -0
- package/templates/scaffold/workflow/gate-cost.md +4 -0
- package/templates/scaffold/workflow/gate-metrics.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/incidents/_TEMPLATE.md +49 -0
- package/templates/scaffold/workflow/intents/_TEMPLATE.md +43 -0
- package/templates/scaffold/workflow/metrics.md +4 -0
- package/templates/scaffold/workflow/papercuts.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/papercuts.md +3 -0
- package/templates/scaffold/workflow/plans/_TEMPLATE.md +47 -0
- package/templates/scaffold/workflow/regression-checklist.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/regression-checklist.md +3 -0
- package/templates/scaffold/workflow/research/.gitkeep +0 -0
- package/templates/scaffold/workflow/reviews.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/specs/_TEMPLATE.md +87 -0
- package/templates/scaffold/workflow/verify-evidence/.gitkeep +0 -0
- package/templates/scaffold/workflow/verify-evidence.md +4 -0
- package/LICENSE +0 -21
- package/modules/gates/README.md +0 -25
- package/modules/gates/dotnet-ca/README.md +0 -24
- package/modules/gates/dotnet-ca/check-architecture.sh +0 -150
- package/modules/gates/dotnet-ca/local-pre-commit.line +0 -1
- package/modules/gates/generated-readonly/README.md +0 -13
- package/modules/gates/generated-readonly/check-generated.mjs +0 -61
- package/modules/gates/generated-readonly/local-pre-commit.line +0 -1
- package/modules/gates/node-layer/README.md +0 -9
- package/modules/gates/node-layer/check-node-layer.mjs +0 -29
- package/modules/gates/node-layer/local-pre-commit.line +0 -1
- package/modules/gates/py-import/README.md +0 -9
- package/modules/gates/py-import/check-py-import.mjs +0 -30
- package/modules/gates/py-import/local-pre-commit.line +0 -1
- package/modules/gates/test-protect/README.md +0 -23
- package/modules/gates/test-protect/check-test-protect.mjs +0 -64
- package/modules/gates/test-protect/local-pre-commit.line +0 -1
- package/modules/hosts/README.md +0 -57
- package/modules/hosts/claude/agents/implementer.md +0 -51
- package/modules/hosts/claude/agents/independent-reviewer.md +0 -49
- package/modules/hosts/claude/agents/ui-verifier.md +0 -48
- package/modules/hosts/claude/commands/wf-build.md +0 -69
- package/modules/hosts/claude/commands/wf-deploy.md +0 -58
- package/modules/hosts/claude/commands/wf-design.md +0 -49
- package/modules/hosts/claude/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/claude/commands/wf-maintain.md +0 -76
- package/modules/hosts/claude/commands/wf-new-task.md +0 -102
- package/modules/hosts/claude/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/claude/commands/wf-plan.md +0 -40
- package/modules/hosts/claude/commands/wf-review.md +0 -49
- package/modules/hosts/claude/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/claude/commands/wf-test.md +0 -68
- package/modules/hosts/codex/agents/implementer.md +0 -51
- package/modules/hosts/codex/agents/independent-reviewer.md +0 -49
- package/modules/hosts/codex/agents/ui-verifier.md +0 -48
- package/modules/hosts/codex/commands/wf-build.md +0 -69
- package/modules/hosts/codex/commands/wf-deploy.md +0 -58
- package/modules/hosts/codex/commands/wf-design.md +0 -49
- package/modules/hosts/codex/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/codex/commands/wf-maintain.md +0 -76
- package/modules/hosts/codex/commands/wf-new-task.md +0 -102
- package/modules/hosts/codex/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/codex/commands/wf-plan.md +0 -40
- package/modules/hosts/codex/commands/wf-review.md +0 -49
- package/modules/hosts/codex/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/codex/commands/wf-test.md +0 -68
- package/modules/hosts/codex/skills/flow-kit/SKILL.md +0 -14
- package/modules/hosts/cursor/agents/implementer.md +0 -51
- package/modules/hosts/cursor/agents/independent-reviewer.md +0 -49
- package/modules/hosts/cursor/agents/ui-verifier.md +0 -48
- package/modules/hosts/cursor/commands/wf-build.md +0 -69
- package/modules/hosts/cursor/commands/wf-deploy.md +0 -58
- package/modules/hosts/cursor/commands/wf-design.md +0 -49
- package/modules/hosts/cursor/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/cursor/commands/wf-maintain.md +0 -76
- package/modules/hosts/cursor/commands/wf-new-task.md +0 -102
- package/modules/hosts/cursor/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/cursor/commands/wf-plan.md +0 -40
- package/modules/hosts/cursor/commands/wf-review.md +0 -49
- package/modules/hosts/cursor/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/cursor/commands/wf-test.md +0 -68
- package/modules/hosts/omp/agents/implementer.md +0 -52
- package/modules/hosts/omp/agents/independent-reviewer.md +0 -50
- package/modules/hosts/omp/agents/ui-verifier.md +0 -49
- package/modules/hosts/opencode/agents/implementer.md +0 -59
- package/modules/hosts/opencode/agents/independent-reviewer.md +0 -53
- package/modules/hosts/opencode/agents/ui-verifier.md +0 -52
- package/modules/hosts/opencode/commands/wf-build.md +0 -69
- package/modules/hosts/opencode/commands/wf-deploy.md +0 -58
- package/modules/hosts/opencode/commands/wf-design.md +0 -49
- package/modules/hosts/opencode/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/opencode/commands/wf-maintain.md +0 -76
- package/modules/hosts/opencode/commands/wf-new-task.md +0 -102
- package/modules/hosts/opencode/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/opencode/commands/wf-plan.md +0 -40
- package/modules/hosts/opencode/commands/wf-review.md +0 -49
- package/modules/hosts/opencode/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/opencode/commands/wf-test.md +0 -68
- package/modules/hosts/trae/agents/implementer.md +0 -52
- package/modules/hosts/trae/agents/independent-reviewer.md +0 -51
- package/modules/hosts/trae/agents/ui-verifier.md +0 -50
- package/modules/hosts/trae/commands/wf-build.md +0 -70
- package/modules/hosts/trae/commands/wf-deploy.md +0 -59
- package/modules/hosts/trae/commands/wf-design.md +0 -50
- package/modules/hosts/trae/commands/wf-gate-checklist.md +0 -78
- package/modules/hosts/trae/commands/wf-maintain.md +0 -77
- package/modules/hosts/trae/commands/wf-new-task.md +0 -103
- package/modules/hosts/trae/commands/wf-pipeline-run.md +0 -36
- package/modules/hosts/trae/commands/wf-plan.md +0 -41
- package/modules/hosts/trae/commands/wf-review.md +0 -50
- package/modules/hosts/trae/commands/wf-sync-hosts.md +0 -65
- package/modules/hosts/trae/commands/wf-test.md +0 -69
- package/modules/hosts/trae/hooks/post-edit-check.cjs +0 -98
- package/modules/hosts/trae/hooks/pre-shell-check.cjs +0 -192
- package/modules/hosts/trae/hooks/resolve-shell.cjs +0 -30
- package/modules/hosts/trae/hooks.json +0 -29
- package/modules/hosts/trae/rules/beautify-input-chinese.md +0 -6
- package/modules/hosts/trae/rules/git-commit-message.md +0 -10
- package/modules/hosts/trae/rules/project-workflow.md +0 -14
- package/modules/hosts/zcode/agents/implementer.md +0 -51
- package/modules/hosts/zcode/agents/independent-reviewer.md +0 -49
- package/modules/hosts/zcode/agents/ui-verifier.md +0 -48
- package/src/add-gate.mjs +0 -116
- package/src/add-gate.test.mjs +0 -103
- package/src/add-host.mjs +0 -68
- package/src/cli.mjs +0 -169
- package/src/doctor.mjs +0 -629
- package/src/executor.mjs +0 -262
- package/src/executor.test.mjs +0 -295
- package/src/fresh-init.test.mjs +0 -64
- package/src/gate-dotnet-ca.test.mjs +0 -124
- package/src/gates.test.mjs +0 -143
- package/src/init.mjs +0 -382
- package/src/init.test.mjs +0 -163
- package/src/instance-ref.test.mjs +0 -62
- package/src/jscpd-drift.test.mjs +0 -144
- package/src/pack.test.mjs +0 -24
- package/src/profiles.mjs +0 -183
- package/src/render.mjs +0 -132
- package/src/rule-budget.test.mjs +0 -103
- package/src/run-tests.mjs +0 -56
- package/src/stack-profile.test.mjs +0 -95
- package/src/sync-hosts.mjs +0 -257
- package/src/sync-hosts.test.mjs +0 -291
- package/src/sync.mjs +0 -228
- package/src/sync.test.mjs +0 -452
- package/src/trae-hooks.test.mjs +0 -127
- package/src/validate.mjs +0 -77
- package/src/validate.test.mjs +0 -95
- package/templates/.gitattributes +0 -17
- package/templates/AGENTS.md +0 -57
- package/templates/_agents/board/index.html +0 -676
- package/templates/_agents/commands/build.md +0 -84
- package/templates/_agents/commands/deploy.md +0 -66
- package/templates/_agents/commands/design.md +0 -63
- package/templates/_agents/commands/gate-checklist.md +0 -91
- package/templates/_agents/commands/maintain.md +0 -90
- package/templates/_agents/commands/new-task.md +0 -110
- package/templates/_agents/commands/pipeline-run.md +0 -43
- package/templates/_agents/commands/plan.md +0 -48
- package/templates/_agents/commands/review.md +0 -62
- package/templates/_agents/commands/sync-hosts.md +0 -77
- package/templates/_agents/commands/test.md +0 -87
- package/templates/_agents/control-surfaces.txt +0 -53
- package/templates/_agents/engine-lock.json +0 -342
- package/templates/_agents/hooks/check-index-incremental.mjs +0 -48
- package/templates/_agents/hooks/check-pairing-incremental.mjs +0 -66
- package/templates/_agents/hooks/check-wiki-ledger.mjs +0 -30
- package/templates/_agents/hooks/commit-check.cjs +0 -193
- package/templates/_agents/hooks/local-pre-commit +0 -6
- package/templates/_agents/lane-surfaces.txt +0 -17
- package/templates/_agents/level-hints.txt +0 -30
- package/templates/_agents/loop/papercut-debt/DESIGN.md +0 -112
- package/templates/_agents/mechanism-registry.md +0 -27
- package/templates/_agents/metric-claims.txt +0 -81
- package/templates/_agents/notes/engine-internals.md +0 -17
- package/templates/_agents/notes/runtime-env.md +0 -18
- package/templates/_agents/roles/implementer.md +0 -47
- package/templates/_agents/roles/independent-reviewer.md +0 -45
- package/templates/_agents/roles/ui-verifier.md +0 -44
- package/templates/_agents/rule-budgets.txt +0 -18
- package/templates/_agents/scripts/agg-delegations.cjs +0 -302
- package/templates/_agents/scripts/agg-delegations.test.mjs +0 -282
- package/templates/_agents/scripts/agg-gate-stats.mjs +0 -113
- package/templates/_agents/scripts/agg-gate-stats.test.mjs +0 -95
- package/templates/_agents/scripts/agg-judgments.mjs +0 -156
- package/templates/_agents/scripts/agg-judgments.test.mjs +0 -93
- package/templates/_agents/scripts/archive-sweep.mjs +0 -235
- package/templates/_agents/scripts/archive-sweep.test.mjs +0 -129
- package/templates/_agents/scripts/check-attribution.mjs +0 -37
- package/templates/_agents/scripts/check-convergence.mjs +0 -124
- package/templates/_agents/scripts/check-engine-integrity.mjs +0 -220
- package/templates/_agents/scripts/check-engine-integrity.test.mjs +0 -215
- package/templates/_agents/scripts/check-funnel.mjs +0 -56
- package/templates/_agents/scripts/check-hygiene.mjs +0 -167
- package/templates/_agents/scripts/check-hygiene.test.mjs +0 -182
- package/templates/_agents/scripts/check-index-incremental.test.mjs +0 -73
- package/templates/_agents/scripts/check-lane-surface.mjs +0 -238
- package/templates/_agents/scripts/check-lane-surface.test.mjs +0 -302
- package/templates/_agents/scripts/check-ledger-invariant.mjs +0 -527
- package/templates/_agents/scripts/check-ledger-invariant.test.mjs +0 -639
- package/templates/_agents/scripts/check-loop-rev.test.mjs +0 -336
- package/templates/_agents/scripts/check-loop-unit.test.mjs +0 -103
- package/templates/_agents/scripts/check-loop.mjs +0 -1958
- package/templates/_agents/scripts/check-loop.sh +0 -6
- package/templates/_agents/scripts/check-loop.test.mjs +0 -3875
- package/templates/_agents/scripts/check-metric-claims.mjs +0 -277
- package/templates/_agents/scripts/check-prejudgment.mjs +0 -64
- package/templates/_agents/scripts/check-registry.mjs +0 -45
- package/templates/_agents/scripts/check-scope.mjs +0 -96
- package/templates/_agents/scripts/check-scope.test.mjs +0 -96
- package/templates/_agents/scripts/check-scripts-syntax.mjs +0 -61
- package/templates/_agents/scripts/check-scripts-syntax.test.mjs +0 -72
- package/templates/_agents/scripts/check-spec-verif.mjs +0 -47
- package/templates/_agents/scripts/check-stage-index.mjs +0 -40
- package/templates/_agents/scripts/check-stage-index.test.mjs +0 -77
- package/templates/_agents/scripts/closeout-l1.mjs +0 -217
- package/templates/_agents/scripts/closeout-l1.test.mjs +0 -105
- package/templates/_agents/scripts/commit-check-trigger.test.mjs +0 -205
- package/templates/_agents/scripts/compact-ledgers.mjs +0 -97
- package/templates/_agents/scripts/compact-ledgers.test.mjs +0 -162
- package/templates/_agents/scripts/confirm-doc.mjs +0 -603
- package/templates/_agents/scripts/confirm-doc.test.mjs +0 -1103
- package/templates/_agents/scripts/doctor.test.mjs +0 -770
- package/templates/_agents/scripts/draft-sediment.mjs +0 -178
- package/templates/_agents/scripts/draft-sediment.test.mjs +0 -272
- package/templates/_agents/scripts/edit-face-check.mjs +0 -109
- package/templates/_agents/scripts/edit-face-check.test.mjs +0 -99
- package/templates/_agents/scripts/ensure-board.mjs +0 -185
- package/templates/_agents/scripts/fill-intent.mjs +0 -91
- package/templates/_agents/scripts/fill-intent.test.mjs +0 -113
- package/templates/_agents/scripts/fill-plan.mjs +0 -79
- package/templates/_agents/scripts/fill-plan.test.mjs +0 -224
- package/templates/_agents/scripts/fill-spec.mjs +0 -70
- package/templates/_agents/scripts/fill-spec.test.mjs +0 -266
- package/templates/_agents/scripts/fixture-scripts.mjs +0 -153
- package/templates/_agents/scripts/fixture-scripts.test.mjs +0 -112
- package/templates/_agents/scripts/gate-checklist.mjs +0 -209
- package/templates/_agents/scripts/gate-checklist.test.mjs +0 -201
- package/templates/_agents/scripts/gate-seg.mjs +0 -54
- package/templates/_agents/scripts/gate-seg.test.mjs +0 -112
- package/templates/_agents/scripts/gen-effective-policy.mjs +0 -107
- package/templates/_agents/scripts/gen-effective-policy.test.mjs +0 -100
- package/templates/_agents/scripts/gen-verify-evidence.mjs +0 -107
- package/templates/_agents/scripts/gen-verify-evidence.test.mjs +0 -84
- package/templates/_agents/scripts/gen-wiki-board.mjs +0 -276
- package/templates/_agents/scripts/gen-wiki-board.test.mjs +0 -249
- package/templates/_agents/scripts/gen-workflow-dashboard.mjs +0 -251
- package/templates/_agents/scripts/gen-workflow-dashboard.test.mjs +0 -188
- package/templates/_agents/scripts/gen-workflow-index.mjs +0 -201
- package/templates/_agents/scripts/gen-workflow-index.test.mjs +0 -152
- package/templates/_agents/scripts/gen-workflow-metrics.mjs +0 -334
- package/templates/_agents/scripts/gen-workflow-metrics.test.mjs +0 -224
- package/templates/_agents/scripts/git-merge-jsonl.mjs +0 -63
- package/templates/_agents/scripts/git-merge-jsonl.test.mjs +0 -125
- package/templates/_agents/scripts/judgment-ledger.mjs +0 -65
- package/templates/_agents/scripts/judgment-ledger.test.mjs +0 -129
- package/templates/_agents/scripts/kb-cache-evict.mjs +0 -50
- package/templates/_agents/scripts/kb-cache-evict.test.mjs +0 -104
- package/templates/_agents/scripts/kb-search.mjs +0 -413
- package/templates/_agents/scripts/kb-search.test.mjs +0 -299
- package/templates/_agents/scripts/lane-surface-audit.mjs +0 -143
- package/templates/_agents/scripts/lane-surface-audit.test.mjs +0 -93
- package/templates/_agents/scripts/ledger-doc-chain.test.mjs +0 -166
- package/templates/_agents/scripts/ledger-loader.mjs +0 -108
- package/templates/_agents/scripts/ledger-loader.test.mjs +0 -131
- package/templates/_agents/scripts/ledger-prune.mjs +0 -96
- package/templates/_agents/scripts/ledger-prune.test.mjs +0 -120
- package/templates/_agents/scripts/ledger-shards.mjs +0 -344
- package/templates/_agents/scripts/ledger-shards.test.mjs +0 -356
- package/templates/_agents/scripts/ledger-ts-monotonic.test.mjs +0 -135
- package/templates/_agents/scripts/level-criteria.mjs +0 -231
- package/templates/_agents/scripts/level-criteria.test.mjs +0 -281
- package/templates/_agents/scripts/mechanism-retire-watch.mjs +0 -183
- package/templates/_agents/scripts/mechanism-retire-watch.test.mjs +0 -114
- package/templates/_agents/scripts/papercut-debt-controller.mjs +0 -141
- package/templates/_agents/scripts/papercut-debt-controller.test.mjs +0 -127
- package/templates/_agents/scripts/papercut-debt-sensor.mjs +0 -170
- package/templates/_agents/scripts/papercut-debt-sensor.test.mjs +0 -146
- package/templates/_agents/scripts/pipeline-run-docs.mjs +0 -76
- package/templates/_agents/scripts/pipeline-run-run.mjs +0 -63
- package/templates/_agents/scripts/pipeline-run.mjs +0 -867
- package/templates/_agents/scripts/pipeline-run.test.mjs +0 -517
- package/templates/_agents/scripts/policy.mjs +0 -281
- package/templates/_agents/scripts/pre-push.test.mjs +0 -105
- package/templates/_agents/scripts/resolve-merge-conflicts.mjs +0 -110
- package/templates/_agents/scripts/resolve-merge-conflicts.test.mjs +0 -87
- package/templates/_agents/scripts/rewrite-file.mjs +0 -133
- package/templates/_agents/scripts/rewrite-file.test.mjs +0 -148
- package/templates/_agents/scripts/rule-budget.mjs +0 -96
- package/templates/_agents/scripts/rule-budget.test.mjs +0 -118
- package/templates/_agents/scripts/run-tests.mjs +0 -99
- package/templates/_agents/scripts/run-tests.test.mjs +0 -105
- package/templates/_agents/scripts/solidify-task.mjs +0 -107
- package/templates/_agents/scripts/solidify-task.test.mjs +0 -129
- package/templates/_agents/scripts/stage-gates.mjs +0 -343
- package/templates/_agents/scripts/stage-gates.test.mjs +0 -105
- package/templates/_agents/scripts/trust-mode.mjs +0 -67
- package/templates/_agents/scripts/trust-mode.test.mjs +0 -110
- package/templates/_agents/scripts/verify-wiki-consistency.mjs +0 -253
- package/templates/_agents/scripts/verify-wiki-consistency.test.mjs +0 -123
- package/templates/_agents/scripts/verify.mjs +0 -210
- package/templates/_agents/scripts/verify.test.mjs +0 -358
- package/templates/_agents/scripts/wf-journal.mjs +0 -231
- package/templates/_agents/scripts/wf-journal.test.mjs +0 -216
- package/templates/_agents/scripts/wiki-search.mjs +0 -19
- package/templates/_agents/scripts/wiki-search.test.mjs +0 -57
- package/templates/_agents/scripts/workflow-board-server.mjs +0 -393
- package/templates/_agents/scripts/workflow-board-server.test.mjs +0 -201
- package/templates/_agents/scripts/workflow-enums.mjs +0 -70
- package/templates/_agents/scripts/workflow-enums.test.mjs +0 -118
- package/templates/_agents/scripts/workflows-check.mjs +0 -260
- package/templates/_agents/scripts/workflows-check.test.mjs +0 -278
- package/templates/_agents/scripts-test-exempt.txt +0 -16
- package/templates/_agents/skills/papercut-fix/SKILL.md +0 -60
- package/templates/_agents/skills/papercut-fix/references/response-template.md +0 -81
- package/templates/_agents/skills/review-method/SKILL.md +0 -55
- package/templates/_agents/skills/verify-ui/SKILL.md +0 -61
- package/templates/_agents/skills/wiki/SKILL.md +0 -106
- package/templates/_agents/workflow-enums.txt +0 -26
- package/templates/_agents/workflow-modules.txt +0 -11
- package/templates/_agents/workflows/_TEMPLATE.md +0 -75
- package/templates/_agents/workflows/pipeline-closing.md +0 -28
- package/templates/_agents/workflows//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +0 -16
- package/templates/_githooks/commit-msg +0 -17
- package/templates/_githooks/post-commit +0 -10
- package/templates/_githooks/pre-commit +0 -126
- package/templates/_githooks/pre-merge-commit +0 -29
- package/templates/_githooks/pre-push +0 -136
- package/templates/_github/workflows/kit-ci.yml +0 -49
- package/templates/wiki/INDEX.md +0 -73
- package/templates/wiki/drafts-archive/README.md +0 -3
- package/templates/wiki//344/272/247/345/223/201/351/234/200/346/261/202/README.md +0 -3
- package/templates/wiki//345/274/200/345/217/221/346/226/271/346/241/210/README.md +0 -3
- package/templates/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +0 -3
- package/templates/wiki//346/265/213/350/257/225/346/212/245/345/221/212/README.md +0 -3
- package/templates/wiki//347/224/250/346/210/267/345/212/237/350/203/275/README.md +0 -3
- package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +0 -77
- package/templates/wiki//351/241/271/347/233/256/350/247/204/350/214/203/README.md +0 -3
- package/templates/wiki//351/241/271/347/233/256/350/256/241/345/210/222/README.md +0 -3
- package/templates/workflow/README.md +0 -90
- package/templates/workflow/delegations.md +0 -29
- package/templates/workflow/incidents/_TEMPLATE.md +0 -51
- package/templates/workflow/intents/_TEMPLATE.md +0 -46
- package/templates/workflow/papercuts.md +0 -9
- package/templates/workflow/plans/_TEMPLATE.md +0 -47
- package/templates/workflow/regression-checklist.md +0 -23
- package/templates/workflow/specs/_TEMPLATE.md +0 -80
- /package/templates/{_agents → engine/.agents}/board/marked.min.js +0 -0
- /package/templates/{_agents/workflows → engine/.agents/pipelines}/steps//347/244/272/344/276/213-/351/203/250/347/275/262/351/252/214/350/257/201.md" +0 -0
- /package/templates/{_agents → engine/.agents}/scripts/git-core.mjs +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verify-ui
|
|
3
|
+
description: UI 改动实测(只读验证、不留脏数据)。第一选择 chrome-devtools MCP:take_snapshot 探形 + 单步驱动 + 截图取证;harness .mjs 脚本只作回归/无人值守的降级路径,降级须在实测报告记一行原因。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# verify-ui — UI 实测引导
|
|
7
|
+
|
|
8
|
+
## 分工
|
|
9
|
+
- 本文件只载方法(环境 / 选点 / 证据 / 清理);执行契约(环境安全 / 禁自修 / HALT 礼仪 / 交付物形态)单源在 `.agents/roles/ui-verifier.md`。
|
|
10
|
+
- 委派子代理以契约为准;主智能体自测按本文件执行。
|
|
11
|
+
|
|
12
|
+
## 触发条件
|
|
13
|
+
- 用户要求:`实测` / `UI 验证` / `浏览器验证`。
|
|
14
|
+
|
|
15
|
+
## 工具路径优先级
|
|
16
|
+
- 交互式 UI 实测默认走 chrome-devtools MCP:浏览器实例全程复用;先 `take_snapshot` 探形,再单步驱动、局部重试。
|
|
17
|
+
- harness 脚本只用于:回归 / 防复发资产;批量断言汇总 + 退出码门禁(`makeRecorder`);无人值守 / 流水线批次。
|
|
18
|
+
- 降级阶梯(2026-11-04 立,2026-11-11 修订):chrome-devtools MCP 是第一选择,harness 探针只是降级路径。**宿主无 chrome-devtools 工具(MCP 未安装 / 未连接)**:有人值守时 HALT 并提示用户安装 / 启用 chrome-devtools MCP,不自动降级(探针太慢);无人值守 / 过夜批次才直接降级 harness headless 探针。**MCP 已装但不通**(浏览器起不来且按 runtime-env §6.4 处置后仍失败 / 关键步骤被 MCP 报错阻断):降级 harness headless 探针。凡降级须在实测报告记一行「降级原因」——无降级原因的探针实测 = 路径违规,报告不收口。
|
|
19
|
+
- 脚本技术细节单源 = `scripts/verify/e2e/harness.mjs`(导出清单:`grep '^export' scripts/verify/e2e/harness.mjs`);写脚本 import 其导出,禁手写等价逻辑。
|
|
20
|
+
|
|
21
|
+
### 能力映射(harness ↔ MCP)
|
|
22
|
+
|
|
23
|
+
| 目标 | MCP | harness |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| 会话播种 | API 取 token → `evaluate_script` 写 `auth_token` / `auth_user` → `navigate_page reload` | `getToken` + `seedSession` |
|
|
26
|
+
| 导航 / 等待 | `navigate_page` + `wait_for` | `goto` / `hardGoto` / `reload` |
|
|
27
|
+
| 探形 | `take_snapshot`(a11y 树 + uid) | `inventory` / 一次性探针 |
|
|
28
|
+
| 驱动 | `click` / `fill` / `press_key` | `clickText` / `setInput` / `pressKey` |
|
|
29
|
+
| 网络采集 | `list_network_requests` | `installNetCapture` + `apiCalls` |
|
|
30
|
+
| 控制台采集 | `list_console_messages` | `installConsoleCapture` + `consoleErrors` |
|
|
31
|
+
| 度量 / 截图 | `evaluate_script` / `take_screenshot` | `ctx.evaluate` / `ctx.screenshot` |
|
|
32
|
+
|
|
33
|
+
### 会话与采集规则(两路径同口径)
|
|
34
|
+
- 注入前先到达 FE origin;同文档 hash 切换不重载文档,播种后必须整页 reload。
|
|
35
|
+
- 缺省身份 = 所播 token 的 JWT claims;仅测「与 token 不同身份」才手工播种 `auth_user`(取登录响应的 `jobNo` / `displayName` / `dept`)。
|
|
36
|
+
- 合成 JWT 只适用于零授权 API 调用的页面:`exp = Math.floor(Date.now()/1000) + 1800`,禁写远期;注入后经 about:blank 中转再硬导航。
|
|
37
|
+
- 页面发出带 token 的 API 且 401 即被清会话弹回 `/login`:有真实数据依赖走账号池登录(账号池单源 `.agents/notes/runtime-env.md` §6.1a)。
|
|
38
|
+
- 请求计数剔除 OPTIONS 预检;断言取数以接口响应为准,禁数 DOM(虚拟滚动 / 虚拟列只渲染可视窗口)。
|
|
39
|
+
- 断「控制台零错误」前先滤应用自身噪声(AG Grid license banner、API 未起的 Network Error);过滤按内容特征,禁用 `^` 行首锚。
|
|
40
|
+
|
|
41
|
+
### MCP 会话差异
|
|
42
|
+
- MCP 用持久 profile(跨轮保留 localStorage):先清 localStorage 再播种,或 `new_page` 传 `isolatedContext`。
|
|
43
|
+
- 报「The browser is already running for …chrome-profile」→ 按命令行含 `chrome-devtools-mcp` 杀残留进程(处置登记 runtime-env §6.4)。
|
|
44
|
+
- `take_screenshot` 的 `filePath` 受 MCP 工作区白名单限制(部分宿主连仓库路径与会话目录全拒,2026-10-31 实测):落盘被拒时不反复试路径,改**无 `filePath` 内联截图**留档;证据效力以 `.md` 报告的 DOM/接口断言为准(spec 验收判据本就不认图片路径)。
|
|
45
|
+
- `upload_file` 触发 `input[type=file]` 时仓库/会话路径同样可被白名单全拒(2026-11-07 实测):不试路径,改页面内注入——临时只读 HTTP 服务(如 `npx serve` 随机口)伺服夹具,`evaluate_script` fetch 成 File 塞 `DataTransfer` 再 `dispatchEvent(new Event('change', {bubbles:true}))` 给 antd 上传 input;注入前 `modalCount` 记 1 防旧弹窗 DOM 残留错位(MTO 弹窗关闭后残留曾致 PML 注入错位,reload 清残留)。验证:上传项 tag/预览接口收到文件行数与夹具行数一致。
|
|
46
|
+
|
|
47
|
+
## 工作流
|
|
48
|
+
|
|
49
|
+
### 1. 环境准备
|
|
50
|
+
- 按 `.agents/notes/runtime-env.md` 启动 API / 前端;记录所有启动进程。
|
|
51
|
+
- 多 worktree 并行:设 `SHIPYARD_SLOT` 使 API / 前端 / CDP 三组端口整体偏移(端口字面量单源 `scripts/verify/e2e/ports.mjs`,端口表见 runtime-env §6.1b)。
|
|
52
|
+
- 仅 harness / 降级路径自建浏览器:较新 Chromium 内核 headless(如 Edge `--headless=new`);MCP 路径浏览器实例由 MCP 自管,禁手动另起。
|
|
53
|
+
- 长命服务以独立进程启动(如 PowerShell `Start-Process`);启动命令末尾禁接管道。
|
|
54
|
+
|
|
55
|
+
### 2. 执行验证
|
|
56
|
+
- 选点取特性地图(`features/`);至少各执行一条正常路径与一条失败 / 边界路径(校验 / 空态 / 权限)。
|
|
57
|
+
- 导航:hash 模式用 `goto`;深链接(Query 变化)用 `hardGoto`(about:blank 中转)。
|
|
58
|
+
- 弹窗内分页表格的数据条件断言:点 `.ant-pagination-item` 逐页扫全量后合并断言,禁只看首屏。
|
|
59
|
+
- 布局类断言先探真实 DOM(快照 / 探针读 `outerHTML` + `getComputedStyle`),禁从 CSS 源码反推期望值;拿不准用与规范数值解耦的不变量,规范对账降为 NOTE。
|
|
60
|
+
- 证据采集:截图、网络报文、控制台日志;路径记入任务文档「验收标准」项后。
|
|
61
|
+
|
|
62
|
+
### 3. 清理收尾
|
|
63
|
+
- 按 POST 响应返回的 ID 精确删除临时数据;禁模糊匹配删除。
|
|
64
|
+
- 关闭本流程启动的所有进程。
|
|
65
|
+
- 按 `页面 / 步骤 / 期望 vs 实际 / 证据` 汇报;末行附「特性地图覆盖 M/N」(M = 本次覆盖特性数,N = `features/` 条目总数),未覆盖项逐一留名。
|
|
66
|
+
- 仅记录缺陷,禁直接修代码。
|
|
67
|
+
- UI 实测报告写 `workflow/evidence/<YYYY-MM-DD>-<主题>.md`:头部记环境 / 复现命令,断言表每行带「对应验收 An」列(形态对照 `workflow/evidence/2026-10-24-purchase-contract-template-print-ui.md`)。报告留在会话或 `tmp/` = 实测未收口。
|
|
68
|
+
|
|
69
|
+
## 特性地图(features/)
|
|
70
|
+
- `features/` 每核心特性一文件,四段缺一不建:到达路径 / 驱动 / 可观察终态 / Gotchas。
|
|
71
|
+
- 实测与关单抽验按地图取覆盖面;当前覆盖面以 `features/` 目录为准。
|
|
72
|
+
- 新页面或新主链上线时同步建文件;以 `frontend/src/router/index.ts` 路由为源波次:路由有、地图无 = 待补;地图有、路由无 = 待删或改写。
|
|
73
|
+
- 覆盖缺口 / 骨架:`node .agents/skills/verify-ui/scripts/gen-verify-feature.mjs --check`(或 `--json`)列未覆盖路由;`--route <path>` 只写四段 H2 + TODO 骨架,禁编造驱动步骤。
|
|
74
|
+
- 月度漂移维护:① 取路由 / 组件近月 diff 作源波次;② 只对触及特性跑一次实测;③ 修正最多一笔提交。
|
|
75
|
+
- 每个失败先判定「地图漂移」或「代码缺陷」:前者改地图,后者进 incident,禁混写。
|
|
76
|
+
- 前置条件缺失 → 按失败记录并把原因写进该特性 Gotchas;禁为通过而弱化验证路径。
|
|
77
|
+
- 发现页面 / 行为与地图不符 → 先修地图再出结论。
|
|
78
|
+
- 关单前置跑 `check-regression-consistency.mjs`:地图引用的 `#/路由` / `frontend/src/*` / `workflow/*.md` / `scripts/verify/*.mjs` 悬空即红;代码符号悬空只 advisory。
|
|
79
|
+
|
|
80
|
+
## 技术要求与约束
|
|
81
|
+
|
|
82
|
+
### Shell 与进程
|
|
83
|
+
- 协议优先 HTTP,避免自签证书拦截。
|
|
84
|
+
- 「部分改动生效」→ 重启 dev server;单文件未生效而他文件正常 → 先 touch 该文件。
|
|
85
|
+
- 探针必打本 worktree 的 dev server:vite 端口被占会静默漂移——起服务后确认实际端口,用 `E2E_FE_URL=http://localhost:<实际端口>` 运行;登录页导航用同一 `FE`(localStorage 按 origin 隔离)。
|
|
86
|
+
- 输出截断用 `| tail -N`,禁 `| head -N`(SIGPIPE 在 finally 前终止进程,残留浏览器占 CDP 端口)。
|
|
87
|
+
- 每次导航前重置 Console / Log 采集器;toast 观察器在导航动作前安装。
|
|
88
|
+
- 实测脚本三件套缺一不可:`installNetCapture(ctx)`、`seedSession(token, { reload: true })`、`hardGoto(url)`。
|
|
89
|
+
- 探针主体包 `try { … } finally { await ctx.close?.() }`;脚本启动前按 `--remote-debugging-port=<port>` 杀残留进程自愈。
|
|
90
|
+
- 用 `harness.dbQuery` 前先确认 database-explorer 技能在本机可用;不连库也能立的判据优先。
|
|
91
|
+
|
|
92
|
+
### 断言汇总
|
|
93
|
+
- 断言主体包 try/catch:catch 里追加一条失败断言(含错误信息)并计入汇总,退出码随之为 1;禁「跑一半 + 打印 GREEN + 退出码 0」。
|
|
94
|
+
|
|
95
|
+
### DOM 定位与交互
|
|
96
|
+
- 覆盖层 / 抽屉 / 弹窗内表单定位一律限定覆盖层根(如 `.pml-detail .ant-form-item`),禁全局 `querySelector` / `querySelectorAll`。
|
|
97
|
+
- 按 placeholder 找输入框须限定在目标容器内。
|
|
98
|
+
- 文本比较两侧都 `.replace(/\s+/g,'')` 归一(antd 对两字中文按钮插空格)。
|
|
99
|
+
- 可见性判据用 `getClientRects().length > 0` 或 `getBoundingClientRect().width > 0`;禁用 `offsetParent`(`position: fixed` 祖先下恒为 null)。
|
|
100
|
+
- `a-select` 清除图标悬停才渲染:先派发 mouseenter / mouseover,等一拍再点。
|
|
101
|
+
- antd 分页 size-changer 下拉合成事件开不了(focus + 派发 keydown Enter 亦不稳):真实路径 = click 工具点 combobox uid;量测用不变量「每选项 `scrollWidth <= clientWidth+1` 且下拉宽 ≥ 最宽选项 scrollWidth」,下拉动画未收尾会量到 0 尺寸,等 ≥600ms 再量(2026-11-06 PML 分页实测)。
|
|
102
|
+
- 弹窗内小控件(如分页器)被身后大表挤出 a11y 快照(输出超限截断取不到 uid):临时对背景表容器 `setAttribute('aria-hidden','e2e-hide')` 缩树,取 uid 完成真实点击后移除属性;注意别把弹窗自己的表一并隐掉(2026-11-06 PML 实测)。
|
|
103
|
+
- `a-select` 合成事件选不中 → 走真实鼠标 + 键盘:CDP `Input.dispatchMouseEvent` 点开,`ArrowDown` + `Enter` 落选;多 select 之间先 `Escape` 关上一个下拉;选项查询限定可见下拉(`.ant-select-dropdown:not(.ant-select-dropdown-hidden)`)的最后一个。
|
|
104
|
+
- 分段 / 单选 / tabs 按渲染形态定位(如 `.ant-radio-button-wrapper`),勿只找 `<button>`。
|
|
105
|
+
- 表格选择态:清空遗留勾选按 `data-row-key` 去重逐行点击,且与后续勾选分两拍执行;表头全选框在半选 / 无选态点击是「全选」而非「清空」。
|
|
106
|
+
- `:scroll={y}` 的 antd 表格 tbody 首行是 `.ant-table-measure-row`(高 0、无 `ant-table-cell` 类):行高 / 单元格度量跳过它。
|
|
107
|
+
- `ctx.evaluate` 返回已是对象,禁再套 `JSON.parse`。
|
|
108
|
+
- 详情覆盖层的「返回」类按钮走 `history.back()`:实测点它会退到上一步甚至 `about:blank`(2026-11-03 采购订单详情实测踩中)——回列表改用刷新或直接重导航,禁点「返回」当关闭动作。
|
|
109
|
+
- 断言前先确认覆盖层内容已渲染(头部按钮组出现):并行会话新建的单据可能详情拉不出,覆盖层只剩「返回」按钮(2026-11-03 实测)——换已知样本单,勿据此判功能缺陷。
|
|
110
|
+
|
|
111
|
+
### AG Grid 列表页
|
|
112
|
+
- 单元格开销 32px(padding 15×2 + 边框 2),非 16 / 24。
|
|
113
|
+
- 量宽用隐藏 DOM span(复制 `font` / `letter-spacing`),禁 canvas;定宽 `ceil10(max(列头需求, 内容 p90 需求) + 32 + 8)`,离群值交 `tooltipShowMode:'whenTruncated'`。
|
|
114
|
+
- 判截断直接比 `.ag-cell` 的 `scrollWidth > clientWidth`;量横向溢出用 `.ag-center-cols-viewport`,勿量 `.ag-body-viewport`。
|
|
115
|
+
- 列虚拟化下视口外列不在 DOM:`.ag-header-cell` 计数 ≠ 列总数。
|
|
116
|
+
- 空值经 `valueFormatter` 渲染成字面 `-`:按单元格判空须显式排除 `'-'`。
|
|
File without changes
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// gen-verify-feature.mjs — verify-ui 特性地图生成器(2026-10-22 pstack create-verification-skill 借鉴)
|
|
3
|
+
// 用法:
|
|
4
|
+
// node .agents/skills/verify-ui/scripts/gen-verify-feature.mjs [--check] [--json] 列出未覆盖的顶层路由
|
|
5
|
+
// node .agents/skills/verify-ui/scripts/gen-verify-feature.mjs --route /suppliers 生成 features/suppliers.md 骨架
|
|
6
|
+
// 口径:顶层路由 = router 里一段路径(排除 /login、/、/home、含 :param 的动态路由)。
|
|
7
|
+
// 覆盖 = 任一 features/*.md 提到该路由(#/route 或 /route)。
|
|
8
|
+
// 生成只写骨架(四段 H2 + TODO),不编造驱动步骤;填完再用于实测。
|
|
9
|
+
import { spawnSync } from 'node:child_process';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
|
|
13
|
+
const argv = process.argv.slice(2);
|
|
14
|
+
const argOf = (k) => {
|
|
15
|
+
const i = argv.indexOf(k);
|
|
16
|
+
return i >= 0 && i + 1 < argv.length ? argv[i + 1] : '';
|
|
17
|
+
};
|
|
18
|
+
const asJson = argv.includes('--json');
|
|
19
|
+
const check = argv.includes('--check');
|
|
20
|
+
const routeArg = argOf('--route');
|
|
21
|
+
|
|
22
|
+
const root = spawnSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf8' });
|
|
23
|
+
if (root.status !== 0 || !root.stdout.trim()) {
|
|
24
|
+
console.error('gen-verify-feature: 不在 git 仓库');
|
|
25
|
+
process.exit(2);
|
|
26
|
+
}
|
|
27
|
+
const ROOT = root.stdout.trim();
|
|
28
|
+
const routerPath = path.join(ROOT, 'frontend', 'src', 'router', 'index.ts');
|
|
29
|
+
if (!fs.existsSync(routerPath)) {
|
|
30
|
+
console.error('gen-verify-feature: 未找到 frontend/src/router/index.ts');
|
|
31
|
+
process.exit(2);
|
|
32
|
+
}
|
|
33
|
+
const routes = new Set();
|
|
34
|
+
for (const m of fs.readFileSync(routerPath, 'utf8').matchAll(/path:\s*'([^']+)'/g)) {
|
|
35
|
+
const raw = m[1];
|
|
36
|
+
routes.add(raw.startsWith('/') ? raw : `/${raw}`);
|
|
37
|
+
}
|
|
38
|
+
const topLevel = [...routes].filter((r) => {
|
|
39
|
+
if (r === '/' || r === '/login' || r === '/home') return false;
|
|
40
|
+
if (r.includes(':')) return false;
|
|
41
|
+
return r.split('/').filter(Boolean).length === 1;
|
|
42
|
+
}).sort();
|
|
43
|
+
|
|
44
|
+
const featuresDir = path.join(ROOT, '.agents', 'skills', 'verify-ui', 'features');
|
|
45
|
+
const covered = new Set();
|
|
46
|
+
if (fs.existsSync(featuresDir)) {
|
|
47
|
+
for (const f of fs.readdirSync(featuresDir).filter((x) => x.endsWith('.md'))) {
|
|
48
|
+
const text = fs.readFileSync(path.join(featuresDir, f), 'utf8');
|
|
49
|
+
for (const m of text.matchAll(/#?(\/[A-Za-z0-9_./:-]+)/g)) covered.add(m[1]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const uncovered = topLevel.filter((r) => !covered.has(r));
|
|
53
|
+
|
|
54
|
+
if (asJson) {
|
|
55
|
+
console.log(JSON.stringify({ topLevel, covered: [...covered].sort(), uncovered }, null, 2));
|
|
56
|
+
process.exit(check && uncovered.length ? 1 : 0);
|
|
57
|
+
}
|
|
58
|
+
if (check) {
|
|
59
|
+
if (uncovered.length) {
|
|
60
|
+
console.error(`特性地图覆盖缺口(${uncovered.length} 个顶层路由未进地图):`);
|
|
61
|
+
for (const r of uncovered) console.error(` - ${r}`);
|
|
62
|
+
console.error(' 处理:按核心特性优先级补 features/<slug>.md(node .agents/skills/verify-ui/scripts/gen-verify-feature.mjs --route <path> 生成骨架)。');
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
console.log(`✅ 特性地图覆盖全部 ${topLevel.length} 个顶层路由`);
|
|
66
|
+
process.exit(0);
|
|
67
|
+
}
|
|
68
|
+
if (routeArg) {
|
|
69
|
+
const route = routeArg.startsWith('/') ? routeArg : `/${routeArg}`;
|
|
70
|
+
if (!routes.has(route)) {
|
|
71
|
+
console.error(`gen-verify-feature: 路由 ${route} 不在 router(先确认路径)`);
|
|
72
|
+
process.exit(2);
|
|
73
|
+
}
|
|
74
|
+
if (covered.has(route)) {
|
|
75
|
+
console.error(`gen-verify-feature: 路由 ${route} 已被特性地图覆盖——改现有文件,不新建`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const slug = route.replace(/^\//, '').replace(/[^a-z0-9]+/gi, '-').replace(/^-|-$/g, '') || 'feature';
|
|
79
|
+
const file = path.join(featuresDir, `${slug}.md`);
|
|
80
|
+
if (fs.existsSync(file)) {
|
|
81
|
+
console.error(`gen-verify-feature: 文件已存在 ${path.relative(ROOT, file)}——改现有文件,不覆盖`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
const content = [
|
|
85
|
+
`# 特性:${route}`,
|
|
86
|
+
'',
|
|
87
|
+
'> 生成骨架(gen-verify-feature.mjs,2026-10-22)。四段缺一不建;填完再用于实测。',
|
|
88
|
+
'',
|
|
89
|
+
'## 到达路径',
|
|
90
|
+
'',
|
|
91
|
+
`hash 路由 \`#${route}\`。入口:<TODO 侧栏/列表/按钮>。`,
|
|
92
|
+
'',
|
|
93
|
+
'## 驱动',
|
|
94
|
+
'',
|
|
95
|
+
'<TODO 用户 POV 的操作步骤;优先稳定锚点(ARIA/data-testid/路由)>。',
|
|
96
|
+
'',
|
|
97
|
+
'## 可观察终态',
|
|
98
|
+
'',
|
|
99
|
+
'<TODO 什么现象证明它工作;给 file:line 或接口/字段>。',
|
|
100
|
+
'',
|
|
101
|
+
'## Gotchas',
|
|
102
|
+
'',
|
|
103
|
+
'<TODO 前置条件、坑、已知漂移>。',
|
|
104
|
+
'',
|
|
105
|
+
].join('\n');
|
|
106
|
+
fs.mkdirSync(featuresDir, { recursive: true });
|
|
107
|
+
fs.writeFileSync(file, content, 'utf8');
|
|
108
|
+
console.log(`✅ 已生成 ${path.relative(ROOT, file)}——填完四段再用于实测`);
|
|
109
|
+
process.exit(0);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
console.log(`顶层路由 ${topLevel.length} 个,已覆盖 ${topLevel.length - uncovered.length} 个,缺口 ${uncovered.length} 个:`);
|
|
113
|
+
for (const r of uncovered) console.log(` - ${r}`);
|
|
114
|
+
console.log('生成骨架:node .agents/skills/verify-ui/scripts/gen-verify-feature.mjs --route <path>');
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-parity
|
|
3
|
+
description: 视觉对齐 playbook——两个实现(原型 / 旧页 / 设计稿)像素级对齐时,固定视口与数据、只改样式、差异分类留证;供 UI 还原任务使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# visual-parity — 视觉对齐
|
|
7
|
+
|
|
8
|
+
## 触发
|
|
9
|
+
|
|
10
|
+
原型 → 实现、旧页 → 新页、设计稿 → 页面,要求「看起来一致」。
|
|
11
|
+
|
|
12
|
+
## 0. 固定比较条件
|
|
13
|
+
|
|
14
|
+
同一视口(宽高 + DPR)、缩放 100%、同一主题、同一份数据(种子 ID 固定)。服务在线与鉴权按 `.agents/skills/verify-ui/SKILL.md` §1;技术细节单源 `scripts/verify/e2e/harness.mjs`。
|
|
15
|
+
|
|
16
|
+
## 1. 取对照
|
|
17
|
+
|
|
18
|
+
两侧各截同区域(含边界元素),命名 `tmp/e2e-evidence/parity-<topic>-{before,after}.png`。截图前重置滚动位置、关闭动画与 tooltip。
|
|
19
|
+
|
|
20
|
+
## 2. 差异分类(逐项计数)
|
|
21
|
+
|
|
22
|
+
间距 / 字号字重 / 颜色 / 层级与阴影 / 圆角 / 换行与溢出 / 滚动条。渲染噪声(字体抗锯齿、次像素)单列,不计入待修项。
|
|
23
|
+
|
|
24
|
+
## 3. 迭代
|
|
25
|
+
|
|
26
|
+
只改样式与布局,不改数据、不改后端、不引原型字体。每轮重截同区域;差异项只减不增。
|
|
27
|
+
|
|
28
|
+
## 4. 判据与证据
|
|
29
|
+
|
|
30
|
+
待修项 = 0 才算对齐;未清零不宣称「一致」。证据:两侧截图路径 + 视口 + 差异表(项 / 前 / 后 / 状态)。
|
|
31
|
+
|
|
32
|
+
## 红线
|
|
33
|
+
|
|
34
|
+
- 不弱化验证路径(`.agents/skills/verify-ui/SKILL.md`「禁为通过而弱化验证路径」)。
|
|
35
|
+
- 不以「肉眼看着一样」代替差异表。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: why
|
|
3
|
+
description: 追溯「为什么长这样」——并行查源码历史、流程留痕、领域文档、会话记录、issue/PR 与外部证据,逐条给指针;供动手改一段不理解的代码前使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# why — 为什么长这样
|
|
7
|
+
|
|
8
|
+
## 触发
|
|
9
|
+
|
|
10
|
+
- 「为什么这样设计 / 为什么这个 flag 没开 / 为什么选了这个方案」。
|
|
11
|
+
- 准备改一段不理解的代码,先要知道它为什么存在。
|
|
12
|
+
- 复核时对「这行不能删」的直觉不放心,需要证据。
|
|
13
|
+
|
|
14
|
+
## 核心
|
|
15
|
+
|
|
16
|
+
**不靠记忆,不靠猜。** 按证据类别并行查,每条结论带指针(`file:line` / commit / 文档 / issue / 指标)。区分 **measured / inferred / guess**;找不到也是答案,写「无记录」,不要编。
|
|
17
|
+
|
|
18
|
+
## 证据类别(并行查)
|
|
19
|
+
|
|
20
|
+
| 类别 | 本仓入口 |
|
|
21
|
+
|---|---|
|
|
22
|
+
| 源码与历史 | `git log -S<term>`(pickaxe)、`git log --follow -- <path>`、`git blame`、`xd://lsp` references |
|
|
23
|
+
| 流程留痕 | `workflow/{intents,specs,plans,incidents}`、`workflow/archive/`、`workflow/delegations.md`、`workflow/papercuts.md`、`workflow/regression-checklist.md` |
|
|
24
|
+
| 领域知识 | `wiki/`、`node .agents/scripts/kb-search.mjs <term>` |
|
|
25
|
+
| 会话记录 | `history://`、`archive`(eval 全局)、`.agents/skills/session-resume/SKILL.md` |
|
|
26
|
+
| Issue / PR | `issue://<N>`、`pr://<N>`(有 GitHub 远端时) |
|
|
27
|
+
| 外部文档 | `microsoft_docs_search`、`web_search`、`read <url>` |
|
|
28
|
+
| 运行时 / 监控 | 可用的 MCP(chrome-devtools、context-mode 等)、日志、`workflow/metrics.md` |
|
|
29
|
+
|
|
30
|
+
## 步骤
|
|
31
|
+
|
|
32
|
+
1. **拆主体**:把问题拆成可检索的词——符号名、文件路径、功能名、决策关键词。一个词查不到就换同义词/中文/英文。
|
|
33
|
+
2. **本地证据**:跑 `node .agents/skills/why/scripts/why-evidence.mjs <term> [--path <file>]`,一次拿到 pickaxe、路径历史、workflow/wiki 命中、kb-search 摘要。
|
|
34
|
+
3. **外部证据**:按可用 MCP 并行查 issue/PR、外部文档、监控;没有就跳过,不假装查过。
|
|
35
|
+
4. **合成**:先给结论(为什么),再给证据链(每条 claim 带指针),最后列未知/冲突。
|
|
36
|
+
5. **标确定性**:`measured`(跑过/读到原文)、`inferred`(从证据推)、`guess`(没有证据)。预测与未观察到的原因一律 `guess`。
|
|
37
|
+
6. **时间线**(可选):决策跨多个提交/文档时,按时间排一条链,标出转折点。
|
|
38
|
+
|
|
39
|
+
## 输出格式
|
|
40
|
+
|
|
41
|
+
- **结论**:一句话回答「为什么」。
|
|
42
|
+
- **证据链**:每条 = claim + 指针(`file:line` / commit / doc / issue)+ 确定性。
|
|
43
|
+
- **未知 / 冲突**:查不到、证据互相矛盾、或需要 owner 才能定的部分。
|
|
44
|
+
- **对改动的含义**:这段能不能动、动之前要满足什么。
|
|
45
|
+
|
|
46
|
+
## 本仓落点
|
|
47
|
+
|
|
48
|
+
- 接手/续作:`session-resume` 重建当前态后,用本技能补「为什么」。
|
|
49
|
+
- 修 bug:`diagnosing-bugs` 找根因前,先确认这段为什么存在。
|
|
50
|
+
- 复核:`review.md` 的「影响面证明」用 `blast-radius`;本技能补「历史意图」。
|
|
51
|
+
- 证据收集器:`.agents/skills/why/scripts/why-evidence.mjs`(只收集,不下结论)。
|
|
52
|
+
|
|
53
|
+
## 边界
|
|
54
|
+
|
|
55
|
+
- 本技能回答「为什么长这样」;`blast-radius` 回答「会碰坏什么」;`how` 回答「怎么运作」。三者不互相替代。
|
|
56
|
+
- 不把推测写成事实;没有证据就写「无记录」。
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// why-evidence.mjs — /why 的本地证据收集器(2026-10-22 pstack 借鉴)
|
|
3
|
+
// 用法:node .agents/skills/why/scripts/why-evidence.mjs <term> [--path <file>] [--json]
|
|
4
|
+
// 收集:git pickaxe(-S)、路径历史(--follow)、workflow 文档命中、wiki 命中、kb-search 摘要。
|
|
5
|
+
// 不做结论——结论由 why 技能合成;本脚本只保证证据面一致、可复跑、可对质。
|
|
6
|
+
import { spawnSync } from 'node:child_process';
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
|
|
11
|
+
const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const argv = process.argv.slice(2);
|
|
13
|
+
let term = '';
|
|
14
|
+
let pathArg = '';
|
|
15
|
+
for (let i = 0; i < argv.length; i++) {
|
|
16
|
+
if (argv[i] === '--path') { pathArg = argv[++i] || ''; continue; }
|
|
17
|
+
if (argv[i] === '--json') continue;
|
|
18
|
+
if (!term) term = argv[i];
|
|
19
|
+
}
|
|
20
|
+
const asJson = argv.includes('--json');
|
|
21
|
+
if (!term) {
|
|
22
|
+
console.error('用法:node .agents/skills/why/scripts/why-evidence.mjs <term> [--path <file>] [--json]');
|
|
23
|
+
process.exit(2);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const root = spawnSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf8' });
|
|
27
|
+
const ROOT = root.status === 0 && root.stdout.trim() ? root.stdout.trim() : process.cwd();
|
|
28
|
+
process.chdir(ROOT);
|
|
29
|
+
|
|
30
|
+
const git = (args) => spawnSync('git', args, { encoding: 'utf8' });
|
|
31
|
+
const lines = (s) => String(s || '').split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
|
|
32
|
+
|
|
33
|
+
const pickaxe = lines(git(['log', '-S', term, '--oneline', '--all', '-n', '20']).stdout);
|
|
34
|
+
const pathHistory = pathArg ? lines(git(['log', '--oneline', '--follow', '-n', '10', '--', pathArg]).stdout) : [];
|
|
35
|
+
|
|
36
|
+
// 文档命中:只取每个文件的第一处,限 20 条;跳过生成物(verify-evidence / INDEX / metrics)。
|
|
37
|
+
const scan = (dir, limit = 20) => {
|
|
38
|
+
const out = [];
|
|
39
|
+
const walk = (d) => {
|
|
40
|
+
let entries = [];
|
|
41
|
+
try { entries = fs.readdirSync(d, { withFileTypes: true }); } catch { return; }
|
|
42
|
+
for (const e of entries) {
|
|
43
|
+
if (out.length >= limit) return;
|
|
44
|
+
const p = path.join(d, e.name);
|
|
45
|
+
if (e.isDirectory()) { if (!/^(node_modules|\.git)$/.test(e.name)) walk(p); continue; }
|
|
46
|
+
if (!/\.md$/i.test(e.name)) continue;
|
|
47
|
+
if (/^(verify-evidence|INDEX|metrics)\.md$/.test(e.name)) continue;
|
|
48
|
+
let text = '';
|
|
49
|
+
try { text = fs.readFileSync(p, 'utf8'); } catch { continue; }
|
|
50
|
+
const rows = text.split(/\r?\n/);
|
|
51
|
+
const hit = rows.findIndex((l) => l.toLowerCase().includes(term.toLowerCase()));
|
|
52
|
+
if (hit >= 0) out.push(`${path.relative(ROOT, p).replace(/\\/g, '/')}:${hit + 1}: ${rows[hit].trim().slice(0, 160)}`);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
walk(path.join(ROOT, dir));
|
|
56
|
+
return out;
|
|
57
|
+
};
|
|
58
|
+
const workflow = scan('workflow');
|
|
59
|
+
const wiki = scan('wiki');
|
|
60
|
+
|
|
61
|
+
const kb = spawnSync(process.execPath, [path.join(SCRIPT_DIR, 'kb-search.mjs'), term, '-n', '5'], { cwd: ROOT, encoding: 'utf8' });
|
|
62
|
+
const kbOut = String(kb.stdout || '').trim();
|
|
63
|
+
|
|
64
|
+
if (asJson) {
|
|
65
|
+
console.log(JSON.stringify({ term, path: pathArg || null, pickaxe, pathHistory, workflow, wiki, kb: kbOut }, null, 2));
|
|
66
|
+
process.exit(0);
|
|
67
|
+
}
|
|
68
|
+
const section = (title, rows) => `## ${title}\n${rows.length ? rows.map((r) => `- ${r}`).join('\n') : '(无命中)'}`;
|
|
69
|
+
console.log(`# why evidence: ${term}${pathArg ? `(path: ${pathArg})` : ''}\n`);
|
|
70
|
+
console.log(section('git pickaxe(-S:增删过该词的提交)', pickaxe));
|
|
71
|
+
if (pathArg) console.log(`\n${section('路径历史(--follow)', pathHistory)}`);
|
|
72
|
+
console.log(`\n${section('workflow 文档命中', workflow)}`);
|
|
73
|
+
console.log(`\n${section('wiki 命中', wiki)}`);
|
|
74
|
+
console.log(`\n## kb-search\n${kbOut || '(无输出)'}`);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wiki
|
|
3
|
+
description: 项目 wiki 整理与验证技能。负责将散落文档归位到 wiki/,并维护 INDEX.md、知识沉淀总览.html 及归档一致性。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Wiki 整理与验证技能
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
构建并维护结构化的项目知识库,确保磁盘文件、索引文件与可视化看板三方一致。
|
|
10
|
+
|
|
11
|
+
## 触发条件
|
|
12
|
+
- 用户指令:`整理 wiki` / `归类文档` / `建知识库` / `同步知识沉淀看板` / `新增文档到 wiki`。
|
|
13
|
+
|
|
14
|
+
## 范围与约束
|
|
15
|
+
- **收录范围**:
|
|
16
|
+
- **In**: 主数据知识文档、全项目数据维护 SQL。
|
|
17
|
+
- **Out**: `workflow/` 目录、MTO/采购/库存/UI 等非主数据知识文档、依赖锁文件、IDE 配置。
|
|
18
|
+
- **目录结构**:`wiki/<主题>/<关键词文件>`。
|
|
19
|
+
- **命名规范**:`<主题>-<关键词>[-范围/版本].ext`。
|
|
20
|
+
- **权威性**:`.md` 为内容源 $\rightarrow$ `.html` 为展示快照。冲突时以 `.md` 为准。
|
|
21
|
+
- **操作限制**:仅执行复制 (`Copy-Item`/`cp`)。删除原文件必须获得用户单独确认。
|
|
22
|
+
|
|
23
|
+
## 标准操作流程
|
|
24
|
+
|
|
25
|
+
### 1. 整理与归位 (批量/新建)
|
|
26
|
+
1. **主题判定**:读取文件首 8 行,根据内容判定主题。新主题需与用户对齐。
|
|
27
|
+
2. **目录创建**:创建 `wiki/<主题>/` 及对应的 `wiki/drafts-archive/YYYY-MM-DD_<主题>/`。
|
|
28
|
+
3. **文件迁移**:
|
|
29
|
+
- 将文件复制到 `wiki/<主题>/` 并按规范重命名。
|
|
30
|
+
- 将原文件副本复制到 `drafts-archive/` 留溯源。
|
|
31
|
+
4. **索引更新**:运行 `node .agents/scripts/gen-wiki-board.mjs`。
|
|
32
|
+
5. **描述补全**:在 `wiki/INDEX.md` 速览表的「用途」列为新主题补全描述,然后再次运行生成器。
|
|
33
|
+
|
|
34
|
+
### 2. 单篇文档新增
|
|
35
|
+
1. 判定主题 $\rightarrow$ 复制到 `wiki/<主题>/` $\rightarrow$ 运行生成器 $\rightarrow$ 运行验证脚本。
|
|
36
|
+
|
|
37
|
+
### 3. 错误归位修正
|
|
38
|
+
1. 移动文件至正确主题目录 $\rightarrow$ 运行生成器 $\rightarrow$ 运行验证脚本。`drafts-archive` 保持不动。
|
|
39
|
+
|
|
40
|
+
## 验证机制
|
|
41
|
+
每次改动后必须运行:
|
|
42
|
+
```bash
|
|
43
|
+
node .agents/scripts/verify-wiki-consistency.mjs
|
|
44
|
+
```
|
|
45
|
+
**验收标准**:
|
|
46
|
+
- `exit 0` 且输出 `✅ wiki 三方一致`。
|
|
47
|
+
- 检查项涵盖:磁盘 $\leftrightarrow$ INDEX $\leftrightarrow$ 看板 DATA $\leftrightarrow$ 数据维护台账 $\leftrightarrow$ 链接可达性。
|
|
48
|
+
|
|
49
|
+
## 维护须知
|
|
50
|
+
- **生成区**:`wiki/INDEX.md` 的计数/映射表及 `知识沉淀总览.html` 的 DATA 块为自动生成区,禁止手动修改。
|
|
51
|
+
- **人工编辑位**:仅维护 `wiki/INDEX.md` 的「用途」列及 `wiki/数据维护/README.md` 台账。
|
|
52
|
+
- **冲突处理**:wiki 与 `AGENTS.md` 或 `workflow` 冲突时,以后者为准。
|
|
53
|
+
- **提交规范**:调整 wiki 内容(知识文档新增/修改/删除/更名/归位、INDEX、看板、本技能文件)属 docs 级改动,**豁免工作流三件套**(不生成 intents/specs/plans、不走确认门),直接 commit (`docs(wiki): <动作>`);规则单源 = 根 `AGENTS.md` §4「wiki 豁免」。删除文件仍须用户单独确认(见「操作限制」)。
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// auto-tour.test.mjs — 自动拉起开发全景看板脚本测试(node:test + node:assert,零新依赖)
|
|
2
|
+
// 被测:.agents/scripts/auto-tour.mjs
|
|
3
|
+
//
|
|
4
|
+
// 测三条本脚本自带的非平凡逻辑(其余是纯 spawn 转发,不测):
|
|
5
|
+
// 1. 参数校验:缺文档 / 文档不存在 → exit 1 且给出可操作的提示;
|
|
6
|
+
// 2. 失败降级:ensure-board 起不来时脚本 exit 0 且打印告警——全景图是可选观察面,不是门禁,
|
|
7
|
+
// 不得因看板不可用阻断 Build 流程;
|
|
8
|
+
// 3. 端口语义:显式 --port 是绝对值、不吃 SHIPYARD_SLOT 槽位偏移(与 ensure-board 同口径)。
|
|
9
|
+
//
|
|
10
|
+
// 确定性口径:第 2/3 条用一个「快速响应非 200」的桩 HTTP 服务器占住端口——ensure-board 的
|
|
11
|
+
// httpProbe 立即拿到非 200 → 判「他人进程占用槽位口」→ exit 1,走与真实占用同一条分支,
|
|
12
|
+
// 但不触发它 25s 的挂起超时(那是「占端口但不响应」的慢路径,真实冷启动环境才有,
|
|
13
|
+
// 放到测试里会把本门从 <3s 拉到 30s)。
|
|
14
|
+
import { test, describe } from 'node:test';
|
|
15
|
+
import assert from 'node:assert/strict';
|
|
16
|
+
import { spawn } from 'node:child_process';
|
|
17
|
+
import http from 'node:http';
|
|
18
|
+
import path from 'node:path';
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
20
|
+
|
|
21
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
const ROOT = path.resolve(HERE, '../..');
|
|
23
|
+
const AUTO_TOUR = path.join(ROOT, '.agents', 'scripts', 'auto-tour.mjs');
|
|
24
|
+
const PLAN = 'workflow/plans/2026-11-09-document-attachment.md';
|
|
25
|
+
|
|
26
|
+
function run(args, env = {}) {
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
const c = spawn(process.execPath, [AUTO_TOUR, ...args], {
|
|
29
|
+
cwd: ROOT, encoding: 'utf8',
|
|
30
|
+
env: { ...process.env, ...env },
|
|
31
|
+
});
|
|
32
|
+
let out = '', err = '';
|
|
33
|
+
c.stdout.on('data', (d) => { out += d; });
|
|
34
|
+
c.stderr.on('data', (d) => { err += d; });
|
|
35
|
+
c.on('close', (code) => resolve({ code, out, err }));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 起一个立刻回 404 的 HTTP 服务器占端口(非看板身份)
|
|
40
|
+
function occupy(port) {
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
const s = http.createServer((req, res) => { res.statusCode = 404; res.end('not a board'); });
|
|
43
|
+
s.listen(port, '127.0.0.1', () => resolve(s));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
describe('auto-tour', () => {
|
|
48
|
+
test('缺文档参数时 exit 1 并打印用法', async () => {
|
|
49
|
+
const r = await run([]);
|
|
50
|
+
assert.equal(r.code, 1);
|
|
51
|
+
assert.match(r.err, /用法/);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('文档不存在时 exit 1 并点名文件', async () => {
|
|
55
|
+
const r = await run(['workflow/plans/__not-exist__.md']);
|
|
56
|
+
assert.equal(r.code, 1);
|
|
57
|
+
assert.match(r.err, /找不到文档/);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('看板拉不起来时 exit 0 且告警——不阻断 Build 流程', async () => {
|
|
61
|
+
const s = await occupy(18777);
|
|
62
|
+
try {
|
|
63
|
+
const r = await run([PLAN, '--port', '18777']);
|
|
64
|
+
assert.equal(r.code, 0, '看板不可用时必须 exit 0');
|
|
65
|
+
assert.match(r.err + r.out, /未就绪|不影响/);
|
|
66
|
+
assert.match(r.err + r.out, /ensure-board/, '告警须给出手动兜底命令');
|
|
67
|
+
} finally {
|
|
68
|
+
s.close();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('显式 --port 是绝对值,不吃 SHIPYARD_SLOT 槽位偏移', async () => {
|
|
73
|
+
const s = await occupy(18778);
|
|
74
|
+
try {
|
|
75
|
+
const r = await run([PLAN, '--port', '18778'], { SHIPYARD_SLOT: '2' });
|
|
76
|
+
// 槽位 2 的偏移是 +20;端口若被偏移到 18798,桩服务器(18778)就拦不住它——失败分支不触发
|
|
77
|
+
assert.match(r.err + r.out, /未就绪|不影响/, '端口应按绝对值使用,未被槽位偏移');
|
|
78
|
+
} finally {
|
|
79
|
+
s.close();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|