@event4u/agent-config 16.2.0 → 16.4.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +337 -234
- package/README.md +15 -13
- package/agents/templates/.ai-council.yml.example +26 -8
- package/dist/agent-src/commands/analyze/inbox.md +11 -8
- package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
- package/dist/agent-src/commands/bug/fix.md +17 -2
- package/dist/agent-src/commands/bug/investigate.md +1 -1
- package/dist/agent-src/commands/commit/in-chunks.md +40 -31
- package/dist/agent-src/commands/commit.md +72 -33
- package/dist/agent-src/commands/condense.md +2 -8
- package/dist/agent-src/commands/council/debate.md +11 -7
- package/dist/agent-src/commands/council/default.md +10 -9
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/estimate-ticket.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +3 -3
- package/dist/agent-src/commands/feature/plan.md +2 -2
- package/dist/agent-src/commands/feature/roadmap.md +1 -1
- package/dist/agent-src/commands/fix/ci.md +18 -4
- package/dist/agent-src/commands/fix/commit-messages.md +48 -23
- package/dist/agent-src/commands/fix/pr-comments.md +3 -6
- package/dist/agent-src/commands/implement-ticket.md +4 -4
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/add.md +4 -16
- package/dist/agent-src/commands/memory/load.md +5 -6
- package/dist/agent-src/commands/memory/promote.md +3 -16
- package/dist/agent-src/commands/mission/upgrade.md +3 -2
- package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
- package/dist/agent-src/commands/optimize/deep.md +4 -2
- package/dist/agent-src/commands/optimize/rtk.md +4 -26
- package/dist/agent-src/commands/pr/create/description-only.md +18 -15
- package/dist/agent-src/commands/pr/create.md +42 -34
- package/dist/agent-src/commands/pr/merge.md +136 -9
- package/dist/agent-src/commands/prepare-for-review.md +13 -11
- package/dist/agent-src/commands/project/analyze.md +7 -35
- package/dist/agent-src/commands/refine-ticket.md +1 -1
- package/dist/agent-src/commands/review/changes.md +14 -19
- package/dist/agent-src/commands/roadmap/create.md +1 -1
- package/dist/agent-src/commands/roadmap/materialize.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +10 -1
- package/dist/agent-src/commands/roadmap/process-full.md +56 -42
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +411 -0
- package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
- package/dist/agent-src/commands/roadmap.md +18 -4
- package/dist/agent-src/commands/tests/create.md +17 -3
- package/dist/agent-src/commands/tests/execute.md +22 -5
- package/dist/agent-src/commands/worktree/create.md +7 -3
- package/dist/agent-src/commands/worktree/verify.md +2 -1
- package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
- package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
- package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +7 -7
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
- package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +99 -54
- package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
- package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
- package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
- package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +95 -7
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
- package/dist/agent-src/guidelines/php/git.md +15 -2
- package/dist/agent-src/rules/active-remediation.md +1 -2
- package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
- package/dist/agent-src/rules/architecture.md +0 -1
- package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
- package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
- package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
- package/dist/agent-src/rules/autonomous-execution.md +1 -1
- package/dist/agent-src/rules/brand-consistency.md +0 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
- package/dist/agent-src/rules/broken-access-control.md +1 -1
- package/dist/agent-src/rules/cli-output-handling.md +0 -1
- package/dist/agent-src/rules/code-comment-discipline.md +0 -1
- package/dist/agent-src/rules/code-provenance.md +0 -1
- package/dist/agent-src/rules/command-suggestion-policy.md +1 -1
- package/dist/agent-src/rules/commit-conventions.md +1 -2
- package/dist/agent-src/rules/communication-through-line.md +1 -2
- package/dist/agent-src/rules/content-quoting-floor.md +1 -2
- package/dist/agent-src/rules/context-hygiene.md +6 -6
- package/dist/agent-src/rules/copilot-routing.md +1 -2
- package/dist/agent-src/rules/council-availability.md +4 -4
- package/dist/agent-src/rules/cross-source-consistency.md +4 -6
- package/dist/agent-src/rules/decision-revisit-gate.md +17 -35
- package/dist/agent-src/rules/delegation-policy.md +2 -3
- package/dist/agent-src/rules/design-fidelity.md +12 -16
- package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
- package/dist/agent-src/rules/devcontainer-routing.md +1 -2
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/docker-commands.md +0 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
- package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/domain-safety-retention.md +1 -1
- package/dist/agent-src/rules/downstream-changes.md +0 -1
- package/dist/agent-src/rules/engineering-safety-floor.md +1 -1
- package/dist/agent-src/rules/evaluator-independence.md +3 -2
- package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
- package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -2
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/fix-what-you-see.md +6 -32
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
- package/dist/agent-src/rules/git-history-discipline.md +2 -2
- package/dist/agent-src/rules/guidelines.md +0 -1
- package/dist/agent-src/rules/history-discipline.md +0 -1
- package/dist/agent-src/rules/icon-consistency.md +0 -1
- package/dist/agent-src/rules/image-likeness-and-rights.md +1 -1
- package/dist/agent-src/rules/improve-before-implement.md +0 -1
- package/dist/agent-src/rules/invite-challenge.md +0 -1
- package/dist/agent-src/rules/laravel-routing.md +1 -2
- package/dist/agent-src/rules/laravel-translations.md +0 -1
- package/dist/agent-src/rules/legal-safety-floor.md +3 -3
- package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -1
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/media-governance-routing.md +13 -17
- package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
- package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
- package/dist/agent-src/rules/missing-tool-handling.md +0 -1
- package/dist/agent-src/rules/model-recommendation.md +0 -1
- package/dist/agent-src/rules/neighbour-precedence.md +64 -0
- package/dist/agent-src/rules/no-attribution-footers.md +0 -1
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
- package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
- package/dist/agent-src/rules/no-roadmap-references.md +0 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
- package/dist/agent-src/rules/onboarding-gate.md +0 -1
- package/dist/agent-src/rules/output-discipline.md +0 -1
- package/dist/agent-src/rules/package-ci-checks.md +0 -1
- package/dist/agent-src/rules/persona-governance.md +4 -5
- package/dist/agent-src/rules/php-coding.md +0 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
- package/dist/agent-src/rules/preservation-guard.md +0 -1
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -4
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/reviewer-awareness.md +0 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +4 -7
- package/dist/agent-src/rules/role-mode-adherence.md +0 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -1
- package/dist/agent-src/rules/runtime-safety.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +3 -3
- package/dist/agent-src/rules/self-repair-loop.md +0 -1
- package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
- package/dist/agent-src/rules/session-canary.md +7 -62
- package/dist/agent-src/rules/settings-ask-protocol.md +6 -6
- package/dist/agent-src/rules/size-enforcement.md +0 -1
- package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
- package/dist/agent-src/rules/skill-quality.md +0 -1
- package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
- package/dist/agent-src/rules/source-confidentiality.md +1 -1
- package/dist/agent-src/rules/source-discovery-gate.md +0 -1
- package/dist/agent-src/rules/source-of-truth.md +0 -1
- package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/symfony-routing.md +1 -2
- package/dist/agent-src/rules/think-before-action.md +0 -1
- package/dist/agent-src/rules/token-budget-discipline.md +12 -46
- package/dist/agent-src/rules/token-efficiency.md +0 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
- package/dist/agent-src/rules/tool-safety.md +1 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +1 -1
- package/dist/agent-src/rules/upstream-proposal.md +0 -1
- package/dist/agent-src/rules/user-interaction.md +0 -1
- package/dist/agent-src/rules/user-interrupt-priority.md +1 -1
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/dist/agent-src/scripts/deferral_carry.ts +339 -0
- package/dist/agent-src/scripts/gate_budget.ts +47 -23
- package/dist/agent-src/scripts/gate_execute.ts +12 -4
- package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
- package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
- package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
- package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
- package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
- package/dist/agent-src/skills/database/data/manifest.json +2 -2
- package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
- package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
- package/dist/agent-src/skills/iconography/SKILL.md +1 -1
- package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
- package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -2
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
- package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +46 -129
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/command.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +6 -1
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/dist/agent-src/templates/skill.md +1 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
- package/dist/cli-delegate/check_update_banner.js +207 -120
- package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
- package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-5GPULQBE.js} +2797 -338
- package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-6SRJTYJS.js} +42 -176
- package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
- package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
- package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
- package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
- package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
- package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-AED2VQGM.js} +1245 -249
- package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
- package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
- package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
- package/dist/cli-delegate/chunk-F3QDG2GT.js +2569 -0
- package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-G5VVIZRC.js} +3 -3
- package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-H76PHZBI.js} +149 -61
- package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
- package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
- package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
- package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
- package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-KXXWJTDO.js} +6 -11
- package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
- package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-MDPPKQCQ.js} +58 -9
- package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-MSUL5NYP.js} +5 -5
- package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
- package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
- package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
- package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-PWX7CKMD.js} +4 -4
- package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
- package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-T7XSJSUQ.js} +1144 -589
- package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
- package/dist/cli-delegate/chunk-WQWXGIWB.js +1779 -0
- package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-XQTPXKFA.js} +1 -1
- package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
- package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
- package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
- package/dist/cli-delegate/cmd_analyze_session.js +223 -43
- package/dist/cli-delegate/cmd_brand_status.js +3 -2
- package/dist/cli-delegate/cmd_conformance.js +1252 -249
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +19 -9
- package/dist/cli-delegate/cmd_doctor_neighbours.js +30 -0
- package/dist/cli-delegate/cmd_explain.js +45 -21
- package/dist/cli-delegate/cmd_export.js +13 -10
- package/dist/cli-delegate/cmd_fleet.js +3 -3
- package/dist/cli-delegate/cmd_git_convention.js +1851 -0
- package/dist/cli-delegate/cmd_handoff.js +44 -22
- package/dist/cli-delegate/cmd_mcp_available.js +3 -2
- package/dist/cli-delegate/cmd_memory_get.js +3 -1
- package/dist/cli-delegate/cmd_migrate.js +3 -3
- package/dist/cli-delegate/cmd_packs_active.js +5 -4
- package/dist/cli-delegate/cmd_preflight.js +6 -6
- package/dist/cli-delegate/cmd_prune.js +14 -11
- package/dist/cli-delegate/cmd_refresh.js +2 -1
- package/dist/cli-delegate/cmd_route_audit.js +10 -8
- package/dist/cli-delegate/cmd_route_explain.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +10 -7
- package/dist/cli-delegate/cmd_settings_check.js +54 -7
- package/dist/cli-delegate/cmd_settings_get.js +18 -8
- package/dist/cli-delegate/cmd_settings_migrate.js +13 -10
- package/dist/cli-delegate/cmd_settings_set.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +14 -11
- package/dist/cli-delegate/cmd_uninstall.js +15 -12
- package/dist/cli-delegate/cmd_update.js +7 -7
- package/dist/cli-delegate/cmd_upgrade.js +9 -8
- package/dist/cli-delegate/cmd_validate.js +15 -12
- package/dist/cli-delegate/cmd_versions.js +5 -5
- package/dist/cli-delegate/deferral_carry.js +16 -0
- package/dist/cli-delegate/gate_budget.js +1 -1
- package/dist/cli-delegate/gate_execute.js +3 -3
- package/dist/cli-delegate/roadmap_gates.js +6 -6
- package/dist/cli-delegate/update_roadmap_progress.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +232 -141
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +26 -9
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +7 -4
- package/dist/hooks/dispatch.js +5655 -6623
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/install/claudePathsPlan.js +47 -6
- package/dist/install/claudeRuleRewrite.js +7 -0
- package/dist/install/emit_host_rules_cli.js +39 -36
- package/dist/install/globalRuleScope.js +87 -0
- package/dist/install/host_rule_ownership.js +160 -0
- package/dist/install/install.mjs +2336 -1249
- package/dist/install/installThinLayer.js +289 -0
- package/dist/install/installedRuleLinks.js +262 -0
- package/dist/install/wizard-plan.js +24 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
- package/dist/mcp/registry-manifest.json +5 -5
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +36504 -30986
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +26 -120
- package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
- package/dist/scripts/_lib/compile_time_toggles.js +12 -21
- package/dist/scripts/_lib/git_convention.js +232 -0
- package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
- package/dist/scripts/_lib/installed_layer.js +704 -0
- package/dist/scripts/_lib/lean_projection_mode.js +218 -15
- package/dist/scripts/_lib/package_root.js +68 -0
- package/dist/scripts/_lib/rule_consequence_class.js +45 -0
- package/dist/scripts/_lib/rule_injection.js +67 -10
- package/dist/scripts/_lib/rule_law_section.js +122 -0
- package/dist/scripts/_lib/settings_removed_keys.js +168 -0
- package/dist/scripts/_lib/thin_rules.js +535 -0
- package/dist/scripts/_lib/windsurf_render.js +60 -0
- package/dist/scripts/condense.js +14 -26
- package/dist/scripts/project_thin_rules.js +14 -294
- package/dist/server/app.js +2 -1
- package/dist/server/gitKeysGate.js +105 -0
- package/dist/server/routes/settings.js +67 -8
- package/dist/server/routes/wizard.js +4 -0
- package/dist/server/schemas/settings.js +29 -81
- package/dist/shared/skillRanking.js +103 -16
- package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +72 -1
- package/docs/contracts/settings-classes.md +39 -67
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/docs/guidelines/agent-infra/layered-settings.md +13 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
- package/docs/guidelines/php/git.md +15 -2
- package/package.json +1 -1
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/src/agent-src/scripts/deferral_carry.ts +339 -0
- package/src/agent-src/scripts/gate_budget.ts +47 -23
- package/src/agent-src/scripts/gate_execute.ts +12 -4
- package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/src/config/agent-settings.template.yml +141 -334
- package/src/config/agents-paths.yml +16 -0
- package/src/config/assurance-capability-registry.json +7 -3
- package/src/config/ci-local-parity.yml +3 -0
- package/src/config/continuity-surface.json +10 -3
- package/src/config/discovery/packs.yml +17 -1
- package/src/config/evaluator-budgets.json +23 -10
- package/src/config/gate-coverage.yml +138 -3
- package/src/config/gate-violation-baselines.json +64 -16
- package/src/config/gitignore-block.txt +19 -0
- package/src/config/hook-bundle-budget.json +25 -0
- package/src/config/hook-token-budget.json +6 -1
- package/src/config/host-instruction-limits.json +33 -0
- package/src/config/release-gate-locality.yml +2 -1
- package/src/config/routing-coverage-seed.json +67 -4
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-consequence-class.json +161 -0
- package/src/config/rule-law-ceilings.json +105 -0
- package/src/config/rule-obligations.json +833 -0
- package/src/install/claudePathsPlan.ts +46 -4
- package/src/install/claudeRuleRewrite.ts +10 -1
- package/src/install/emit_host_rules_cli.ts +43 -34
- package/src/install/globalRuleScope.ts +109 -0
- package/src/install/host_rule_ownership.ts +170 -0
- package/src/install/installThinLayer.ts +378 -0
- package/src/install/installedRuleLinks.ts +308 -0
- package/src/install/wizard-plan.ts +24 -0
- package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
- package/src/scripts/_cli/cmd_conformance.ts +13 -2
- package/src/scripts/_cli/cmd_doctor.ts +33 -81
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +426 -0
- package/src/scripts/_cli/cmd_explain.ts +72 -14
- package/src/scripts/_cli/cmd_git_convention.ts +637 -0
- package/src/scripts/_cli/cmd_settings_check.ts +66 -8
- package/src/scripts/_cli/cmd_settings_get.ts +18 -3
- package/src/scripts/_cli/doctor_execution.ts +72 -1
- package/src/scripts/_dispatch.bash +53 -4
- package/src/scripts/_lib/agent_settings.ts +26 -124
- package/src/scripts/_lib/blocked_by_marker.ts +1 -1
- package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
- package/src/scripts/_lib/compile_time_toggles.ts +12 -21
- package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
- package/src/scripts/_lib/estate_offsets.ts +241 -0
- package/src/scripts/_lib/exemption_shape.ts +143 -0
- package/src/scripts/_lib/fnv.ts +23 -0
- package/src/scripts/_lib/foreign_scan.ts +106 -0
- package/src/scripts/_lib/git_base_ref.ts +92 -0
- package/src/scripts/_lib/git_convention.ts +291 -0
- package/src/scripts/_lib/git_convention_carrier.ts +389 -0
- package/src/scripts/_lib/git_convention_grammar.ts +246 -0
- package/src/scripts/_lib/git_convention_measure.ts +344 -0
- package/src/scripts/_lib/gitignore_block.ts +314 -0
- package/src/scripts/_lib/global_deploy_inventory.ts +106 -0
- package/src/scripts/_lib/graph_feeder_record.ts +437 -0
- package/src/scripts/_lib/hook_settings.ts +73 -0
- package/src/scripts/_lib/host_capability.ts +40 -19
- package/src/scripts/_lib/host_hook_merge.ts +165 -0
- package/src/scripts/_lib/installed_layer.ts +963 -0
- package/src/scripts/_lib/json_merge.ts +82 -0
- package/src/scripts/_lib/json_pointers.ts +93 -11
- package/src/scripts/_lib/knowledge_global.ts +14 -1
- package/src/scripts/_lib/lean_projection_mode.ts +275 -15
- package/src/scripts/_lib/machine_wake.ts +16 -3
- package/src/scripts/_lib/module_reach.ts +456 -0
- package/src/scripts/_lib/neighbour_census.ts +760 -0
- package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
- package/src/scripts/_lib/neighbour_scan.ts +122 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +187 -0
- package/src/scripts/_lib/prompt_shape.ts +46 -0
- package/src/scripts/_lib/ratification_artifact.ts +220 -1
- package/src/scripts/_lib/ratification_subject.ts +92 -0
- package/src/scripts/_lib/release_findings_ingest.ts +15 -7
- package/src/scripts/_lib/release_highlights.ts +5 -0
- package/src/scripts/_lib/release_migration_gate.ts +19 -3
- package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
- package/src/scripts/_lib/review_coverage.ts +134 -0
- package/src/scripts/_lib/rule_consequence_class.ts +71 -0
- package/src/scripts/_lib/rule_injection.ts +130 -10
- package/src/scripts/_lib/rule_law_section.ts +147 -0
- package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
- package/src/scripts/_lib/rule_obligations.ts +205 -0
- package/src/scripts/_lib/self_repair.ts +1 -1
- package/src/scripts/_lib/settings_removed_keys.ts +173 -0
- package/src/scripts/_lib/skill_origin.ts +254 -0
- package/src/scripts/_lib/structured_ask.ts +64 -21
- package/src/scripts/_lib/test_red_state.ts +5 -0
- package/src/scripts/_lib/thin_rules.ts +620 -0
- package/src/scripts/_lib/touched_file_quality.ts +570 -0
- package/src/scripts/_lib/turn_end_refusals.ts +77 -2
- package/src/scripts/_lib/windsurf_render.ts +63 -0
- package/src/scripts/_lib/worker_budget.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +16 -1
- package/src/scripts/ai_council/cli_call_budget.ts +13 -5
- package/src/scripts/ai_council/clients.ts +26 -57
- package/src/scripts/ai_council/config.ts +8 -8
- package/src/scripts/ai_council/modification_review.ts +100 -0
- package/src/scripts/ai_council/modification_review_questions.ts +90 -0
- package/src/scripts/ai_council/orchestrator.ts +5 -5
- package/src/scripts/ai_council/spend_gate.ts +18 -7
- package/src/scripts/ai_council/vendor_defaults.ts +45 -0
- package/src/scripts/ai_team/config.ts +11 -16
- package/src/scripts/audit_skill_overlap.ts +261 -0
- package/src/scripts/audit_user_type_axis.ts +20 -8
- package/src/scripts/before_complete_hook.ts +243 -12
- package/src/scripts/bench_ab_clone.ts +1 -2
- package/src/scripts/bench_concern_spawn_path.ts +129 -0
- package/src/scripts/bench_graph_feeder_latency.ts +584 -0
- package/src/scripts/bench_touched_file_quality.ts +238 -0
- package/src/scripts/check_agent_artifact_location.ts +36 -0
- package/src/scripts/check_branch_freshness.ts +147 -24
- package/src/scripts/check_enforcement_coverage.ts +130 -0
- package/src/scripts/check_enforcement_matrix.ts +377 -20
- package/src/scripts/check_estate_count.ts +130 -153
- package/src/scripts/check_evaluator_budgets.ts +4 -0
- package/src/scripts/check_finding_dispositions.ts +196 -21
- package/src/scripts/check_gate_coverage.ts +4 -3
- package/src/scripts/check_gate_reachability.ts +48 -1
- package/src/scripts/check_generator_sync.ts +48 -0
- package/src/scripts/check_hook_bundle_composition.ts +477 -0
- package/src/scripts/check_kernel_edit_ratified.ts +132 -14
- package/src/scripts/check_memory.ts +7 -1
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_release_highlights.ts +10 -0
- package/src/scripts/check_release_manifest_content.ts +189 -0
- package/src/scripts/check_release_pr_shape.ts +38 -15
- package/src/scripts/check_standing_rule_delivery.ts +129 -13
- package/src/scripts/check_suppression_hygiene.ts +2 -5
- package/src/scripts/check_verify_expectation_delta.ts +521 -0
- package/src/scripts/ci_settle.ts +42 -5
- package/src/scripts/classify_merge_risk.ts +320 -0
- package/src/scripts/closure_scan.ts +91 -1
- package/src/scripts/code_graph/detect.ts +127 -7
- package/src/scripts/code_graph/foreign.ts +194 -0
- package/src/scripts/code_graph/query.ts +217 -4
- package/src/scripts/code_graph/types.ts +26 -2
- package/src/scripts/code_graph/validate.ts +3 -1
- package/src/scripts/code_graph/verbs.ts +103 -0
- package/src/scripts/command_suggester/settings.ts +8 -108
- package/src/scripts/command_suggester/types.ts +4 -5
- package/src/scripts/compile_hook_manifest.ts +33 -1
- package/src/scripts/condense.ts +14 -27
- package/src/scripts/consumer_matrix.ts +102 -0
- package/src/scripts/context_hygiene_hook.ts +13 -23
- package/src/scripts/cost/preflight.mjs +12 -1
- package/src/scripts/council_cli.ts +7 -7
- package/src/scripts/dispatch_r2_reviewer.ts +24 -11
- package/src/scripts/estate_exemption_shape.ts +202 -0
- package/src/scripts/explain_run.ts +8 -13
- package/src/scripts/generate_git_convention_grammar.ts +127 -0
- package/src/scripts/generate_host_cost_table.ts +21 -4
- package/src/scripts/handoff_context_hook.ts +86 -37
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +175 -15
- package/src/scripts/hooks/block_config_weakening.ts +115 -7
- package/src/scripts/hooks/block_plumbing_writes.ts +37 -5
- package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
- package/src/scripts/hooks/concern_failure_policy.ts +280 -0
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
- package/src/scripts/hooks/dispatch_hook.ts +52 -52
- package/src/scripts/hooks/evidence_independence.ts +12 -4
- package/src/scripts/hooks/exit_codes.ts +2 -1
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.ts +19 -1
- package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
- package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
- package/src/scripts/hooks/payload_stub.ts +10 -1
- package/src/scripts/hooks/push_settle_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +795 -60
- package/src/scripts/hooks/state_io.ts +8 -4
- package/src/scripts/hooks/table_fingerprint.ts +21 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +24 -7
- package/src/scripts/hooks/turn_end_gate_hook.ts +85 -0
- package/src/scripts/hooks_status.ts +112 -0
- package/src/scripts/injection_scan_hook.ts +7 -0
- package/src/scripts/install-hooks.sh +42 -14
- package/src/scripts/install.ts +78 -215
- package/src/scripts/installed_layer_report.ts +103 -0
- package/src/scripts/language_mirror_hook.ts +15 -6
- package/src/scripts/learning_sidecar.ts +119 -8
- package/src/scripts/lint_blocker_citations.ts +198 -0
- package/src/scripts/lint_evidence_artifacts.ts +9 -0
- package/src/scripts/lint_hook_concern_budget.ts +10 -21
- package/src/scripts/lint_hook_manifest.ts +53 -0
- package/src/scripts/lint_major_migration_sections.ts +156 -26
- package/src/scripts/lint_pack_boundaries.ts +465 -29
- package/src/scripts/lint_roadmap_blockers.ts +282 -29
- package/src/scripts/lint_roadmap_complexity.ts +4 -2
- package/src/scripts/lint_rule_law_section.ts +647 -0
- package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
- package/src/scripts/lint_settings_classes.ts +1 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
- package/src/scripts/lint_workflow_security.ts +173 -6
- package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
- package/src/scripts/mcp_server/graph_tools.ts +72 -3
- package/src/scripts/measure_routing_signal.ts +54 -16
- package/src/scripts/measure_skill_ranker_baseline.ts +221 -8
- package/src/scripts/memory_learn_hook.ts +91 -6
- package/src/scripts/model_rule_injection.ts +55 -8
- package/src/scripts/onboarding_gate_hook.ts +7 -6
- package/src/scripts/print_required_checks.ts +15 -3
- package/src/scripts/probe_host_compliance.ts +33 -5
- package/src/scripts/probe_turnaround.ts +183 -3
- package/src/scripts/project_thin_rules.ts +34 -327
- package/src/scripts/ratification_header.ts +77 -0
- package/src/scripts/refusal_envelope.ts +138 -0
- package/src/scripts/release_publication.ts +29 -3
- package/src/scripts/report_dispatch_import_closure.ts +76 -0
- package/src/scripts/report_evidence_temperature.ts +657 -0
- package/src/scripts/report_installed_rule_links.ts +274 -0
- package/src/scripts/report_label_agreement.ts +233 -0
- package/src/scripts/report_module_reach.ts +212 -0
- package/src/scripts/report_obligation_mechanism.ts +228 -0
- package/src/scripts/report_parked_blockers.ts +222 -0
- package/src/scripts/report_required_checks_drift.ts +196 -0
- package/src/scripts/report_single_token_triggers.ts +277 -0
- package/src/scripts/report_skill_ranker_confusion.ts +543 -0
- package/src/scripts/report_standing_payload_by_host.ts +188 -15
- package/src/scripts/report_verification_record_coverage.ts +306 -0
- package/src/scripts/routing_doctor.ts +2 -2
- package/src/scripts/rule_activation_census.ts +5 -2
- package/src/scripts/rule_trigger_eval.ts +9 -9
- package/src/scripts/schemas/agent-settings.schema.json +17 -31
- package/src/scripts/schemas/command.schema.json +1 -1
- package/src/scripts/schemas/review-findings.schema.json +3 -2
- package/src/scripts/schemas/rule.schema.json +5 -0
- package/src/scripts/schemas/skill.schema.json +1 -1
- package/src/scripts/self_review_gate.ts +101 -9
- package/src/scripts/skill_tools/score_skill_relevance.ts +314 -40
- package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
- package/src/scripts/sync_gitignore.ts +29 -235
- package/src/scripts/sync_pr_branch.ts +403 -132
- package/src/scripts/trigger_eval_grandfather.json +0 -21
- package/src/server/schemas/settings.ts +42 -176
- package/src/shared/skillRanking.ts +169 -14
- package/dist/cli-delegate/chunk-5R7HOLAF.js +0 -99
- package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
- package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
- package/src/scripts/_lib/config_chain.ts +0 -477
- package/src/scripts/_lib/conformance_report.ts +0 -403
- package/src/scripts/_lib/eval_discrimination.ts +0 -95
- package/src/scripts/_lib/evaluator_promotion.ts +0 -225
- package/src/scripts/_lib/file_slicer.ts +0 -117
- package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
- package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
- package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
- package/src/scripts/_lib/role_split.ts +0 -338
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# The ticket, the commit subject and the branch name
|
|
2
|
+
|
|
3
|
+
Detail for [`git-workflow`](../SKILL.md) and
|
|
4
|
+
[`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md).
|
|
5
|
+
The one place that says how a ticket is read out of a branch name, where it goes
|
|
6
|
+
in a commit subject, which convention is in force, and how a branch name is
|
|
7
|
+
rendered. `/commit`, `/commit:in-chunks`, `/fix:commit-messages`,
|
|
8
|
+
`/create-pr:description-only`, `/worktree:create` and the `jira-integration`
|
|
9
|
+
skill defer here.
|
|
10
|
+
|
|
11
|
+
The rules are code: `agent-config git:convention` runs them, and the commands
|
|
12
|
+
call it. This page is what a command reads **when the verb cannot run** — no
|
|
13
|
+
`agent-config` on `PATH`, or exit `2` for a usage or unknown-verb error. Then
|
|
14
|
+
apply the generated block below by reading, say once that the verb was
|
|
15
|
+
unavailable, and never invent a grammar the block does not show. Exit `2` with
|
|
16
|
+
`no subjects on stdin — the verb ran` is not that case: the verb ran and
|
|
17
|
+
received nothing, so pipe the subjects again rather than falling back.
|
|
18
|
+
|
|
19
|
+
## Reading the ticket
|
|
20
|
+
|
|
21
|
+
`agent-config git:convention ticket [BRANCH] [--keys "<line>"]` — the current
|
|
22
|
+
branch when `BRANCH` is omitted. It prints `ticket <ID>` or `ticket none`, then
|
|
23
|
+
every candidate with its status:
|
|
24
|
+
|
|
25
|
+
- **Every match counts**, in order, wherever it sits (`feat/DEV-1234/...`,
|
|
26
|
+
`DEV-1234-device-export`, `fix/DEV-1234-quantity` → `DEV-1234`). The match
|
|
27
|
+
never depends on `git.branch_pattern`, so a branch named before the pattern was
|
|
28
|
+
set still yields its ticket. The first candidate with status `ticket` wins.
|
|
29
|
+
- **`standard-name`** — a key in the denylist (`UTF-8`, `ISO-8601`, `SHA-256`,
|
|
30
|
+
`CVE-2026-12345`, `CWE-79`) is never a ticket, with or without a card:
|
|
31
|
+
`fix/CVE-2026-12345-patch` yields none.
|
|
32
|
+
- **`version-like`** — without a card, a protocol or language name followed
|
|
33
|
+
by a one-digit number (`HTTP-2`, `PHP-8`; the list is the `version-like names`
|
|
34
|
+
row below) is a major version, not a ticket: `feat/HTTP-2-support` yields
|
|
35
|
+
none. Two or more digits (`PHP-12`) read as a ticket, and a card that lists
|
|
36
|
+
the key keeps it a ticket.
|
|
37
|
+
- **Case** — without a card only an upper-case key is detected, so
|
|
38
|
+
`feat/dev-12-export` yields none. With `--keys`, a key written in any case is
|
|
39
|
+
matched against the card and reported upper-cased (`dev-12` → `DEV-12`).
|
|
40
|
+
- **`unknown-key`** — `--keys` takes the `ticket_keys` line of the approved
|
|
41
|
+
convention card (`agents/memory/curated/conventions/approved/commit-subject.md`,
|
|
42
|
+
see the [`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md)
|
|
43
|
+
skill § 4), as the caller reads it. A candidate whose key is not on it is
|
|
44
|
+
asked about by `/commit` — a yes adds the key to the card — and omitted by
|
|
45
|
+
`/commit:in-chunks`. Without a card the grammar, the denylist and the
|
|
46
|
+
version-like names decide alone.
|
|
47
|
+
- **`proposal`** — without `--keys`, a commitlint config's `issuePrefixes` are
|
|
48
|
+
printed as a proposed `ticket_keys` line. Offer it; the verb writes nothing.
|
|
49
|
+
|
|
50
|
+
## Placing the ticket
|
|
51
|
+
|
|
52
|
+
| `git.commit_format` | With a ticket | Without a ticket |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `ticket-scope` (default) | `feat(DEV-1234): add export filter` | `feat: add export filter` — never `feat(): …` |
|
|
55
|
+
| `ticket-conventional` | `DEV-1234 feat(exporter): add export filter` | `feat(exporter): add export filter` |
|
|
56
|
+
|
|
57
|
+
Under `ticket-conventional` **a ticket is never in the scope** — not as the
|
|
58
|
+
scope, not inside a compound one (`feat(api,DEV-1234)` fails). The scope names
|
|
59
|
+
the system area (`api/audio`, `ci`), only where it adds clarity.
|
|
60
|
+
|
|
61
|
+
**Under an approved family** (the card's `dominant_family`) the ticket is
|
|
62
|
+
optional, as under `ticket-conventional`: with a ticket it stands in the
|
|
63
|
+
family's leading position (`[DEV-1234] Add export filter`), without one the
|
|
64
|
+
subject is the family's form without the ticket part (`Add export filter`), and
|
|
65
|
+
a ticket anywhere else fails. A branch without a ticket is therefore never a
|
|
66
|
+
stop under a card.
|
|
67
|
+
|
|
68
|
+
Git's own `fixup!`, `squash!`, `amend!` and `Revert "…"` subjects are valid under
|
|
69
|
+
both `git.commit_format` values and under every family: git writes them itself,
|
|
70
|
+
so the same rule holds everywhere a subject is checked.
|
|
71
|
+
|
|
72
|
+
**Area scope under `/commit:in-chunks`.** Several commits on one branch carry the
|
|
73
|
+
same ticket in front of each; the scope is chosen per commit from the area that
|
|
74
|
+
commit touches, and dropped where no single area fits. A chunk never inherits
|
|
75
|
+
another chunk's scope.
|
|
76
|
+
|
|
77
|
+
## Which convention is in force
|
|
78
|
+
|
|
79
|
+
`agent-config git:convention subject` reads subjects on stdin, one per line, and
|
|
80
|
+
resolves the convention in this order — the first that applies decides:
|
|
81
|
+
|
|
82
|
+
1. **A declaration** — `git.commit_format` in `.git-convention.yml` (either
|
|
83
|
+
value; ADR-283), or a developer settings file value other than the template
|
|
84
|
+
default. The rule is one for both values: `settings:sync` writes the
|
|
85
|
+
template default into every project file, so a default there cannot be told
|
|
86
|
+
apart from an insert and never outranks an approved card, whichever value
|
|
87
|
+
the default is; today that makes `ticket-conventional` the only developer
|
|
88
|
+
value that counts.
|
|
89
|
+
2. **An approved measurement** — the card's `dominant_family`.
|
|
90
|
+
3. **The default** — Conventional Commits (`ticket-scope`).
|
|
91
|
+
|
|
92
|
+
When the third case decides — no declaration and no approved card — and the
|
|
93
|
+
repository has no commitlint config, `subject` and `show` add the line `no convention established — run git:convention measure`
|
|
94
|
+
(`convention_established: false` under `--json`); the exit is unchanged.
|
|
95
|
+
A commitlint config is the repository's own subject validator, so it
|
|
96
|
+
establishes the convention: no such line, and `measure` says the config governs.
|
|
97
|
+
`agent-config git:convention measure [--limit N] [--family F] [--json]` then reads
|
|
98
|
+
the history of the default branch — the one the server names, else
|
|
99
|
+
`refs/remotes/origin/HEAD`; with neither it samples nothing, exits 1 and says so
|
|
100
|
+
(`trunk_unresolved` under `--json`) rather than guess one. It proposes a subject family when one clears the `measure bar` row
|
|
101
|
+
of the block below, otherwise names the two strongest; it proposes a
|
|
102
|
+
`branch_pattern` from the remote branch names, or `no clear pattern`; and it
|
|
103
|
+
shows the observed update style, which is never adopted. Where the chosen family
|
|
104
|
+
maps to a `git.commit_format` value or a pattern was proposed, it prints the
|
|
105
|
+
ready-to-commit content of `.git-convention.yml` (`commit_format`,
|
|
106
|
+
`branch_pattern`, never `update_strategy`); the verb writes nothing. A human
|
|
107
|
+
creates and commits that file, or, on the user's yes this turn,
|
|
108
|
+
`agent-config git:convention init --yes [--commit-format F] [--branch-pattern P]`
|
|
109
|
+
creates it once — never over an existing carrier, never `update_strategy`, and
|
|
110
|
+
uncommitted (ADR-283 § Creation). `/commit` asks the user once and writes the answer
|
|
111
|
+
to the approved card.
|
|
112
|
+
|
|
113
|
+
A repository validator — a `commit-msg` hook, a commitlint config (any of its
|
|
114
|
+
config files, or a `commitlint` key in the package manifest) — does not decide, and
|
|
115
|
+
the verb never guesses what it accepts: a hook's existence says nothing about
|
|
116
|
+
what it checks, and a config is only known by running it. Each one found adds a
|
|
117
|
+
`note:` line (and a `notes` entry under `--json`) saying it also runs at commit
|
|
118
|
+
time and may be stricter; the exit is the verdict of the order above alone. A
|
|
119
|
+
hook counts only where git will run it — the path git resolves, so
|
|
120
|
+
`core.hooksPath` is respected and `.husky/commit-msg` counts only when
|
|
121
|
+
`core.hooksPath` points at `.husky`. When the validator rejects a commit the
|
|
122
|
+
verb passed, the rejection is the answer: fix the subject or settle the two in
|
|
123
|
+
`.git-convention.yml`.
|
|
124
|
+
|
|
125
|
+
A format that cannot be read (`malformed`, `invalid`, `discarded`), or an
|
|
126
|
+
approved family with no grammar, exits `1` with the line that says why; it is
|
|
127
|
+
never read as the default.
|
|
128
|
+
Exit `1` also lists each failing subject with the rule it broke. Exit `2` is a
|
|
129
|
+
usage error; an empty stdin is one, and says `the verb ran`. How a family is measured and approved is the
|
|
130
|
+
[`conventional-commits-writing`](../../conventional-commits-writing/SKILL.md)
|
|
131
|
+
skill's procedure; this page only consumes its card.
|
|
132
|
+
|
|
133
|
+
## A title that becomes a commit
|
|
134
|
+
|
|
135
|
+
Where the forge squash-merges — the method `/pr:merge` § 9 reads — the pull
|
|
136
|
+
request title becomes the commit subject on the base, so `/create-pr:description-only`
|
|
137
|
+
§ 3 builds it as a subject in the convention in force and checks it through
|
|
138
|
+
`git:convention subject`, for `ticket-scope` as well as for `ticket-conventional`.
|
|
139
|
+
Under any other merge method the title stays `DEV-1234: summary`.
|
|
140
|
+
|
|
141
|
+
## Rendering a branch name
|
|
142
|
+
|
|
143
|
+
`agent-config git:convention branch --slug <slug> [--type <type>] [--ticket <ID>]`
|
|
144
|
+
renders `git.branch_pattern` (default `{type}/{slug}`) and prints the name:
|
|
145
|
+
|
|
146
|
+
- an empty placeholder drops with the separator after it, or the one before it
|
|
147
|
+
when it is last (`{ticket}-{slug}` without a ticket → `<slug>`);
|
|
148
|
+
- a ticket the pattern has no slot for prefixes the slug
|
|
149
|
+
(`{type}/{slug}` → `feat/DEV-1234-export`);
|
|
150
|
+
- a literal character of the pattern is never rewritten, and a value outside
|
|
151
|
+
`[A-Za-z0-9._-]` is refused (exit `1`), not repaired.
|
|
152
|
+
|
|
153
|
+
A guideline that shows another shape, such as `{type}/{ticket-id}/{short-description}`,
|
|
154
|
+
describes a team habit; the name the agent creates follows the declared pattern.
|
|
155
|
+
|
|
156
|
+
## The grammar
|
|
157
|
+
|
|
158
|
+
<!-- BEGIN GENERATED: git-convention-grammar -->
|
|
159
|
+
<!-- Written by `./scripts-run src/scripts/generate_git_convention_grammar` from `src/scripts/_lib/git_convention_grammar.ts` and `src/scripts/_lib/git_convention_measure.ts`; edit the modules, never this block. -->
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
ticket [A-Z][A-Z0-9]+-[0-9]+
|
|
163
|
+
ticket in text (?<![A-Za-z0-9])[A-Z][A-Z0-9]+-[0-9]+(?![0-9])
|
|
164
|
+
standard names UTF ISO SHA RFC CVE CWE GHSA
|
|
165
|
+
version-like names HTTP HTTPS TLS SSL OAUTH PHP PYTHON JAVA JDK NODE ES HTML CSS (one-digit number, no card)
|
|
166
|
+
format ticket-scope ^(feat|fix|chore|docs|refactor|test|perf|style|build|ci|revert)(\([^)]+\))?!?: .+
|
|
167
|
+
format ticket-conventional ^([A-Z][A-Z0-9]+-[0-9]+ )?(feat|fix|chore|docs|refactor|test|perf|style|build|ci|revert)(\([^)]+\))?!?: .+
|
|
168
|
+
family conventional ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?:
|
|
169
|
+
family ticket-conventional ^[A-Z][A-Z0-9]+-[0-9]+ (build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?:
|
|
170
|
+
family ticket-prefix ^\[[A-Z][A-Z0-9]+-[0-9]+\][: ]|^[A-Z][A-Z0-9]+-[0-9]+[: ]
|
|
171
|
+
family gitmoji ^:[a-z0-9_+-]+:[[:space:]]|^[^ -~[:cntrl:][:space:]]
|
|
172
|
+
family imperative-plain ^[A-Z][a-z]+[[:space:]].*[^.]$
|
|
173
|
+
family ticket-prefix, no ticket ^\S.* (no ticket elsewhere in the subject)
|
|
174
|
+
family ticket-conventional, no ticket ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]+\))?!?: (no ticket elsewhere in the subject)
|
|
175
|
+
any format or family ^((fixup|squash|amend)! .+|Revert ".+")$ (git's own subjects)
|
|
176
|
+
measure sample newest 200 non-merge commits since 24 months ago, or regardless of age when that window yields fewer than 30; bots, automation subjects, commits over 500 files dropped
|
|
177
|
+
measure bar n >= 30; >= 80 % capped at 20 per author per half (3+ authors), else >= 90 % uncapped; both halves agree
|
|
178
|
+
measure migration the newer half, or the newest 30 commits, clearing the bar on another family than the dominant one: "migrating to <family>", and that family is proposed
|
|
179
|
+
measure branches >= 10 remote branch names, top shape >= 80 %
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Formats are JavaScript / PCRE syntax; families are POSIX extended, matched in
|
|
183
|
+
order, first hit wins. Under `format ticket-conventional` and `family
|
|
184
|
+
ticket-conventional` a ticket anywhere inside the scope fails, and a standard
|
|
185
|
+
name in the ticket position fails. A ticket is found in a branch or scope only as
|
|
186
|
+
a whole token (`ticket in text`). Without a card, a version-like name — one of
|
|
187
|
+
the keys above with a one-digit number, such as `HTTP-2` or `PHP-8` — is not a
|
|
188
|
+
ticket; `HTTP2-1` still has the ticket shape. A convention card's `ticket_keys`
|
|
189
|
+
settles both, and matches a key written in lower case; without a card a
|
|
190
|
+
lower-case key is never detected.
|
|
191
|
+
<!-- END GENERATED: git-convention-grammar -->
|
|
192
|
+
|
|
193
|
+
## Patterns that are not this grammar
|
|
194
|
+
|
|
195
|
+
- **Suggester metadata.** The `trigger_context:` frontmatter of
|
|
196
|
+
`src/domains/engineering-base/implement-ticket/command.md` and
|
|
197
|
+
`src/domains/product-basic/estimate-ticket/command.md`, and the same literal in
|
|
198
|
+
`src/scripts/migrate_command_suggestions.ts`, match a bare-key ticket in a
|
|
199
|
+
prompt to decide when a command is suggested. They keep their own pattern:
|
|
200
|
+
changing it changes when a command is offered.
|
|
201
|
+
- **The suggester's matcher.** `src/scripts/command_suggester/match.ts` carries
|
|
202
|
+
the ticket grammar above; a test pins the two equal.
|
|
203
|
+
- **A project key in a ticket body.** `src/scripts/refine_ticket_detect.ts` reads
|
|
204
|
+
a project key out of ticket text, not a branch, and is intentionally
|
|
205
|
+
independent.
|
|
@@ -42,7 +42,7 @@ execution:
|
|
|
42
42
|
is the anti-pattern [`icon-consistency`](../../rules/icon-consistency.md)
|
|
43
43
|
§ What this gates names by name. Stop at the first rung that answers.
|
|
44
44
|
1. **A brand token or brand guide that names an icon set** — authoritative,
|
|
45
|
-
stop here (
|
|
45
|
+
stop here (`brand-source-of-truth`).
|
|
46
46
|
2. **The set already in use in this project** — detected at the Inspect step
|
|
47
47
|
of the Iconography floor below. One icon system per project; a second
|
|
48
48
|
visual language is the defect, not a preference.
|
|
@@ -54,7 +54,7 @@ fix/DEV-5678/null-pointer → DEV-5678
|
|
|
54
54
|
hotfix/DEV-999/critical-fix → DEV-999
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Read it with `agent-config git:convention ticket` — [`commit-subject`](../git-workflow/references/commit-subject.md) § Reading the ticket.
|
|
58
58
|
|
|
59
59
|
Use `git branch --show-current` to detect, then fetch the ticket:
|
|
60
60
|
|
|
@@ -147,8 +147,8 @@ POST /issue/DEV-1234/transitions
|
|
|
147
147
|
## Linking to PRs
|
|
148
148
|
|
|
149
149
|
When creating PRs, include the Jira ticket in:
|
|
150
|
-
- **Branch name:** `
|
|
151
|
-
|
|
150
|
+
- **Branch name and PR title:** rendered by `agent-config git:convention branch` and
|
|
151
|
+
built per [`commit-subject`](../git-workflow/references/commit-subject.md)
|
|
152
152
|
- **PR description:** Link to the ticket
|
|
153
153
|
|
|
154
154
|
## Related
|
|
@@ -17,7 +17,7 @@ packs:
|
|
|
17
17
|
> A React or TypeScript consumer receives this skill through `engineering-base`, which both
|
|
18
18
|
> of those packs require.
|
|
19
19
|
|
|
20
|
-
The JavaScript twin of
|
|
20
|
+
The JavaScript twin of `composer-packages`. A component is
|
|
21
21
|
a file; a **library** is a package with a public surface, and that surface is declared in
|
|
22
22
|
`package.json` rather than inferred. Most of the failures below are silent at author time
|
|
23
23
|
and loud at the consumer's — which is why the surface is read, not assumed.
|
|
@@ -167,7 +167,7 @@ declared cost — never here.
|
|
|
167
167
|
|
|
168
168
|
## See also
|
|
169
169
|
|
|
170
|
-
-
|
|
170
|
+
- `composer-packages` — the PHP twin; same surface discipline, different manifest.
|
|
171
171
|
- [`standards-from-config`](../standards-from-config/SKILL.md) — the Class-A rule the § Release branch follows.
|
|
172
172
|
- [`conventional-commits-writing`](../conventional-commits-writing/SKILL.md) — the `!` marker a release tool reads.
|
|
173
173
|
- [`ui-component-architect`](../ui-component-architect/SKILL.md) — the component inside the library; this skill is the package around it.
|
|
@@ -222,10 +222,16 @@ git add .
|
|
|
222
222
|
|
|
223
223
|
| Approach | When to use |
|
|
224
224
|
|---|---|
|
|
225
|
-
| `git merge main` | Default — preserves history, safer for shared branches |
|
|
226
|
-
| `git rebase main` |
|
|
227
|
-
|
|
228
|
-
|
|
225
|
+
| `git merge main` | Default (`git.update_strategy: merge`) — preserves history, safer for shared branches |
|
|
226
|
+
| `git rebase origin/main` | `git.update_strategy: rebase` picks it — rewrites history, linear log |
|
|
227
|
+
|
|
228
|
+
The setting picks the operation; it never authorises it. A rebase of a branch
|
|
229
|
+
that is already pushed still needs the user's answer this turn, per
|
|
230
|
+
[`git-history-discipline`](../../rules/git-history-discipline.md) § When rewrite is
|
|
231
|
+
allowed — an explicit ask, an unrevoked standing instruction, or a `pull
|
|
232
|
+
--rebase` the user started. Under `rebase` conflicts surface per commit, and the protocol — permission,
|
|
233
|
+
stops, recovery ref, the equivalence report afterwards — is
|
|
234
|
+
[`git-workflow` › branch-update](../git-workflow/references/branch-update.md).
|
|
229
235
|
|
|
230
236
|
## Output format
|
|
231
237
|
|
|
@@ -104,7 +104,7 @@ for `workspace:`-linked packages.
|
|
|
104
104
|
|
|
105
105
|
State plainly that the listing came from manifests rather than the runner — an
|
|
106
106
|
inferred target list can miss runner-inferred targets. This is the posture
|
|
107
|
-
|
|
107
|
+
`react-shadcn-ui` already takes for the shadcn
|
|
108
108
|
CLI; the stop condition is `missing-tool-handling` (never install it silently,
|
|
109
109
|
never fake the output).
|
|
110
110
|
|
|
@@ -81,7 +81,7 @@ not name an implementation**. Use Given / When / Then or a numbered
|
|
|
81
81
|
list. Reject ACs that hide assumptions ("works correctly", "is fast
|
|
82
82
|
enough") — replace with measurable thresholds or strike them.
|
|
83
83
|
|
|
84
|
-
**Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)
|
|
84
|
+
**Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)): when the raw input includes a screenshot / mockup alongside the story text, check the sources against each other and surface any conflict as a `gap` / open question — never resolve it silently. Watch for: story text contradicting an attached screenshot; the AC contradicting the description; a clearly-needed behavior the input never states (weekend/holiday shift, empty/error state). Batch them into one clarifying question. Taxonomy: [`cross-source-consistency-mechanics`](../../guidelines/agent-infra/cross-source-consistency-mechanics.md).
|
|
85
85
|
|
|
86
86
|
### 5. Surface non-functional gaps
|
|
87
87
|
|
|
@@ -27,6 +27,8 @@ Use this skill whenever running or configuring code quality tools:
|
|
|
27
27
|
|
|
28
28
|
- **PHP**: PHPStan (static analysis), Rector (automated refactoring), ECS (coding standards)
|
|
29
29
|
- **JS/TS**: Biome (linting + formatting), TypeScript compiler (type checking), Jest/Vitest (tests)
|
|
30
|
+
- **Python**: Ruff (linting + formatting), mypy (type checking), pytest (tests)
|
|
31
|
+
- **Go**: `gofmt`, `go vet`, optionally golangci-lint, `go test`
|
|
30
32
|
|
|
31
33
|
## Modes
|
|
32
34
|
|
|
@@ -39,8 +41,16 @@ stack calls for.
|
|
|
39
41
|
|---|---|---|
|
|
40
42
|
| PHP (`.php` changed) | [`references/php-tools.md`](references/php-tools.md) | Tool detection, PHPStan / ECS / Rector commands and flags, combined pipeline, config files, baseline policy, PHPStan error handling, testing framework, git-aware execution |
|
|
41
43
|
| JS/TS (`.js` / `.ts` / `.tsx` changed) | [`references/js-ts-tools.md`](references/js-ts-tools.md) | Detection, Biome, TypeScript type checking, Jest / Vitest, the JS/TS workflow sequence |
|
|
44
|
+
| Python (`.py` changed, or `pyproject.toml`) | [`references/python-tools.md`](references/python-tools.md) | Detection from `pyproject.toml`, Ruff, mypy, pytest, the workflow sequence, virtualenv and `setup.cfg` gotchas |
|
|
45
|
+
| Go (`.go` changed, or `go.mod`) | [`references/go-tools.md`](references/go-tools.md) | `gofmt`, `go vet`, golangci-lint where present, `go test`, the workflow sequence, vendor and build-tag gotchas |
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
More than one stack changed → load each mode body and run each pipeline.
|
|
48
|
+
|
|
49
|
+
**The resolver decides which row applies, not the file extension alone.**
|
|
50
|
+
`resolve_toolchain` returns the ecosystems it found and the quality commands
|
|
51
|
+
per ecosystem; the rows above name what those commands are. A TypeScript
|
|
52
|
+
repository resolves the ecosystem `js`, never `typescript` — the pack name and
|
|
53
|
+
the ecosystem label are different vocabularies.
|
|
44
54
|
|
|
45
55
|
## Execution policy — on demand only, never proactive
|
|
46
56
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# quality-tools — Go quality tools
|
|
2
|
+
|
|
3
|
+
> Mode body of the [`quality-tools`](../SKILL.md) skill. Load this file when
|
|
4
|
+
> the mode table in SKILL.md routes here. The cross-mode material — execution
|
|
5
|
+
> policy, environment, output discipline — stays in SKILL.md and is NOT
|
|
6
|
+
> repeated here.
|
|
7
|
+
|
|
8
|
+
# Go Quality Tools
|
|
9
|
+
|
|
10
|
+
## Detection
|
|
11
|
+
|
|
12
|
+
`resolve_toolchain` (`work_engine/stack/runner.ts`) keys the Go ecosystem on
|
|
13
|
+
`go.mod` and resolves exactly one quality command, `go vet ./...`, plus the
|
|
14
|
+
test command `go test ./...`. It does **not** detect `golangci-lint`, so a
|
|
15
|
+
repository that uses one will show a `quality` list shorter than what its CI
|
|
16
|
+
runs. Read the repository's CI workflow before concluding the resolver's list
|
|
17
|
+
is the whole gate.
|
|
18
|
+
|
|
19
|
+
| Signal | Tool | What it does |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `go.mod` present | **`go vet`** | The toolchain's own correctness checks — printf verbs, struct tags, unreachable code, lost cancel |
|
|
22
|
+
| `go.mod` present | **`gofmt`** | Canonical formatting; not resolved as a command because it is not optional in Go |
|
|
23
|
+
| `.golangci.yml` / `.golangci.yaml` | **golangci-lint** | Meta-linter; the resolver does not detect it |
|
|
24
|
+
|
|
25
|
+
## The toolchain's own commands
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
gofmt -l . # list files whose formatting differs — empty is the pass
|
|
29
|
+
gofmt -w . # rewrite them
|
|
30
|
+
go vet ./... # the resolver's quality command
|
|
31
|
+
go build ./... # compiles; the cheapest proof the tree is coherent
|
|
32
|
+
go test ./... # the resolver's test command
|
|
33
|
+
go test -run '<regexp>' ./pkg/... # the targeted probe
|
|
34
|
+
go test -race ./... # the race detector — slow, and the only thing that finds a data race
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**`gofmt -l .` with empty output is the pass.** It exits 0 whether or not it
|
|
38
|
+
listed files, so a pipeline that checks only the exit code never fails on
|
|
39
|
+
formatting. Check the output, not the status.
|
|
40
|
+
|
|
41
|
+
## golangci-lint, where a project has it
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
golangci-lint run # the whole configured set
|
|
45
|
+
golangci-lint run ./pkg/... # scoped to a package
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
It wraps `go vet` among others, so a project with `.golangci.yml` does not
|
|
49
|
+
need `go vet` run separately — and running both doubles the report rather than
|
|
50
|
+
widening it.
|
|
51
|
+
|
|
52
|
+
## Workflow sequence
|
|
53
|
+
|
|
54
|
+
1. `gofmt -l .` — read the output, not the exit code.
|
|
55
|
+
2. `go build ./...` — a compile error makes every later step meaningless.
|
|
56
|
+
3. `go vet ./...`, or `golangci-lint run` where the project has it.
|
|
57
|
+
4. `go test -run '<the thing you changed>' ./pkg/...` — targeted.
|
|
58
|
+
5. `go test ./...`, once, at the end; `-race` where concurrency changed.
|
|
59
|
+
|
|
60
|
+
## Gotchas
|
|
61
|
+
|
|
62
|
+
- **`./...` from the wrong directory.** The pattern is relative to the working
|
|
63
|
+
directory, not to the module root. Run it from the directory holding
|
|
64
|
+
`go.mod`, or name the module path.
|
|
65
|
+
- **A vendored tree.** With `vendor/` present the toolchain defaults to
|
|
66
|
+
`-mod=vendor`; a dependency added to `go.mod` but not vendored fails to build
|
|
67
|
+
with an error that names the package, not the mode. `go mod vendor` after any
|
|
68
|
+
dependency change.
|
|
69
|
+
- **Build tags hide packages.** `go vet ./...` and `go test ./...` skip files
|
|
70
|
+
excluded by build constraints, so a green run says nothing about a
|
|
71
|
+
`//go:build integration` file. Name the tag (`-tags integration`) to reach it.
|
|
72
|
+
- **No `go` pack exists in this suite yet.** Go artifacts route through
|
|
73
|
+
`engineering-base` and this reference; `src/packs/go/pack.yaml` <!-- ref-ignore --> is created by
|
|
74
|
+
`road-to-stacks-beyond-php` step 2.3, which is blocked on the programme's
|
|
75
|
+
skill-growth question. Until then this file is the whole of the Go quality
|
|
76
|
+
surface, by design rather than by omission.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# quality-tools — Python quality tools
|
|
2
|
+
|
|
3
|
+
> Mode body of the [`quality-tools`](../SKILL.md) skill. Load this file when
|
|
4
|
+
> the mode table in SKILL.md routes here. The cross-mode material — execution
|
|
5
|
+
> policy, environment, output discipline — stays in SKILL.md and is NOT
|
|
6
|
+
> repeated here.
|
|
7
|
+
|
|
8
|
+
# Python Quality Tools
|
|
9
|
+
|
|
10
|
+
## Detection
|
|
11
|
+
|
|
12
|
+
The resolver is the authority, not this table. `resolve_toolchain`
|
|
13
|
+
(`work_engine/stack/runner.ts`) reads `pyproject.toml` and returns the quality
|
|
14
|
+
commands it found; run those. The table says what each one is, so a reader can
|
|
15
|
+
tell a missing tool from an unknown one.
|
|
16
|
+
|
|
17
|
+
| Indicator in `pyproject.toml` | Tool | What it does |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `[tool.ruff]` | **Ruff** | Linting and formatting in one binary; replaces flake8, isort, pyupgrade and (with `ruff format`) black |
|
|
20
|
+
| `[tool.mypy]` | **mypy** | Static type checking |
|
|
21
|
+
| `[tool.pytest.ini_options]` | **pytest** | Test runner — the resolver binds it as the test command, not as a quality command |
|
|
22
|
+
|
|
23
|
+
A repository with none of the three resolves an empty `quality` list. That
|
|
24
|
+
means **none was resolved**, never that none is needed — the same distinction
|
|
25
|
+
SKILL.md draws for ruby, jvm and dotnet.
|
|
26
|
+
|
|
27
|
+
## Ruff — linting and formatting
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
ruff check . # lint, read-only
|
|
31
|
+
ruff check --fix . # lint and apply the safe fixes
|
|
32
|
+
ruff format . # format
|
|
33
|
+
ruff format --check . # format check, read-only — what CI runs
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Config lives in `[tool.ruff]` in `pyproject.toml` (or `ruff.toml`). The two
|
|
37
|
+
settings that change what the other commands mean:
|
|
38
|
+
|
|
39
|
+
- `line-length` — the formatter's wrap column; `ruff check` reports `E501`
|
|
40
|
+
against the same number.
|
|
41
|
+
- `[tool.ruff.lint] select` / `ignore` — the rule set. An empty `select` is
|
|
42
|
+
Ruff's default set, not "no rules".
|
|
43
|
+
|
|
44
|
+
**`--fix` is not a formatter.** `ruff check --fix` rewrites code to satisfy
|
|
45
|
+
lint rules; `ruff format` rewrites layout. A pipeline that runs only the first
|
|
46
|
+
leaves formatting drift that CI's `ruff format --check` then fails on.
|
|
47
|
+
|
|
48
|
+
## mypy — type checking
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mypy . # check the package
|
|
52
|
+
mypy --strict . # every optional strictness flag on
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Config lives in `[tool.mypy]`. `strict = true` there is the same as `--strict`
|
|
56
|
+
on the command line, so passing the flag to a project that already sets it
|
|
57
|
+
changes nothing — and passing it to one that does not is a different check
|
|
58
|
+
from the one CI runs. Read the config before adding flags.
|
|
59
|
+
|
|
60
|
+
An error mypy reports on a file the current change did not touch is
|
|
61
|
+
pre-existing debt. Treat it the way SKILL.md's baseline policy treats a
|
|
62
|
+
PHPStan baseline entry: it is not this change's to clear silently.
|
|
63
|
+
|
|
64
|
+
## pytest — the test runner
|
|
65
|
+
|
|
66
|
+
Not a quality tool, listed here because the resolver finds it in the same
|
|
67
|
+
file and a reader looking for "the Python commands" expects it.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pytest # the resolver's bound command
|
|
71
|
+
pytest -q # quiet, what `addopts = "-q"` already sets
|
|
72
|
+
pytest -k '<expr>' # filter by name — the targeted probe
|
|
73
|
+
pytest path/to/test.py # filter by file
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Run the filtered form when verifying one fix. The whole suite is the final
|
|
77
|
+
gate, never the per-iteration probe.
|
|
78
|
+
|
|
79
|
+
## Workflow sequence
|
|
80
|
+
|
|
81
|
+
1. `ruff format --check .` — fails fast and costs nothing.
|
|
82
|
+
2. `ruff check .` — lint.
|
|
83
|
+
3. `mypy .` — types.
|
|
84
|
+
4. `pytest -k '<the thing you changed>'` — targeted.
|
|
85
|
+
5. The full suite, once, at the end.
|
|
86
|
+
|
|
87
|
+
Each step is cheaper and narrower than the next, so running them out of order
|
|
88
|
+
spends the expensive verdict on a failure the cheap one would have named.
|
|
89
|
+
|
|
90
|
+
## Gotchas
|
|
91
|
+
|
|
92
|
+
- **A virtualenv the agent did not activate.** `ruff` and `mypy` installed in
|
|
93
|
+
a project venv are not on `PATH` outside it. `python -m ruff` / `python -m
|
|
94
|
+
mypy` run the installed copy; a bare `ruff` may run a different version or
|
|
95
|
+
none.
|
|
96
|
+
- **`requirements.txt` only.** The resolver still binds pytest (at MEDIUM
|
|
97
|
+
confidence) but finds no quality commands, because it reads them from
|
|
98
|
+
`pyproject.toml`. An empty `quality` list on such a repository is correct
|
|
99
|
+
output, not a detection bug.
|
|
100
|
+
- **`setup.cfg` and `tox.ini` carry config too.** Older projects keep flake8
|
|
101
|
+
and mypy settings there. The resolver does not read them; if a project has
|
|
102
|
+
no `[tool.*]` block and a populated `setup.cfg`, the tools are configured and
|
|
103
|
+
the resolver's empty list is a gap in the resolver, worth reporting rather
|
|
104
|
+
than working around.
|
|
@@ -86,8 +86,8 @@ selected language.
|
|
|
86
86
|
Reuses the `jira-ticket` command's loader. Accepts:
|
|
87
87
|
|
|
88
88
|
1. **Ticket key** — `/refine-ticket PROJ-123`
|
|
89
|
-
2. **Branch detection** — `/refine-ticket` with no arg;
|
|
90
|
-
`
|
|
89
|
+
2. **Branch detection** — `/refine-ticket` with no arg; `agent-config git:convention ticket`
|
|
90
|
+
on the current branch ([`commit-subject`](../git-workflow/references/commit-subject.md) § Reading the ticket)
|
|
91
91
|
3. **Pasted text** — `/refine-ticket` followed by a markdown block
|
|
92
92
|
4. **URL** — `/refine-ticket https://acme.atlassian.net/browse/PROJ-123`
|
|
93
93
|
|
|
@@ -144,7 +144,7 @@ Check the loaded ticket for clarity signals before orchestrating:
|
|
|
144
144
|
- Is the scope one feature, or multiple tangled together?
|
|
145
145
|
- Any sentence that references an existing module name, feature flag, or domain concept?
|
|
146
146
|
|
|
147
|
-
**Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)
|
|
147
|
+
**Cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md)): the ticket is rarely a single source. Compare every source against the others and surface any conflict as an *Open question* — never resolve it silently:
|
|
148
148
|
- **text ↔ attachment** — does the ticket text agree with every attached mockup / screenshot / diagram? (Canonical miss: text says "birthdays **today**", the mockup shows a birthday from two days ago.) If an attachment cannot be read, say so — do not assume it agrees.
|
|
149
149
|
- **silent-but-needed** — is the spec silent on a clearly-needed behavior (weekend/holiday shift, empty state, error path, timezone, permissions)? Surface it and ask before it becomes an implementation assumption — an inferred behavior is a scope expansion, not a given.
|
|
150
150
|
- **intra-ticket** — do the AC, description, and comments contradict each other?
|
|
@@ -347,7 +347,7 @@ DoR check — not automatically on every refinement.
|
|
|
347
347
|
- The model tends to invent risks that sound plausible but aren't anchored in the ticket text. Every risk in Top-5 must cite a phrase, AC bullet, or sub-skill finding — no hypotheticals.
|
|
348
348
|
- Persona voices degrade into generic platitudes when the ticket is already tight. If a persona has nothing real to flag, write one sentence stating that — do not pad.
|
|
349
349
|
- Sub-skills (`validate-feature-fit`, `threat-modeling`) cost tokens; orchestrate only when the trigger matrix actually matches, not defensively on every run.
|
|
350
|
-
- Branch-detection
|
|
350
|
+
- Branch-detection takes the first `ticket` that `git:convention ticket` prints; chained keys (e.g. `feat/PROJ-1-and-PROJ-2`) pick the first and note the rest.
|
|
351
351
|
|
|
352
352
|
## Do NOT
|
|
353
353
|
|
|
@@ -31,7 +31,7 @@ Do NOT use when:
|
|
|
31
31
|
- The diff is low-risk and no ownership map exists — fall back to the
|
|
32
32
|
common role vocabulary below.
|
|
33
33
|
- A full PR description is requested — route to
|
|
34
|
-
|
|
34
|
+
`/pr:create:description-only` and let
|
|
35
35
|
it call this skill for the routing block.
|
|
36
36
|
- A threat model is wanted — route to
|
|
37
37
|
[`threat-modeling`](../threat-modeling/SKILL.md).
|
|
@@ -210,6 +210,6 @@ Data source: <"ownership-map.yml + historical-bug-patterns.yml"
|
|
|
210
210
|
|
|
211
211
|
- [`reviewer-awareness`](../../rules/reviewer-awareness.md) — the rule that routes here: anchor reviewer choice in paths and risk, never seniority
|
|
212
212
|
- [`review-routing-data-format`](../../guidelines/agent-infra/review-routing-data-format.md)
|
|
213
|
-
-
|
|
213
|
+
- `/pr:create:description-only`
|
|
214
214
|
- [`judge-test-coverage`](../judge-test-coverage/SKILL.md) — consumes
|
|
215
215
|
the `required_test` entries from matched patterns.
|
|
@@ -100,8 +100,8 @@ roadmaps.
|
|
|
100
100
|
When the roadmap originates from a ticket/spec that carries a second
|
|
101
101
|
source — an attached mockup/screenshot, a code reality, or an internal
|
|
102
102
|
contradiction — run the **cross-source discrepancy scan** (per
|
|
103
|
-
[`cross-source-consistency`](../../rules/cross-source-consistency.md)
|
|
104
|
-
|
|
103
|
+
[`cross-source-consistency`](../../rules/cross-source-consistency.md))
|
|
104
|
+
before writing phases. A phase plan
|
|
105
105
|
built over a text↔image contradiction or a silent-but-needed behavior
|
|
106
106
|
(weekend/holiday shift, empty/error state) bakes the wrong assumption into
|
|
107
107
|
every downstream step. Surface each discrepancy as one batched open
|
|
@@ -213,7 +213,7 @@ is the wrong question asked well.
|
|
|
213
213
|
**The escalation threshold applies here too.** A third recurrence of the same
|
|
214
214
|
violation class converts an observation into a deterministic gate — and a review
|
|
215
215
|
finding never silently becomes a hard gate. Both halves, specified in
|
|
216
|
-
|
|
216
|
+
`decision-review` § Removal is a disposition.
|
|
217
217
|
|
|
218
218
|
## Output format
|
|
219
219
|
|
|
@@ -242,6 +242,8 @@ finding never silently becomes a hard gate. Both halves, specified in
|
|
|
242
242
|
- **Reflexion** — [arxiv.org/abs/2303.11366](https://arxiv.org/abs/2303.11366)
|
|
243
243
|
Language agents that reinforce from verbal self-reflection on past
|
|
244
244
|
trials. This pipeline adapts Reflexion by gating promotion with a
|
|
245
|
-
|
|
246
|
-
|
|
245
|
+
review step — learnings only harden into rules/skills after explicit
|
|
246
|
+
approval, never auto-commit: for a proposal scoped to the package, on
|
|
247
|
+
the AI council's ratification record (user as last rung, ADR-281); for
|
|
248
|
+
a change a user asked for, on that user's approval.
|
|
247
249
|
|
|
@@ -117,7 +117,7 @@ card may exist in the per-user file-first store
|
|
|
117
117
|
`evidence_report.ts add --bucket assumed --origin global …` and **re-confirm it
|
|
118
118
|
against the live source this session** before use (version skew / schema drift
|
|
119
119
|
across projects). Never "Verified" on the global card alone.
|
|
120
|
-
- A `public`/`vendor` card seen in ≥
|
|
120
|
+
- A `public`/`vendor` card seen in ≥ 2 distinct repos
|
|
121
121
|
triggers a one-tap promotion **suggestion** (never silent). `proprietary` cards
|
|
122
122
|
are manual-only and never auto-shared. Record sightings via
|
|
123
123
|
`_lib/knowledge_global_promote.ts record-seen`.
|
|
@@ -16,7 +16,7 @@ agent reads to learn what the component accepts, and the harness that catches a
|
|
|
16
16
|
focus defect while the component is still in isolation. Stack-agnostic — the tool is
|
|
17
17
|
Storybook, the discipline is not.
|
|
18
18
|
|
|
19
|
-
Lifted out of
|
|
19
|
+
Lifted out of `react-shadcn-ui` § Component workshop, which
|
|
20
20
|
keeps a pointer here rather than a copy.
|
|
21
21
|
|
|
22
22
|
## The Iron Law
|
|
@@ -135,7 +135,7 @@ Run the project's story test command (the Vitest addon's `storybook test`, or wh
|
|
|
135
135
|
`package.json` declares — read it, do not assume a name), then read the a11y result.
|
|
136
136
|
|
|
137
137
|
Write findings into `state.ui_review.a11y` in the shape
|
|
138
|
-
|
|
138
|
+
`react-shadcn-ui` § Review pass already defines:
|
|
139
139
|
|
|
140
140
|
```
|
|
141
141
|
{violations: [{rule, selector, severity}, …], severity_floor?, accepted_violations?}
|
|
@@ -235,7 +235,7 @@ copied verbatim:
|
|
|
235
235
|
|
|
236
236
|
## See also
|
|
237
237
|
|
|
238
|
-
-
|
|
238
|
+
- `react-shadcn-ui` — the React stack lane, and the `(rule, selector, severity)` shape § Validate writes into.
|
|
239
239
|
- [`existing-ui-audit`](../existing-ui-audit/SKILL.md) — the inventory the MCP path accelerates.
|
|
240
240
|
- [`js-library-packaging`](../js-library-packaging/SKILL.md) — the package around the workshop.
|
|
241
241
|
- [`accessibility-auditor`](../accessibility-auditor/SKILL.md) — the WCAG depth behind the a11y half.
|