@event4u/agent-config 14.11.0 → 14.13.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 +368 -516
- package/CONTRIBUTING.md +38 -0
- package/CREDITS.md +135 -0
- package/NOTICE +13 -0
- package/README.md +8 -6
- package/dist/agent-src/commands/analyze/inbox.md +109 -2
- package/dist/agent-src/commands/feature/dev.md +7 -2
- package/dist/agent-src/commands/ghostwriter/write.md +5 -1
- package/dist/agent-src/commands/implement-ticket.md +1 -1
- package/dist/agent-src/commands/mission/upgrade.md +1 -1
- package/dist/agent-src/commands/orchestrate.md +2 -2
- package/dist/agent-src/commands/post-as/me.md +5 -1
- package/dist/agent-src/commands/pr/merge.md +19 -6
- package/dist/agent-src/commands/roadmap/process-full.md +19 -5
- package/dist/agent-src/commands/tdd/red.md +12 -2
- package/dist/agent-src/commands/work.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +40 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -2
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +21 -0
- package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -0
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +40 -0
- package/dist/agent-src/contexts/execution/subagent-steering.md +13 -1
- package/dist/agent-src/contexts/execution/terminal-states.md +96 -0
- package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -0
- package/dist/agent-src/rules/code-provenance.md +4 -0
- package/dist/agent-src/rules/design-fidelity.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +4 -0
- package/dist/agent-src/rules/domain-safety-retention.md +4 -0
- package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +14 -12
- package/dist/agent-src/rules/improve-before-implement.md +6 -8
- package/dist/agent-src/rules/laravel-routing.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +4 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +12 -34
- package/dist/agent-src/rules/symfony-routing.md +1 -1
- package/dist/agent-src/rules/token-efficiency.md +14 -0
- package/dist/agent-src/rules/tool-safety.md +4 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +4 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
- package/dist/agent-src/scripts/guarded_baseline.ts +328 -0
- package/dist/agent-src/scripts/roadmap_set_step.ts +253 -0
- package/dist/agent-src/scripts/stub_queue.ts +82 -0
- package/dist/agent-src/scripts/stubs_due.ts +400 -0
- package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +8 -4
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +17 -4
- package/dist/agent-src/skills/brand-audit/SKILL.md +33 -0
- package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
- package/dist/agent-src/skills/code-review/SKILL.md +65 -6
- package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
- package/dist/agent-src/skills/database/SKILL.md +8 -0
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +27 -0
- package/dist/agent-src/skills/design-review/SKILL.md +1 -1
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +25 -2
- package/dist/agent-src/skills/feature-planning/SKILL.md +9 -2
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +44 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +1 -1
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +38 -4
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +2 -2
- package/dist/agent-src/skills/laravel/SKILL.md +35 -0
- package/dist/agent-src/skills/laravel-migration/SKILL.md +57 -3
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +26 -0
- package/dist/agent-src/skills/playbook-authoring/SKILL.md +28 -1
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +30 -13
- package/dist/agent-src/skills/skill-writing/references/procedure.md +29 -7
- package/dist/agent-src/skills/sql-writing/SKILL.md +7 -1
- package/dist/agent-src/skills/standards-from-config/SKILL.md +27 -4
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +9 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +11 -4
- package/dist/agent-src/skills/symfony-workflow/SKILL.md +35 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +85 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +33 -9
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +37 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +53 -2
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +38 -1
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +9 -4
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +97 -3
- package/dist/agent-src/templates/scripts/check_memory.ts +258 -17
- package/dist/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
- package/dist/agent-src/templates/scripts/memory_lookup.ts +86 -0
- package/dist/agent-src/templates/scripts/memory_signal.ts +44 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
- package/dist/cli/commands/uiAudit.js +124 -5
- package/dist/cli/registry.js +2 -0
- package/dist/cli-delegate/{chunk-HYWSRNUX.js → chunk-2DK2VJWG.js} +3 -3
- package/dist/cli-delegate/{chunk-L43NCYPB.js → chunk-4FS4WRXP.js} +10 -0
- package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
- package/dist/cli-delegate/{chunk-236PNQZK.js → chunk-AKJGUQNO.js} +466 -285
- package/dist/cli-delegate/{chunk-E46KPN6K.js → chunk-BTWUYDGN.js} +424 -363
- package/dist/cli-delegate/{chunk-K4FFODTS.js → chunk-ILMUPLGW.js} +1227 -316
- package/dist/cli-delegate/{chunk-FF7WAFMR.js → chunk-KPBWFOPZ.js} +5 -1
- package/dist/cli-delegate/cmd_adr_effective.js +102 -0
- package/dist/cli-delegate/cmd_conformance.js +42 -10
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +3 -2
- package/dist/cli-delegate/cmd_fleet.js +2 -2
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +3 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +3 -2
- package/dist/cli-delegate/cmd_settings_set.js +2 -2
- package/dist/cli-delegate/cmd_sync.js +3 -2
- package/dist/cli-delegate/cmd_uninstall.js +3 -2
- package/dist/cli-delegate/cmd_validate.js +3 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +62 -62
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/hooks/dispatch.js +2413 -1087
- package/dist/install/claudeRuleRewrite.js +254 -0
- package/dist/install/detect.js +29 -16
- package/dist/install/detect_php_shape.js +159 -0
- package/dist/install/install.mjs +639 -428
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +4818 -2645
- package/dist/server/schemas/settings.js +6 -0
- package/dist/ui/assets/index-D0jaCRPM.js +29 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +1 -1
- package/docs/THIRD-PARTY-NOTICES.md +25 -0
- package/docs/contracts/provider-lifecycle.md +1 -1
- package/docs/contracts/settings-classes.md +30 -4
- package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -0
- package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +58 -3
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +2 -2
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
- package/docs/guidelines/agent-infra/break-glass-usage.md +7 -7
- package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
- package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
- package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
- package/docs/guidelines/agent-infra/direct-answers-demos.md +2 -2
- package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +1 -1
- package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +3 -3
- package/docs/guidelines/agent-infra/existence-question-verdicts.md +80 -0
- package/docs/guidelines/agent-infra/first-principles.md +2 -2
- package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +2 -2
- package/docs/guidelines/agent-infra/guarded-baseline.md +39 -0
- package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +1 -1
- package/docs/guidelines/agent-infra/layered-settings.md +10 -10
- package/docs/guidelines/agent-infra/memory-access.md +1 -1
- package/docs/guidelines/agent-infra/mental-models.md +3 -3
- package/docs/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
- package/docs/guidelines/agent-infra/review-routing-data-format.md +7 -7
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +13 -7
- package/docs/guidelines/agent-infra/role-contracts.md +2 -2
- package/docs/guidelines/agent-infra/role-mode-router.md +3 -3
- package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
- package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +6 -6
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +2 -2
- package/docs/guidelines/agent-infra/six-hats.md +3 -3
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +6 -6
- package/docs/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
- package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
- package/docs/guidelines/augment-portability-patterns.md +6 -4
- package/docs/guidelines/code-clarity.md +21 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +3 -2
- package/docs/guidelines/cross-role-handoff.md +2 -2
- package/docs/guidelines/design-fidelity-mechanics.md +1 -1
- package/docs/guidelines/docs/readme-size-and-splitting.md +3 -3
- package/docs/guidelines/php/database.md +90 -7
- package/docs/guidelines/prompt-templates.md +7 -7
- package/docs/guidelines/redundancy-taxonomy.md +180 -0
- package/llms.txt +2 -2
- package/package.json +10 -3
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
- package/src/agent-src/scripts/guarded_baseline.ts +328 -0
- package/src/agent-src/scripts/roadmap_set_step.ts +253 -0
- package/src/agent-src/scripts/stub_queue.ts +82 -0
- package/src/agent-src/scripts/stubs_due.ts +400 -0
- package/src/agent-src/scripts/ticket_bundles.ts +84 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +8 -4
- package/src/agent-src/templates/scripts/check_memory.ts +258 -17
- package/src/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
- package/src/agent-src/templates/scripts/memory_lookup.ts +86 -0
- package/src/agent-src/templates/scripts/memory_signal.ts +44 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
- package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
- package/src/config/agent-settings.template.yml +48 -3
- package/src/config/assurance-capability-registry.json +21 -9
- package/src/config/budgets.yml +19 -0
- package/src/config/canonical-terms.yml +119 -0
- package/src/config/capability-native-outcome-bars.json +81 -0
- package/src/config/ci-local-parity.yml +95 -0
- package/src/config/discovery/prompt-patterns.yml +56 -0
- package/src/config/drafting-channels.yml +43 -0
- package/src/config/estate-count-budget.json +38 -31
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +731 -30
- package/src/config/gate-reachability-exemptions.json +21 -0
- package/src/config/gate-violation-baselines.json +38 -20
- package/src/config/harness-evolution-budget.json +25 -0
- package/src/config/lapsed-beta-baseline.json +96 -0
- package/src/config/memory-twin-verdicts.yml +129 -0
- package/src/config/metric-registry.yml +124 -0
- package/src/config/pack-size-budget.json +35 -7
- package/src/config/preamble-payload-budget.json +97 -71
- package/src/config/profiles/balanced.ini +27 -0
- package/src/config/profiles/full.ini +27 -0
- package/src/config/profiles/minimal.ini +27 -0
- package/src/config/publish-surface.json +9 -2
- package/src/config/routing-coverage-seed.json +43 -0
- package/src/config/rule-stub-ceilings.json +126 -112
- package/src/config/suggestion-capture.json +28 -0
- package/src/config/surface-matrix.yml +21 -2
- package/src/config/turnaround-budget.json +66 -0
- package/src/config/web-launch-readiness.json +188 -0
- package/src/install/claudeRuleRewrite.ts +288 -0
- package/src/install/detect.ts +60 -17
- package/src/install/detect_php_shape.ts +191 -0
- package/src/scripts/_cli/cmd_doctor.ts +27 -112
- package/src/scripts/_dispatch.bash +27 -0
- package/src/scripts/_lib/activation_ladder.ts +211 -0
- package/src/scripts/_lib/activation_states.ts +88 -0
- package/src/scripts/_lib/adherence_detectors.ts +143 -0
- package/src/scripts/_lib/arith_claims.ts +181 -0
- package/src/scripts/_lib/arm_ranking.ts +62 -0
- package/src/scripts/_lib/asset_delivery_ledger.ts +303 -0
- package/src/scripts/_lib/audit_field_provenance.ts +54 -0
- package/src/scripts/_lib/auto_dispatch.ts +32 -3
- package/src/scripts/_lib/bench_ab_size_claim.ts +98 -4
- package/src/scripts/_lib/benchmark_cache_fields.ts +158 -0
- package/src/scripts/_lib/candidate_proposer.ts +402 -0
- package/src/scripts/_lib/candidate_record.ts +601 -0
- package/src/scripts/_lib/capture_rate.ts +319 -0
- package/src/scripts/_lib/collector_denominator.ts +771 -0
- package/src/scripts/_lib/collector_record.ts +340 -0
- package/src/scripts/_lib/collector_store.ts +664 -0
- package/src/scripts/_lib/collector_supervision.ts +827 -0
- package/src/scripts/_lib/concern_estate.ts +77 -0
- package/src/scripts/_lib/config_chain.ts +477 -0
- package/src/scripts/_lib/config_cost.ts +209 -0
- package/src/scripts/_lib/council_settings_block.ts +6 -0
- package/src/scripts/_lib/curator_ops.ts +172 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +266 -0
- package/src/scripts/_lib/delivery_criticality.ts +126 -0
- package/src/scripts/_lib/doctor_runtime_checks.ts +70 -0
- package/src/scripts/_lib/empty_cycles.ts +88 -0
- package/src/scripts/_lib/eval_publication.ts +354 -0
- package/src/scripts/_lib/evaluation_vector.ts +283 -0
- package/src/scripts/_lib/evaluator_promotion.ts +225 -0
- package/src/scripts/_lib/evidence_basis.ts +118 -0
- package/src/scripts/_lib/exec_evidence.ts +8 -0
- package/src/scripts/_lib/experience_card.ts +272 -0
- package/src/scripts/_lib/experience_report.ts +151 -0
- package/src/scripts/_lib/experiment_freeze.ts +112 -0
- package/src/scripts/_lib/gate_baseline.ts +150 -1
- package/src/scripts/_lib/generated_by.ts +66 -0
- package/src/scripts/_lib/harness_evolution_guards.ts +229 -0
- package/src/scripts/_lib/hook_effect_probe.ts +141 -0
- package/src/scripts/_lib/host_denominator.ts +687 -0
- package/src/scripts/_lib/host_projection_reach.ts +157 -0
- package/src/scripts/_lib/ignored_blocker.ts +148 -0
- package/src/scripts/_lib/install_reach_checks.ts +495 -0
- package/src/scripts/_lib/json_duplicate_keys.ts +150 -0
- package/src/scripts/_lib/judge_hygiene.ts +228 -0
- package/src/scripts/_lib/legacy_boundary_map.ts +228 -0
- package/src/scripts/_lib/loop_guards.ts +299 -0
- package/src/scripts/_lib/loss_class.ts +129 -0
- package/src/scripts/_lib/machine_wake.ts +51 -0
- package/src/scripts/_lib/md_prose_lines.ts +177 -0
- package/src/scripts/_lib/minimality_tiebreak.ts +168 -0
- package/src/scripts/_lib/one_resolver_invariant.ts +449 -0
- package/src/scripts/_lib/orchestration_record.ts +253 -5
- package/src/scripts/_lib/outcome_envelope.ts +227 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +125 -0
- package/src/scripts/_lib/paired_stats.ts +245 -0
- package/src/scripts/_lib/paired_verdict.ts +226 -0
- package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
- package/src/scripts/_lib/privacy_class.ts +47 -0
- package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
- package/src/scripts/_lib/repeated_failure.ts +105 -0
- package/src/scripts/_lib/repo_root.ts +111 -0
- package/src/scripts/_lib/review_skipped_record.ts +37 -0
- package/src/scripts/_lib/role_split.ts +338 -0
- package/src/scripts/_lib/runtime_journal.ts +1499 -0
- package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
- package/src/scripts/_lib/skill_catalogue.ts +11 -1
- package/src/scripts/_lib/skill_estate.ts +115 -0
- package/src/scripts/_lib/source_digest.ts +200 -0
- package/src/scripts/_lib/source_redact.ts +260 -0
- package/src/scripts/_lib/source_shape.ts +502 -0
- package/src/scripts/_lib/source_snapshot_dedup.ts +199 -0
- package/src/scripts/_lib/strip_comments.d.mts +8 -0
- package/src/scripts/_lib/strip_comments.mjs +65 -0
- package/src/scripts/_lib/test_red_state.ts +154 -0
- package/src/scripts/_lib/trigger_shift.ts +144 -0
- package/src/scripts/_lib/untrusted_content.ts +82 -7
- package/src/scripts/adoption_report.ts +1 -1
- package/src/scripts/adr/evidence_census.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +26 -2
- package/src/scripts/adr_cite_check.ts +164 -1
- package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
- package/src/scripts/ai_council/blind_review.ts +11 -1
- package/src/scripts/ai_council/clients.ts +4 -0
- package/src/scripts/ai_council/config.ts +3 -0
- package/src/scripts/ai_council/consensus.ts +28 -8
- package/src/scripts/ai_council/consensus_round.ts +226 -0
- package/src/scripts/ai_council/disagreement_signal.ts +338 -0
- package/src/scripts/ai_council/inline_findings.ts +340 -0
- package/src/scripts/ai_council/judge_position_bias.ts +197 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -203
- package/src/scripts/ai_council/orchestrator_results.ts +23 -3
- package/src/scripts/ai_council/pricing.ts +106 -0
- package/src/scripts/ai_council/prompts.ts +74 -7
- package/src/scripts/ai_council/provider_leakage_bench.ts +327 -0
- package/src/scripts/ai_council/py_format.ts +14 -3
- package/src/scripts/ai_council/recouncil_guard.ts +293 -0
- package/src/scripts/ai_council/response_record.ts +50 -0
- package/src/scripts/ai_council/topology_bench_manifest.ts +860 -0
- package/src/scripts/ai_council/topology_vocabulary.ts +175 -0
- package/src/scripts/asset_delivery_ledger.ts +157 -0
- package/src/scripts/attest_artifact.ts +193 -0
- package/src/scripts/audit_auto_rules.ts +2 -1
- package/src/scripts/audit_command_surface.ts +1 -1
- package/src/scripts/audit_mcp_tools.ts +2 -2
- package/src/scripts/audit_skill_overlap_allowlist.json +6 -1
- package/src/scripts/audit_user_type_axis.ts +2 -1
- package/src/scripts/bench_ab_clone.ts +215 -10
- package/src/scripts/bench_ab_integrity.ts +119 -5
- package/src/scripts/bench_ab_v2_stats.ts +40 -213
- package/src/scripts/build_archive_index.ts +1 -1
- package/src/scripts/build_linear_digest.ts +1 -1
- package/src/scripts/build_proof.ts +11 -4
- package/src/scripts/build_rule_trigger_matrix.ts +1 -1
- package/src/scripts/build_source_digests.ts +157 -0
- package/src/scripts/cache_realization_report.ts +103 -0
- package/src/scripts/check_adr_frontmatter.ts +126 -0
- package/src/scripts/check_benchmark_report_fields.ts +207 -0
- package/src/scripts/check_beta_review_markers.ts +235 -6
- package/src/scripts/check_bundle_path_leakage.ts +195 -7
- package/src/scripts/check_claims.ts +576 -6
- package/src/scripts/check_command_examples.ts +557 -0
- package/src/scripts/check_composite_arming.ts +35 -0
- package/src/scripts/check_concern_admissions.ts +365 -0
- package/src/scripts/check_enforcement_coverage.ts +28 -0
- package/src/scripts/check_estate_count.ts +263 -3
- package/src/scripts/check_gate_reachability.ts +383 -0
- package/src/scripts/check_host_loadability.ts +104 -0
- package/src/scripts/check_loss_class_declared.ts +308 -0
- package/src/scripts/check_md_language.ts +15 -98
- package/src/scripts/check_memory_proposal.ts +18 -11
- package/src/scripts/check_no_currency_in_cost_surfaces.ts +225 -0
- package/src/scripts/check_no_external_sources.ts +281 -6
- package/src/scripts/check_pack_conformance_fixture.ts +11 -1
- package/src/scripts/check_pack_size.ts +59 -2
- package/src/scripts/check_preamble_payload_budget.ts +144 -6
- package/src/scripts/check_prefix_stable_mutation.ts +372 -0
- package/src/scripts/check_publish_surface.ts +10 -1
- package/src/scripts/check_references.ts +24 -1
- package/src/scripts/check_routing_coverage.ts +352 -0
- package/src/scripts/check_rule_evidence_declaration.ts +316 -0
- package/src/scripts/check_rule_projection_integrity.ts +14 -4
- package/src/scripts/check_score_contract.ts +528 -0
- package/src/scripts/check_skill_admissions.ts +514 -0
- package/src/scripts/check_static_parity.ts +285 -0
- package/src/scripts/check_supervision_claim_atomicity.ts +498 -0
- package/src/scripts/check_suppression_hygiene.ts +15 -0
- package/src/scripts/check_web_launch_readiness.ts +705 -0
- package/src/scripts/ci_settle.ts +39 -2
- package/src/scripts/code_graph/build.ts +60 -3
- package/src/scripts/code_graph/extract.ts +44 -0
- package/src/scripts/code_graph/types.ts +24 -0
- package/src/scripts/collector_daemon.ts +714 -0
- package/src/scripts/config_cost_report.ts +302 -0
- package/src/scripts/consumer_matrix.ts +74 -1
- package/src/scripts/cost/budget.mjs +10 -3
- package/src/scripts/cost/track.mjs +10 -3
- package/src/scripts/council_cli.ts +37 -54
- package/src/scripts/description_route_check.ts +494 -0
- package/src/scripts/dispatch_r2_reviewer.ts +46 -5
- package/src/scripts/evolution_lab.ts +980 -0
- package/src/scripts/external_sources_denylist.json +5 -18
- package/src/scripts/extract_audit_patterns.ts +21 -0
- package/src/scripts/fold_intake.ts +12 -1
- package/src/scripts/gen_discovery_baseline.ts +1 -1
- package/src/scripts/generate_capabilities_index.ts +12 -5
- package/src/scripts/generate_capability_matrix.ts +3 -3
- package/src/scripts/generate_command_flows.ts +2 -2
- package/src/scripts/generate_cookbook.ts +2 -2
- package/src/scripts/generate_index.ts +8 -1
- package/src/scripts/generate_knowledge_index.ts +2 -1
- package/src/scripts/generate_ownership_matrix.ts +2 -1
- package/src/scripts/generate_pack_manifests.ts +10 -2
- package/src/scripts/generate_role_experiences_catalog.ts +2 -2
- package/src/scripts/generate_settings_reference.ts +1 -1
- package/src/scripts/git_authorization_hook.ts +22 -1
- package/src/scripts/grade_target_readiness.ts +48 -5
- package/src/scripts/hook_effect_doctor.ts +261 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +125 -11
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +271 -0
- package/src/scripts/hooks/block_unauthorized_git.ts +18 -0
- package/src/scripts/hooks/concern_registry.ts +6 -0
- package/src/scripts/hooks/dispatch_hook.ts +32 -0
- package/src/scripts/hooks/journal_record_hook.ts +345 -0
- package/src/scripts/hooks/prepush_metadata_sources.sh +110 -0
- package/src/scripts/hooks/run_continuation_hook.ts +44 -9
- package/src/scripts/hooks/shims/install.sh +61 -0
- package/src/scripts/hooks/shims/php +101 -0
- package/src/scripts/hooks/suggestion_capture_hook.ts +378 -0
- package/src/scripts/hot_context_hook.ts +16 -0
- package/src/scripts/install-hooks.sh +20 -5
- package/src/scripts/install.ts +17 -35
- package/src/scripts/inventory_frontmatter.ts +2 -1
- package/src/scripts/lint_adr_sweep_routing.ts +12 -0
- package/src/scripts/lint_budget_ownership.ts +54 -4
- package/src/scripts/lint_canonical_terms.ts +604 -0
- package/src/scripts/lint_composition_review.ts +619 -0
- package/src/scripts/lint_consolidation_lineage.ts +666 -0
- package/src/scripts/lint_eval_specs.ts +593 -0
- package/src/scripts/lint_hook_manifest.ts +19 -0
- package/src/scripts/lint_host_portability.ts +373 -0
- package/src/scripts/lint_judge_prompt_expectation.ts +27 -1
- package/src/scripts/lint_memory_twin_parity.ts +335 -0
- package/src/scripts/lint_metric_consumers.ts +355 -0
- package/src/scripts/lint_skill_descriptions.ts +18 -1
- package/src/scripts/lint_skill_frontmatter_safety.ts +58 -0
- package/src/scripts/lint_skill_link_reach.ts +252 -0
- package/src/scripts/lint_skill_trigger_corpus.ts +752 -0
- package/src/scripts/lint_ticket_buildable.ts +17 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -1
- package/src/scripts/mcp_server/tool_catalog_source.ts +1 -1
- package/src/scripts/measure_docs_dead_links.ts +348 -0
- package/src/scripts/measure_host_capture.ts +461 -0
- package/src/scripts/migration_status.ts +3 -3
- package/src/scripts/model_rule_injection.ts +60 -0
- package/src/scripts/orchestration_record.ts +14 -0
- package/src/scripts/pack_install_smoke.ts +363 -0
- package/src/scripts/pr_conflict_census.ts +187 -0
- package/src/scripts/preamble_byte_census.ts +139 -10
- package/src/scripts/prepack-check.mjs +4 -1
- package/src/scripts/probe_turnaround.ts +384 -0
- package/src/scripts/probe_unblocked_ask.ts +279 -0
- package/src/scripts/render_benchmark_md.ts +1 -1
- package/src/scripts/report_pack_delta.ts +204 -0
- package/src/scripts/rule_activation_census.ts +70 -9
- package/src/scripts/rule_backlinks.ts +1 -1
- package/src/scripts/run_lifecycle_suite.ts +208 -0
- package/src/scripts/run_skill_evals.ts +40 -0
- package/src/scripts/schemas/delivery-manifest.schema.json +43 -0
- package/src/scripts/schemas/drafting-channels.schema.json +43 -0
- package/src/scripts/schemas/evals.schema.json +24 -1
- package/src/scripts/schemas/rule.schema.json +52 -1
- package/src/scripts/schemas/skill.schema.json +17 -2
- package/src/scripts/select_analysis_mode.ts +112 -0
- package/src/scripts/skill_overlap.ts +7 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +8 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +84 -3
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +8 -1
- package/src/scripts/skill_usage_report.ts +2 -1
- package/src/scripts/stubs_due.ts +211 -0
- package/src/scripts/sweep_source_surfaces.ts +678 -0
- package/src/scripts/sync_pr_branch.ts +40 -1
- package/src/scripts/trigger_eval_grandfather.json +202 -222
- package/src/scripts/utilization_report.ts +22 -2
- package/src/server/schemas/settings.ts +10 -0
- package/src/templates/marketing-copy.yml +1 -1
- package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +0 -15
- package/dist/agent-src/skills/agent-security-review/evals/triggers.json +0 -52
- package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +0 -52
- package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +0 -17
- package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +0 -13
- package/dist/agent-src/skills/brand/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-audit/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-identity/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-strategy/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +0 -17
- package/dist/agent-src/skills/bug-analyzer/evals/evals.json +0 -13
- package/dist/agent-src/skills/canvas-design/evals/triggers.json +0 -17
- package/dist/agent-src/skills/character-consistency/evals/evals.json +0 -16
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +0 -52
- package/dist/agent-src/skills/code-review/evals/evals.json +0 -100
- package/dist/agent-src/skills/command-routing/evals/evals.json +0 -14
- package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +0 -17
- package/dist/agent-src/skills/contract-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +0 -15
- package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +0 -17
- package/dist/agent-src/skills/dashboard-design/evals/evals.json +0 -16
- package/dist/agent-src/skills/dcf-modeling/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/dcf-modeling/evals/evals.json +0 -20
- package/dist/agent-src/skills/decision-record/evals/evals.json +0 -20
- package/dist/agent-src/skills/decision-record/evals/triggers.json +0 -87
- package/dist/agent-src/skills/design-intelligence/evals/evals.json +0 -14
- package/dist/agent-src/skills/design-intelligence/evals/triggers.json +0 -17
- package/dist/agent-src/skills/design-system-capture/evals/evals.json +0 -15
- package/dist/agent-src/skills/design-tokens/evals/triggers.json +0 -17
- package/dist/agent-src/skills/design-variations/evals/triggers.json +0 -17
- package/dist/agent-src/skills/developer-like-execution/evals/evals.json +0 -16
- package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +0 -16
- package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +0 -17
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +0 -52
- package/dist/agent-src/skills/dpa-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/editorial-calendar/evals/evals.json +0 -16
- package/dist/agent-src/skills/eloquent/evals/triggers.json +0 -17
- package/dist/agent-src/skills/estimate-ticket/evals/evals.json +0 -16
- package/dist/agent-src/skills/estimate-ticket/evals/output-schema.yml +0 -20
- package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +0 -19
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +0 -52
- package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +0 -47
- package/dist/agent-src/skills/experiment-loop/evals/output-schema.yml +0 -27
- package/dist/agent-src/skills/experiment-loop/evals/triggers.json +0 -17
- package/dist/agent-src/skills/fe-design/evals/triggers.json +0 -67
- package/dist/agent-src/skills/forecasting/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/forecasting/evals/evals.json +0 -20
- package/dist/agent-src/skills/forensics-report/evals/triggers.json +0 -17
- package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +0 -52
- package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +0 -16
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +0 -72
- package/dist/agent-src/skills/github-ci/evals/evals.json +0 -25
- package/dist/agent-src/skills/history-design/evals/triggers.json +0 -17
- package/dist/agent-src/skills/html-deck/evals/triggers.json +0 -17
- package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +0 -57
- package/dist/agent-src/skills/humanizer/evals/triggers.json +0 -17
- package/dist/agent-src/skills/iconography/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-analyser/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-creator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-editing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/incident-commander/evals/evals.json +0 -20
- package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +0 -17
- package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +0 -17
- package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +0 -17
- package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +0 -17
- package/dist/agent-src/skills/launch-readiness/evals/evals.json +0 -21
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +0 -52
- package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +0 -17
- package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +0 -17
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +0 -52
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +0 -52
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +0 -52
- package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +0 -20
- package/dist/agent-src/skills/logging-monitoring/evals/evals.json +0 -16
- package/dist/agent-src/skills/logo-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/messaging-architecture/evals/evals.json +0 -16
- package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +0 -17
- package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
- package/dist/agent-src/skills/operational-readiness/evals/triggers.json +0 -17
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +0 -52
- package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +0 -16
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +0 -52
- package/dist/agent-src/skills/php-coder/evals/triggers.json +0 -17
- package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +0 -21
- package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +0 -17
- package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +0 -16
- package/dist/agent-src/skills/prompt-validator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/quality-tools/evals/evals.json +0 -15
- package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/refine-prompt/evals/evals.json +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/evals.json +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/output-schema.yml +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/triggers.json +0 -17
- package/dist/agent-src/skills/release-comms/evals/evals.json +0 -16
- package/dist/agent-src/skills/rice-prioritization/evals/evals.json +0 -20
- package/dist/agent-src/skills/runway-cognition/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/runway-cognition/evals/evals.json +0 -20
- package/dist/agent-src/skills/scenario-modeling/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/scenario-modeling/evals/evals.json +0 -20
- package/dist/agent-src/skills/schema-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +0 -52
- package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +0 -52
- package/dist/agent-src/skills/server-hardening/evals/triggers.json +0 -17
- package/dist/agent-src/skills/skill-writing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +0 -47
- package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +0 -17
- package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +0 -60
- package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +0 -52
- package/dist/agent-src/skills/systematic-debugging/evals/evals.json +0 -20
- package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +0 -52
- package/dist/agent-src/skills/test-driven-development/evals/evals.json +0 -16
- package/dist/agent-src/skills/threat-modeling/evals/evals.json +0 -21
- package/dist/agent-src/skills/typography-system/evals/evals.json +0 -14
- package/dist/agent-src/skills/typography-system/evals/triggers.json +0 -17
- package/dist/agent-src/skills/unit-economics-modeling/evals/domain-truth.json +0 -40
- package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +0 -24
- package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +0 -16
- package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +0 -20
- package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +0 -17
- package/dist/agent-src/skills/vision-articulation/evals/evals.json +0 -16
- package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +0 -16
- package/dist/agent-src/skills/wireframe/evals/triggers.json +0 -17
- package/dist/agent-src/skills/workspace-link/evals/triggers.json +0 -17
- package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +0 -38
- package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +0 -52
- package/dist/cli/agent-config.js.map +0 -1
- package/dist/cli/bash/runBash.js.map +0 -1
- package/dist/cli/commands/commands.js.map +0 -1
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/doctorShell.js.map +0 -1
- package/dist/cli/commands/mcpServer.js.map +0 -1
- package/dist/cli/commands/packs.js.map +0 -1
- package/dist/cli/commands/profiles.js.map +0 -1
- package/dist/cli/commands/recordTriggerEval.js.map +0 -1
- package/dist/cli/commands/rtkDetect.js.map +0 -1
- package/dist/cli/commands/settings.js.map +0 -1
- package/dist/cli/commands/uiAudit.js.map +0 -1
- package/dist/cli/commands/uiRender.js.map +0 -1
- package/dist/cli/commands/uiServe.js.map +0 -1
- package/dist/cli/commands/versions.js.map +0 -1
- package/dist/cli/commands/workspaces.js.map +0 -1
- package/dist/cli/configRoot.js.map +0 -1
- package/dist/cli/discovery/loadManifest.js.map +0 -1
- package/dist/cli/firstRunNotice.js.map +0 -1
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/initRouting.js.map +0 -1
- package/dist/cli/log/logger.js.map +0 -1
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/mcp/content.js.map +0 -1
- package/dist/cli/mcp/dispatch.js.map +0 -1
- package/dist/cli/mcp/stdio.js.map +0 -1
- package/dist/cli/paths.js.map +0 -1
- package/dist/cli/python/knowledge_ingest.js.map +0 -1
- package/dist/cli/python/workspace_analytics.js.map +0 -1
- package/dist/cli/python/workspace_crypto.js.map +0 -1
- package/dist/cli/python/workspace_documents.js.map +0 -1
- package/dist/cli/python/workspace_drive.js.map +0 -1
- package/dist/cli/python/workspace_drive_health.js.map +0 -1
- package/dist/cli/python/workspace_explain.js.map +0 -1
- package/dist/cli/python/workspace_hosts.js.map +0 -1
- package/dist/cli/python/workspace_inbox.js.map +0 -1
- package/dist/cli/python/workspace_render.js.map +0 -1
- package/dist/cli/python/workspace_roles.js.map +0 -1
- package/dist/cli/python/workspace_secrets.js.map +0 -1
- package/dist/cli/python/workspace_sessions.js.map +0 -1
- package/dist/cli/python/workspace_skills.js.map +0 -1
- package/dist/cli/registry.js.map +0 -1
- package/dist/install/agentSwitchDetection.js.map +0 -1
- package/dist/install/agentSwitchProfile.js.map +0 -1
- package/dist/install/atomic.js.map +0 -1
- package/dist/install/claudePathsPlan.js.map +0 -1
- package/dist/install/conflict.js.map +0 -1
- package/dist/install/detect.js.map +0 -1
- package/dist/install/emit_host_rules_cli.js.map +0 -1
- package/dist/install/globalRuleLayers.js.map +0 -1
- package/dist/install/hostLayerFingerprint.js.map +0 -1
- package/dist/install/partitionEligibility.js.map +0 -1
- package/dist/install/paths.js.map +0 -1
- package/dist/install/plan.js.map +0 -1
- package/dist/install/preflight.js.map +0 -1
- package/dist/install/rtkDetection.js.map +0 -1
- package/dist/install/ruleInScope.js.map +0 -1
- package/dist/install/ruleLayerPartition.js.map +0 -1
- package/dist/install/rule_scope.js.map +0 -1
- package/dist/install/rule_scope_cli.js.map +0 -1
- package/dist/install/selectedTools.js.map +0 -1
- package/dist/install/toolDetection.js.map +0 -1
- package/dist/install/txlog.js.map +0 -1
- package/dist/install/types.js.map +0 -1
- package/dist/install/wizard-plan.js.map +0 -1
- package/dist/install/wizardDismissals.js.map +0 -1
- package/dist/scripts/_lib/agent_settings.js.map +0 -1
- package/dist/scripts/_lib/agent_src.js.map +0 -1
- package/dist/scripts/_lib/claude_builtin_names.js.map +0 -1
- package/dist/scripts/_lib/claude_plugin.js.map +0 -1
- package/dist/scripts/_lib/claude_settings_hooks.js.map +0 -1
- package/dist/scripts/_lib/compile_time_toggles.js.map +0 -1
- package/dist/scripts/_lib/environment_detector.js.map +0 -1
- package/dist/scripts/_lib/host_launch.js.map +0 -1
- package/dist/scripts/_lib/install_layout.js.map +0 -1
- package/dist/scripts/_lib/installed_lock.js.map +0 -1
- package/dist/scripts/_lib/lean_projection_mode.js.map +0 -1
- package/dist/scripts/_lib/model_tier.js.map +0 -1
- package/dist/scripts/_lib/prune_empty_dirs.js.map +0 -1
- package/dist/scripts/_lib/scoped_projection.js.map +0 -1
- package/dist/scripts/_lib/script_output.js.map +0 -1
- package/dist/scripts/_lib/spawn_env.js.map +0 -1
- package/dist/scripts/_lib/surface_tiers.js.map +0 -1
- package/dist/scripts/_lib/token_count.js.map +0 -1
- package/dist/scripts/_lib/trigger_eval_floors.js.map +0 -1
- package/dist/scripts/_lib/ui_surface.js.map +0 -1
- package/dist/scripts/_lib/user_global_paths.js.map +0 -1
- package/dist/scripts/ai_council/modes.js.map +0 -1
- package/dist/scripts/ai_council/transport_resolver.js.map +0 -1
- package/dist/scripts/condense.js.map +0 -1
- package/dist/scripts/project_thin_rules.js.map +0 -1
- package/dist/server/app.js.map +0 -1
- package/dist/server/io/atomicMultiWrite.js.map +0 -1
- package/dist/server/io/atomicWrite.js.map +0 -1
- package/dist/server/io/sharedWriteCheck.js.map +0 -1
- package/dist/server/io/substituteTemplate.js.map +0 -1
- package/dist/server/io/yamlIO.js.map +0 -1
- package/dist/server/nicknameResolver.js.map +0 -1
- package/dist/server/port.js.map +0 -1
- package/dist/server/routes/discovery.js.map +0 -1
- package/dist/server/routes/install.js.map +0 -1
- package/dist/server/routes/ping.js.map +0 -1
- package/dist/server/routes/schema.js.map +0 -1
- package/dist/server/routes/settings.js.map +0 -1
- package/dist/server/routes/settingsChanges.js.map +0 -1
- package/dist/server/routes/userMd.js.map +0 -1
- package/dist/server/routes/wizard.js.map +0 -1
- package/dist/server/routes/workspace.js.map +0 -1
- package/dist/server/schemas/settings.js.map +0 -1
- package/dist/server/serverInfo.js.map +0 -1
- package/dist/server/token.js.map +0 -1
- package/dist/server/writeRoot.js.map +0 -1
- package/dist/shared/capabilities.js.map +0 -1
- package/dist/shared/interactiveContext.js.map +0 -1
- package/dist/shared/nicknamePrefill.js.map +0 -1
- package/dist/shared/settingsAsks.js.map +0 -1
- package/dist/shared/settingsCarveOut.js.map +0 -1
- package/dist/shared/settingsClasses.js.map +0 -1
- package/dist/shared/settingsConsent.js.map +0 -1
- package/dist/shared/settingsSurface.js.map +0 -1
- package/dist/shared/skillRanking.js.map +0 -1
- package/dist/shared/userMd/formAdapter.js.map +0 -1
- package/dist/shared/userMd/schema.js.map +0 -1
- package/dist/shared/userMd/utils.js.map +0 -1
- package/dist/ui/assets/index-Cxgy63kz.js +0 -26
- package/dist/ui/assets/index-Cxgy63kz.js.map +0 -1
- package/src/scripts/_lib/adr_frontmatter.test.ts +0 -365
- package/src/scripts/_lib/adversarial_council_gate.test.ts +0 -112
- package/src/scripts/_lib/adversarial_reconcile.test.ts +0 -197
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +0 -150
- package/src/scripts/_lib/secret_detector.test.ts +0 -108
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +0 -116
- package/src/scripts/_lib/ui_authority.test.ts +0 -251
- package/src/scripts/_lib/untrusted_content.test.ts +0 -175
- package/src/scripts/check_secret_leak.test.ts +0 -90
- package/src/scripts/design_slop_rules.test.ts +0 -246
- package/src/scripts/self_review_gate.test.ts +0 -296
- package/src/shared/capabilities.test.ts +0 -43
|
@@ -28,8 +28,51 @@ Do NOT use when:
|
|
|
28
28
|
2. **Understand the scope** — what exactly needs to change and why?
|
|
29
29
|
3. **Find ALL references** — use `codebase-retrieval` and `view` with `search_query_regex` to find every
|
|
30
30
|
caller, implementation, test, and configuration that references the code being changed.
|
|
31
|
+
**If the change is to a closed set** — an enum, union, literal type, state
|
|
32
|
+
machine, role or permission set — identifier search is not enough: the
|
|
33
|
+
consumers that break are the ones that never name the type. Search by shape as
|
|
34
|
+
well (`switch` / `match` / if-chains over it, lookup tables keyed by it,
|
|
35
|
+
validators, serializers, schemas, fixtures, translation keys) and classify each
|
|
36
|
+
as exhaustive, deliberate fallback, or missing case. Procedure:
|
|
37
|
+
[`downstream-changes-mechanics`](../../../docs/guidelines/agent-infra/downstream-changes-mechanics.md).
|
|
31
38
|
4. **Map the impact** — create a list of all files that will need changes.
|
|
32
|
-
5. **
|
|
39
|
+
5. **Decide the verdict, if the refactor is a de-duplication** — see the
|
|
40
|
+
safe-abstraction gate below. An extraction with no recorded verdict is a
|
|
41
|
+
guess about whether two things are the same thing.
|
|
42
|
+
6. **Present the plan** — show the user what will be affected before starting.
|
|
43
|
+
|
|
44
|
+
### Safe-abstraction gate — before merging two things into one
|
|
45
|
+
|
|
46
|
+
This skill performs extractions; it is therefore the place that decides
|
|
47
|
+
whether one should happen. A wrong abstraction costs more than the
|
|
48
|
+
duplication it replaced, because the duplication is visible and the wrong
|
|
49
|
+
abstraction grows caller flags until nobody can remove it. Ask, before
|
|
50
|
+
moving any code:
|
|
51
|
+
|
|
52
|
+
1. Is this the same knowledge, or two facts that currently look alike?
|
|
53
|
+
2. Would both copies change for the same reason?
|
|
54
|
+
3. Is there one honest domain name that fits **every** call site?
|
|
55
|
+
4. Can the common core stay free of caller-specific flags and modes?
|
|
56
|
+
5. Are public contracts preserved, and do tests prove behavioural equivalence?
|
|
57
|
+
6. **If the two copies diverged tomorrow, would that be a defect or
|
|
58
|
+
legitimate evolution?**
|
|
59
|
+
|
|
60
|
+
A "legitimate evolution" answer to the last question is decisive: stop, and
|
|
61
|
+
record the verdict `keep-duplicated`. That closes the refactor **successfully**
|
|
62
|
+
— so does `de-abstract`, splitting a shared unit that has grown modes back
|
|
63
|
+
apart. Neither is a failure to act, and neither needs an apology in the
|
|
64
|
+
output. Textual similarity is not evidence of shared knowledge: copies that
|
|
65
|
+
read identically can encode different assumptions, and merging them changes
|
|
66
|
+
behaviour silently.
|
|
67
|
+
|
|
68
|
+
The class names and the full verdict list are in
|
|
69
|
+
[`redundancy-taxonomy`](../../../docs/guidelines/redundancy-taxonomy.md).
|
|
70
|
+
|
|
71
|
+
When the refactor goes the other way and **creates** a new unit, the reuse
|
|
72
|
+
question comes first: does an existing class or component already cover this, and
|
|
73
|
+
what does composing or extending it cost against a new one? Thresholds per
|
|
74
|
+
artifact class:
|
|
75
|
+
[`component-oriented-and-oop-development`](../../../docs/guidelines/component-oriented-and-oop-development.md).
|
|
33
76
|
|
|
34
77
|
## Procedure: Refactor code
|
|
35
78
|
|
|
@@ -140,6 +183,7 @@ After the code changes are verified, update all affected documentation:
|
|
|
140
183
|
1. Find all usages → update all usages → update docs → run the static analyser → run tests.
|
|
141
184
|
|
|
142
185
|
### Extract method / class
|
|
186
|
+
0. Run the safe-abstraction gate above — a `keep-duplicated` verdict ends it here.
|
|
143
187
|
1. Create the new method/class → move logic → update caller → update docs → run the static analyser → run tests.
|
|
144
188
|
|
|
145
189
|
### Move class to different namespace
|
|
@@ -37,11 +37,70 @@ Use this skill when:
|
|
|
37
37
|
2. **Detect the change-type + depth** — route to the right checklist and pick the review depth (below).
|
|
38
38
|
3. **Architecture** — does the approach make sense? Right layer? Right pattern?
|
|
39
39
|
4. **Correctness** — does it actually work? Edge cases? Error handling?
|
|
40
|
-
5. **Quality** — types, naming, readability,
|
|
41
|
-
6. **
|
|
42
|
-
7. **
|
|
43
|
-
8. **
|
|
44
|
-
9. **
|
|
40
|
+
5. **Quality** — types, naming, readability, SOLID?
|
|
41
|
+
6. **Redundancy** — see below; a verdict, not a "this looks duplicated".
|
|
42
|
+
7. **Propagation** — did a changed concept reach every occurrence? see below.
|
|
43
|
+
8. **Security** — input validation, authorization, injection?
|
|
44
|
+
9. **Performance** — N+1 queries, missing indexes, unbounded queries?
|
|
45
|
+
10. **Tests** — are new paths covered? Are existing tests still valid?
|
|
46
|
+
11. **Conventions** — does it follow project standards?
|
|
47
|
+
|
|
48
|
+
## The redundancy dimension
|
|
49
|
+
|
|
50
|
+
`DRY` as a checklist word produced findings nobody could act on: it names a
|
|
51
|
+
principle, not a decision, and it has no answer for the case where two copies
|
|
52
|
+
should stay. Replace it with a verdict.
|
|
53
|
+
|
|
54
|
+
Classify the finding against
|
|
55
|
+
[`redundancy-taxonomy`](../../../docs/guidelines/redundancy-taxonomy.md) —
|
|
56
|
+
implementation, knowledge, or representation — and record one verdict from that
|
|
57
|
+
document's list. `keep-duplicated` and `de-abstract` are successful outcomes; a
|
|
58
|
+
finding with no recorded verdict stays open. Knowledge, policy, contract and
|
|
59
|
+
delivery-authority duplication outrank clone percentage: two copies of a
|
|
60
|
+
*decision* diverge into a bug, two copies of a loop usually do not.
|
|
61
|
+
|
|
62
|
+
**Diff-aware, always.** The finding is duplication this change **introduces**,
|
|
63
|
+
or duplication on a surface it touches. Pre-existing duplication is baseline —
|
|
64
|
+
it is named once if the reviewer thinks it matters and it never fails an
|
|
65
|
+
unrelated change. A review that reds a diff against debt it did not create is a
|
|
66
|
+
review nobody will run twice.
|
|
67
|
+
|
|
68
|
+
For comments, labels, tooltips, placeholders and empty states, run the
|
|
69
|
+
Information Delta Test from the same document rather than judging text volume.
|
|
70
|
+
A reduction that removes an accessibility name is a defect, not a cleanup.
|
|
71
|
+
|
|
72
|
+
Naming is the same dimension pointed the other way: a diff that introduces a
|
|
73
|
+
second term for a concept the tree already names is the finding, and an existing
|
|
74
|
+
split is baseline. The classes and the `canonicalize-term` / `keep-distinct`
|
|
75
|
+
verdicts are in the same document.
|
|
76
|
+
|
|
77
|
+
## The propagation dimension
|
|
78
|
+
|
|
79
|
+
A change is complete when the **concept** changed everywhere, not when the named
|
|
80
|
+
file compiles. Two shapes to check, both of which the file-level review misses:
|
|
81
|
+
|
|
82
|
+
**A closed set gained or lost a member** (enum, union, literal type, state
|
|
83
|
+
machine, role or permission set, schema `enum`, DB check constraint). List the
|
|
84
|
+
consumers and their status — every `switch` / `match` / if-chain over the type,
|
|
85
|
+
every lookup table keyed by it, every validator, serializer, schema, fixture and
|
|
86
|
+
translation key. A `default` branch that silently absorbs the new member is a
|
|
87
|
+
missing case, not a handled one. Procedure:
|
|
88
|
+
[`downstream-changes-mechanics`](../../../docs/guidelines/agent-infra/downstream-changes-mechanics.md).
|
|
89
|
+
|
|
90
|
+
**A shared behaviour moved and its siblings did not.** A defect fixed in one
|
|
91
|
+
place is presumed to recur until searched: name the exact wrong construct, grep
|
|
92
|
+
the tree, and report the count — zero is a real answer and worth stating, because
|
|
93
|
+
it distinguishes "this was unique" from "nobody looked".
|
|
94
|
+
|
|
95
|
+
Diff-aware on the same terms as redundancy: the finding is a concept **this
|
|
96
|
+
change** left half-migrated. Pre-existing incompleteness elsewhere is baseline.
|
|
97
|
+
|
|
98
|
+
When the diff **creates** a class, component, service or hook rather than
|
|
99
|
+
changing one, the question is whether it needed to exist: what was searched,
|
|
100
|
+
what was found, and why composing or extending the incumbent was rejected. An
|
|
101
|
+
answer, not a ceremony — and the thresholds for when repetition actually earns
|
|
102
|
+
an abstraction are in
|
|
103
|
+
[`component-oriented-and-oop-development`](../../../docs/guidelines/component-oriented-and-oop-development.md).
|
|
45
104
|
|
|
46
105
|
## Change-type routing — load only the checklist the diff needs
|
|
47
106
|
|
|
@@ -113,7 +172,7 @@ coverage reads as full coverage.
|
|
|
113
172
|
the package implements it. That is now true for a recorded reason rather than by
|
|
114
173
|
omission: the pre-registered question — does rotating reviewer order change the finding set
|
|
115
174
|
on a frozen corpus, by more than 15 % — **cannot be answered from the corpus that exists**.
|
|
116
|
-
`agents/evidence/reviews/` holds 123 findings
|
|
175
|
+
`agents/evidence/reviews/` holds 123 findings artifacts, and none of them records the file
|
|
117
176
|
order it was produced under, so the counterfactual is not recoverable; re-running reviewers
|
|
118
177
|
produces fresh judgements in which ordering is confounded with run-to-run variance. Full
|
|
119
178
|
null, with its reopening condition: `agents/evidence/review-rotation-prereg-and-null.md`.
|
|
@@ -305,6 +305,41 @@ Bad description (vague, no outcome):
|
|
|
305
305
|
|
|
306
306
|
> "PR command"
|
|
307
307
|
|
|
308
|
+
## The `## Examples` section on a user-facing command
|
|
309
|
+
|
|
310
|
+
Stated once, here — never repeated per command.
|
|
311
|
+
|
|
312
|
+
A command whose `visibility` is `visible` or `advanced` carries an
|
|
313
|
+
`## Examples` section: **1-3 filled invocations** in a fence, then **exactly
|
|
314
|
+
one Why line**. Filled means a real path, a real ticket key, a real flag — a
|
|
315
|
+
placeholder teaches nothing about what to type.
|
|
316
|
+
|
|
317
|
+
The Why line uses one of two literals, `**Why it works:**` or a
|
|
318
|
+
`### Why it works` heading, and cites **exactly one** pattern id from
|
|
319
|
+
[`prompt-patterns.yml`](../../config/discovery/prompt-patterns.yml):
|
|
320
|
+
`outcome-not-steps` · `self-check-loop` · `measurable-target` ·
|
|
321
|
+
`give-the-artifact` · `point-at-reference` · `say-the-format`. One id, because
|
|
322
|
+
the Why line's job is the part that transfers to a command the reader has not
|
|
323
|
+
seen, and a line naming three patterns names none of them.
|
|
324
|
+
|
|
325
|
+
~~~
|
|
326
|
+
## Examples
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
/work fix the failing login test under tests/feature/auth
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Why it works:** measurable-target — it names the file instead of the symptom.
|
|
333
|
+
~~~
|
|
334
|
+
|
|
335
|
+
Enforced by `check_command_examples`, forward-only: the 23 in-scope commands as
|
|
336
|
+
of 2026-08-24 are grandfathered in a frozen set inside the gate, and a command
|
|
337
|
+
**added or promoted into `visible`/`advanced`** after that must comply. Two
|
|
338
|
+
things the gate checks that are easy to miss — an invocation must resolve to
|
|
339
|
+
the command's own `name:` (a rename otherwise leaves stale examples behind), and
|
|
340
|
+
a flag used in an example must be documented in the body **outside** the
|
|
341
|
+
section.
|
|
342
|
+
|
|
308
343
|
## Encode usage policy in the description
|
|
309
344
|
|
|
310
345
|
Workflow sequencing, preconditions, ID/output provenance ("copy ids verbatim,
|
|
@@ -113,6 +113,14 @@ SQLite; ORM-agnostic):
|
|
|
113
113
|
|
|
114
114
|
## Gotcha
|
|
115
115
|
|
|
116
|
+
**MySQL and MariaDB share a query-syntax world. They never share a migration
|
|
117
|
+
one.** Treat them as one engine for writing a `SELECT`, and as two engines for
|
|
118
|
+
everything that changes a schema or reports on a plan: online-DDL semantics,
|
|
119
|
+
lock behavior under `ALTER`, feature availability, and `EXPLAIN` output all
|
|
120
|
+
diverge. Read the engine and its version from the project before making any
|
|
121
|
+
claim in that second group; where the project does not declare one, say the
|
|
122
|
+
engine is unknown rather than assuming.
|
|
123
|
+
|
|
116
124
|
- Check existing indexes before adding — duplicates waste write performance.
|
|
117
125
|
- Consider multi-tenant implications — queries may need customer DB scoping.
|
|
118
126
|
- `EXPLAIN` output varies between MariaDB and MySQL.
|
|
@@ -31,6 +31,33 @@ Before upgrading:
|
|
|
31
31
|
- **Review upgrade guides** — many packages provide migration docs.
|
|
32
32
|
- **Check runtime version requirements** — does the new version need a newer PHP / Node / Python / Go / Rust toolchain?
|
|
33
33
|
|
|
34
|
+
### 1b. Find where the version is DECLARED, before naming a file to edit
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
NEVER NAME AN EDIT SITE BEFORE ASKING WHERE THE VERSION IS DECLARED.
|
|
38
|
+
IN A CATALOG WORKSPACE THE MEMBER MANIFEST IS THE WRONG FILE:
|
|
39
|
+
THE VERSION IS ONE ROOT LINE WITH N REFERENTS.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
A member `package.json` is the declaration site in an ordinary repository and
|
|
43
|
+
**not** in a workspace using a catalog. There, the member reads `catalog:` and
|
|
44
|
+
the range lives once in the workspace definition — editing the member either
|
|
45
|
+
does nothing or silently diverges from the catalog.
|
|
46
|
+
|
|
47
|
+
Ask in this order, and stop at the first that answers:
|
|
48
|
+
|
|
49
|
+
1. **A catalog entry for this dependency** — `pnpm-workspace.yaml` `catalogs:` /
|
|
50
|
+
`catalog:`, or the equivalent in another manager's workspace definition. If
|
|
51
|
+
the member's range starts with `catalog:`, this is the edit site. Name the
|
|
52
|
+
catalog (`default` included) in the guidance, not the member.
|
|
53
|
+
2. **A root-level pin** — `overrides` / `resolutions` / `pnpm.overrides`. A
|
|
54
|
+
member edit under one of these is overridden at install time.
|
|
55
|
+
3. **The member manifest** — the ordinary case, and only after 1 and 2 are
|
|
56
|
+
silent.
|
|
57
|
+
|
|
58
|
+
A repository with no catalog and no root pin behaves exactly as before; this
|
|
59
|
+
step adds a lookup, not a change of default.
|
|
60
|
+
|
|
34
61
|
### 2. Plan
|
|
35
62
|
|
|
36
63
|
Categorize changes needed:
|
|
@@ -221,7 +221,7 @@ fields change what a finding *means*:
|
|
|
221
221
|
all. Under `preserve` a palette or type-family delta is a **defect**; under
|
|
222
222
|
`redesign` it is the point.
|
|
223
223
|
- **`reference_maturity`** decides whether a difference from the reference is a
|
|
224
|
-
defect. A `wireframe` declares structure, so reproducing its
|
|
224
|
+
defect. A `wireframe` declares structure, so reproducing its gray boxes is
|
|
225
225
|
over-fidelity, not fidelity.
|
|
226
226
|
|
|
227
227
|
```
|
|
@@ -132,7 +132,7 @@ Verify the doc works for someone without your context.
|
|
|
132
132
|
* **One question per turn** (Iron Law from `ask-when-uncertain`) — never bundle clarifying + brainstorm + curate prompts in one message.
|
|
133
133
|
* **Never reprint the full doc** during iteration — always use `str-replace-editor`. Reprinting wastes tokens and creates merge drift.
|
|
134
134
|
* **Reader test is not optional** — without it, you ship the version that makes sense to you, not to readers. Skip only on explicit user override.
|
|
135
|
-
* **
|
|
135
|
+
* **Subagent absence** — `ai-council` may not be configured. Have the manual fresh-Claude fallback ready (Stage 3 step 2).
|
|
136
136
|
* **Image alt-text** — if the doc embeds images, add alt-text inline; without it, fresh-reader tools can't see them.
|
|
137
137
|
* **Language discipline** — keep the doc body in English (per `language-and-tone`). For verbatim German user phrases or interview quotes, use `DE: … · EN: …` anchor blocks.
|
|
138
138
|
|
|
@@ -79,7 +79,23 @@ Design starts from project truth, not generic aesthetic memory.
|
|
|
79
79
|
| `vue` | `resources/js/components/`, `src/components/`, `pages/` |
|
|
80
80
|
| `plain` | `resources/views/`, plus any `*.html` under `public/` |
|
|
81
81
|
|
|
82
|
-
Capture each component/template as:
|
|
82
|
+
Capture each component/template as:
|
|
83
|
+
`{path, name, kind: component|view|style|page, exports?: [props]}`.
|
|
84
|
+
|
|
85
|
+
The `kind` set is the one `agent-config ui:audit` actually emits — its single
|
|
86
|
+
definition is `AUDIT_KINDS` in `src/cli/commands/uiAudit.ts`, and a test asserts
|
|
87
|
+
this line against that constant rather than restating it. It read
|
|
88
|
+
`page|partial|component|layout` until 2026-08-26; only two of those four values
|
|
89
|
+
existed in the code, so an artefact written by the command was being read here
|
|
90
|
+
against a contract it did not satisfy.
|
|
91
|
+
|
|
92
|
+
`partial` and `layout` are not in the set. Neither has an operational definition
|
|
93
|
+
that survives contact with a real tree, and adding a branch for a category
|
|
94
|
+
nobody can test is how the previous mismatch happened.
|
|
95
|
+
|
|
96
|
+
`view` is the **Blade** classification — `*.blade.php` and `resources/views/`.
|
|
97
|
+
It reads zero in a JavaScript tree by construction, which is not the same as
|
|
98
|
+
unused.
|
|
83
99
|
|
|
84
100
|
### 2. Identify the design system
|
|
85
101
|
|
|
@@ -100,7 +116,8 @@ Write into `state.ui_audit.design_tokens` (object, never null — empty object i
|
|
|
100
116
|
|
|
101
117
|
| Source | What to extract |
|
|
102
118
|
|---|---|
|
|
103
|
-
| `tailwind.config.{js,ts,cjs,mjs}` | `theme.colors`, `theme.spacing`, `theme.fontFamily`, `theme.extend.*` |
|
|
119
|
+
| **`tailwind-v3`** (`axes.css`) — `tailwind.config.{js,ts,cjs,mjs}` | `theme.colors`, `theme.spacing`, `theme.fontFamily`, `theme.extend.*` |
|
|
120
|
+
| **`tailwind-v4`** (`axes.css`) — the `@theme` block in the entry CSS; **no config file exists**, and `components.json` `"tailwind": {"config": ""}` is the marker | every `--token: value` declared inside `@theme` / `@theme inline` |
|
|
104
121
|
| `:root { --... }` blocks in `resources/css/`, `app/globals.css`, `src/app/globals.css` | every `--token-name: value` pair |
|
|
105
122
|
| `theme.json` / `tokens.json` (any depth) | flat or nested token tree |
|
|
106
123
|
| `app/css/variables.css`, `assets/scss/_tokens.scss` | SCSS `$var: value` and CSS custom properties |
|
|
@@ -109,6 +126,12 @@ Write into `state.ui_audit.design_tokens` (object, never null — empty object i
|
|
|
109
126
|
|
|
110
127
|
Group output by category: `colors`, `spacing`, `radius`, `font`, `shadow`, `breakpoint`, `other`.
|
|
111
128
|
|
|
129
|
+
**Branch on the axis, do not probe for a config file.** `detect_stack()` emits
|
|
130
|
+
`axes.css` as `tailwind-v3` or `tailwind-v4`
|
|
131
|
+
(`work_engine/stack/detect.ts:521-524`); reading it is how this step and
|
|
132
|
+
`react-shadcn-ui` § Gotcha stay on the same key. Absence of
|
|
133
|
+
`tailwind.config.*` is v4's normal state, never a missing file.
|
|
134
|
+
|
|
112
135
|
**Artifact-sourced tokens stay distinguishable from project tokens.** Every
|
|
113
136
|
group carries a `source` — `project` for the first four rows, `artifact` for the
|
|
114
137
|
last two — because the mapping between them is the thing a port has to keep
|
|
@@ -121,6 +121,12 @@ Discovery → Exploration → Questions → Architecture → Implementation →
|
|
|
121
121
|
- Follow chosen architecture from Phase 4.
|
|
122
122
|
- Follow codebase conventions strictly.
|
|
123
123
|
- Track progress via task list or roadmap.
|
|
124
|
+
- **One behavior at a time**: the failing test for that behavior, observed
|
|
125
|
+
failing, then the minimum code that makes it pass, then the next behavior.
|
|
126
|
+
Tests are a step of this phase, never a follow-up suggested in Phase 7 —
|
|
127
|
+
a plan that reaches the summary owing its tests planned test-after.
|
|
128
|
+
Exceptions are the Do-NOT list in the `test-driven-development` skill,
|
|
129
|
+
and a skipped cycle is recorded in the decision log rather than passed over.
|
|
124
130
|
|
|
125
131
|
#### Phase 6: Quality Review
|
|
126
132
|
- Review the implementation for:
|
|
@@ -132,7 +138,8 @@ Discovery → Exploration → Questions → Architecture → Implementation →
|
|
|
132
138
|
|
|
133
139
|
#### Phase 7: Summary
|
|
134
140
|
- Summarize what was built, key decisions, files modified.
|
|
135
|
-
- Suggest next steps (
|
|
141
|
+
- Suggest next steps (documentation, follow-up features) — never tests, which
|
|
142
|
+
Phase 5 already closed per behavior.
|
|
136
143
|
- Update roadmap if applicable.
|
|
137
144
|
|
|
138
145
|
## Decision log
|
|
@@ -147,7 +154,7 @@ This ensures future developers (and agents) understand the reasoning, not just t
|
|
|
147
154
|
|
|
148
155
|
## Bite-sized task granularity (structural roadmaps only)
|
|
149
156
|
|
|
150
|
-
When a feature plan's generated roadmap declares `complexity: structural` in its frontmatter, every task bullet must be self-contained and 2–5 minutes of work. Lightweight roadmaps (the default) skip this section — coarse-grained tasks ("
|
|
157
|
+
When a feature plan's generated roadmap declares `complexity: structural` in its frontmatter, every task bullet must be self-contained and 2–5 minutes of work. Lightweight roadmaps (the default) skip this section — coarse-grained tasks are correct when the work is well-scoped and low-risk — but coarse means *one behavior*, not one layer: ("Reject login with an unknown email — test, then handler", "Reject login with a wrong password — test, then handler"), never an implementation step followed by an "Update tests" step.
|
|
151
158
|
|
|
152
159
|
Structural roadmap tasks must include:
|
|
153
160
|
|
|
@@ -52,6 +52,48 @@ NO SECRET, PRIVILEGED KEY, OR SESSION TOKEN LIVES IN CLIENT CODE OR localStorage
|
|
|
52
52
|
| `target="_blank"` without `rel="noopener"` | Reverse tabnabbing (CWE-1022) | add `rel="noopener noreferrer"` |
|
|
53
53
|
| Missing CSP; missing alt/label/contrast | No XSS second line of defense; a11y failures | strict CSP (no `unsafe-inline`); alt text, labels, AA contrast |
|
|
54
54
|
|
|
55
|
+
## The server-composed bootstrap payload
|
|
56
|
+
|
|
57
|
+
A payload assembled **server-side and serialised into the page** for a client
|
|
58
|
+
island is a data-exposure surface: whatever is put in it is readable by anyone
|
|
59
|
+
who can load the page — no API call, no auth check, view-source. Several
|
|
60
|
+
mainstream frameworks ship their own named channel for exactly this, so the
|
|
61
|
+
pattern is a documented mechanism rather than one project's arrangement.
|
|
62
|
+
|
|
63
|
+
**Inspect the existing payload before judging any field.** Read what the channel
|
|
64
|
+
already carries and check current call sites for what the client actually
|
|
65
|
+
consumes — a field is only defensible against what the page needs, and a review
|
|
66
|
+
that never opened the payload is a guess. The grep below finds it.
|
|
67
|
+
|
|
68
|
+
**The per-field question, which is what this section is:**
|
|
69
|
+
|
|
70
|
+
> Would I return this field from a **public, unauthenticated** endpoint?
|
|
71
|
+
> If not, it does not belong in the payload.
|
|
72
|
+
|
|
73
|
+
Field classes that recur and are almost always wrong there: internal ids that
|
|
74
|
+
enumerate other users' rows · permission and role structures the client only
|
|
75
|
+
needs a boolean of · feature-flag payloads carrying unreleased product names ·
|
|
76
|
+
anything from an admin-scoped query that was convenient to reuse · a whole
|
|
77
|
+
serialised model where the page needs three of its fields.
|
|
78
|
+
|
|
79
|
+
**Nothing enforces this, and the split is deliberate.**
|
|
80
|
+
|
|
81
|
+
| Half | What it does | What it cannot do |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| the grep below | **locates** a payload a field was added to | tell a privileged field from a public one |
|
|
84
|
+
| this checklist entry | carries the **judgement** | run |
|
|
85
|
+
|
|
86
|
+
The question is not decidable by any check: a grep over the framework-named
|
|
87
|
+
payload channels cannot read intent. So the deterministic half is discovery,
|
|
88
|
+
advisory and non-blocking, and its whole value is putting the question in front
|
|
89
|
+
of a reader who would otherwise never see it. `enforced_by: none` is the honest
|
|
90
|
+
field here — this section refuses nothing.
|
|
91
|
+
|
|
92
|
+
**What may NOT be encoded.** The particular channel any one repository uses.
|
|
93
|
+
What is encoded is the question and the framework-named channels; a concrete
|
|
94
|
+
in-house payload shape would be one repository's implementation shipped as
|
|
95
|
+
guidance.
|
|
96
|
+
|
|
55
97
|
## Backstop greps
|
|
56
98
|
|
|
57
99
|
Run before committing frontend changes; each should return zero (or every hit is read and justified):
|
|
@@ -66,6 +108,8 @@ rg -n "origin:\s*['\"]\*['\"]|Access-Control-Allow-Origin.*\*"
|
|
|
66
108
|
rg -n "addEventListener\(\s*['\"]message['\"]" # then confirm each checks event.origin
|
|
67
109
|
# Unhardened external links
|
|
68
110
|
rg -n 'target=["'\'']_blank["'\'']' # then confirm rel="noopener" present
|
|
111
|
+
# Server-composed bootstrap payload — LOCATES it; the per-field judgement is yours
|
|
112
|
+
rg -n '__NEXT_DATA__|__NUXT__|window\.__INITIAL_STATE__|@json\(|json_encode\([^)]*\)\s*\)?\s*</script>|dehydratedState'
|
|
69
113
|
```
|
|
70
114
|
|
|
71
115
|
## Output format
|
|
@@ -143,20 +143,54 @@ export const checkPackage = (root: string): SurfaceReport => {
|
|
|
143
143
|
};
|
|
144
144
|
if (exportsField !== undefined) walkConditions(exportsField, 'exports.');
|
|
145
145
|
|
|
146
|
-
// (d) — a
|
|
146
|
+
// (d) — a range that only resolves INSIDE the workspace. Published with no
|
|
147
147
|
// `private: true` and no publishConfig, the consumer's install fails on a protocol
|
|
148
148
|
// their registry has never heard of.
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
//
|
|
150
|
+
// `catalog:` was added 2026-08-26 (road-to-internal-estate-fit 4.1) and it is the
|
|
151
|
+
// same defect, not an adjacent one: pnpm's catalog protocol resolves against the
|
|
152
|
+
// workspace's catalog definition and means nothing to a registry. It had been
|
|
153
|
+
// passing as an ordinary registry range, so the finding did not fire where it
|
|
154
|
+
// should. One predicate, two prefixes — the finding code and its reason carry over
|
|
155
|
+
// unchanged, which is why this is not a second finding type.
|
|
156
|
+
const UNPUBLISHABLE_RANGE_PREFIXES = ['workspace:', 'catalog:'] as const;
|
|
157
|
+
// Each dependency map is scanned SEPARATELY rather than spread into one
|
|
158
|
+
// object. The previous `{ ...deps, ...devDeps, ...peers }` merge let a later
|
|
159
|
+
// map SHADOW an earlier one for the same package name: a `workspace:` range
|
|
160
|
+
// in `dependencies` for a package that also appears in `peerDependencies`
|
|
161
|
+
// with a registry range was invisible, because the peer value won the spread.
|
|
162
|
+
// Found 2026-08-26 by a `catalog:` fixture for a name the test manifest also
|
|
163
|
+
// lists as a peer; fixed with 4.1 rather than noted, because it is the same
|
|
164
|
+
// predicate and the same few lines.
|
|
165
|
+
const workspaceRanges: [string, unknown][] = [
|
|
166
|
+
deps,
|
|
167
|
+
asRecord(manifest['devDependencies']),
|
|
168
|
+
peers,
|
|
169
|
+
].flatMap((m) =>
|
|
170
|
+
Object.entries(m).filter(
|
|
171
|
+
([, v]) =>
|
|
172
|
+
typeof v === 'string' &&
|
|
173
|
+
UNPUBLISHABLE_RANGE_PREFIXES.some((pre) => v.startsWith(pre)),
|
|
174
|
+
),
|
|
175
|
+
);
|
|
151
176
|
if (
|
|
152
177
|
workspaceRanges.length > 0 &&
|
|
153
178
|
manifest['private'] !== true &&
|
|
154
179
|
manifest['publishConfig'] === undefined
|
|
155
180
|
) {
|
|
181
|
+
const prefixes = [
|
|
182
|
+
...new Set(
|
|
183
|
+
workspaceRanges.map(
|
|
184
|
+
([, v]) =>
|
|
185
|
+
UNPUBLISHABLE_RANGE_PREFIXES.find((pre) => (v as string).startsWith(pre)) ??
|
|
186
|
+
'',
|
|
187
|
+
),
|
|
188
|
+
),
|
|
189
|
+
].sort();
|
|
156
190
|
findings.push({
|
|
157
191
|
code: 'workspace-range-publishable',
|
|
158
192
|
severity: 'warn',
|
|
159
|
-
message: `${String(workspaceRanges.length)}
|
|
193
|
+
message: `${String(workspaceRanges.length)} workspace-local range(s) (${prefixes.join(', ')}) in a package that is neither private nor carrying publishConfig — the protocol does not resolve outside the workspace`,
|
|
160
194
|
});
|
|
161
195
|
}
|
|
162
196
|
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"name": "Acceptance criteria",
|
|
19
19
|
"cross_cutting": false,
|
|
20
20
|
"weight": 3,
|
|
21
|
-
"criterion": "Acceptance criteria are
|
|
22
|
-
"gap_signal": "AC section missing; or AC items are task descriptions ('implement the API') rather than verifiable outcomes ('returns 200 with a body matching the schema')."
|
|
21
|
+
"criterion": "Acceptance criteria are independently testable outcomes, not task descriptions — an implementer can write a test before touching code. Whether they are owed in Given-When-Then form is decided by the observable-behavior test in `src/skills/test-case-discovery/SKILL.md` § Does this change owe an executable behavior contract?, not asserted here: most tickets owe verifiable checklist items, and only a change with an audience outside the code owes a behavior contract. Where one is owed, that section's anti-script rule applies — a criterion naming a selector, a timeout or a keystroke scores as a gap, however well-formed its Given-When-Then.",
|
|
22
|
+
"gap_signal": "AC section missing; or AC items are task descriptions ('implement the API') rather than verifiable outcomes ('returns 200 with a body matching the schema'); or a Given-When-Then criterion scripts the interface ('When I click #submit') instead of stating the rule."
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"id": "dor_readiness",
|
|
@@ -33,6 +33,41 @@ Use this skill for all Laravel-specific code generation and editing tasks, espec
|
|
|
33
33
|
|
|
34
34
|
This skill extends the base `php-coder` skill and applies Laravel conventions on top of the project's general PHP rules.
|
|
35
35
|
|
|
36
|
+
## When NOT to use — components without the framework
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
A DEPENDENCY PROVES A LIBRARY IS AVAILABLE. ONLY THE ENTRY POINT AND THE
|
|
40
|
+
ROUTER PROVE WHICH APPLICATION SHAPE IS RUNNING.
|
|
41
|
+
`illuminate/*` PACKAGES WITH NO SKELETON MARKER IS A THIRD STATE, AND THIS SKILL
|
|
42
|
+
DOES NOT APPLY TO IT.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Laravel ships its ORM, container, collections and HTTP layer as
|
|
46
|
+
independently installable packages, usable with no framework present — a
|
|
47
|
+
published distribution model, not one consumer's arrangement. An application
|
|
48
|
+
built that way has a **custom entry point and a custom router**. Routing it here
|
|
49
|
+
offers a CLI that does not exist, a request-validation primitive that is not
|
|
50
|
+
wired, and a routes file that was never there: every suggestion confidently
|
|
51
|
+
wrong, and the reason visible only from the entry point.
|
|
52
|
+
|
|
53
|
+
**The probe set, and its cost.** A fixed set of filesystem existence checks plus
|
|
54
|
+
one manifest read — no directory walk, no content scan, and never re-derived per
|
|
55
|
+
session. Any ONE marker present means the framework is real:
|
|
56
|
+
|
|
57
|
+
| Probe | Meaning |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `artisan` | the console entry point the skeleton writes |
|
|
60
|
+
| `config/app.php` | the skeleton's bootstrap config |
|
|
61
|
+
| `bootstrap/app.php` | the application bootstrap |
|
|
62
|
+
|
|
63
|
+
`illuminate/*` in `composer.json` with **none** of those markers is
|
|
64
|
+
*components-without-the-framework*. Say so and route away from this skill rather
|
|
65
|
+
than answering as though the framework were there.
|
|
66
|
+
|
|
67
|
+
Implemented deterministically in `src/install/detect_php_shape.ts`
|
|
68
|
+
(`detectPhpShape`), whose `PROBE_PATHS` is this table and whose verdict names
|
|
69
|
+
what a wrong route would have offered.
|
|
70
|
+
|
|
36
71
|
## Procedure: Write Laravel code
|
|
37
72
|
|
|
38
73
|
→ **First apply the `php-coder` skill** — it handles project docs, module docs, patterns, and quality tools.
|
|
@@ -36,7 +36,8 @@ Use this skill when the user asks to create a database migration, add a column,
|
|
|
36
36
|
- Use `decimal` for money — never `float`.
|
|
37
37
|
- Add indexes for columns used in WHERE clauses and JOINs.
|
|
38
38
|
- Match existing column naming patterns in the same table or domain.
|
|
39
|
-
-
|
|
39
|
+
- Declare recovery: a reversible `down()`, or a roll-forward plan in the file
|
|
40
|
+
(see § The recovery contract below). Silence is the violation.
|
|
40
41
|
|
|
41
42
|
## Laravel projects
|
|
42
43
|
|
|
@@ -73,7 +74,10 @@ return new class extends Migration {
|
|
|
73
74
|
$table->foreign('customer_id')
|
|
74
75
|
->references('id')
|
|
75
76
|
->on('customers')
|
|
76
|
-
|
|
77
|
+
// Choose the referential action; never inherit it from a
|
|
78
|
+
// template. See "Referential action is a decision" below.
|
|
79
|
+
->onDelete('cascade'); // cascade: rows here are expendable
|
|
80
|
+
// WITHOUT their customer
|
|
77
81
|
|
|
78
82
|
$table->index('is_active');
|
|
79
83
|
});
|
|
@@ -143,6 +147,54 @@ php artisan migrate --env=testing # testing
|
|
|
143
147
|
1. Migration file with up() and down() methods
|
|
144
148
|
2. Model updates if columns or relationships changed
|
|
145
149
|
|
|
150
|
+
### The recovery contract — one obligation, two branches
|
|
151
|
+
|
|
152
|
+
Every migration declares **one** of these, and silence is the violation:
|
|
153
|
+
|
|
154
|
+
1. a `down()` that restores the prior state; **or**
|
|
155
|
+
2. a **roll-forward recovery plan, written in the migration file itself**, for
|
|
156
|
+
the cases where restoration is genuinely impossible — a completed
|
|
157
|
+
destructive backfill, a dropped column whose data is gone.
|
|
158
|
+
|
|
159
|
+
The second branch is not a lighter obligation. A migration taking it records, in
|
|
160
|
+
its own file comments, all three of:
|
|
161
|
+
|
|
162
|
+
1. **why restoration is impossible**, with the evidence — the data was checked
|
|
163
|
+
and is unrecoverable, not assumed to be;
|
|
164
|
+
2. **the ordered recovery procedure** — the steps, the inputs each needs, and
|
|
165
|
+
the criteria that say recovery succeeded;
|
|
166
|
+
3. **the responsible recovery owner**.
|
|
167
|
+
|
|
168
|
+
Vague intent or missing detail is the violation. The plan lives in the migration
|
|
169
|
+
file and lands in the same diff, because a plan documented "later" somewhere else
|
|
170
|
+
is a plan nobody can review at the moment it matters.
|
|
171
|
+
|
|
172
|
+
## Referential action is a decision
|
|
173
|
+
|
|
174
|
+
The template above labels its `onDelete('cascade')` as **one branch**, not a
|
|
175
|
+
default. Copying it unchanged is how a delete of one customer silently removes
|
|
176
|
+
records that had independent value.
|
|
177
|
+
|
|
178
|
+
| The child row, without its parent, is | Action | What happens |
|
|
179
|
+
|---|---|---|
|
|
180
|
+
| **expendable** — it only means something as part of the parent | `cascade` | deleted with the parent |
|
|
181
|
+
| **self-valued** — it is a record in its own right (an invoice, an audit row, a payment) | `restrict` (or `no action`) | the parent delete FAILS until the child is dealt with |
|
|
182
|
+
| **survivable** — it outlives the parent with the link removed | `set null` | the column is nulled; requires a nullable column |
|
|
183
|
+
|
|
184
|
+
Two consequences worth stating because they are the ones missed:
|
|
185
|
+
|
|
186
|
+
- `restrict` is the safe default for anything a finance, audit, or legal reader
|
|
187
|
+
would expect to still exist. A failed delete is a conversation; a cascaded
|
|
188
|
+
delete is a recovery.
|
|
189
|
+
- `set null` needs the foreign-key column to be nullable, and it needs the
|
|
190
|
+
application to handle the orphan state. Choosing it without both is choosing a
|
|
191
|
+
constraint error later.
|
|
192
|
+
|
|
193
|
+
Soft deletes do **not** interact with this: `onDelete` fires on a real `DELETE`,
|
|
194
|
+
so a soft-deleting parent never triggers it. If the model soft-deletes, the
|
|
195
|
+
referential action describes what happens on a force-delete or a purge, and that
|
|
196
|
+
is the case to decide against.
|
|
197
|
+
|
|
146
198
|
## Gotcha
|
|
147
199
|
|
|
148
200
|
- Always check if the table/column already exists before creating the migration — the model doesn't always check.
|
|
@@ -155,7 +207,9 @@ php artisan migrate --env=testing # testing
|
|
|
155
207
|
- Do NOT create migrations without specifying the correct connection when multiple databases exist.
|
|
156
208
|
- Do NOT create tables without checking the project's naming conventions (prefixes, casing).
|
|
157
209
|
- Do NOT use raw SQL in migrations when Schema builder works.
|
|
158
|
-
- Do NOT
|
|
210
|
+
- Do NOT leave recovery undeclared — ship a `down()` that restores the prior
|
|
211
|
+
state, or the three-part roll-forward plan in the migration file. Neither is
|
|
212
|
+
optional; choosing between them is.
|
|
159
213
|
- Do NOT use `float` for money — use `decimal`.
|
|
160
214
|
- Do NOT forget indexes on foreign keys and frequently filtered columns.
|
|
161
215
|
|