@event4u/agent-config 2.26.0 → 3.1.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/.agent-src/commands/agent-handoff.md +15 -3
- package/.agent-src/commands/agent-status.md +12 -0
- package/.agent-src/commands/agents/audit.md +12 -0
- package/.agent-src/commands/agents/init.md +12 -0
- package/.agent-src/commands/agents/optimize.md +12 -0
- package/.agent-src/commands/agents/user/accept.md +12 -0
- package/.agent-src/commands/agents/user/init.md +12 -0
- package/.agent-src/commands/agents/user/review.md +12 -0
- package/.agent-src/commands/agents/user/show.md +12 -0
- package/.agent-src/commands/agents/user/update.md +12 -0
- package/.agent-src/commands/agents/user.md +12 -0
- package/.agent-src/commands/agents.md +12 -0
- package/.agent-src/commands/analyze-reference-repo.md +15 -3
- package/.agent-src/commands/bug-fix.md +12 -0
- package/.agent-src/commands/bug-investigate.md +13 -1
- package/.agent-src/commands/challenge-me/vision.md +12 -0
- package/.agent-src/commands/challenge-me/with-docs.md +12 -0
- package/.agent-src/commands/challenge-me.md +12 -0
- package/.agent-src/commands/chat-history/import.md +16 -4
- package/.agent-src/commands/chat-history/learn.md +15 -3
- package/.agent-src/commands/chat-history/show.md +17 -5
- package/.agent-src/commands/chat-history.md +14 -2
- package/.agent-src/commands/check-current-md.md +12 -0
- package/.agent-src/commands/commit/in-chunks.md +12 -0
- package/.agent-src/commands/commit.md +12 -0
- package/.agent-src/commands/compress.md +12 -0
- package/.agent-src/commands/context/create.md +17 -5
- package/.agent-src/commands/context/refactor.md +15 -3
- package/.agent-src/commands/context.md +12 -0
- package/.agent-src/commands/cost-report.md +12 -0
- package/.agent-src/commands/council/analysis.md +15 -3
- package/.agent-src/commands/council/debate.md +17 -5
- package/.agent-src/commands/council/default.md +17 -5
- package/.agent-src/commands/council/design.md +12 -0
- package/.agent-src/commands/council/optimize.md +12 -0
- package/.agent-src/commands/council/pr.md +12 -0
- package/.agent-src/commands/council.md +13 -1
- package/.agent-src/commands/create-pr/description-only.md +12 -0
- package/.agent-src/commands/create-pr.md +39 -0
- package/.agent-src/commands/e2e-heal.md +12 -0
- package/.agent-src/commands/e2e-plan.md +12 -0
- package/.agent-src/commands/estimate-ticket.md +12 -0
- package/.agent-src/commands/feature/dev.md +13 -1
- package/.agent-src/commands/feature/explore.md +12 -0
- package/.agent-src/commands/feature/plan.md +14 -2
- package/.agent-src/commands/feature/refactor.md +12 -0
- package/.agent-src/commands/feature/roadmap.md +12 -0
- package/.agent-src/commands/feature.md +12 -0
- package/.agent-src/commands/fix/ci.md +12 -0
- package/.agent-src/commands/fix/portability.md +12 -0
- package/.agent-src/commands/fix/pr-bot-comments.md +12 -0
- package/.agent-src/commands/fix/pr-comments.md +12 -0
- package/.agent-src/commands/fix/pr-developer-comments.md +12 -0
- package/.agent-src/commands/fix/refs.md +12 -0
- package/.agent-src/commands/fix/seeder.md +12 -0
- package/.agent-src/commands/fix.md +12 -0
- package/.agent-src/commands/ghostwriter/delete.md +20 -8
- package/.agent-src/commands/ghostwriter/fetch.md +19 -7
- package/.agent-src/commands/ghostwriter/list.md +19 -7
- package/.agent-src/commands/ghostwriter/show.md +14 -2
- package/.agent-src/commands/ghostwriter/write.md +15 -3
- package/.agent-src/commands/ghostwriter.md +14 -2
- package/.agent-src/commands/grill-me.md +12 -0
- package/.agent-src/commands/implement-ticket.md +12 -0
- package/.agent-src/commands/install-via-agent.md +129 -0
- package/.agent-src/commands/jira-ticket.md +12 -0
- package/.agent-src/commands/judge/on-diff.md +12 -0
- package/.agent-src/commands/judge/solo.md +12 -0
- package/.agent-src/commands/judge/steps.md +12 -0
- package/.agent-src/commands/judge.md +12 -0
- package/.agent-src/commands/memory/add.md +12 -0
- package/.agent-src/commands/memory/learn-low-impact.md +18 -6
- package/.agent-src/commands/memory/load.md +12 -0
- package/.agent-src/commands/memory/mine-session.md +12 -0
- package/.agent-src/commands/memory/promote.md +12 -0
- package/.agent-src/commands/memory/propose.md +12 -0
- package/.agent-src/commands/memory.md +12 -0
- package/.agent-src/commands/mode.md +12 -0
- package/.agent-src/commands/module/create.md +12 -0
- package/.agent-src/commands/module/explore.md +13 -1
- package/.agent-src/commands/module.md +12 -0
- package/.agent-src/commands/optimize/agents-dir.md +14 -2
- package/.agent-src/commands/optimize/augmentignore.md +12 -0
- package/.agent-src/commands/optimize/rtk.md +12 -0
- package/.agent-src/commands/optimize/skills.md +12 -0
- package/.agent-src/commands/optimize-prompt.md +12 -0
- package/.agent-src/commands/optimize.md +12 -0
- package/.agent-src/commands/orchestrate.md +13 -1
- package/.agent-src/commands/override/create.md +12 -0
- package/.agent-src/commands/override/manage.md +12 -0
- package/.agent-src/commands/override.md +12 -0
- package/.agent-src/commands/package-reset.md +12 -0
- package/.agent-src/commands/package-test.md +12 -0
- package/.agent-src/commands/post-as/ghostwriter.md +12 -0
- package/.agent-src/commands/post-as/me.md +13 -1
- package/.agent-src/commands/post-as.md +12 -0
- package/.agent-src/commands/prepare-for-review.md +12 -0
- package/.agent-src/commands/project-analyze.md +27 -15
- package/.agent-src/commands/project-health.md +13 -1
- package/.agent-src/commands/quality-fix.md +12 -0
- package/.agent-src/commands/refine-ticket.md +12 -0
- package/.agent-src/commands/research/deep.md +12 -0
- package/.agent-src/commands/research/report.md +12 -0
- package/.agent-src/commands/research.md +12 -0
- package/.agent-src/commands/review-changes.md +12 -0
- package/.agent-src/commands/review-routing.md +12 -0
- package/.agent-src/commands/roadmap/ai-council.md +15 -3
- package/.agent-src/commands/roadmap/create.md +13 -1
- package/.agent-src/commands/roadmap/process-full.md +12 -0
- package/.agent-src/commands/roadmap/process-phase.md +12 -0
- package/.agent-src/commands/roadmap/process-step.md +12 -0
- package/.agent-src/commands/roadmap.md +12 -0
- package/.agent-src/commands/rule-compliance-audit.md +12 -0
- package/.agent-src/commands/set-cost-profile.md +12 -0
- package/.agent-src/commands/sync-agent-settings.md +12 -0
- package/.agent-src/commands/sync-gitignore/fix.md +32 -13
- package/.agent-src/commands/sync-gitignore.md +13 -1
- package/.agent-src/commands/tests/create.md +12 -0
- package/.agent-src/commands/tests/execute.md +12 -0
- package/.agent-src/commands/tests.md +12 -0
- package/.agent-src/commands/threat-model.md +12 -0
- package/.agent-src/commands/update-form-request-messages.md +12 -0
- package/.agent-src/commands/upstream-contribute.md +12 -0
- package/.agent-src/commands/video/from-script.md +13 -1
- package/.agent-src/commands/video/scene.md +12 -0
- package/.agent-src/commands/video/stitch.md +13 -1
- package/.agent-src/commands/video/storyboard.md +12 -0
- package/.agent-src/commands/video.md +13 -1
- package/.agent-src/commands/work.md +12 -0
- package/.agent-src/contexts/augment-infrastructure.md +2 -2
- package/.agent-src/contexts/authority/scope-mechanics.md +11 -0
- package/.agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
- package/.agent-src/contexts/documentation-hierarchy.md +2 -2
- package/.agent-src/contexts/execution/cheap-question-mechanics.md +81 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +19 -0
- package/.agent-src/ghostwriter/README.md +2 -2
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/.agent-src/personas/README.md +1 -1
- package/.agent-src/personas/advisors/contrarian.md +1 -1
- package/.agent-src/personas/advisors/executor.md +1 -1
- package/.agent-src/personas/advisors/expansionist.md +1 -1
- package/.agent-src/personas/advisors/first-principles.md +1 -1
- package/.agent-src/personas/advisors/outsider.md +1 -1
- package/.agent-src/rules/agent-authority.md +12 -0
- package/.agent-src/rules/analysis-skill-routing.md +12 -0
- package/.agent-src/rules/architecture.md +13 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +13 -1
- package/.agent-src/rules/artifact-engagement-recording.md +13 -1
- package/.agent-src/rules/ask-when-uncertain.md +12 -0
- package/.agent-src/rules/augment-edit-discipline.md +13 -1
- package/.agent-src/rules/augment-source-of-truth.md +13 -1
- package/.agent-src/rules/autonomous-execution.md +13 -1
- package/.agent-src/rules/caveman-speak.md +15 -3
- package/.agent-src/rules/cli-output-handling.md +13 -1
- package/.agent-src/rules/command-suggestion-policy.md +13 -1
- package/.agent-src/rules/commit-conventions.md +13 -1
- package/.agent-src/rules/commit-policy.md +12 -0
- package/.agent-src/rules/context-hygiene.md +51 -3
- package/.agent-src/rules/copilot-routing.md +13 -1
- package/.agent-src/rules/devcontainer-routing.md +13 -1
- package/.agent-src/rules/direct-answers.md +12 -0
- package/.agent-src/rules/docker-commands.md +13 -1
- package/.agent-src/rules/domain-adoption-policy.md +17 -5
- package/.agent-src/rules/domain-safety-disclaimer.md +13 -1
- package/.agent-src/rules/domain-safety-pii.md +13 -1
- package/.agent-src/rules/domain-safety-retention.md +13 -1
- package/.agent-src/rules/downstream-changes.md +13 -1
- package/.agent-src/rules/engineering-safety-floor.md +102 -0
- package/.agent-src/rules/external-reference-deep-dive.md +13 -1
- package/.agent-src/rules/fast-path-marker-visibility.md +21 -1
- package/.agent-src/rules/finance-safety-floor.md +114 -0
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +13 -1
- package/.agent-src/rules/git-history-discipline.md +14 -2
- package/.agent-src/rules/guidelines.md +12 -0
- package/.agent-src/rules/improve-before-implement.md +13 -1
- package/.agent-src/rules/invite-challenge.md +13 -1
- package/.agent-src/rules/language-and-tone.md +12 -0
- package/.agent-src/rules/laravel-routing.md +13 -1
- package/.agent-src/rules/laravel-translations.md +13 -1
- package/.agent-src/rules/low-impact-corpus-privacy-floor.md +17 -5
- package/.agent-src/rules/markdown-safe-codeblocks.md +13 -1
- package/.agent-src/rules/media-governance-routing.md +27 -15
- package/.agent-src/rules/minimal-safe-diff.md +13 -1
- package/.agent-src/rules/missing-tool-handling.md +13 -1
- package/.agent-src/rules/model-recommendation.md +13 -1
- package/.agent-src/rules/no-attribution-footers.md +13 -1
- package/.agent-src/rules/no-cheap-questions.md +46 -32
- package/.agent-src/rules/no-roadmap-references.md +28 -16
- package/.agent-src/rules/non-destructive-by-default.md +12 -0
- package/.agent-src/rules/onboarding-gate.md +19 -6
- package/.agent-src/rules/package-ci-checks.md +12 -0
- package/.agent-src/rules/persona-governance.md +13 -1
- package/.agent-src/rules/php-coding.md +13 -1
- package/.agent-src/rules/preservation-guard.md +13 -1
- package/.agent-src/rules/provider-lifecycle-discipline.md +18 -6
- package/.agent-src/rules/reviewer-awareness.md +13 -1
- package/.agent-src/rules/roadmap-ci-steps-policy.md +13 -1
- package/.agent-src/rules/roadmap-progress-sync.md +18 -1
- package/.agent-src/rules/role-mode-adherence.md +13 -1
- package/.agent-src/rules/rule-type-governance.md +13 -1
- package/.agent-src/rules/runtime-safety.md +13 -1
- package/.agent-src/rules/scope-control.md +12 -0
- package/.agent-src/rules/security-sensitive-stop.md +13 -1
- package/.agent-src/rules/size-enforcement.md +12 -0
- package/.agent-src/rules/skill-improvement-trigger.md +13 -1
- package/.agent-src/rules/skill-quality.md +13 -1
- package/.agent-src/rules/slash-command-routing-policy.md +13 -1
- package/.agent-src/rules/strategy-safety-floor.md +114 -0
- package/.agent-src/rules/symfony-routing.md +13 -1
- package/.agent-src/rules/think-before-action.md +13 -1
- package/.agent-src/rules/token-efficiency.md +13 -1
- package/.agent-src/rules/token-optimizer-maintenance.md +12 -0
- package/.agent-src/rules/tool-safety.md +13 -1
- package/.agent-src/rules/ui-audit-gate.md +13 -1
- package/.agent-src/rules/upstream-proposal.md +13 -1
- package/.agent-src/rules/user-interaction.md +13 -1
- package/.agent-src/rules/user-interrupt-priority.md +12 -0
- package/.agent-src/rules/verify-before-complete.md +12 -0
- package/.agent-src/skills/accessibility-auditor/SKILL.md +12 -0
- package/.agent-src/skills/activation-design/SKILL.md +12 -0
- package/.agent-src/skills/adr-create/SKILL.md +12 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +12 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +16 -4
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +28 -10
- package/.agent-src/skills/ai-council/SKILL.md +28 -15
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +12 -0
- package/.agent-src/skills/analysis-skill-router/SKILL.md +12 -0
- package/.agent-src/skills/api-design/SKILL.md +13 -3
- package/.agent-src/skills/api-endpoint/SKILL.md +12 -0
- package/.agent-src/skills/api-testing/SKILL.md +12 -0
- package/.agent-src/skills/architecture-review-lens/SKILL.md +12 -0
- package/.agent-src/skills/artisan-commands/SKILL.md +12 -0
- package/.agent-src/skills/async-python-patterns/SKILL.md +13 -1
- package/.agent-src/skills/authz-review/SKILL.md +12 -2
- package/.agent-src/skills/aws-infrastructure/SKILL.md +12 -0
- package/.agent-src/skills/blade-ui/SKILL.md +12 -0
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +12 -0
- package/.agent-src/skills/bug-analyzer/SKILL.md +14 -2
- package/.agent-src/skills/build-buy-partner/SKILL.md +12 -0
- package/.agent-src/skills/canvas-design/SKILL.md +12 -0
- package/.agent-src/skills/character-consistency/SKILL.md +23 -11
- package/.agent-src/skills/check-refs/SKILL.md +12 -0
- package/.agent-src/skills/churn-prevention/SKILL.md +12 -0
- package/.agent-src/skills/code-refactoring/SKILL.md +16 -4
- package/.agent-src/skills/code-review/SKILL.md +12 -0
- package/.agent-src/skills/command-routing/SKILL.md +12 -0
- package/.agent-src/skills/command-writing/SKILL.md +14 -2
- package/.agent-src/skills/comp-banding/SKILL.md +12 -0
- package/.agent-src/skills/competitive-moat-analysis/SKILL.md +12 -2
- package/.agent-src/skills/competitive-positioning/SKILL.md +12 -2
- package/.agent-src/skills/composer-packages/SKILL.md +12 -0
- package/.agent-src/skills/compress-memory/SKILL.md +12 -0
- package/.agent-src/skills/content-funnel-design/SKILL.md +12 -2
- package/.agent-src/skills/context-authoring/SKILL.md +18 -6
- package/.agent-src/skills/context-document/SKILL.md +17 -5
- package/.agent-src/skills/contracts-cognition/SKILL.md +12 -2
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +12 -0
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +13 -1
- package/.agent-src/skills/copilot-config/SKILL.md +12 -0
- package/.agent-src/skills/customer-research/SKILL.md +12 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +12 -0
- package/.agent-src/skills/data-flow-mapper/SKILL.md +12 -0
- package/.agent-src/skills/data-handling-judgment/SKILL.md +12 -2
- package/.agent-src/skills/database/SKILL.md +14 -2
- package/.agent-src/skills/dcf-modeling/SKILL.md +12 -2
- package/.agent-src/skills/deal-qualification-meddic/SKILL.md +12 -2
- package/.agent-src/skills/decision-record/SKILL.md +12 -0
- package/.agent-src/skills/deep-reading-analyst/SKILL.md +12 -0
- package/.agent-src/skills/defense-in-depth/SKILL.md +13 -1
- package/.agent-src/skills/dependency-upgrade/SKILL.md +12 -0
- package/.agent-src/skills/description-assist/SKILL.md +12 -0
- package/.agent-src/skills/design-review/SKILL.md +12 -0
- package/.agent-src/skills/devcontainer/SKILL.md +12 -0
- package/.agent-src/skills/developer-like-execution/SKILL.md +12 -0
- package/.agent-src/skills/discovery-interview/SKILL.md +12 -2
- package/.agent-src/skills/doc-coauthoring/SKILL.md +12 -0
- package/.agent-src/skills/docker/SKILL.md +12 -0
- package/.agent-src/skills/editorial-calendar/SKILL.md +12 -2
- package/.agent-src/skills/eloquent/SKILL.md +12 -0
- package/.agent-src/skills/eloquent/evals/triggers.json +1 -1
- package/.agent-src/skills/error-handling-patterns/SKILL.md +13 -1
- package/.agent-src/skills/estimate-ticket/SKILL.md +12 -0
- package/.agent-src/skills/existing-ui-audit/SKILL.md +12 -0
- package/.agent-src/skills/expansion-playbook/SKILL.md +12 -0
- package/.agent-src/skills/fe-design/SKILL.md +12 -0
- package/.agent-src/skills/feature-planning/SKILL.md +12 -0
- package/.agent-src/skills/file-editor/SKILL.md +12 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +12 -0
- package/.agent-src/skills/flux/SKILL.md +12 -0
- package/.agent-src/skills/forecast-accuracy/SKILL.md +12 -2
- package/.agent-src/skills/forecasting/SKILL.md +12 -2
- package/.agent-src/skills/form-handler/SKILL.md +12 -0
- package/.agent-src/skills/fundraising-narrative/SKILL.md +12 -2
- package/.agent-src/skills/funnel-analysis/SKILL.md +12 -0
- package/.agent-src/skills/git-workflow/SKILL.md +12 -0
- package/.agent-src/skills/github-ci/SKILL.md +12 -0
- package/.agent-src/skills/grafana/SKILL.md +12 -0
- package/.agent-src/skills/gtm-launch/SKILL.md +12 -2
- package/.agent-src/skills/guideline-writing/SKILL.md +12 -0
- package/.agent-src/skills/hiring-loop-design/SKILL.md +12 -0
- package/.agent-src/skills/incident-commander/SKILL.md +12 -2
- package/.agent-src/skills/jira-integration/SKILL.md +12 -0
- package/.agent-src/skills/jobs-events/SKILL.md +12 -0
- package/.agent-src/skills/judge-bug-hunter/SKILL.md +12 -0
- package/.agent-src/skills/judge-code-quality/SKILL.md +12 -0
- package/.agent-src/skills/judge-security-auditor/SKILL.md +12 -0
- package/.agent-src/skills/judge-test-coverage/SKILL.md +12 -0
- package/.agent-src/skills/laravel/SKILL.md +12 -0
- package/.agent-src/skills/laravel-api-endpoint/SKILL.md +15 -3
- package/.agent-src/skills/laravel-dto/SKILL.md +14 -2
- package/.agent-src/skills/laravel-horizon/SKILL.md +12 -0
- package/.agent-src/skills/laravel-mail/SKILL.md +12 -0
- package/.agent-src/skills/laravel-middleware/SKILL.md +12 -0
- package/.agent-src/skills/laravel-migration/SKILL.md +12 -0
- package/.agent-src/skills/laravel-notifications/SKILL.md +12 -0
- package/.agent-src/skills/laravel-pennant/SKILL.md +12 -0
- package/.agent-src/skills/laravel-pulse/SKILL.md +12 -0
- package/.agent-src/skills/laravel-reverb/SKILL.md +12 -0
- package/.agent-src/skills/laravel-scheduling/SKILL.md +12 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/.agent-src/skills/laravel-websocket/SKILL.md +12 -0
- package/.agent-src/skills/launch-readiness/SKILL.md +12 -2
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +15 -3
- package/.agent-src/skills/lint-skills/SKILL.md +12 -0
- package/.agent-src/skills/livewire/SKILL.md +12 -0
- package/.agent-src/skills/livewire-architect/SKILL.md +12 -0
- package/.agent-src/skills/logging-monitoring/SKILL.md +12 -0
- package/.agent-src/skills/market-entry-analysis/SKILL.md +12 -0
- package/.agent-src/skills/markitdown/SKILL.md +14 -2
- package/.agent-src/skills/mcp/SKILL.md +12 -0
- package/.agent-src/skills/mcp-builder/SKILL.md +14 -2
- package/.agent-src/skills/md-language-check/SKILL.md +13 -1
- package/.agent-src/skills/memory-consolidation/SKILL.md +12 -0
- package/.agent-src/skills/merge-conflicts/SKILL.md +12 -0
- package/.agent-src/skills/messaging-architecture/SKILL.md +12 -2
- package/.agent-src/skills/migration-architect/SKILL.md +12 -0
- package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +12 -0
- package/.agent-src/skills/module-management/SKILL.md +12 -0
- package/.agent-src/skills/motion-choreographer/SKILL.md +16 -4
- package/.agent-src/skills/multi-tenancy/SKILL.md +14 -2
- package/.agent-src/skills/nextjs-patterns/SKILL.md +12 -0
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +12 -2
- package/.agent-src/skills/onboarding-design/SKILL.md +12 -0
- package/.agent-src/skills/onboarding-program/SKILL.md +12 -0
- package/.agent-src/skills/one-on-one-cadence/SKILL.md +12 -0
- package/.agent-src/skills/openapi/SKILL.md +13 -1
- package/.agent-src/skills/org-design/SKILL.md +12 -0
- package/.agent-src/skills/override-management/SKILL.md +12 -0
- package/.agent-src/skills/perf-feedback-craft/SKILL.md +12 -0
- package/.agent-src/skills/performance/SKILL.md +12 -0
- package/.agent-src/skills/performance-analysis/SKILL.md +12 -0
- package/.agent-src/skills/persona-writing/SKILL.md +12 -0
- package/.agent-src/skills/pest-testing/SKILL.md +12 -0
- package/.agent-src/skills/php-coder/SKILL.md +12 -0
- package/.agent-src/skills/php-debugging/SKILL.md +12 -0
- package/.agent-src/skills/php-service/SKILL.md +12 -0
- package/.agent-src/skills/pipeline-strategy/SKILL.md +12 -2
- package/.agent-src/skills/pixar-storyteller/SKILL.md +17 -5
- package/.agent-src/skills/playwright-architect/SKILL.md +12 -2
- package/.agent-src/skills/playwright-testing/SKILL.md +12 -0
- package/.agent-src/skills/po-discovery/SKILL.md +12 -0
- package/.agent-src/skills/positioning-strategy/SKILL.md +12 -0
- package/.agent-src/skills/privacy-review/SKILL.md +12 -2
- package/.agent-src/skills/project-analysis-core/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-laravel/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-nextjs/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-node-express/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-react/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +12 -0
- package/.agent-src/skills/project-analyzer/SKILL.md +30 -18
- package/.agent-src/skills/project-docs/SKILL.md +25 -13
- package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +13 -1
- package/.agent-src/skills/prompt-optimizer/SKILL.md +13 -1
- package/.agent-src/skills/quality-tools/SKILL.md +12 -2
- package/.agent-src/skills/react-native-setup/SKILL.md +12 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +12 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +64 -3
- package/.agent-src/skills/readme-writing/SKILL.md +64 -4
- package/.agent-src/skills/readme-writing-package/SKILL.md +60 -5
- package/.agent-src/skills/receiving-code-review/SKILL.md +12 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +13 -1
- package/.agent-src/skills/refine-ticket/SKILL.md +14 -2
- package/.agent-src/skills/refine-ticket/detection-map.yml +2 -2
- package/.agent-src/skills/release-comms/SKILL.md +12 -2
- package/.agent-src/skills/repomix-packer/SKILL.md +13 -1
- package/.agent-src/skills/requesting-code-review/SKILL.md +12 -0
- package/.agent-src/skills/retention-loops/SKILL.md +12 -0
- package/.agent-src/skills/review-routing/SKILL.md +12 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +12 -0
- package/.agent-src/skills/risk-officer/SKILL.md +12 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +12 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +12 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +12 -0
- package/.agent-src/skills/rule-refactor/SKILL.md +15 -3
- package/.agent-src/skills/rule-writing/SKILL.md +13 -1
- package/.agent-src/skills/runway-cognition/SKILL.md +12 -2
- package/.agent-src/skills/scenario-modeling/SKILL.md +12 -2
- package/.agent-src/skills/scene-expander/SKILL.md +18 -6
- package/.agent-src/skills/script-writing/SKILL.md +13 -1
- package/.agent-src/skills/secrets-management/SKILL.md +13 -3
- package/.agent-src/skills/security/SKILL.md +12 -0
- package/.agent-src/skills/security-audit/SKILL.md +12 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +12 -0
- package/.agent-src/skills/sequential-thinking/SKILL.md +12 -0
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +12 -0
- package/.agent-src/skills/skill-management/SKILL.md +12 -0
- package/.agent-src/skills/skill-reviewer/SKILL.md +12 -0
- package/.agent-src/skills/skill-writing/SKILL.md +12 -0
- package/.agent-src/skills/sql-writing/SKILL.md +12 -0
- package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +12 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -1
- package/.agent-src/skills/symfony-workflow/SKILL.md +12 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +53 -0
- package/.agent-src/skills/tailwind-engineer/SKILL.md +12 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +12 -2
- package/.agent-src/skills/technical-specification/SKILL.md +12 -0
- package/.agent-src/skills/terraform/SKILL.md +12 -0
- package/.agent-src/skills/terragrunt/SKILL.md +12 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +12 -0
- package/.agent-src/skills/test-performance/SKILL.md +13 -1
- package/.agent-src/skills/testing-anti-patterns/SKILL.md +13 -1
- package/.agent-src/skills/threat-modeling/SKILL.md +12 -0
- package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +12 -0
- package/.agent-src/skills/token-optimizer/SKILL.md +12 -0
- package/.agent-src/skills/traefik/SKILL.md +12 -0
- package/.agent-src/skills/ui-component-architect/SKILL.md +12 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +12 -2
- package/.agent-src/skills/universal-project-analysis/SKILL.md +12 -0
- package/.agent-src/skills/upstream-contribute/SKILL.md +12 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +12 -0
- package/.agent-src/skills/validate-feature-fit/SKILL.md +12 -0
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +12 -0
- package/.agent-src/skills/video-director/SKILL.md +18 -6
- package/.agent-src/skills/vision-articulation/SKILL.md +12 -0
- package/.agent-src/skills/voc-extract/SKILL.md +12 -2
- package/.agent-src/skills/voice-and-tone-design/SKILL.md +12 -2
- package/.agent-src/templates/agent-settings.md +5 -5
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/templates/agents/memory/ownership.example.yml +1 -1
- package/.agent-src/templates/agents/proposal.example.md +12 -0
- package/.agent-src/templates/command.md +1 -1
- package/.agent-src/templates/contexts/auth-model.md +2 -2
- package/.agent-src/templates/contexts/data-sensitivity.md +3 -3
- package/.agent-src/templates/contexts/deployment-order.md +2 -2
- package/.agent-src/templates/contexts/observability.md +3 -3
- package/.agent-src/templates/contexts/tenant-boundaries.md +3 -3
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/hooks/pre-commit-frontmatter +66 -0
- package/.agent-src/templates/hooks/pre-commit-roadmap-progress +78 -39
- package/.agent-src/templates/rule.md +1 -1
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +7 -4
- package/.agent-src/templates/scripts/work_engine/cli.py +6 -6
- package/.agent-src/templates/scripts/work_engine/emitters.py +29 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +3 -3
- package/.agent-src/templates/scripts/work_engine/orchestration.py +25 -11
- package/.agent-src/templates/scripts/work_engine/state.py +53 -0
- package/.agent-src/templates/skill-archive-note.md +4 -4
- package/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +12 -9
- package/CHANGELOG.md +268 -90
- package/CONTRIBUTING.md +61 -0
- package/README.md +173 -558
- package/config/agent-settings.template.yml +11 -8
- package/config/discovery/packs.yml +162 -0
- package/config/discovery/unassigned-artefacts.yml +68 -0
- package/config/discovery/workspaces.yml +59 -0
- package/config/gitignore-block.txt +36 -23
- package/dist/cli/agent-config.js +199 -0
- package/dist/cli/agent-config.js.map +1 -0
- package/dist/cli/bash/runBash.js +40 -0
- package/dist/cli/bash/runBash.js.map +1 -0
- package/dist/cli/commands/doctorShell.js +91 -0
- package/dist/cli/commands/doctorShell.js.map +1 -0
- package/dist/cli/commands/packs.js +59 -0
- package/dist/cli/commands/packs.js.map +1 -0
- package/dist/cli/commands/settings.js +35 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/uiServe.js +119 -0
- package/dist/cli/commands/uiServe.js.map +1 -0
- package/dist/cli/commands/versions.js +64 -0
- package/dist/cli/commands/versions.js.map +1 -0
- package/dist/cli/commands/workspaces.js +58 -0
- package/dist/cli/commands/workspaces.js.map +1 -0
- package/dist/cli/discovery/loadManifest.js +62 -0
- package/dist/cli/discovery/loadManifest.js.map +1 -0
- package/dist/cli/log/logger.js +41 -0
- package/dist/cli/log/logger.js.map +1 -0
- package/dist/cli/paths.js +60 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/python/resolvePython.js +38 -0
- package/dist/cli/python/resolvePython.js.map +1 -0
- package/dist/cli/registry.js +77 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/discovery/deprecation-report.md +7 -0
- package/dist/discovery/discovery-manifest.json +9893 -0
- package/dist/discovery/discovery-manifest.json.sha256 +1 -0
- package/dist/discovery/discovery-manifest.summary.md +93 -0
- package/dist/discovery/orphan-report.md +10 -0
- package/dist/discovery/packs.json +1002 -0
- package/dist/discovery/trust-report.md +26 -0
- package/dist/discovery/workspaces.json +705 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -0
- package/dist/mcp/mcp-cloudflare-catalogue.json +27 -0
- package/dist/mcp/registry-manifest.json +63 -0
- package/dist/router.json +1623 -0
- package/dist/server/app.js +125 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/io/atomicMultiWrite.js +204 -0
- package/dist/server/io/atomicMultiWrite.js.map +1 -0
- package/dist/server/io/atomicWrite.js +79 -0
- package/dist/server/io/atomicWrite.js.map +1 -0
- package/dist/server/io/substituteTemplate.js +87 -0
- package/dist/server/io/substituteTemplate.js.map +1 -0
- package/dist/server/io/yamlIO.js +162 -0
- package/dist/server/io/yamlIO.js.map +1 -0
- package/dist/server/port.js +97 -0
- package/dist/server/port.js.map +1 -0
- package/dist/server/routes/discovery.js +72 -0
- package/dist/server/routes/discovery.js.map +1 -0
- package/dist/server/routes/ping.js +57 -0
- package/dist/server/routes/ping.js.map +1 -0
- package/dist/server/routes/schema.js +41 -0
- package/dist/server/routes/schema.js.map +1 -0
- package/dist/server/routes/settings.js +236 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/userMd.js +127 -0
- package/dist/server/routes/userMd.js.map +1 -0
- package/dist/server/routes/wizard.js +374 -0
- package/dist/server/routes/wizard.js.map +1 -0
- package/dist/server/schemas/settings.js +137 -0
- package/dist/server/schemas/settings.js.map +1 -0
- package/dist/server/token.js +75 -0
- package/dist/server/token.js.map +1 -0
- package/dist/server/writeRoot.js +84 -0
- package/dist/server/writeRoot.js.map +1 -0
- package/dist/server/writeRoot.test.js +91 -0
- package/dist/server/writeRoot.test.js.map +1 -0
- package/dist/shared/userMd/formAdapter.js +83 -0
- package/dist/shared/userMd/formAdapter.js.map +1 -0
- package/dist/shared/userMd/schema.js +46 -0
- package/dist/shared/userMd/schema.js.map +1 -0
- package/dist/shared/userMd/utils.js +88 -0
- package/dist/shared/userMd/utils.js.map +1 -0
- package/dist/ui/assets/index-D-DY1ywI.js +35 -0
- package/dist/ui/assets/index-D-DY1ywI.js.map +1 -0
- package/dist/ui/assets/index-Dqfhmg-d.css +1 -0
- package/dist/ui/index.html +14 -0
- package/docs/adrs/caveman/0001-default-off-until-bench.md +2 -2
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/router/0001-three-tier-routing.md +5 -5
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +4 -4
- package/docs/adrs/schema/README.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +3 -3
- package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
- package/docs/architecture.md +3 -2
- package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
- package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
- package/docs/archive/CHANGELOG-pre-3.1.0.md +167 -0
- package/docs/catalog.md +92 -100
- package/docs/contracts/CHANGELOG-conventions.md +1 -1
- package/docs/contracts/STABILITY.md +1 -1
- package/docs/contracts/adr-architectural-consensus-mechanism.md +5 -5
- package/docs/contracts/adr-chat-history-split.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -1
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-mcp-runtime.md +2 -2
- package/docs/contracts/agent-user-schema.md +17 -11
- package/docs/contracts/ai-council-config.md +13 -13
- package/docs/contracts/audit-log-v1.md +2 -2
- package/docs/contracts/command-clusters.md +2 -2
- package/docs/contracts/compression-default-kill-criterion.md +3 -3
- package/docs/contracts/consumer-bridge.md +79 -0
- package/docs/contracts/decision-trace-v1.md +5 -5
- package/docs/contracts/discovery-manifest.md +209 -0
- package/docs/contracts/discovery-manifest.schema.json +219 -0
- package/docs/contracts/explain-trace.schema.json +144 -0
- package/docs/contracts/file-ownership-matrix.json +288 -328
- package/docs/contracts/file-ownership-matrix.md +1 -1
- package/docs/contracts/frontmatter-contract.md +140 -0
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/gui-wizard.md +223 -0
- package/docs/contracts/hook-architecture-v1.md +10 -10
- package/docs/contracts/installer-agent-mode.md +137 -0
- package/docs/contracts/kernel-membership.md +5 -5
- package/docs/contracts/linter-structural-model.md +3 -3
- package/docs/contracts/load-context-schema.md +5 -5
- package/docs/contracts/local-server-api.md +134 -0
- package/docs/contracts/low-impact-corpus-format.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
- package/docs/contracts/mcp-phase-1-scope.md +5 -4
- package/docs/contracts/mcp-registry-manifest.schema.json +129 -0
- package/docs/contracts/mcp-tool-inventory.md +9 -9
- package/docs/contracts/mcp-tool-stub-envelope.md +1 -1
- package/docs/contracts/memory-visibility-v1.md +2 -2
- package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
- package/docs/contracts/namespace.md +7 -7
- package/docs/contracts/one-off-script-lifecycle.md +1 -1
- package/docs/contracts/package-self-orientation.md +1 -1
- package/docs/contracts/provider-lifecycle.md +7 -7
- package/docs/contracts/router-blending.md +1 -1
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/rule-router.md +4 -4
- package/docs/contracts/settings-api.md +207 -0
- package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
- package/docs/contracts/smoke-contracts.md +3 -3
- package/docs/contracts/tier-3-contrib-plugin.md +1 -1
- package/docs/contracts/trust-and-safety.md +144 -0
- package/docs/contracts/universal-skills.md +1 -1
- package/docs/contracts/write-engine.md +1 -1
- package/docs/customization.md +139 -13
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +1 -1
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +1 -1
- package/docs/decisions/ADR-004-rule-governance-pruning.md +8 -8
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +5 -5
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +16 -4
- package/docs/decisions/ADR-008-installed-tools-manifest.md +2 -2
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +2 -2
- package/docs/decisions/ADR-011-domain-pack-readiness.md +4 -4
- package/docs/decisions/ADR-012-typescript-cli-shell.md +162 -0
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +234 -0
- package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +146 -0
- package/docs/decisions/ADR-016-installer-architecture.md +189 -0
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +261 -0
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +159 -0
- package/docs/decisions/ADR-019-router-json-dist-location.md +124 -0
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +123 -0
- package/docs/decisions/ADR-021-deployment-shape.md +153 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
- package/docs/decisions/INDEX.md +10 -0
- package/docs/deploy/connector-setup.md +129 -0
- package/docs/deploy/env-vars.md +70 -0
- package/docs/deploy/policy-cookbook.md +130 -0
- package/docs/deploy/quickstart.md +112 -0
- package/docs/distribution/mcp-submission-checklist.md +95 -0
- package/docs/distribution/public-install-smoke.md +68 -0
- package/docs/distribution/registries.md +55 -0
- package/docs/distribution/telemetry-privacy.md +128 -0
- package/docs/distribution/telemetry-schema.md +174 -0
- package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
- package/docs/examples/agent-user.example.md +3 -1
- package/docs/featured-skills.md +95 -0
- package/docs/getting-started-by-role.md +19 -1
- package/docs/getting-started.md +5 -4
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/installed-tools-manifest.md +11 -8
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +10 -1
- package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
- package/docs/guidelines/agent-infra/tool-integration.md +1 -1
- package/docs/guidelines/docs/readme-size-and-splitting.md +53 -1
- package/docs/guidelines/php/api-design.md +1 -1
- package/docs/guidelines/prompt-templates.md +2 -2
- package/docs/hook-payload-capture.md +3 -3
- package/docs/installation.md +39 -18
- package/docs/maintainers/dev-mode.md +105 -0
- package/docs/migrations/commands-1.15.0.md +3 -3
- package/docs/parity/bench-ruflo.json +1 -1
- package/docs/parity/ruflo.md +3 -3
- package/docs/profiles.md +1 -1
- package/docs/quality.md +2 -2
- package/docs/recruits/_template.md +3 -3
- package/docs/setup/enterprise-and-offline.md +3 -3
- package/docs/setup/mcp-server-docker.md +5 -3
- package/docs/setup/per-ide/claude-desktop.md +3 -2
- package/docs/skills-catalog.md +62 -18
- package/docs/wizard.md +156 -0
- package/llms.txt +61 -17
- package/package.json +63 -3
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_p4_migrate.py +1 -1
- package/scripts/_cli/cmd_doctor.py +155 -7
- package/scripts/_cli/cmd_explain.py +108 -3
- package/scripts/_cli/cmd_migrate.py +2 -2
- package/scripts/_cli/cmd_migrate_to_global.py +415 -0
- package/scripts/_cli/cmd_settings_migrate.py +146 -0
- package/scripts/_cli/explain_last/__init__.py +122 -0
- package/scripts/_cli/explain_last/assumptions.py +59 -0
- package/scripts/_cli/explain_last/council.py +105 -0
- package/scripts/_cli/explain_last/halt.py +44 -0
- package/scripts/_cli/explain_last/inputs.py +125 -0
- package/scripts/_cli/explain_last/memory.py +94 -0
- package/scripts/_cli/explain_last/provider.py +52 -0
- package/scripts/_cli/explain_last/render.py +52 -0
- package/scripts/_cli/explain_last/route.py +59 -0
- package/scripts/_cli/explain_last/scrubber.py +105 -0
- package/scripts/_cli/explain_last/sections/__init__.py +35 -0
- package/scripts/_cli/explain_last/sections/assumptions.py +21 -0
- package/scripts/_cli/explain_last/sections/council.py +27 -0
- package/scripts/_cli/explain_last/sections/halt.py +31 -0
- package/scripts/_cli/explain_last/sections/header.py +24 -0
- package/scripts/_cli/explain_last/sections/inputs.py +27 -0
- package/scripts/_cli/explain_last/sections/memory.py +21 -0
- package/scripts/_cli/explain_last/sections/pack.py +16 -0
- package/scripts/_cli/explain_last/sections/provider.py +26 -0
- package/scripts/_cli/explain_last/sections/route.py +22 -0
- package/scripts/_cli/explain_last/state_loader.py +76 -0
- package/scripts/_dispatch.bash +987 -0
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/_lib/agent_settings.py +7 -4
- package/scripts/_lib/agent_src.py +157 -0
- package/scripts/_lib/agents_overlay.py +3 -3
- package/scripts/_phase4_bucket.py +210 -0
- package/scripts/agent-config +50 -947
- package/scripts/ai-video/adapters/higgsfield.sh +1 -1
- package/scripts/ai-video/adapters/sora.sh +1 -1
- package/scripts/ai-video/test-pipeline.sh +2 -2
- package/scripts/ai_council/_default_prices.py +5 -5
- package/scripts/ai_council/advisors.py +1 -1
- package/scripts/ai_council/clients.py +2 -2
- package/scripts/ai_council/compile_corpus.py +9 -8
- package/scripts/ai_council/config.py +3 -3
- package/scripts/ai_council/events_log.py +8 -4
- package/scripts/ai_council/low_impact_corpus.py +1 -1
- package/scripts/ai_council/low_impact_intake.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +3 -3
- package/scripts/ai_council/pricing.py +8 -7
- package/scripts/ai_council/probation_gate.py +1 -1
- package/scripts/ai_council/redact_low_impact_entry.py +1 -1
- package/scripts/ai_council/session.py +13 -13
- package/scripts/ai_council/shadow_dispatch.py +2 -2
- package/scripts/annotate_discovery.py +149 -0
- package/scripts/audit_adr_coverage.py +1 -1
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +1 -1
- package/scripts/audit_command_surface.py +2 -2
- package/scripts/audit_likelihood.py +4 -4
- package/scripts/audit_overlap.py +3 -3
- package/scripts/audit_skill_descriptions.py +18 -6
- package/scripts/audit_user_type_axis.py +1 -1
- package/scripts/build_discovery_manifest.py +658 -0
- package/scripts/build_mcp_registry_manifest.py +181 -0
- package/scripts/build_rule_trigger_matrix.py +2 -2
- package/scripts/capture_showcase_session.py +1 -1
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +7 -2
- package/scripts/check_artefact_checksums.py +104 -0
- package/scripts/check_cluster_patterns.py +20 -4
- package/scripts/check_command_count_messaging.py +33 -14
- package/scripts/check_council_layout.py +26 -20
- package/scripts/check_council_references.py +53 -14
- package/scripts/check_discovery_determinism.py +70 -0
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_no_roadmap_refs.py +2 -2
- package/scripts/check_one_off_location.py +1 -1
- package/scripts/check_overlay_cascade_subdirs.py +7 -3
- package/scripts/check_public_links.py +2 -2
- package/scripts/check_references.py +19 -23
- package/scripts/check_release_includes_discovery.py +61 -0
- package/scripts/check_reply_consistency.py +32 -9
- package/scripts/check_template_pin_drift.py +24 -7
- package/scripts/check_token_optimizer_freshness.py +18 -3
- package/scripts/ci_summary.py +2 -2
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/command_suggester/__init__.py +1 -1
- package/scripts/compile_router.py +34 -2
- package/scripts/compress.py +162 -44
- package/scripts/config/presets.py +19 -1
- package/scripts/config/profiles.py +16 -1
- package/scripts/context_hygiene_hook.py +2 -2
- package/scripts/council_cli.py +22 -22
- package/scripts/council_prune.py +3 -3
- package/scripts/discovery_stats.py +70 -0
- package/scripts/expected_perms.json +47 -0
- package/scripts/extract_audit_patterns.py +2 -2
- package/scripts/gen_discovery_baseline.py +127 -0
- package/scripts/generate_index.py +78 -46
- package/scripts/generate_ownership_matrix.py +99 -44
- package/scripts/generate_pack_manifests.py +183 -0
- package/scripts/hook_manifest.yaml +5 -5
- package/scripts/hooks/cline-dispatcher.sh +1 -1
- package/scripts/hooks/cowork-dispatcher.sh +1 -1
- package/scripts/hooks/dispatch_hook.py +3 -3
- package/scripts/hooks/gemini-dispatcher.sh +1 -1
- package/scripts/hooks/replay_hook.py +1 -1
- package/scripts/hooks/state_io.py +5 -5
- package/scripts/hooks_doctor.py +4 -4
- package/scripts/install +18 -1
- package/scripts/install-hooks.sh +2 -2
- package/scripts/install.py +937 -62
- package/scripts/install.sh +147 -27
- package/scripts/inventory_frontmatter.py +1 -1
- package/scripts/lint_agents_layout.py +183 -0
- package/scripts/lint_agents_md.py +1 -1
- package/scripts/lint_archived_skills.py +35 -19
- package/scripts/lint_artefact_frontmatter.py +180 -0
- package/scripts/lint_bench_corpus.py +14 -2
- package/scripts/lint_command_tiers.py +15 -2
- package/scripts/lint_discovery_manifest.py +136 -0
- package/scripts/lint_discovery_vocabulary.py +148 -0
- package/scripts/lint_explain_trace.py +80 -0
- package/scripts/lint_featured_skills.py +139 -0
- package/scripts/lint_framework_leakage.py +33 -6
- package/scripts/lint_framework_leakage_allowlist.json +63 -62
- package/scripts/lint_ghostwriter_source.py +1 -1
- package/scripts/lint_global_paths.py +147 -0
- package/scripts/lint_load_context.py +3 -3
- package/scripts/lint_mcp_registry_manifest.py +69 -0
- package/scripts/lint_media_policy_linkage.py +6 -6
- package/scripts/lint_orchestration_dsl.py +6 -3
- package/scripts/lint_pack_boundaries.py +147 -0
- package/scripts/lint_pack_first_win.py +103 -0
- package/scripts/lint_positioning.py +143 -0
- package/scripts/lint_readme_jargon.py +131 -0
- package/scripts/lint_readme_size.py +33 -0
- package/scripts/lint_rule_interactions.py +23 -5
- package/scripts/lint_rule_tiers.py +14 -5
- package/scripts/lint_skill_tools.py +1 -1
- package/scripts/lint_topics_yaml.py +89 -0
- package/scripts/lint_trust_coherence.py +212 -0
- package/scripts/mcp_server/consumer_tool_catalog.json +3 -3
- package/scripts/mcp_server/telemetry.py +2 -2
- package/scripts/mcp_server/tools.py +27 -11
- package/scripts/mcp_telemetry_health.py +2 -2
- package/scripts/mcp_telemetry_store.py +1 -1
- package/scripts/measure_augment_budget.py +3 -3
- package/scripts/measure_density.py +2 -2
- package/scripts/measure_frugality_savings.py +3 -3
- package/scripts/measure_roadmap_trajectory.py +1 -1
- package/scripts/measure_rule_budget.py +25 -7
- package/scripts/memory_report.py +1 -1
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/minimal_safe_diff_hook.py +1 -1
- package/scripts/move_artefact.py +143 -0
- package/scripts/new_skill.py +148 -0
- package/scripts/onboarding_gate_hook.py +4 -4
- package/scripts/plan_physical_move.py +353 -0
- package/scripts/prepack-check.mjs +62 -0
- package/scripts/probe_projection_fidelity.py +2 -2
- package/scripts/refine_ticket_detect.py +31 -8
- package/scripts/schemas/command.schema.json +45 -1
- package/scripts/schemas/persona.schema.json +1 -1
- package/scripts/schemas/rule.schema.json +44 -4
- package/scripts/schemas/skill.schema.json +41 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +1 -1
- package/scripts/skill_linter.py +250 -120
- package/scripts/skill_overlap.py +1 -1
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_trigger_eval.py +28 -8
- package/scripts/skill_usage_collect.py +3 -3
- package/scripts/skill_usage_report.py +3 -3
- package/scripts/smoke/kernel.sh +1 -1
- package/scripts/smoke/router.sh +24 -5
- package/scripts/smoke/skills.sh +15 -7
- package/scripts/smoke_quickstart.py +12 -3
- package/scripts/snapshot_agent_outputs.py +144 -0
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/sync_github_metadata.py +147 -0
- package/scripts/sync_gitignore.py +15 -5
- package/scripts/update_counts.py +45 -17
- package/scripts/update_prices.py +4 -3
- package/scripts/validate_decision_engine.py +9 -1
- package/scripts/validate_discovery_manifest.py +94 -0
- package/scripts/validate_frontmatter.py +39 -20
- package/scripts/verify_before_complete_hook.py +1 -1
- package/scripts/verify_physical_move.py +185 -0
- package/scripts/verify_roadmap_closure.py +1 -1
- package/templates/agent-user.md +34 -0
- package/templates/agent-user.yml +21 -0
- package/templates/minimal/agents-overrides-readme.md +46 -0
- package/templates/minimal/overrides-gitkeep +2 -0
- package/.agent-src/commands/onboard.md +0 -467
- package/templates/minimal/agents-gitkeep +0 -2
|
@@ -17,14 +17,21 @@ Drift categories (manifest ↔ filesystem):
|
|
|
17
17
|
(P5.2). Hand-edited tags or accidental cross-package writes show up
|
|
18
18
|
here; files without frontmatter are skipped (P5.1 contract).
|
|
19
19
|
|
|
20
|
-
Health checks (
|
|
20
|
+
Health checks (see :data:`CHECK_IDS`):
|
|
21
21
|
scope · manifest-integrity · lockfile-freshness · bridge-drift ·
|
|
22
22
|
mcp-mode · mcp-beta-readiness · offline-readiness · python-runtime ·
|
|
23
|
-
unsupported-combos
|
|
23
|
+
tier-usage-readiness · council-cli · unsupported-combos ·
|
|
24
|
+
wizard-state.
|
|
24
25
|
Each emits a structured ``{id, status, message, remedy}`` record with
|
|
25
26
|
``status`` ∈ ``ok`` / ``warn`` / ``fail`` (rendered ``✅`` / ``⚠️`` /
|
|
26
27
|
``❌``). ``--check <id>`` runs a single check.
|
|
27
28
|
|
|
29
|
+
Repair affordances: ``--repair wizard-state`` resets a malformed or
|
|
30
|
+
orphaned ``state/wizard-state.json`` under the user-global root (the
|
|
31
|
+
file the unified Setup-Wizard uses for resume continuity). Used as the
|
|
32
|
+
recovery path when ``1.9``'s npm downgrade is not viable
|
|
33
|
+
(road-to-global-only-install § 1.10 / A6).
|
|
34
|
+
|
|
28
35
|
Exit codes: ``0`` (clean) · ``1`` (drift or any ``fail`` check) · ``2``
|
|
29
36
|
(error such as "manifest missing"). Both human and ``--json`` output
|
|
30
37
|
emit the drift category lists and the structured checks array. Every
|
|
@@ -443,8 +450,16 @@ CHECK_IDS = (
|
|
|
443
450
|
"tier-usage-readiness",
|
|
444
451
|
"council-cli",
|
|
445
452
|
"unsupported-combos",
|
|
453
|
+
"wizard-state",
|
|
446
454
|
)
|
|
447
455
|
|
|
456
|
+
#: Repair targets that ``--repair <id>`` accepts. Each id maps to a
|
|
457
|
+
#: function in :func:`_run_repair` that resets the named artefact and
|
|
458
|
+
#: returns an exit code. Additive set: introduce by adding a new id
|
|
459
|
+
#: here, a runner inside :func:`_run_repair`, and (optionally) a
|
|
460
|
+
#: matching health check above.
|
|
461
|
+
REPAIR_IDS = ("wizard-state",)
|
|
462
|
+
|
|
448
463
|
#: Six gates that govern the MCP `experimental → beta` promotion. The
|
|
449
464
|
#: artefact path under each gate id mirrors `tests/test_mcp_beta_gates.py`
|
|
450
465
|
#: and the contract in `docs/contracts/mcp-beta-criteria.md`.
|
|
@@ -846,7 +861,7 @@ _CLI_PROVIDER_META: dict[str, tuple[str, bool]] = {
|
|
|
846
861
|
def _check_council_cli(project_root: Path) -> dict[str, Any]:
|
|
847
862
|
"""Health-probe each enabled ``mode: cli`` council member.
|
|
848
863
|
|
|
849
|
-
For every CLI member in ``agents/.ai-council.yml`` reports binary
|
|
864
|
+
For every CLI member in ``agents/settings/.ai-council.yml`` reports binary
|
|
850
865
|
presence (via ``shutil.which``), billable flag, daily-quota state
|
|
851
866
|
(used/cap or used/—), and rolls up to a single status icon.
|
|
852
867
|
|
|
@@ -862,14 +877,14 @@ def _check_council_cli(project_root: Path) -> dict[str, Any]:
|
|
|
862
877
|
- ``warn`` — at least one binary is missing OR usage crosses
|
|
863
878
|
``warn_at`` for at least one capped member.
|
|
864
879
|
- returns ``ok`` with "no council config" if
|
|
865
|
-
``agents/.ai-council.yml`` is absent (consumer project that
|
|
880
|
+
``agents/settings/.ai-council.yml`` is absent (consumer project that
|
|
866
881
|
hasn't enabled the council yet).
|
|
867
882
|
"""
|
|
868
|
-
council_path = project_root / "agents" / ".ai-council.yml"
|
|
883
|
+
council_path = project_root / "agents" / "settings" / ".ai-council.yml"
|
|
869
884
|
if not council_path.exists():
|
|
870
885
|
return {
|
|
871
886
|
"id": "council-cli", "status": "ok",
|
|
872
|
-
"message": "no council config (agents/.ai-council.yml not present)",
|
|
887
|
+
"message": "no council config (agents/settings/.ai-council.yml not present)",
|
|
873
888
|
"remedy": "",
|
|
874
889
|
}
|
|
875
890
|
try:
|
|
@@ -887,7 +902,7 @@ def _check_council_cli(project_root: Path) -> dict[str, Any]:
|
|
|
887
902
|
return {
|
|
888
903
|
"id": "council-cli", "status": "warn",
|
|
889
904
|
"message": f"council config invalid: {exc}",
|
|
890
|
-
"remedy": "fix agents/.ai-council.yml and re-run doctor",
|
|
905
|
+
"remedy": "fix agents/settings/.ai-council.yml and re-run doctor",
|
|
891
906
|
}
|
|
892
907
|
cli_members: list[tuple[str, Any]] = [
|
|
893
908
|
(name, m) for name, m in cfg.members.items()
|
|
@@ -983,6 +998,88 @@ def _check_unsupported_combos(manifest: dict[str, Any]) -> dict[str, Any]:
|
|
|
983
998
|
}
|
|
984
999
|
|
|
985
1000
|
|
|
1001
|
+
def _wizard_state_path() -> Path:
|
|
1002
|
+
"""Return the on-disk location of the unified Setup-Wizard state file.
|
|
1003
|
+
|
|
1004
|
+
Mirrors ``STATE_REL`` in :mod:`src/server/routes/wizard.ts` — the
|
|
1005
|
+
server writes ``<writeRoot>/state/wizard-state.json``. Under the
|
|
1006
|
+
global-only install scope (ADR-020) ``writeRoot`` resolves to
|
|
1007
|
+
:func:`user_global_paths.event4u_root` (typically
|
|
1008
|
+
``~/.event4u/agent-config/``); the ``EVENT4U_CONFIG_HOME`` override
|
|
1009
|
+
is honoured implicitly so tests stay hermetic.
|
|
1010
|
+
"""
|
|
1011
|
+
from scripts._lib.user_global_paths import event4u_root
|
|
1012
|
+
return event4u_root() / "state" / "wizard-state.json"
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
def _check_wizard_state() -> dict[str, Any]:
|
|
1016
|
+
"""Health-check the resumable Setup-Wizard state file.
|
|
1017
|
+
|
|
1018
|
+
Returns ``ok`` when the file is absent (no active session) or when
|
|
1019
|
+
its JSON shape matches the contract from
|
|
1020
|
+
:mod:`src/server/routes/wizard.ts` (``step: int``, ``partial: dict``,
|
|
1021
|
+
optional ``totalSteps: int``, ``startedAt: str | null``).
|
|
1022
|
+
Returns ``fail`` when the file exists but is unreadable, not valid
|
|
1023
|
+
JSON, or violates the shape — ``--repair wizard-state`` resets it.
|
|
1024
|
+
"""
|
|
1025
|
+
state_pth = _wizard_state_path()
|
|
1026
|
+
if not state_pth.exists():
|
|
1027
|
+
return {
|
|
1028
|
+
"id": "wizard-state", "status": "ok",
|
|
1029
|
+
"message": "no active wizard session",
|
|
1030
|
+
"remedy": "",
|
|
1031
|
+
}
|
|
1032
|
+
try:
|
|
1033
|
+
raw = state_pth.read_text(encoding="utf-8")
|
|
1034
|
+
except OSError as exc:
|
|
1035
|
+
return {
|
|
1036
|
+
"id": "wizard-state", "status": "fail",
|
|
1037
|
+
"message": f"unreadable wizard-state at {state_pth}: {exc}",
|
|
1038
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1039
|
+
}
|
|
1040
|
+
try:
|
|
1041
|
+
data = json.loads(raw)
|
|
1042
|
+
except json.JSONDecodeError as exc:
|
|
1043
|
+
return {
|
|
1044
|
+
"id": "wizard-state", "status": "fail",
|
|
1045
|
+
"message": f"malformed JSON in wizard-state ({exc.msg} at line {exc.lineno})",
|
|
1046
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1047
|
+
}
|
|
1048
|
+
if not isinstance(data, dict):
|
|
1049
|
+
return {
|
|
1050
|
+
"id": "wizard-state", "status": "fail",
|
|
1051
|
+
"message": f"wizard-state root is {type(data).__name__}, expected object",
|
|
1052
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1053
|
+
}
|
|
1054
|
+
step = data.get("step")
|
|
1055
|
+
partial = data.get("partial", {})
|
|
1056
|
+
if not isinstance(step, int) or step < 0:
|
|
1057
|
+
return {
|
|
1058
|
+
"id": "wizard-state", "status": "fail",
|
|
1059
|
+
"message": f"wizard-state.step is {step!r}, expected non-negative integer",
|
|
1060
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1061
|
+
}
|
|
1062
|
+
if not isinstance(partial, dict):
|
|
1063
|
+
return {
|
|
1064
|
+
"id": "wizard-state", "status": "fail",
|
|
1065
|
+
"message": f"wizard-state.partial is {type(partial).__name__}, expected object",
|
|
1066
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1067
|
+
}
|
|
1068
|
+
total = data.get("totalSteps")
|
|
1069
|
+
if total is not None and (not isinstance(total, int) or total < 1):
|
|
1070
|
+
return {
|
|
1071
|
+
"id": "wizard-state", "status": "fail",
|
|
1072
|
+
"message": f"wizard-state.totalSteps is {total!r}, expected positive integer or omitted",
|
|
1073
|
+
"remedy": "agent-config doctor --repair wizard-state",
|
|
1074
|
+
}
|
|
1075
|
+
suffix = f" of {total}" if isinstance(total, int) else ""
|
|
1076
|
+
return {
|
|
1077
|
+
"id": "wizard-state", "status": "ok",
|
|
1078
|
+
"message": f"resumable wizard session at step {step + 1}{suffix}",
|
|
1079
|
+
"remedy": "",
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
|
|
986
1083
|
def _run_checks(
|
|
987
1084
|
project_root: Path,
|
|
988
1085
|
manifest: dict[str, Any],
|
|
@@ -1008,6 +1105,7 @@ def _run_checks(
|
|
|
1008
1105
|
"tier-usage-readiness": lambda: _check_tier_usage_readiness(project_root),
|
|
1009
1106
|
"council-cli": lambda: _check_council_cli(project_root),
|
|
1010
1107
|
"unsupported-combos": lambda: _check_unsupported_combos(manifest),
|
|
1108
|
+
"wizard-state": _check_wizard_state,
|
|
1011
1109
|
}
|
|
1012
1110
|
out: list[dict[str, Any]] = []
|
|
1013
1111
|
for cid in CHECK_IDS:
|
|
@@ -1115,6 +1213,14 @@ def _parse(argv: list[str]) -> argparse.Namespace:
|
|
|
1115
1213
|
"layer chain, wrapper, and install-mode; short-circuits "
|
|
1116
1214
|
"the drift report"),
|
|
1117
1215
|
)
|
|
1216
|
+
parser.add_argument(
|
|
1217
|
+
"--repair", default=None, metavar="ID",
|
|
1218
|
+
choices=list(REPAIR_IDS),
|
|
1219
|
+
help=("reset a recoverable artefact and exit "
|
|
1220
|
+
f"({' · '.join(REPAIR_IDS)}); short-circuits the drift "
|
|
1221
|
+
"report. Idempotent — absent files report 'nothing to "
|
|
1222
|
+
"repair' and exit 0."),
|
|
1223
|
+
)
|
|
1118
1224
|
return parser.parse_args(argv)
|
|
1119
1225
|
|
|
1120
1226
|
|
|
@@ -1165,8 +1271,50 @@ def _run_context(opts: argparse.Namespace) -> int:
|
|
|
1165
1271
|
return 0
|
|
1166
1272
|
|
|
1167
1273
|
|
|
1274
|
+
def _run_repair(opts: argparse.Namespace) -> int:
|
|
1275
|
+
"""Handle ``--repair <id>``: reset the named artefact, no drift report.
|
|
1276
|
+
|
|
1277
|
+
Currently the only target is ``wizard-state`` — unlinks the
|
|
1278
|
+
resumable session file so the next ``agent-config setup`` boots
|
|
1279
|
+
from step 1. Absent files are a no-op (idempotent re-run).
|
|
1280
|
+
"""
|
|
1281
|
+
target = opts.repair
|
|
1282
|
+
if target == "wizard-state":
|
|
1283
|
+
state_pth = _wizard_state_path()
|
|
1284
|
+
payload = {
|
|
1285
|
+
"id": "wizard-state",
|
|
1286
|
+
"path": str(state_pth),
|
|
1287
|
+
"action": "remove" if state_pth.exists() else "noop",
|
|
1288
|
+
}
|
|
1289
|
+
if state_pth.exists():
|
|
1290
|
+
try:
|
|
1291
|
+
state_pth.unlink()
|
|
1292
|
+
except OSError as exc:
|
|
1293
|
+
payload["action"] = "error"
|
|
1294
|
+
payload["error"] = str(exc)
|
|
1295
|
+
if opts.json:
|
|
1296
|
+
print(json.dumps(payload, indent=2))
|
|
1297
|
+
else:
|
|
1298
|
+
print(f"❌ doctor: could not remove {state_pth}: {exc}",
|
|
1299
|
+
file=sys.stderr)
|
|
1300
|
+
return 2
|
|
1301
|
+
if opts.json:
|
|
1302
|
+
print(json.dumps(payload, indent=2))
|
|
1303
|
+
else:
|
|
1304
|
+
if payload["action"] == "remove":
|
|
1305
|
+
print(f"✅ doctor: reset wizard-state ({state_pth})")
|
|
1306
|
+
else:
|
|
1307
|
+
print(f"✅ doctor: nothing to repair (no wizard-state at {state_pth})")
|
|
1308
|
+
return 0
|
|
1309
|
+
# argparse `choices=` already constrains target; defensive default.
|
|
1310
|
+
print(f"❌ doctor: unknown repair target {target!r}", file=sys.stderr)
|
|
1311
|
+
return 2
|
|
1312
|
+
|
|
1313
|
+
|
|
1168
1314
|
def main(argv: list[str] | None = None) -> int:
|
|
1169
1315
|
opts = _parse(list(argv) if argv is not None else sys.argv[1:])
|
|
1316
|
+
if opts.repair is not None:
|
|
1317
|
+
return _run_repair(opts)
|
|
1170
1318
|
if opts.trace_root:
|
|
1171
1319
|
return _run_trace_root(opts)
|
|
1172
1320
|
if opts.context:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Step-15 Phase 1 item 3. Answers the silent "why did the agent do that?"
|
|
4
4
|
question by showing which inputs the loader / router consulted, in what
|
|
5
5
|
order, and which one won. Read-only; never edits state, never dispatches
|
|
6
|
-
network calls.
|
|
6
|
+
network calls. Four subjects in the surface:
|
|
7
7
|
|
|
8
8
|
* ``config`` — full resolution chain for the active profile +
|
|
9
9
|
preset. Uses :mod:`scripts.config.profiles` and
|
|
@@ -15,6 +15,11 @@ network calls. Three subjects in the v1 surface:
|
|
|
15
15
|
* ``route <text>`` — given prompt text, returns every tier-1 rule
|
|
16
16
|
whose trigger list matches plus kernel rules
|
|
17
17
|
(always active).
|
|
18
|
+
* ``last`` — execution trace for the most recent ``/work``
|
|
19
|
+
run. Aggregates the persisted ``.work-state.json``,
|
|
20
|
+
council session, and memory hits into the
|
|
21
|
+
``ExplainTrace`` v1 contract (see
|
|
22
|
+
``docs/contracts/explain-trace.schema.json``).
|
|
18
23
|
|
|
19
24
|
Exit codes: ``0`` clean, ``1`` not found / no match, ``2`` invocation
|
|
20
25
|
error (bad project root, malformed ``router.json``).
|
|
@@ -37,6 +42,7 @@ from scripts._lib.agent_settings import (
|
|
|
37
42
|
from scripts.config import presets, profiles
|
|
38
43
|
|
|
39
44
|
ROUTER_FILENAME = "router.json"
|
|
45
|
+
ROUTER_RELATIVE = Path("dist") / ROUTER_FILENAME
|
|
40
46
|
|
|
41
47
|
|
|
42
48
|
def _resolve_root(arg: str | None) -> tuple[Path, str]:
|
|
@@ -55,7 +61,7 @@ def _load_user_settings(project_root: Path) -> dict[str, Any]:
|
|
|
55
61
|
|
|
56
62
|
|
|
57
63
|
def _load_router(project_root: Path) -> dict[str, Any]:
|
|
58
|
-
path = project_root /
|
|
64
|
+
path = project_root / ROUTER_RELATIVE
|
|
59
65
|
if not path.exists():
|
|
60
66
|
return {}
|
|
61
67
|
try:
|
|
@@ -207,7 +213,92 @@ def _explain_route(project_root: Path, text: str, *, as_json: bool) -> int:
|
|
|
207
213
|
return 0
|
|
208
214
|
|
|
209
215
|
|
|
216
|
+
def _explain_last(
|
|
217
|
+
project_root: Path,
|
|
218
|
+
state_file: Path | None,
|
|
219
|
+
*,
|
|
220
|
+
as_json: bool,
|
|
221
|
+
quiet: bool,
|
|
222
|
+
) -> int:
|
|
223
|
+
"""Render the execution trace for the most recent ``/work`` run."""
|
|
224
|
+
from scripts._cli.explain_last import build_trace
|
|
225
|
+
from scripts._cli.explain_last.render import render as render_md
|
|
226
|
+
from scripts._cli.explain_last.state_loader import StateLoadError
|
|
227
|
+
|
|
228
|
+
settings = _load_user_settings(project_root)
|
|
229
|
+
explain_cfg = settings.get("explain") if isinstance(settings.get("explain"), dict) else {}
|
|
230
|
+
if explain_cfg.get("enable_last") is False:
|
|
231
|
+
print("explain last disabled by settings (explain.enable_last)")
|
|
232
|
+
return 0
|
|
233
|
+
target_state = state_file or project_root / ".work-state.json"
|
|
234
|
+
try:
|
|
235
|
+
trace = build_trace(project_root, target_state)
|
|
236
|
+
except StateLoadError as exc:
|
|
237
|
+
# BLOCKING council fix — never print absolute paths in errors;
|
|
238
|
+
# username leakage via /Users/<name>/... hits Slack / CI logs.
|
|
239
|
+
try:
|
|
240
|
+
rel = target_state.relative_to(project_root)
|
|
241
|
+
except ValueError:
|
|
242
|
+
rel = Path(target_state.name)
|
|
243
|
+
msg = str(exc).replace(str(target_state), str(rel))
|
|
244
|
+
print(f"❌ explain last: {msg}", file=sys.stderr)
|
|
245
|
+
return exc.exit_code
|
|
246
|
+
if as_json:
|
|
247
|
+
json.dump(trace, sys.stdout, indent=2, sort_keys=True)
|
|
248
|
+
sys.stdout.write("\n")
|
|
249
|
+
return 0
|
|
250
|
+
sys.stdout.write(render_md(trace, with_footer=not quiet))
|
|
251
|
+
return 0
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
_LAST_HELP = """\
|
|
255
|
+
usage: agent-config explain last [--project PATH] [--state-file PATH]
|
|
256
|
+
[--json] [--quiet]
|
|
257
|
+
|
|
258
|
+
Reconstruct the execution trace for the most recent /work,
|
|
259
|
+
/implement-ticket, /council, or /video run. Read-only; never
|
|
260
|
+
makes network calls. Output is the ExplainTrace v1 contract:
|
|
261
|
+
docs/contracts/explain-trace.schema.json
|
|
262
|
+
|
|
263
|
+
why-slots answered (Markdown sections; JSON keys in parens):
|
|
264
|
+
|
|
265
|
+
inputs — profile / preset / cost_profile with per-knob source
|
|
266
|
+
(pack | profile | preset | user | env | runtime |
|
|
267
|
+
default)
|
|
268
|
+
route — matched tier-1 rules · kernel rules · active persona
|
|
269
|
+
(route)
|
|
270
|
+
memory — memory-MCP entries that influenced this run, with
|
|
271
|
+
hit-score + step-id (memory)
|
|
272
|
+
council — council members consulted with per-member verdict
|
|
273
|
+
(council)
|
|
274
|
+
assumptions — assumptions recorded during refine + per-halt
|
|
275
|
+
(assumptions)
|
|
276
|
+
pack — discovery-manifest pack selection rationale (pack)
|
|
277
|
+
halt — reason · step · surface for the most recent halt
|
|
278
|
+
(halt; Phase 3)
|
|
279
|
+
provider — /video provider selection rationale; omitted for
|
|
280
|
+
non-video runs (provider; Phase 3)
|
|
281
|
+
|
|
282
|
+
options:
|
|
283
|
+
--project PATH project root (defaults to anchor walk from cwd)
|
|
284
|
+
--state-file PATH .work-state.json path (default <root>/.work-state.json)
|
|
285
|
+
--json emit ExplainTrace JSON instead of Markdown
|
|
286
|
+
--quiet suppress the trailing tip footer
|
|
287
|
+
|
|
288
|
+
exit codes:
|
|
289
|
+
0 trace rendered, or disabled by settings (explain.enable_last)
|
|
290
|
+
1 no recent run found (state file missing or unreadable)
|
|
291
|
+
2 invocation error (bad project root, bad --state-file path)
|
|
292
|
+
"""
|
|
293
|
+
|
|
294
|
+
|
|
210
295
|
def main(argv: list[str] | None = None) -> int:
|
|
296
|
+
argv_list = list(sys.argv[1:] if argv is None else argv)
|
|
297
|
+
if argv_list[:1] == ["last"] and any(
|
|
298
|
+
a in ("-h", "--help") for a in argv_list[1:]
|
|
299
|
+
):
|
|
300
|
+
sys.stdout.write(_LAST_HELP)
|
|
301
|
+
return 0
|
|
211
302
|
parser = argparse.ArgumentParser(
|
|
212
303
|
prog="agent-config explain",
|
|
213
304
|
description=(
|
|
@@ -216,7 +307,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
216
307
|
),
|
|
217
308
|
)
|
|
218
309
|
parser.add_argument(
|
|
219
|
-
"subject", choices=("config", "rule", "route"),
|
|
310
|
+
"subject", choices=("config", "rule", "route", "last"),
|
|
220
311
|
help="what to explain",
|
|
221
312
|
)
|
|
222
313
|
parser.add_argument(
|
|
@@ -227,14 +318,28 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
227
318
|
"--project", default=None,
|
|
228
319
|
help="project root (defaults to anchor walk from cwd)",
|
|
229
320
|
)
|
|
321
|
+
parser.add_argument(
|
|
322
|
+
"--state-file", default=None, dest="state_file",
|
|
323
|
+
help="path to .work-state.json (subject=last; default <root>/.work-state.json)",
|
|
324
|
+
)
|
|
230
325
|
parser.add_argument(
|
|
231
326
|
"--json", action="store_true", dest="as_json",
|
|
232
327
|
help="emit JSON instead of human-readable text",
|
|
233
328
|
)
|
|
329
|
+
parser.add_argument(
|
|
330
|
+
"--quiet", action="store_true",
|
|
331
|
+
help="suppress the trailing tip footer (subject=last)",
|
|
332
|
+
)
|
|
234
333
|
opts = parser.parse_args(argv)
|
|
235
334
|
project_root, _origin = _resolve_root(opts.project)
|
|
236
335
|
if opts.subject == "config":
|
|
237
336
|
return _explain_config(project_root, as_json=opts.as_json)
|
|
337
|
+
if opts.subject == "last":
|
|
338
|
+
state_path = Path(opts.state_file) if opts.state_file else None
|
|
339
|
+
return _explain_last(
|
|
340
|
+
project_root, state_path,
|
|
341
|
+
as_json=opts.as_json, quiet=opts.quiet,
|
|
342
|
+
)
|
|
238
343
|
if opts.target is None:
|
|
239
344
|
print(
|
|
240
345
|
f"❌ explain: '{opts.subject}' requires a target argument",
|
|
@@ -49,8 +49,8 @@ GITIGNORE_BLOCK_END = "# <<< event4u/agent-config (managed) <<<"
|
|
|
49
49
|
GITIGNORE_NEW_BODY = (
|
|
50
50
|
".agent-settings.yml\n"
|
|
51
51
|
"agents/sessions/\n"
|
|
52
|
-
"agents/council
|
|
53
|
-
"agents/council
|
|
52
|
+
"agents/runtime/council/responses/\n"
|
|
53
|
+
"agents/runtime/council/sessions/\n"
|
|
54
54
|
)
|
|
55
55
|
|
|
56
56
|
|