@event4u/agent-config 8.4.1 → 8.6.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +92 -0
- package/README.md +17 -5
- package/dist/agent-src/README.md +1 -1
- package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
- package/dist/agent-src/commands/analyze.md +9 -6
- package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
- package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
- package/dist/agent-src/commands/bug.md +59 -0
- package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
- package/dist/agent-src/commands/{cost-report.md → cost/report.md} +38 -17
- package/dist/agent-src/commands/cost.md +57 -0
- package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
- package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
- package/dist/agent-src/commands/fix.md +7 -4
- package/dist/agent-src/commands/optimize/project.md +250 -0
- package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
- package/dist/agent-src/commands/optimize.md +17 -12
- package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
- package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
- package/dist/agent-src/commands/package.md +56 -0
- package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
- package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
- package/dist/agent-src/commands/project.md +60 -0
- package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
- package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
- package/dist/agent-src/commands/review.md +61 -0
- package/dist/agent-src/commands/security-audit-config.md +24 -23
- package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
- package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
- package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
- package/dist/agent-src/commands/sync.md +58 -0
- package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
- package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
- package/dist/agent-src/commands/tests.md +11 -5
- package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +30 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
- package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/model-recommendations.md +19 -0
- package/dist/agent-src/contexts/skills-and-commands.md +2 -2
- package/dist/agent-src/contexts/subagent-configuration.md +8 -0
- package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
- package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/templates/agent-settings.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/dist/cli/commands/config.js +44 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/uiServe.js +1 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/help.js +38 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/initRouting.js +16 -1
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +43 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +45 -44
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +419 -210
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +31 -25
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +30 -24
- package/dist/install/install.mjs +6064 -159
- package/dist/install/selectedTools.js +39 -10
- package/dist/install/selectedTools.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/app.js +15 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/ping.js +16 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +42 -6
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/settingsChanges.js +55 -0
- package/dist/server/routes/settingsChanges.js.map +1 -0
- package/dist/server/routes/userMd.js +7 -2
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +76 -14
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/writeRoot.js +17 -0
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/settingsSurface.js +120 -0
- package/dist/shared/settingsSurface.js.map +1 -0
- package/dist/ui/assets/index-BPFMZWUs.css +1 -0
- package/dist/ui/assets/index-BiEZiZ31.js +40 -0
- package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
- package/dist/ui/index.html +15 -2
- package/docs/CLAIMS.md +27 -15
- package/docs/architecture.md +1 -1
- package/docs/catalog.md +37 -31
- package/docs/command-flows.md +22 -16
- package/docs/contracts/command-clusters.md +39 -9
- package/docs/contracts/file-ownership-matrix.json +21 -0
- package/docs/contracts/frontmatter-contract.md +1 -1
- package/docs/contracts/gui-wizard.md +16 -4
- package/docs/contracts/iron-law-overrides.txt +1 -0
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/settings-api.md +58 -2
- package/docs/contracts/surface-matrix.md +5 -0
- package/docs/cookbook.md +7 -7
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +125 -0
- package/docs/decisions/INDEX.md +3 -0
- package/docs/featured-commands.md +1 -1
- package/docs/featured-skills.md +4 -4
- package/docs/flows.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started-laravel.md +1 -1
- package/docs/getting-started.md +6 -3
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
- package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
- package/docs/proof.md +12 -2
- package/package.json +3 -1
- package/src/agent-src/README.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/src/config/agent-settings.template.yml +1 -1
- package/src/install/selectedTools.ts +38 -10
- package/src/scripts/_cli/cmd_converge.ts +38 -0
- package/src/scripts/_cli/cmd_doctor.ts +113 -2
- package/src/scripts/_cli/cmd_explain.ts +2 -2
- package/src/scripts/_cli/cmd_export.ts +3 -3
- package/src/scripts/_cli/cmd_fleet.ts +13 -1
- package/src/scripts/_cli/cmd_migrate.ts +3 -3
- package/src/scripts/_cli/cmd_prune.ts +2 -2
- package/src/scripts/_cli/cmd_refresh.ts +4 -4
- package/src/scripts/_cli/cmd_settings_check.ts +2 -2
- package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
- package/src/scripts/_cli/cmd_sync.ts +2 -2
- package/src/scripts/_cli/cmd_uninstall.ts +2 -2
- package/src/scripts/_cli/cmd_update.ts +8 -8
- package/src/scripts/_cli/cmd_upgrade.ts +4 -3
- package/src/scripts/_cli/cmd_validate.ts +3 -3
- package/src/scripts/_cli/cmd_versions.ts +2 -2
- package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/council.ts +2 -2
- package/src/scripts/_cli/explain_last/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/index.ts +2 -2
- package/src/scripts/_cli/explain_last/inputs.ts +4 -4
- package/src/scripts/_cli/explain_last/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/render.ts +2 -2
- package/src/scripts/_cli/explain_last/route.ts +2 -2
- package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
- package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
- package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
- package/src/scripts/_dispatch.bash +20 -1
- package/src/scripts/_lib/agent_settings.ts +1 -1
- package/src/scripts/_lib/agent_src.ts +7 -7
- package/src/scripts/_lib/agents_overlay.ts +1 -1
- package/src/scripts/_lib/auto_dispatch.ts +63 -0
- package/src/scripts/_lib/bench_ab_cache.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
- package/src/scripts/_lib/bench_cost.ts +1 -1
- package/src/scripts/_lib/bench_quality.ts +3 -3
- package/src/scripts/_lib/bench_report.ts +4 -4
- package/src/scripts/_lib/bench_telegraph.ts +1 -1
- package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
- package/src/scripts/_lib/changelog_eras.ts +1 -1
- package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
- package/src/scripts/_lib/cli_wrapper.ts +1 -1
- package/src/scripts/_lib/fs_atomic.ts +1 -1
- package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
- package/src/scripts/_lib/install_layout.ts +1 -1
- package/src/scripts/_lib/install_regenerator.ts +1 -1
- package/src/scripts/_lib/installed_lock.ts +1 -1
- package/src/scripts/_lib/installed_tools.ts +1 -1
- package/src/scripts/_lib/json_pointers.ts +1 -1
- package/src/scripts/_lib/knowledge_global.ts +1 -1
- package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/link_crypto.ts +4 -4
- package/src/scripts/_lib/linked_projects.ts +4 -4
- package/src/scripts/_lib/model_tier.ts +1 -1
- package/src/scripts/_lib/module_detection.ts +2 -2
- package/src/scripts/_lib/pin_resolver.ts +1 -1
- package/src/scripts/_lib/script_output.ts +1 -1
- package/src/scripts/_lib/security_lint.ts +1 -1
- package/src/scripts/_lib/subagent_routing.ts +24 -0
- package/src/scripts/_lib/subagent_steering.ts +213 -3
- package/src/scripts/_lib/surface_tiers.ts +1 -1
- package/src/scripts/_lib/text_similarity.ts +1 -1
- package/src/scripts/_lib/update_check.ts +2 -2
- package/src/scripts/_lib/user_global_paths.ts +1 -1
- package/src/scripts/_lib/value_ladder.ts +1 -1
- package/src/scripts/_lib/value_report.ts +1 -1
- package/src/scripts/_lib/zip_min.ts +2 -2
- package/src/scripts/adoption_report.ts +3 -3
- package/src/scripts/adoption_snapshot.ts +3 -3
- package/src/scripts/adoption_status.ts +2 -2
- package/src/scripts/adr/regenerate_index.ts +3 -3
- package/src/scripts/ai_council/_default_prices.ts +2 -3
- package/src/scripts/ai_council/advisors.ts +1 -1
- package/src/scripts/ai_council/airgap.ts +1 -1
- package/src/scripts/ai_council/budget_guard.ts +1 -1
- package/src/scripts/ai_council/bundler.ts +1 -1
- package/src/scripts/ai_council/cli_hints.ts +1 -1
- package/src/scripts/ai_council/clients.ts +5 -5
- package/src/scripts/ai_council/compile_corpus.ts +1 -1
- package/src/scripts/ai_council/confidence_gate.ts +1 -1
- package/src/scripts/ai_council/config.ts +1 -1
- package/src/scripts/ai_council/consensus.ts +1 -1
- package/src/scripts/ai_council/events_log.ts +1 -1
- package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
- package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
- package/src/scripts/ai_council/low_impact_intake.ts +1 -1
- package/src/scripts/ai_council/modes.ts +1 -1
- package/src/scripts/ai_council/orchestrator.ts +3 -3
- package/src/scripts/ai_council/pricing.ts +2 -2
- package/src/scripts/ai_council/probation_gate.ts +2 -2
- package/src/scripts/ai_council/project_context.ts +1 -1
- package/src/scripts/ai_council/prompts.ts +1 -1
- package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
- package/src/scripts/ai_council/session.ts +1 -1
- package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
- package/src/scripts/ai_council/solo_dispatch.ts +1 -1
- package/src/scripts/analysis_freshness.ts +2 -2
- package/src/scripts/annotate_discovery.ts +2 -2
- package/src/scripts/apply_modules_config.ts +2 -2
- package/src/scripts/audit_adr_coverage.ts +3 -3
- package/src/scripts/audit_auto_rules.ts +2 -2
- package/src/scripts/audit_cloud_compatibility.ts +3 -3
- package/src/scripts/audit_command_surface.ts +2 -2
- package/src/scripts/audit_initial_context.ts +7 -6
- package/src/scripts/audit_likelihood.ts +5 -5
- package/src/scripts/audit_mcp_tools.ts +3 -3
- package/src/scripts/audit_overlap.ts +2 -2
- package/src/scripts/audit_skill_descriptions.ts +2 -2
- package/src/scripts/audit_skill_overlap.ts +5 -5
- package/src/scripts/audit_user_type_axis.ts +4 -4
- package/src/scripts/backfill_model_tier.ts +1 -1
- package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
- package/src/scripts/bench_ab_clone.ts +2 -2
- package/src/scripts/bench_ab_diff.ts +3 -3
- package/src/scripts/bench_ab_integrity.ts +2 -2
- package/src/scripts/bench_ab_run.ts +4 -4
- package/src/scripts/bench_ab_task_runner.ts +1 -1
- package/src/scripts/bench_ab_tracka_run.ts +2 -2
- package/src/scripts/bench_ab_v2_run.ts +1 -1
- package/src/scripts/bench_ab_v2_stats.ts +2 -2
- package/src/scripts/bench_baseline_ready.ts +1 -1
- package/src/scripts/bench_condense_memory.ts +4 -4
- package/src/scripts/bench_drift_check.ts +3 -3
- package/src/scripts/bench_per_tool.ts +1 -1
- package/src/scripts/bench_rtk_savings.ts +4 -4
- package/src/scripts/bench_run.ts +4 -4
- package/src/scripts/bench_runner.ts +1 -1
- package/src/scripts/build_cloud_bundle.ts +3 -3
- package/src/scripts/build_discovery_manifest.ts +13 -15
- package/src/scripts/build_linear_digest.ts +2 -2
- package/src/scripts/build_mcp_registry_manifest.ts +3 -3
- package/src/scripts/build_proof.ts +6 -0
- package/src/scripts/build_rule_trigger_matrix.ts +2 -2
- package/src/scripts/capture_showcase_session.ts +3 -3
- package/src/scripts/chat_history.ts +1 -1
- package/src/scripts/check_always_budget.ts +1 -1
- package/src/scripts/check_artefact_checksums.ts +4 -4
- package/src/scripts/check_artefact_count_messaging.ts +197 -0
- package/src/scripts/check_augment_description_cap.ts +3 -3
- package/src/scripts/check_augmentignore.ts +1 -1
- package/src/scripts/check_beta_review_markers.ts +3 -3
- package/src/scripts/check_bite_sized_granularity.ts +1 -1
- package/src/scripts/check_cluster_patterns.ts +47 -3
- package/src/scripts/check_command_count_messaging.ts +2 -2
- package/src/scripts/check_condensation.ts +2 -2
- package/src/scripts/check_condensed_paths.ts +6 -6
- package/src/scripts/check_context_paths.ts +1 -1
- package/src/scripts/check_council_config_location.ts +3 -3
- package/src/scripts/check_council_layout.ts +2 -2
- package/src/scripts/check_council_references.ts +2 -2
- package/src/scripts/check_discovery_determinism.ts +3 -3
- package/src/scripts/check_gate_paths.ts +4 -4
- package/src/scripts/check_iron_law_prominence.ts +2 -2
- package/src/scripts/check_kernel_rule_bundle.ts +3 -3
- package/src/scripts/check_knowledge_cards.ts +4 -4
- package/src/scripts/check_knowledge_pages.ts +1 -1
- package/src/scripts/check_md_language.ts +3 -3
- package/src/scripts/check_memory.ts +3 -3
- package/src/scripts/check_memory_proposal.ts +2 -2
- package/src/scripts/check_module_management_neutral.ts +1 -1
- package/src/scripts/check_no_conflict_markers.ts +1 -1
- package/src/scripts/check_no_external_sources.ts +1 -1
- package/src/scripts/check_no_local_settings_committed.ts +2 -2
- package/src/scripts/check_no_new_legacy_path.ts +3 -3
- package/src/scripts/check_no_roadmap_refs.ts +3 -3
- package/src/scripts/check_one_off_location.ts +3 -3
- package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
- package/src/scripts/check_portability.ts +3 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +1 -1
- package/src/scripts/check_public_links.ts +2 -2
- package/src/scripts/check_references.ts +3 -3
- package/src/scripts/check_release_includes_discovery.ts +2 -2
- package/src/scripts/check_release_pr_shape.ts +2 -2
- package/src/scripts/check_release_published.ts +1 -1
- package/src/scripts/check_release_trunk_sync.ts +3 -3
- package/src/scripts/check_reply_consistency.ts +1 -1
- package/src/scripts/check_roadmap_trackable.ts +2 -2
- package/src/scripts/check_role_doc_links.ts +2 -2
- package/src/scripts/check_safety_floor_untouched.ts +3 -3
- package/src/scripts/check_skill_requires.ts +2 -2
- package/src/scripts/check_structural_breaking.ts +2 -2
- package/src/scripts/check_surface_tiers.ts +2 -2
- package/src/scripts/check_template_pin_drift.ts +1 -1
- package/src/scripts/check_test_coverage_diff.ts +2 -2
- package/src/scripts/check_token_optimizer_freshness.ts +3 -3
- package/src/scripts/check_trigger_evals.ts +2 -2
- package/src/scripts/check_update_banner.ts +1 -1
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/ci_summary.ts +3 -3
- package/src/scripts/ci_time_ratio.ts +1 -1
- package/src/scripts/command_suggester/cooldown.ts +1 -1
- package/src/scripts/command_suggester/index.ts +1 -1
- package/src/scripts/command_suggester/loader.ts +1 -1
- package/src/scripts/command_suggester/match.ts +1 -1
- package/src/scripts/command_suggester/rank.ts +1 -1
- package/src/scripts/command_suggester/render.ts +1 -1
- package/src/scripts/command_suggester/sanitize.ts +1 -1
- package/src/scripts/command_suggester/settings.ts +1 -1
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +4 -4
- package/src/scripts/condense.ts +3 -3
- package/src/scripts/condense_memory.ts +1 -1
- package/src/scripts/config/index.ts +1 -1
- package/src/scripts/config/packs.ts +1 -1
- package/src/scripts/config/presets.ts +1 -1
- package/src/scripts/config/profile_explain.ts +1 -1
- package/src/scripts/config/profiles.ts +1 -1
- package/src/scripts/config/session_profiles.ts +1 -1
- package/src/scripts/context_hygiene_hook.ts +2 -2
- package/src/scripts/cost_by_conversation.ts +1 -1
- package/src/scripts/cost_summary.ts +2 -2
- package/src/scripts/council_cli.ts +1 -1
- package/src/scripts/council_prune.ts +1 -1
- package/src/scripts/cross_repo_retrieve.ts +2 -2
- package/src/scripts/discovery_stats.ts +3 -3
- package/src/scripts/evidence_report.ts +4 -4
- package/src/scripts/extract_audit_patterns.ts +2 -2
- package/src/scripts/first_run_gate_hook.ts +1 -1
- package/src/scripts/gen_discovery_baseline.ts +2 -2
- package/src/scripts/generate_capabilities_index.ts +2 -2
- package/src/scripts/generate_capability_matrix.ts +2 -2
- package/src/scripts/generate_catalog.ts +2 -2
- package/src/scripts/generate_command_flows.ts +2 -2
- package/src/scripts/generate_cookbook.ts +1 -1
- package/src/scripts/generate_index.ts +3 -3
- package/src/scripts/generate_ownership_matrix.ts +2 -2
- package/src/scripts/generate_pack_manifests.ts +2 -2
- package/src/scripts/generate_role_experiences_catalog.ts +3 -3
- package/src/scripts/hooks/block_no_verify.ts +2 -2
- package/src/scripts/hooks/dispatch_hook.ts +2 -2
- package/src/scripts/hooks/dispatch_issues.ts +1 -1
- package/src/scripts/hooks/envelope.ts +1 -1
- package/src/scripts/hooks/replay_hook.ts +1 -1
- package/src/scripts/hooks/state_io.ts +1 -1
- package/src/scripts/hooks_doctor.ts +1 -1
- package/src/scripts/hooks_status.ts +1 -1
- package/src/scripts/injection_scan_hook.ts +1 -1
- package/src/scripts/install.ts +145 -3
- package/src/scripts/inventory_abstraction_budget.ts +5 -5
- package/src/scripts/inventory_frontmatter.ts +1 -1
- package/src/scripts/inventory_meta_layers.ts +1 -1
- package/src/scripts/iron_law_sha.ts +1 -1
- package/src/scripts/knowledge_global_cli.ts +3 -3
- package/src/scripts/linked_projects_list.ts +1 -1
- package/src/scripts/lint_agent_security.ts +4 -4
- package/src/scripts/lint_agent_skill_names.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +2 -2
- package/src/scripts/lint_agents_md.ts +3 -3
- package/src/scripts/lint_archived_skills.ts +2 -2
- package/src/scripts/lint_artefact_frontmatter.ts +2 -2
- package/src/scripts/lint_bench_ab.ts +2 -2
- package/src/scripts/lint_bench_corpus.ts +1 -1
- package/src/scripts/lint_command_flow_coverage.ts +1 -1
- package/src/scripts/lint_command_routing.ts +2 -2
- package/src/scripts/lint_command_tiers.ts +1 -1
- package/src/scripts/lint_command_verbs.ts +4 -4
- package/src/scripts/lint_commit_subjects.ts +2 -2
- package/src/scripts/lint_context_spine_usage.ts +3 -3
- package/src/scripts/lint_discovery_manifest.ts +4 -4
- package/src/scripts/lint_discovery_vocabulary.ts +2 -2
- package/src/scripts/lint_empty_roadmaps.ts +3 -3
- package/src/scripts/lint_eval_freshness.ts +2 -2
- package/src/scripts/lint_examples.ts +2 -2
- package/src/scripts/lint_explain_trace.ts +2 -2
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +5 -5
- package/src/scripts/lint_framework_leakage.ts +1 -1
- package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
- package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
- package/src/scripts/lint_ghostwriter_source.ts +3 -3
- package/src/scripts/lint_global_paths.ts +1 -1
- package/src/scripts/lint_handoffs.ts +1 -1
- package/src/scripts/lint_hidden_unicode.ts +1 -1
- package/src/scripts/lint_hook_concern_budget.ts +2 -2
- package/src/scripts/lint_hook_manifest.ts +2 -2
- package/src/scripts/lint_instruction_smuggling.ts +1 -1
- package/src/scripts/lint_load_context.ts +2 -2
- package/src/scripts/lint_marketplace.ts +1 -1
- package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
- package/src/scripts/lint_mcp_config_security.ts +1 -1
- package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
- package/src/scripts/lint_media_policy_linkage.ts +3 -3
- package/src/scripts/lint_missions.ts +3 -3
- package/src/scripts/lint_model_tier_coverage.ts +3 -3
- package/src/scripts/lint_namespace.ts +2 -2
- package/src/scripts/lint_namespace_collisions.ts +2 -2
- package/src/scripts/lint_new_skill_gate.ts +3 -3
- package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
- package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
- package/src/scripts/lint_one_off_age.ts +2 -2
- package/src/scripts/lint_orchestration_dsl.ts +3 -3
- package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
- package/src/scripts/lint_pack_boundaries.ts +2 -2
- package/src/scripts/lint_pack_dependencies.ts +2 -2
- package/src/scripts/lint_pack_first_win.ts +2 -2
- package/src/scripts/lint_persona_governance.ts +3 -3
- package/src/scripts/lint_positioning.ts +1 -1
- package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
- package/src/scripts/lint_readme_jargon.ts +2 -2
- package/src/scripts/lint_readme_size.ts +2 -2
- package/src/scripts/lint_regression.ts +3 -3
- package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
- package/src/scripts/lint_roadmap_complexity.ts +1 -1
- package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
- package/src/scripts/lint_role_experiences.ts +2 -2
- package/src/scripts/lint_rule_interactions.ts +1 -1
- package/src/scripts/lint_rule_tiers.ts +1 -1
- package/src/scripts/lint_showcase_sessions.ts +2 -2
- package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_skill_tools.ts +3 -3
- package/src/scripts/lint_ticket_buildable.ts +2 -2
- package/src/scripts/lint_topics_yaml.ts +3 -3
- package/src/scripts/lint_trust_coherence.ts +3 -3
- package/src/scripts/lint_value_dashboard.ts +3 -3
- package/src/scripts/lint_workflow_security.ts +3 -3
- package/src/scripts/lint_workspace_boundary.ts +2 -2
- package/src/scripts/mcp_parity_smoke.ts +1 -1
- package/src/scripts/mcp_render.ts +1 -1
- package/src/scripts/mcp_server/catalog.ts +1 -1
- package/src/scripts/mcp_server/index.ts +1 -1
- package/src/scripts/mcp_server/metadata.ts +1 -1
- package/src/scripts/mcp_server/prompts.ts +1 -1
- package/src/scripts/mcp_server/resources.ts +1 -1
- package/src/scripts/mcp_server/server.ts +1 -1
- package/src/scripts/mcp_server/telemetry.ts +1 -1
- package/src/scripts/mcp_server/tools.ts +1 -1
- package/src/scripts/mcp_telemetry_health.ts +1 -1
- package/src/scripts/mcp_telemetry_query.ts +3 -3
- package/src/scripts/mcp_telemetry_store.ts +3 -3
- package/src/scripts/measure_augment_budget.ts +2 -2
- package/src/scripts/measure_density.ts +2 -2
- package/src/scripts/measure_frugality_savings.ts +3 -3
- package/src/scripts/measure_markitdown_lift.ts +1 -1
- package/src/scripts/measure_patterns.ts +1 -1
- package/src/scripts/measure_projection_bytes.ts +1 -1
- package/src/scripts/measure_rule_budget.ts +1 -1
- package/src/scripts/measure_skill_reduction.ts +1 -1
- package/src/scripts/memory_hash.ts +1 -1
- package/src/scripts/memory_lookup.ts +6 -6
- package/src/scripts/memory_report.ts +1 -1
- package/src/scripts/memory_signal.ts +1 -1
- package/src/scripts/memory_status.ts +2 -2
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
- package/src/scripts/mine_session.ts +3 -3
- package/src/scripts/minimal_safe_diff_hook.ts +2 -2
- package/src/scripts/move_artefact.ts +3 -3
- package/src/scripts/new_skill.ts +3 -3
- package/src/scripts/onboarding_gate_hook.ts +2 -2
- package/src/scripts/pack_mcp_content.ts +1 -1
- package/src/scripts/parity/replay.ts +3 -2
- package/src/scripts/pattern_share.ts +2 -2
- package/src/scripts/plan_physical_move.ts +3 -3
- package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
- package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
- package/src/scripts/prediction-pool/score_ev.ts +2 -2
- package/src/scripts/print_required_checks.ts +2 -2
- package/src/scripts/probe_projection_fidelity.ts +2 -2
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/profile_staleness_hook.ts +2 -2
- package/src/scripts/profile_use.ts +2 -2
- package/src/scripts/project_thin_rules.ts +3 -3
- package/src/scripts/propose_modules_config.ts +2 -2
- package/src/scripts/prototype_lint_contradictions.ts +2 -2
- package/src/scripts/prove_pack_extractable.ts +1 -1
- package/src/scripts/readme_linter.ts +4 -4
- package/src/scripts/redact_hook_capture.ts +2 -2
- package/src/scripts/refine_ticket_detect.ts +1 -1
- package/src/scripts/release.ts +30 -19
- package/src/scripts/render_benchmark_md.ts +2 -2
- package/src/scripts/render_value_md.ts +2 -2
- package/src/scripts/roadmap_progress_hook.ts +1 -1
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/run_skill_evals.ts +2 -2
- package/src/scripts/runtime_dispatcher.ts +1 -1
- package/src/scripts/runtime_handler.ts +1 -1
- package/src/scripts/runtime_registry.ts +3 -3
- package/src/scripts/score_skill_selection.ts +1 -1
- package/src/scripts/security_audit_config.ts +2 -2
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_discovery.ts +1 -1
- package/src/scripts/skill_linter.ts +8 -7
- package/src/scripts/skill_overlap.ts +2 -2
- package/src/scripts/skill_preview.ts +1 -1
- package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
- package/src/scripts/skill_tools/index.ts +1 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
- package/src/scripts/skill_trigger_eval.ts +2 -2
- package/src/scripts/skill_usage_collect.ts +2 -2
- package/src/scripts/skill_usage_report.ts +2 -2
- package/src/scripts/smoke_path_resolution.ts +2 -2
- package/src/scripts/smoke_quickstart.ts +4 -4
- package/src/scripts/snapshot_agent_outputs.ts +2 -2
- package/src/scripts/spotcheck_thin_root.ts +2 -2
- package/src/scripts/surface-tiers.yml +1 -0
- package/src/scripts/sync_agent_settings.ts +2 -2
- package/src/scripts/sync_github_metadata.ts +4 -4
- package/src/scripts/sync_gitignore.ts +3 -3
- package/src/scripts/sync_yaml_rt.ts +2 -2
- package/src/scripts/telegraph_stats.ts +1 -1
- package/src/scripts/tool_registry.ts +2 -2
- package/src/scripts/tools/adapter_errors.ts +1 -1
- package/src/scripts/tools/base_adapter.ts +1 -1
- package/src/scripts/tools/github_adapter.ts +1 -1
- package/src/scripts/tools/jira_adapter.ts +1 -1
- package/src/scripts/trigger_coverage.ts +2 -2
- package/src/scripts/update_counts.ts +68 -6
- package/src/scripts/update_prices.ts +3 -3
- package/src/scripts/validate_agent_settings.ts +3 -3
- package/src/scripts/validate_decision_engine.ts +2 -2
- package/src/scripts/validate_discovery_manifest.ts +3 -3
- package/src/scripts/validate_frontmatter.ts +5 -5
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +2 -2
- package/src/scripts/validate_telegraph_carveouts.ts +3 -3
- package/src/scripts/verify_before_complete_hook.ts +2 -2
- package/src/scripts/verify_physical_move.ts +2 -2
- package/src/scripts/wrapper_freshness_hook.ts +3 -3
- package/src/server/schemas/settings.ts +426 -0
- package/src/shared/settingsSurface.ts +184 -0
- package/src/shared/userMd/formAdapter.ts +86 -0
- package/src/shared/userMd/schema.ts +59 -0
- package/src/shared/userMd/utils.ts +91 -0
- package/dist/agent-src/commands/optimize-project.md +0 -243
- package/dist/ui/assets/index-BbWWuFrF.css +0 -1
- package/dist/ui/assets/index-UjcTG_9O.js +0 -40
- package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
package/docs/decisions/INDEX.md
CHANGED
|
@@ -117,6 +117,9 @@ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
|
|
|
117
117
|
| [ADR-111](ADR-111-canonical-glama-listing.md) | Canonical Glama Listing | accepted | 2026-07-07 | — |
|
|
118
118
|
| [ADR-112](ADR-112-stdio-lite-stays-read-only.md) | Stdio Lite Stays Read Only | accepted | 2026-07-07 | — |
|
|
119
119
|
| [ADR-113](ADR-113-ci-native-release-label-trigger.md) | Ci Native Release Label Trigger | accepted | 2026-07-08 | — |
|
|
120
|
+
| [ADR-114](ADR-114-commit-policy-iron-law-override.md) | Commit Policy Iron Law Override | — | — | — |
|
|
121
|
+
| [ADR-115](ADR-115-command-cluster-consolidation-phase-4.md) | Command Cluster Consolidation Phase 4 | accepted | 2026-07-08 | — |
|
|
122
|
+
| [ADR-116](ADR-116-memory-tripwire-activation-path.md) | Memory Tripwire Activation Path | accepted | 2026-07-08 | — |
|
|
120
123
|
| [ADR-200](ADR-200-python-to-typescript-migration.md) | Python To Typescript Migration | accepted | 2026-06-11 | — |
|
|
121
124
|
|
|
122
125
|
## Unnumbered (legacy)
|
|
@@ -11,7 +11,7 @@ A curated subset of the 124 active commands. Full set lives in
|
|
|
11
11
|
| [`/implement-ticket`](../dist/agent-src/commands/implement-ticket.md) | Drive a Jira / Linear ticket end-to-end through refine → plan → implement → test → verify |
|
|
12
12
|
| [`/work`](../dist/agent-src/commands/work.md) | Same end-to-end loop for a free-form prompt — confidence-band gated |
|
|
13
13
|
| [`/fix ci`](../dist/agent-src/commands/fix.md) | Fetch CI failures from GitHub Actions and fix them |
|
|
14
|
-
| [`/review-changes`](../dist/agent-src/commands/review
|
|
14
|
+
| [`/review-changes`](../dist/agent-src/commands/review/changes.md) | Self-review local changes before creating a PR (five judges) |
|
|
15
15
|
| [`/pr:create`](../dist/agent-src/commands/pr/create.md) | Create a GitHub PR with Jira-linked description |
|
|
16
16
|
|
|
17
17
|
## For everyone
|
package/docs/featured-skills.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Featured Skills
|
|
2
2
|
|
|
3
|
-
A curated subset of the
|
|
3
|
+
A curated subset of the 264 skills. Three tiers, one per primary audience. Full catalog lives in [`dist/agent-src/skills/`](../dist/agent-src/skills/); see also [`docs/catalog.md`](catalog.md) for the complete index and [`docs/featured-commands.md`](featured-commands.md) for command-level highlights.
|
|
4
4
|
|
|
5
5
|
> **Eval-gated messaging note.** Until `task bench --corpus non-dev` reports `selection_accuracy >= 0.60` (see `road-to-product-adoption.md` Phase 1), this page is documentation, not marketing. The entries below are the candidates the corpus tests against; their description quality is what the eval validates.
|
|
6
6
|
|
|
@@ -20,7 +20,7 @@ Each row links to the canonical artefact under `dist/agent-src/`. Substitutions
|
|
|
20
20
|
| [`/refine-prompt`](../dist/agent-src/skills/refine-prompt/SKILL.md) | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans |
|
|
21
21
|
| [`/work`](../dist/agent-src/commands/work.md) | Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report |
|
|
22
22
|
| [`/grill-me`](../dist/agent-src/commands/grill-me.md) | Interactive grill-style interview that sharpens a fuzzy plan / idea into a copyable Markdown pitch |
|
|
23
|
-
| [`/optimize-prompt`](../dist/agent-src/commands/optimize
|
|
23
|
+
| [`/optimize-prompt`](../dist/agent-src/commands/optimize/prompt.md) | Optimize a raw prompt for ChatGPT / Claude / Gemini via the 4-D methodology |
|
|
24
24
|
| [`decision-record`](../dist/agent-src/skills/decision-record/SKILL.md) | Lock a trade-off — options · trade-offs · consequences — before the ADR file is written |
|
|
25
25
|
| [`fundraising-narrative`](../dist/agent-src/skills/fundraising-narrative/SKILL.md) | Why-now / why-us / why-this framing, market-size reasoning, traction-story construction |
|
|
26
26
|
| [`okr-tree-modeling`](../dist/agent-src/skills/okr-tree-modeling/SKILL.md) | Decompose a company objective into team OKRs; audit a draft tree for measurability and laddering |
|
|
@@ -67,7 +67,7 @@ Each row links to the canonical artefact under `dist/agent-src/`. Substitutions
|
|
|
67
67
|
|---|---|
|
|
68
68
|
| [`/work`](../dist/agent-src/commands/work.md) | Free-form prompt end-to-end loop — refine → plan → implement → test → verify, confidence-band gated |
|
|
69
69
|
| [`/implement-ticket`](../dist/agent-src/commands/implement-ticket.md) | Drive a Jira / Linear ticket end-to-end — same loop, ticket-anchored |
|
|
70
|
-
| [`/review-changes`](../dist/agent-src/commands/review
|
|
70
|
+
| [`/review-changes`](../dist/agent-src/commands/review/changes.md) | Self-review local changes before creating a PR — dispatches to five specialized judges and consolidates verdicts |
|
|
71
71
|
| [`/commit`](../dist/agent-src/commands/commit.md) | Stage and commit all uncommitted changes — splits into logical commits following Conventional Commits |
|
|
72
72
|
| [`judge-bug-hunter`](../dist/agent-src/skills/judge-bug-hunter/SKILL.md) | Correctness review — null-safety, edge cases, off-by-one, races, error handling |
|
|
73
73
|
| [`judge-code-quality`](../dist/agent-src/skills/judge-code-quality/SKILL.md) | Readability review — naming, single-responsibility, DRY, dead code, codebase-convention drift |
|
|
@@ -92,4 +92,4 @@ task lint-featured-skills
|
|
|
92
92
|
|
|
93
93
|
CI runs this in `taskfiles/ci-fast.yml`. Stale entries (renamed / removed skill or command) fail the build. See [`scripts/lint_featured_skills.py`](../src/scripts/lint_featured_skills.py) for the matcher.
|
|
94
94
|
|
|
95
|
-
→ Browse all
|
|
95
|
+
→ Browse all 264 skills: [`dist/agent-src/skills/`](../dist/agent-src/skills/) · all 172 commands: [`dist/agent-src/commands/`](../dist/agent-src/commands/)
|
package/docs/flows.md
CHANGED
|
@@ -32,7 +32,7 @@ Explore, plan, estimate, refine, and investigate **before** building.
|
|
|
32
32
|
Drive a prompt, ticket, or feature end-to-end through plan → implement → verify.
|
|
33
33
|
|
|
34
34
|
- **Entry commands:** `/work` · `/implement-ticket` · `/feature:dev` · `/bug-fix`
|
|
35
|
-
- **Canonical path:** `/work` → `/review
|
|
35
|
+
- **Canonical path:** `/work` → `/review changes` → `/fix quality` → `/commit`
|
|
36
36
|
- **Skills:** `test-driven-development` · `code-review` · `systematic-debugging` · `git-workflow`
|
|
37
37
|
|
|
38
38
|
## 🔎 Review — *check it*
|
|
@@ -40,7 +40,7 @@ Drive a prompt, ticket, or feature end-to-end through plan → implement → ver
|
|
|
40
40
|
Self-review, judge, quality-fix, and threat-model a change before it ships.
|
|
41
41
|
|
|
42
42
|
- **Entry commands:** `/review-changes` · `/judge`
|
|
43
|
-
- **Canonical path:** `/review
|
|
43
|
+
- **Canonical path:** `/review changes` → `/judge` → `/fix quality` → `/threat-model`
|
|
44
44
|
- **Skills:** `code-review` · `adversarial-review` · `quality-tools` · `threat-modeling` · `receiving-code-review`
|
|
45
45
|
|
|
46
46
|
## 🚢 Delivery — *ship it*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Pick the entry that matches what you do day-to-day. Each section names the three skills you will reach for first and shows whether MCP (no terminal) or CLI (terminal) is the simpler install path for that role.
|
|
4
4
|
|
|
5
|
-
`agent-config` ships
|
|
5
|
+
`agent-config` ships 264 skills, 95 governed rules, and 172 commands. You do not need all of them. Each role below filters to the slice that pays back in week one; the rest stays available and shows up on demand when a task references it.
|
|
6
6
|
|
|
7
7
|
> **Taglines at a glance →** [`docs/role-experiences.md`](role-experiences.md) — the one-line pitch per role experience, in one table.
|
|
8
8
|
|
|
@@ -30,7 +30,7 @@ The Laravel quality pipeline runs PHPStan + Rector + ECS, with Pest as the test
|
|
|
30
30
|
|
|
31
31
|
- [`quality-tools`](../dist/agent-src/skills/quality-tools/SKILL.md) — PHPStan output triage, Rector apply, ECS fix.
|
|
32
32
|
- [`pest-testing`](../dist/agent-src/skills/pest-testing/SKILL.md) — Pest test authoring patterns.
|
|
33
|
-
- [`/quality
|
|
33
|
+
- [`/fix quality`](../dist/agent-src/commands/fix/quality.md) — runs the full pipeline and fixes reported errors.
|
|
34
34
|
|
|
35
35
|
## Docker and dev environment
|
|
36
36
|
|
package/docs/getting-started.md
CHANGED
|
@@ -39,8 +39,11 @@ project sees the new skills, rules, and hooks at once, no per-repo bump:
|
|
|
39
39
|
```bash
|
|
40
40
|
agent-config upgrade # fetch + install the latest globally (content + hooks)
|
|
41
41
|
agent-config refresh --global # idempotent re-install, same version
|
|
42
|
-
agent-config
|
|
42
|
+
agent-config init --project # initialize a project's minimal surface — bridge
|
|
43
43
|
# marker, agents/overrides/, .gitignore (no wizard)
|
|
44
|
+
agent-config refresh --project # refresh that surface (same writer, idempotent)
|
|
45
|
+
agent-config config # open the configuration GUI (global settings hub)
|
|
46
|
+
agent-config config --project # open the project configuration surface
|
|
44
47
|
agent-config doctor # PATH, hook wiring, duplicate surfaces, bridge presence
|
|
45
48
|
```
|
|
46
49
|
|
|
@@ -168,10 +171,10 @@ Your agent now understands slash commands:
|
|
|
168
171
|
| `/fix ci` | Fetch and fix GitHub Actions failures |
|
|
169
172
|
| `/optimize skills` | Audit skills, find duplicates, run linter |
|
|
170
173
|
| `/feature plan` | Interactively plan a feature |
|
|
171
|
-
| `/quality
|
|
174
|
+
| `/fix quality` | Run and fix all quality checks |
|
|
172
175
|
| `/chat-history import` | Pull a prior session into the current chat (resume) |
|
|
173
176
|
|
|
174
|
-
→ [Browse all
|
|
177
|
+
→ [Browse all 172 active commands](../dist/agent-src/commands/)
|
|
175
178
|
|
|
176
179
|
---
|
|
177
180
|
|
|
@@ -33,7 +33,7 @@ the host lacks (a static host gives it no runtime attention guarantee, but a
|
|
|
33
33
|
runtime-only system gives it nothing at all here). A runtime-only system contributes *nothing* on these hosts.
|
|
34
34
|
|
|
35
35
|
### 2. Intent routing, not a 500-artefact dump
|
|
36
|
-
A prompt does not load all
|
|
36
|
+
A prompt does not load all 264 skills. `dist/router.json` (91 routed rules, intent →
|
|
37
37
|
skill, keyword/phrase/path triggers) carries the right skill on intent. The
|
|
38
38
|
governance value is *selection discipline* — the host gets the relevant rule
|
|
39
39
|
set, not the whole catalogue as context ballast.
|
|
@@ -10,7 +10,7 @@ the **Reference-Guideline Sunset Policy** (see frontmatter `upstream` /
|
|
|
10
10
|
— L1 Quick analysis depth.
|
|
11
11
|
- [`refine-ticket`](../../../.agent-src.uncondensed/skills/refine-ticket/SKILL.md)
|
|
12
12
|
— completeness check on a Jira / Linear ticket before estimation.
|
|
13
|
-
- [`bug-investigate`](../../../.agent-src.uncondensed/commands/bug
|
|
13
|
+
- [`bug-investigate`](../../../.agent-src.uncondensed/commands/bug/investigate.md)
|
|
14
14
|
— gap analysis on an incident report before forming a hypothesis.
|
|
15
15
|
|
|
16
16
|
> **Core principle:** "Quality of decisions equals quality of questions
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
capture, multi-device test sweeps.
|
|
12
12
|
- Intended companions: `react-native-setup` skill (environment),
|
|
13
13
|
`mobile-e2e-strategy` skill (framework selection), `playwright-testing`
|
|
14
|
-
/
|
|
14
|
+
/ `/tests e2e-plan` command (cross-platform E2E strategy).
|
|
15
15
|
- **macOS-only:** Xcode + simctl + (optional) idb require a macOS host.
|
|
16
16
|
On Linux/Windows this guideline is reference-only — no implementation
|
|
17
17
|
recipes are portable.
|
package/docs/proof.md
CHANGED
|
@@ -26,14 +26,24 @@ evidence pointer, or `task check-claims` fails the build.
|
|
|
26
26
|
|
|
27
27
|
| Claim | Kind | Evidence | Resolves |
|
|
28
28
|
|---|---|---|---|
|
|
29
|
+
| 172 commands. | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
|
|
29
30
|
| On a weak host (claude-haiku-4-5) the package produces a significant, placebo-controlled discipline lift on scope/downstream traps; on a strong host the same measurement is a published null — the package transplants discipline a weak model lacks, not model intelligence. | quant | `docs/benchmark.md#weak-host-specific` | ✅ |
|
|
31
|
+
| On the READ-ONLY FAN-OUT slice family, tier-downshifted subagent dispatch (lite/haiku vs session-tier-proxy sonnet) nets a ≥30% USD-weighted token-cost reduction at held quality — measured 2026-07-08 (n=10 paired live dispatches, 20 telemetry lines): 10/10 exact-match on BOTH arms, 29.4% fewer raw tokens, 76.5% USD-weighted cost reduction at the 3x haiku↔sonnet price ratio. FAMILY-SCOPED — the mechanical-edit family is unmeasured and its downshift (incl. the deferred tier downgrades of existing units) stays gated. Negative control held: an open-ended synthesis/unknown slice never resolves below the session tier (inferSliceTier → medium/inherit, never lite). | quant | `internal/bench/routing-downshift/results-2026-07-08.md#FAMILY-SCOPED PROVE` | ✅ |
|
|
30
32
|
| The lift-carrying essential cut (kernel + downstream-changes) keeps a significant weak-host discipline lift at a fraction of the full load's tokens, and the lift is FAMILY- and HOST-SCOPED — measured on three hosts: claude-haiku-4-5 (weak) shows the family-scoped lift (trapE 0.533→1.000, 7/7 discordant, corpus cost 1.71x); claude-sonnet-4-6 (strong) is a ceiling null; gpt-5-mini (non-Claude weak, codex prompt-prepend surface) FAILED replication with headroom (corpus Δ=+0.024 p=0.70, capability trend n.s. — no harm claimed, injection-surface confound documented). Therefore discipline_profile: auto enables the lift only where measured (vendor-granular unknown_defaults). Non-claims — the balanced router profile was removed after a NULL measurement (p=0.81, n=24); no full-tier recommendation exists; no cross-vendor lift is claimed. | quant | `docs/benchmark.md#REPLICATION FAILED` | ✅ |
|
|
31
33
|
| The whole layer is compiled into host agents with zero runtime daemon. | qual | `docs/contracts/no-runtime-boundary.md#file-first, no-runtime suite` | ✅ |
|
|
34
|
+
| 95 governed rules. | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
|
|
35
|
+
| 264 skills (README hero + feature list). | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
|
|
32
36
|
| Removes only its own keys from a shared host config (matched by JSON-pointer + SHA-256), never a neighbour tool's entries. | qual | `docs/contracts/install-layout.md#JSON-pointer` | ✅ |
|
|
33
37
|
|
|
34
|
-
**
|
|
38
|
+
**8 backed claim(s)** — all evidence pointers resolve in CI.
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
Artefact counts in public prose (skills, commands, governed rules,
|
|
41
|
+
guidelines, personas) are **generated from source and CI-drift-checked**:
|
|
42
|
+
`update_counts.ts` writes the numbers, `check_artefact_count_messaging.ts`
|
|
43
|
+
fails the build on any count-shaped prose mention that drifts from the
|
|
44
|
+
source count — or on two different numbers for the same artefact kind.
|
|
45
|
+
|
|
46
|
+
We also publish our **debt**: 1 claim(s) are logged as
|
|
37
47
|
`unbacked` inventory in the ledger — not yet bound, and therefore not
|
|
38
48
|
allowed to carry a marker in public prose. Hiding them would be the
|
|
39
49
|
opposite of the point.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event4u/agent-config",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"description": "Universal AI Agent OS — audited skills, governance rules, commands, and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -38,6 +38,8 @@
|
|
|
38
38
|
"dist/",
|
|
39
39
|
"docs/",
|
|
40
40
|
"src/scripts/",
|
|
41
|
+
"src/server/schemas/",
|
|
42
|
+
"src/shared/",
|
|
41
43
|
"src/install/",
|
|
42
44
|
"src/agent-src/scripts/",
|
|
43
45
|
"src/agent-src/templates/scripts/",
|
package/src/agent-src/README.md
CHANGED
|
@@ -42,7 +42,7 @@ For full details see [augment-infrastructure.md](contexts/augment-infrastructure
|
|
|
42
42
|
|---|---|
|
|
43
43
|
| `/agent-handoff` | Generate context summary for a fresh chat |
|
|
44
44
|
| `/fix-pr-comments` | Fix all open PR review comments |
|
|
45
|
-
| `/quality
|
|
45
|
+
| `/fix quality` | Run PHPStan + Rector and fix errors |
|
|
46
46
|
| `/create-pr` | Create a GitHub PR with description |
|
|
47
47
|
| `/bug-investigate` | Investigate a bug from Jira/Sentry |
|
|
48
48
|
| `/tests-create` | Write tests for current changes |
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* runner and quality tools does this stack actually use, and what is the
|
|
12
12
|
* exact command to invoke them?* It is the engine behind 6.1.0 Step 6 — the
|
|
13
13
|
* toolchain resolver that lets one set of commands (`/tests execute`,
|
|
14
|
-
* `/tests create`, `/quality
|
|
14
|
+
* `/tests create`, `/fix quality`, `/review changes`, `/work`) adapt to
|
|
15
15
|
* phpunit / pest / vitest / jest / playwright / pytest / go / cargo instead
|
|
16
16
|
* of exploding into per-stack command variants.
|
|
17
17
|
*
|
|
@@ -460,7 +460,7 @@ quality:
|
|
|
460
460
|
# tokens. The user runs quality tools manually; remote CI is
|
|
461
461
|
# the authoritative gate. The agent runs a quality tool ONLY
|
|
462
462
|
# when one of three triggers fires:
|
|
463
|
-
# 1. the user explicitly asks this turn (e.g. /quality
|
|
463
|
+
# 1. the user explicitly asks this turn (e.g. /fix quality),
|
|
464
464
|
# 2. CI / the remote pipeline reports a concrete failure —
|
|
465
465
|
# then run exactly that failing check to reproduce + fix,
|
|
466
466
|
# 3. the new-gate carve-out below.
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Persisted record of the AI tools the user actually
|
|
3
|
-
* at `~/.event4u/agent-config/wizard-tools.json`.
|
|
4
|
-
* *selection* — distinct from `installed.lock`
|
|
5
|
-
* deployed to, which for an `--tools=all`
|
|
6
|
-
* machine tool *detection*.
|
|
2
|
+
* Persisted record of the AI tools AND capability packs the user actually
|
|
3
|
+
* selected in the wizard, at `~/.event4u/agent-config/wizard-tools.json`.
|
|
4
|
+
* This is the user's prior *selection* — distinct from `installed.lock`
|
|
5
|
+
* (every tool agent-config was deployed to, which for an `--tools=all`
|
|
6
|
+
* install is the full set) and from machine tool *detection*.
|
|
7
7
|
*
|
|
8
8
|
* Written by the apply route on a real (non-dry-run) wizard-v2 apply, and
|
|
9
|
-
* read by `detect-tools`
|
|
10
|
-
*
|
|
11
|
-
* pre-selecting every installed tool.
|
|
9
|
+
* read by `detect-tools` / the manifest endpoint so a repeat run pre-selects
|
|
10
|
+
* exactly the prior selection. Empty / missing → first run → Step 1 falls
|
|
11
|
+
* back to pre-selecting every installed tool.
|
|
12
|
+
*
|
|
13
|
+
* `packs` was added by road-to-setup-experience (council 2026-07-08,
|
|
14
|
+
* lockfile-extension over settings-YAML surgery): the `packs:` list in
|
|
15
|
+
* `.agent-settings.yml` is only rendered into FRESH settings files, so on
|
|
16
|
+
* machines with an existing file the selection was never persisted anywhere
|
|
17
|
+
* — the wizard forgot installed packs between runs.
|
|
12
18
|
*
|
|
13
19
|
* `AGENT_CONFIG_WIZARD_TOOLS` overrides the path (tests only).
|
|
14
20
|
*/
|
|
@@ -23,17 +29,39 @@ function selectedToolsPath(): string {
|
|
|
23
29
|
return resolve(homedir(), '.event4u', 'agent-config', 'wizard-tools.json');
|
|
24
30
|
}
|
|
25
31
|
|
|
26
|
-
export function writeSelectedTools(tools: string[]): void {
|
|
32
|
+
export function writeSelectedTools(tools: string[], packs?: string[]): void {
|
|
27
33
|
try {
|
|
28
34
|
const path = selectedToolsPath();
|
|
29
35
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
30
|
-
|
|
36
|
+
// Preserve a previously recorded packs list when the caller does not
|
|
37
|
+
// pass one (older call sites) — never silently drop the selection.
|
|
38
|
+
const record: { tools: string[]; packs?: string[] } = { tools };
|
|
39
|
+
const packsToWrite = packs ?? readSelectedPacks();
|
|
40
|
+
if (packsToWrite.length > 0 || packs !== undefined) record.packs = packsToWrite;
|
|
41
|
+
writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
31
42
|
} catch {
|
|
32
43
|
// Best-effort: a failed write just means the next run falls back to
|
|
33
44
|
// pre-selecting installed tools.
|
|
34
45
|
}
|
|
35
46
|
}
|
|
36
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Return the recorded pack selection, or `[]` when absent / unreadable.
|
|
50
|
+
* Optionally intersect with the known-pack set so a stale id never surfaces.
|
|
51
|
+
*/
|
|
52
|
+
export function readSelectedPacks(knownIds?: ReadonlySet<string>): string[] {
|
|
53
|
+
try {
|
|
54
|
+
const raw = readFileSync(selectedToolsPath(), 'utf8');
|
|
55
|
+
const parsed = JSON.parse(raw) as { packs?: unknown };
|
|
56
|
+
const packs = Array.isArray(parsed.packs)
|
|
57
|
+
? parsed.packs.filter((p): p is string => typeof p === 'string')
|
|
58
|
+
: [];
|
|
59
|
+
return knownIds === undefined ? packs : packs.filter((p) => knownIds.has(p));
|
|
60
|
+
} catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
37
65
|
/**
|
|
38
66
|
* Return the recorded selection, or `[]` when absent / unreadable. Optionally
|
|
39
67
|
* intersect with the known-tool set so a stale id never surfaces.
|
|
@@ -250,6 +250,37 @@ export interface MainOptions {
|
|
|
250
250
|
err?: OutSink;
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Live-session notice for reaped Claude Code plugin caches — or null when no
|
|
255
|
+
* reap touched `~/.claude/plugins/`.
|
|
256
|
+
*
|
|
257
|
+
* Removing an installed plugin's cache does NOT reach into Claude Code
|
|
258
|
+
* sessions that are already running: they registered the plugin's hooks at
|
|
259
|
+
* session start and keep firing them, so every subsequent event logs
|
|
260
|
+
* `Failed to run: Plugin directory does not exist: …/plugins/cache/… — run
|
|
261
|
+
* /plugin to reinstall` until the session restarts. Claude Code's own
|
|
262
|
+
* `/plugin to reinstall` hint would recreate exactly the duplicate surface
|
|
263
|
+
* converge just removed — the correct remedy is a restart, so converge says
|
|
264
|
+
* so explicitly (road-to-truth-and-reference-hygiene follow-up, 2026-07-08).
|
|
265
|
+
*/
|
|
266
|
+
export function live_session_notice(executed_reaps: readonly string[]): string | null {
|
|
267
|
+
const hit = executed_reaps.some((r) => r.startsWith('~/.claude/plugins/'));
|
|
268
|
+
if (!hit) {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
return (
|
|
272
|
+
'⚠️ Live-session note: Claude Code sessions that were ALREADY RUNNING still\n' +
|
|
273
|
+
' hold the removed plugin\'s hook registrations. Until you restart them,\n' +
|
|
274
|
+
' every event logs a non-blocking\n' +
|
|
275
|
+
' "Failed to run: Plugin directory does not exist: …/plugins/cache/…"\n' +
|
|
276
|
+
' error. This is cosmetic for new sessions but means the affected LIVE\n' +
|
|
277
|
+
' session\'s plugin-sourced hooks no longer run — restart Claude Code\n' +
|
|
278
|
+
' sessions to clear it. Do NOT follow the error\'s "/plugin to reinstall"\n' +
|
|
279
|
+
' hint: reinstalling recreates the duplicate surface converge just removed\n' +
|
|
280
|
+
' (the ~/.claude/ file projection already carries content AND hooks).'
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
|
|
253
284
|
export function main(argv: string[] | null = null, opts: MainOptions = {}): number {
|
|
254
285
|
let args: Args;
|
|
255
286
|
try {
|
|
@@ -329,6 +360,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
329
360
|
// Perform the cleanup — matrix-declared actions ONLY.
|
|
330
361
|
let failures = 0;
|
|
331
362
|
const report: string[] = [];
|
|
363
|
+
const executed_reaps: string[] = [];
|
|
332
364
|
for (const f of findings) {
|
|
333
365
|
if (f.command) {
|
|
334
366
|
_print(out, `→ ${f.command}`);
|
|
@@ -351,6 +383,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
351
383
|
try {
|
|
352
384
|
fs.rmSync(abs, { recursive: true, force: true });
|
|
353
385
|
report.push(`${f.tool}: reaped package-tagged orphan \`${reap}\``);
|
|
386
|
+
executed_reaps.push(reap);
|
|
354
387
|
_print(out, `→ reaped ${reap}`);
|
|
355
388
|
} catch (e) {
|
|
356
389
|
failures += 1;
|
|
@@ -367,6 +400,11 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
367
400
|
if (report.length === 0) {
|
|
368
401
|
_print(out, ' (no actions completed)');
|
|
369
402
|
}
|
|
403
|
+
const notice = live_session_notice(executed_reaps);
|
|
404
|
+
if (notice !== null) {
|
|
405
|
+
_print(out);
|
|
406
|
+
_print(out, notice);
|
|
407
|
+
}
|
|
370
408
|
_print(
|
|
371
409
|
out,
|
|
372
410
|
'Rollback hint: a removed Claude Code plugin can be reinstalled with\n' +
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* `agent-config doctor` — install + manifest health report (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_doctor.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* report lines (✅/❌/⚠️/⏭️ glyphs, ordering, fix hints), same filesystem
|
|
9
9
|
* semantics. No behaviour changes — latent quirks are replicated, not fixed.
|
|
@@ -731,6 +731,7 @@ const CHECK_IDS = [
|
|
|
731
731
|
'scope',
|
|
732
732
|
'global-binary',
|
|
733
733
|
'claude-plugin',
|
|
734
|
+
'claude-command-wrappers',
|
|
734
735
|
'surface-state',
|
|
735
736
|
'hook-wiring',
|
|
736
737
|
'stale-orphans',
|
|
@@ -745,6 +746,7 @@ const CHECK_IDS = [
|
|
|
745
746
|
'council-cli',
|
|
746
747
|
'unsupported-combos',
|
|
747
748
|
'wizard-state',
|
|
749
|
+
'settings-review-pending',
|
|
748
750
|
] as const;
|
|
749
751
|
|
|
750
752
|
/** Checks that need only the project root and run regardless of a lockfile. */
|
|
@@ -752,6 +754,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
|
|
|
752
754
|
'scope',
|
|
753
755
|
'global-binary',
|
|
754
756
|
'claude-plugin',
|
|
757
|
+
'claude-command-wrappers',
|
|
755
758
|
'surface-state',
|
|
756
759
|
'hook-wiring',
|
|
757
760
|
'stale-orphans',
|
|
@@ -762,6 +765,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
|
|
|
762
765
|
'tier-usage-readiness',
|
|
763
766
|
'council-cli',
|
|
764
767
|
'wizard-state',
|
|
768
|
+
'settings-review-pending',
|
|
765
769
|
]);
|
|
766
770
|
|
|
767
771
|
/** Checks that genuinely cannot run without the project manifest. */
|
|
@@ -1077,6 +1081,69 @@ function _check_claude_plugin(): Dict {
|
|
|
1077
1081
|
};
|
|
1078
1082
|
}
|
|
1079
1083
|
|
|
1084
|
+
/**
|
|
1085
|
+
* Claude Code flat-command discovery mitigation (council 2026-07-08,
|
|
1086
|
+
* cc-user-command-discovery): Claude Code ≤ 2.1.204 does not register FLAT
|
|
1087
|
+
* user-scope command files (`~/.claude/commands/<name>.md`) — nested
|
|
1088
|
+
* commands and user-scope skills do. The installer therefore projects
|
|
1089
|
+
* tier-0/1 visible flat commands as skill wrappers. This check flags the
|
|
1090
|
+
* silent-failure state: a projection deployed by an OLDER release that
|
|
1091
|
+
* still carries visible flat commands without wrappers (users see
|
|
1092
|
+
* "Unknown command" for /commit etc. with zero error anywhere).
|
|
1093
|
+
* Probe = `commit` (the canonical always-shipped visible flat command);
|
|
1094
|
+
* static file checks only — never a live model call.
|
|
1095
|
+
*/
|
|
1096
|
+
function _check_claude_command_wrappers(): Dict {
|
|
1097
|
+
const claude = shutilWhich('claude');
|
|
1098
|
+
if (claude === null) {
|
|
1099
|
+
return {
|
|
1100
|
+
id: 'claude-command-wrappers',
|
|
1101
|
+
status: 'skipped',
|
|
1102
|
+
message: 'Claude Code CLI not on PATH — wrapper check not applicable',
|
|
1103
|
+
remedy: '',
|
|
1104
|
+
};
|
|
1105
|
+
}
|
|
1106
|
+
const anchor = path.join(os.homedir(), '.claude');
|
|
1107
|
+
const commands_dir = path.join(anchor, 'commands');
|
|
1108
|
+
if (!isDir(commands_dir)) {
|
|
1109
|
+
return {
|
|
1110
|
+
id: 'claude-command-wrappers',
|
|
1111
|
+
status: 'skipped',
|
|
1112
|
+
message: 'no ~/.claude/commands projection — nothing to check',
|
|
1113
|
+
remedy: '',
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
const flat_probe = fs.existsSync(path.join(commands_dir, 'commit.md'));
|
|
1117
|
+
const wrapper_probe = fs.existsSync(path.join(anchor, 'skills', 'commit', 'SKILL.md'));
|
|
1118
|
+
if (wrapper_probe) {
|
|
1119
|
+
return {
|
|
1120
|
+
id: 'claude-command-wrappers',
|
|
1121
|
+
status: 'ok',
|
|
1122
|
+
message:
|
|
1123
|
+
'flat-command skill wrappers present (Claude Code flat-command ' +
|
|
1124
|
+
'discovery workaround active)',
|
|
1125
|
+
remedy: '',
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
if (flat_probe) {
|
|
1129
|
+
return {
|
|
1130
|
+
id: 'claude-command-wrappers',
|
|
1131
|
+
status: 'warn',
|
|
1132
|
+
message:
|
|
1133
|
+
'visible flat commands deployed WITHOUT skill wrappers — Claude Code ' +
|
|
1134
|
+
'\u2264 2.1.204 does not register flat user-scope command files, so ' +
|
|
1135
|
+
'/commit and other visible commands appear as "Unknown command"',
|
|
1136
|
+
remedy: 'agent-config refresh --global (re-deploys with the wrapper projection)',
|
|
1137
|
+
};
|
|
1138
|
+
}
|
|
1139
|
+
return {
|
|
1140
|
+
id: 'claude-command-wrappers',
|
|
1141
|
+
status: 'skipped',
|
|
1142
|
+
message: 'no visible flat commands in the projection — nothing to wrap',
|
|
1143
|
+
remedy: '',
|
|
1144
|
+
};
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1080
1147
|
/**
|
|
1081
1148
|
* Matrix-driven duplicate-surface check (road-to-install-path-convergence
|
|
1082
1149
|
* Phase 2): reads src/config/surface-matrix.yml and flags every tool whose
|
|
@@ -1167,6 +1234,7 @@ function pathExistsAny(p: string): boolean {
|
|
|
1167
1234
|
}
|
|
1168
1235
|
}
|
|
1169
1236
|
|
|
1237
|
+
|
|
1170
1238
|
/**
|
|
1171
1239
|
* Managed hook wiring (single-surface model): the deterministic hook matrix
|
|
1172
1240
|
* must be registered in ~/.claude/settings.json AND the dispatch target
|
|
@@ -1900,6 +1968,43 @@ function _check_wizard_state(): Dict {
|
|
|
1900
1968
|
};
|
|
1901
1969
|
}
|
|
1902
1970
|
|
|
1971
|
+
/**
|
|
1972
|
+
* Pending settings-surface review (road-to-settings-change-review): the
|
|
1973
|
+
* installer writes `state/settings-delta.json` when an upgrade changed
|
|
1974
|
+
* defaults / enum vocabularies / added settings. The flag persists until
|
|
1975
|
+
* the user resolves the review form (`agent-config config` → Settings →
|
|
1976
|
+
* banner) — this check keeps it visible in every doctor run.
|
|
1977
|
+
*/
|
|
1978
|
+
function _check_settings_review_pending(): Dict {
|
|
1979
|
+
const delta_pth = path.join(user_global_paths.event4u_root(), 'state', 'settings-delta.json');
|
|
1980
|
+
if (!pathExists(delta_pth)) {
|
|
1981
|
+
return {
|
|
1982
|
+
id: 'settings-review-pending',
|
|
1983
|
+
status: 'ok',
|
|
1984
|
+
message: 'no pending settings-surface changes',
|
|
1985
|
+
remedy: '',
|
|
1986
|
+
};
|
|
1987
|
+
}
|
|
1988
|
+
let summary = '';
|
|
1989
|
+
try {
|
|
1990
|
+
const data = JSON.parse(readText0(delta_pth)) as {
|
|
1991
|
+
oldVersion?: string;
|
|
1992
|
+
newVersion?: string;
|
|
1993
|
+
changes?: unknown[];
|
|
1994
|
+
};
|
|
1995
|
+
const n = Array.isArray(data.changes) ? data.changes.length : 0;
|
|
1996
|
+
summary = `${n} change${n === 1 ? '' : 's'} (${data.oldVersion ?? '?'} → ${data.newVersion ?? '?'})`;
|
|
1997
|
+
} catch {
|
|
1998
|
+
summary = 'unreadable delta file';
|
|
1999
|
+
}
|
|
2000
|
+
return {
|
|
2001
|
+
id: 'settings-review-pending',
|
|
2002
|
+
status: 'warn',
|
|
2003
|
+
message: `settings surface changed on upgrade — ${summary} awaiting review`,
|
|
2004
|
+
remedy: 'agent-config config (Settings → “Review changes” banner)',
|
|
2005
|
+
};
|
|
2006
|
+
}
|
|
2007
|
+
|
|
1903
2008
|
interface JsonDecodeError {
|
|
1904
2009
|
msg: string;
|
|
1905
2010
|
lineno: number;
|
|
@@ -2008,6 +2113,7 @@ function _run_checks(
|
|
|
2008
2113
|
scope: () => _check_scope(project_root),
|
|
2009
2114
|
'global-binary': () => _check_global_binary(project_root),
|
|
2010
2115
|
'claude-plugin': _check_claude_plugin,
|
|
2116
|
+
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
2011
2117
|
'surface-state': _check_surface_state,
|
|
2012
2118
|
'hook-wiring': _check_hook_wiring,
|
|
2013
2119
|
'stale-orphans': _check_stale_orphans,
|
|
@@ -2028,6 +2134,7 @@ function _run_checks(
|
|
|
2028
2134
|
'council-cli': () => _check_council_cli(project_root),
|
|
2029
2135
|
'unsupported-combos': () => _check_unsupported_combos(manifest),
|
|
2030
2136
|
'wizard-state': _check_wizard_state,
|
|
2137
|
+
'settings-review-pending': _check_settings_review_pending,
|
|
2031
2138
|
};
|
|
2032
2139
|
const out: Dict[] = [];
|
|
2033
2140
|
for (const cid of CHECK_IDS) {
|
|
@@ -2082,6 +2189,7 @@ function _run_checks_no_manifest(
|
|
|
2082
2189
|
scope: () => _check_scope(project_root),
|
|
2083
2190
|
'global-binary': () => _check_global_binary(project_root),
|
|
2084
2191
|
'claude-plugin': _check_claude_plugin,
|
|
2192
|
+
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
2085
2193
|
'surface-state': _check_surface_state,
|
|
2086
2194
|
'hook-wiring': _check_hook_wiring,
|
|
2087
2195
|
'stale-orphans': _check_stale_orphans,
|
|
@@ -2096,6 +2204,7 @@ function _run_checks_no_manifest(
|
|
|
2096
2204
|
'council-cli': () => _check_council_cli(project_root),
|
|
2097
2205
|
'unsupported-combos': () => _skipped_manifest_check('unsupported-combos'),
|
|
2098
2206
|
'wizard-state': _check_wizard_state,
|
|
2207
|
+
'settings-review-pending': _check_settings_review_pending,
|
|
2099
2208
|
};
|
|
2100
2209
|
const out: Dict[] = [];
|
|
2101
2210
|
for (const cid of CHECK_IDS) {
|
|
@@ -2572,6 +2681,7 @@ export {
|
|
|
2572
2681
|
_check_lockfile_freshness,
|
|
2573
2682
|
_check_global_binary,
|
|
2574
2683
|
_check_claude_plugin,
|
|
2684
|
+
_check_claude_command_wrappers,
|
|
2575
2685
|
_check_bridge_drift,
|
|
2576
2686
|
_check_mcp_mode,
|
|
2577
2687
|
_check_offline_readiness,
|
|
@@ -2582,6 +2692,7 @@ export {
|
|
|
2582
2692
|
_check_council_cli,
|
|
2583
2693
|
_check_unsupported_combos,
|
|
2584
2694
|
_check_wizard_state,
|
|
2695
|
+
_check_settings_review_pending,
|
|
2585
2696
|
_run_checks,
|
|
2586
2697
|
_skipped_manifest_check,
|
|
2587
2698
|
_check_bridge_drift_no_manifest,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* `agent-config explain` — print the decision chain behind an outcome
|
|
4
4
|
* (TypeScript twin).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* migration). The CLI contract
|
|
6
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_explain.py` (ADR-200, py2ts
|
|
7
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
8
8
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
9
9
|
* output. No behaviour changes — latent quirks are replicated, not fixed.
|
|
10
10
|
*
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config export` — eject a tool's canonical content into the project
|
|
3
3
|
* (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_export.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output, same filesystem effects. No behaviour changes; latent quirks are
|
|
9
9
|
* replicated and flagged inline, not fixed.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* and never calls `process.exit()`. argparse usage errors throw
|
|
20
20
|
* `ArgparseExit(2)`; `-h`/`--help` throws `ArgparseExit(0)`.
|
|
21
21
|
* - The 9 marker constants and templates resolve to the same byte content as
|
|
22
|
-
* the Python
|
|
22
|
+
* the retired Python implementations: marker constants are re-exported from the
|
|
23
23
|
* `install.ts` twin (single source of truth); templates are read from
|
|
24
24
|
* `dist/agent-src/templates` via `_from_template` exactly as Python does.
|
|
25
25
|
* - `hashlib.sha256(content.encode("utf-8")).hexdigest()` →
|
|
@@ -43,7 +43,19 @@ export interface FleetRepo {
|
|
|
43
43
|
readonly tools?: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Parsed fleet config.
|
|
48
|
+
*
|
|
49
|
+
* INPUT-SCHEMA STABILITY: **stable, v1** (marked 2026-07-08,
|
|
50
|
+
* road-to-truth-and-reference-hygiene P3 — the output report was versioned
|
|
51
|
+
* from day one via {@link FleetReport.schema_version}; the input contract
|
|
52
|
+
* deserves the same explicitness). The accepted `fleet.yaml` shape is
|
|
53
|
+
* `repos: [<path-string> | {path, tools?}]` + optional `max_concurrency`;
|
|
54
|
+
* unknown keys are IGNORED (tolerant reader — forward-compatible by
|
|
55
|
+
* construction). Additive optional keys bump nothing; a breaking key
|
|
56
|
+
* rename/removal or semantics change requires an explicit `schema_version`
|
|
57
|
+
* field in the input and a reader that accepts the versionless v1 form.
|
|
58
|
+
*/
|
|
47
59
|
export interface FleetSpec {
|
|
48
60
|
readonly repos: readonly FleetRepo[];
|
|
49
61
|
readonly maxConcurrency: number;
|