@event4u/agent-config 2.25.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +13 -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 +14 -2
- 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 +15 -2
- 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/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 +15 -3
- 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 +13 -0
- package/.agent-src/commands/module/explore.md +23 -7
- 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 +64 -20
- package/.agent-src/commands/optimize/rtk.md +68 -30
- 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 +98 -10
- 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 +61 -27
- 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 +14 -1
- package/.agent-src/commands/upstream-contribute.md +12 -0
- package/.agent-src/commands/video/from-script.md +12 -0
- 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 +12 -0
- package/.agent-src/commands/work.md +12 -0
- package/.agent-src/contexts/augment-infrastructure.md +6 -9
- package/.agent-src/contexts/authority/scope-mechanics.md +11 -0
- package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -1
- package/.agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
- package/.agent-src/contexts/contracts/research-schema.md +1 -1
- package/.agent-src/contexts/documentation-hierarchy.md +2 -2
- package/.agent-src/contexts/execution/interrupt-examples.md +34 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +19 -0
- package/.agent-src/contexts/skills-and-commands.md +2 -2
- 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 +37 -11
- package/.agent-src/rules/artifact-drafting-protocol.md +19 -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 +40 -0
- package/.agent-src/rules/augment-source-of-truth.md +15 -3
- package/.agent-src/rules/autonomous-execution.md +44 -1
- package/.agent-src/rules/caveman-speak.md +13 -1
- 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 +16 -4
- 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 +21 -10
- package/.agent-src/rules/domain-safety-disclaimer.md +126 -0
- package/.agent-src/rules/domain-safety-pii.md +154 -0
- package/.agent-src/rules/domain-safety-retention.md +98 -0
- package/.agent-src/rules/downstream-changes.md +17 -5
- 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/framework-neutrality-in-generic-skills.md +142 -0
- package/.agent-src/rules/git-history-discipline.md +111 -0
- 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 +19 -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 +12 -0
- package/.agent-src/rules/no-roadmap-references.md +32 -18
- 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 +14 -2
- 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/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 +58 -0
- package/.agent-src/rules/verify-before-complete.md +23 -2
- 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 +13 -1
- package/.agent-src/skills/agent-docs-writing/SKILL.md +16 -4
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +14 -2
- package/.agent-src/skills/ai-council/SKILL.md +29 -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 +70 -154
- package/.agent-src/skills/api-testing/SKILL.md +23 -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 +52 -34
- package/.agent-src/skills/code-review/SKILL.md +53 -36
- 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 +19 -7
- 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 +13 -2
- 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 +22 -5
- 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 +77 -19
- 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 +37 -14
- 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 +13 -1
- 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 +13 -1
- package/.agent-src/skills/file-editor/SKILL.md +57 -19
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +14 -2
- 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 +16 -4
- 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 +199 -0
- package/.agent-src/skills/{dto-creator → laravel-dto}/SKILL.md +19 -6
- 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/{migration-creator → laravel-migration}/SKILL.md +23 -10
- 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 +15 -3
- package/.agent-src/skills/laravel-scheduling/SKILL.md +12 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/.agent-src/skills/{websocket → laravel-websocket}/SKILL.md +16 -3
- package/.agent-src/skills/launch-readiness/SKILL.md +12 -2
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +16 -4
- 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 +61 -17
- package/.agent-src/skills/messaging-architecture/SKILL.md +12 -2
- package/.agent-src/skills/migration-architect/SKILL.md +18 -6
- package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +12 -0
- package/.agent-src/skills/module-management/SKILL.md +13 -0
- package/.agent-src/skills/motion-choreographer/SKILL.md +16 -4
- package/.agent-src/skills/multi-tenancy/SKILL.md +29 -10
- 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 +30 -0
- package/.agent-src/skills/php-coder/SKILL.md +12 -0
- package/.agent-src/skills/php-debugging/SKILL.md +40 -0
- package/.agent-src/skills/php-service/SKILL.md +15 -3
- 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 +28 -1
- 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 +98 -60
- 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 +12 -0
- package/.agent-src/skills/readme-writing/SKILL.md +12 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +106 -23
- 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 +13 -1
- package/.agent-src/skills/roadmap-writing/SKILL.md +12 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +35 -8
- package/.agent-src/skills/rule-refactor/SKILL.md +157 -0
- package/.agent-src/skills/rule-writing/SKILL.md +46 -8
- 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 +50 -29
- 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 +13 -1
- 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 +12 -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 +16 -4
- package/.agent-src/skills/test-performance/SKILL.md +19 -6
- 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 +36 -27
- 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/copilot-instructions.md +2 -2
- package/.agent-src/templates/rule.md +3 -3
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +3 -3
- 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/state.py +53 -0
- package/.agent-src/templates/skill-archive-note.md +4 -4
- package/.claude-plugin/marketplace.json +6 -5
- package/AGENTS.md +5 -4
- package/CHANGELOG.md +178 -194
- package/CONTRIBUTING.md +61 -0
- package/README.md +23 -20
- package/config/agent-settings.template.yml +11 -1
- package/config/discovery/packs.yml +142 -0
- package/config/discovery/unassigned-artefacts.yml +66 -0
- package/config/discovery/workspaces.yml +59 -0
- package/config/gitignore-block.txt +17 -20
- 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 +110 -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 +75 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/discovery/discovery-manifest.json +9195 -0
- package/dist/discovery/discovery-manifest.json.sha256 +1 -0
- package/dist/discovery/discovery-manifest.summary.md +93 -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/server/app.js +117 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/io/atomicMultiWrite.js +202 -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 +140 -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 +49 -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 +155 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/userMd.js +117 -0
- package/dist/server/routes/userMd.js.map +1 -0
- package/dist/server/routes/wizard.js +138 -0
- package/dist/server/routes/wizard.js.map +1 -0
- package/dist/server/schemas/settings.js +138 -0
- package/dist/server/schemas/settings.js.map +1 -0
- package/dist/server/token.js +68 -0
- package/dist/server/token.js.map +1 -0
- package/dist/server/writeRoot.js +67 -0
- package/dist/server/writeRoot.js.map +1 -0
- package/dist/server/writeRoot.test.js +73 -0
- package/dist/server/writeRoot.test.js.map +1 -0
- package/dist/shared/userMd/formAdapter.js +105 -0
- package/dist/shared/userMd/formAdapter.js.map +1 -0
- package/dist/shared/userMd/schema.js +118 -0
- package/dist/shared/userMd/schema.js.map +1 -0
- package/dist/shared/userMd/utils.js +74 -0
- package/dist/shared/userMd/utils.js.map +1 -0
- package/dist/ui/assets/index-BTRcKDlB.js +39 -0
- package/dist/ui/assets/index-BTRcKDlB.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/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 +2 -2
- package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
- package/docs/architecture.md +4 -3
- package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
- package/docs/archive/CHANGELOG-pre-2.25.0.md +191 -0
- package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
- package/docs/catalog.md +77 -84
- 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 +11 -2
- 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/decision-trace-v1.md +5 -5
- package/docs/contracts/discovery-manifest.schema.json +146 -0
- package/docs/contracts/explain-trace.schema.json +144 -0
- package/docs/contracts/file-ownership-matrix.json +515 -309
- package/docs/contracts/file-ownership-matrix.md +1 -1
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/hook-architecture-v1.md +10 -10
- package/docs/contracts/kernel-membership.md +21 -4
- 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-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 +1 -1
- 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 +2 -2
- package/docs/contracts/router-blending.md +1 -1
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/settings-api.md +160 -0
- package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
- package/docs/contracts/smoke-contracts.md +8 -8
- package/docs/contracts/tier-3-contrib-plugin.md +1 -1
- package/docs/contracts/universal-skills.md +1 -1
- package/docs/contracts/write-engine.md +1 -1
- package/docs/customization.md +137 -11
- 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 +4 -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 +210 -0
- package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
- package/docs/decisions/INDEX.md +3 -0
- package/docs/distribution/mcp-submission-checklist.md +95 -0
- package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
- package/docs/examples/agent-user.example.md +3 -1
- package/docs/getting-started.md +6 -5
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- 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/php/api-design.md +2 -2
- package/docs/guidelines/php/controllers.md +1 -1
- package/docs/guidelines/php/resources.md +1 -1
- package/docs/guidelines/php/validations.md +1 -1
- package/docs/guidelines/prompt-templates.md +2 -2
- package/docs/hook-payload-capture.md +3 -3
- package/docs/installation.md +12 -4
- 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/skills-catalog.md +62 -18
- package/docs/wizard.md +121 -0
- package/llms.txt +61 -17
- package/package.json +46 -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 +5 -5
- package/scripts/_cli/cmd_explain.py +106 -2
- package/scripts/_cli/cmd_migrate.py +2 -2
- 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 +58 -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 +954 -0
- package/scripts/_lib/agent_settings.py +3 -3
- package/scripts/_lib/agents_overlay.py +3 -3
- package/scripts/_phase4_bucket.py +210 -0
- package/scripts/agent-config +35 -943
- 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_user_type_axis.py +1 -1
- package/scripts/build_discovery_manifest.py +302 -0
- package/scripts/build_linear_digest.py +0 -1
- 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_council_layout.py +26 -20
- package/scripts/check_council_references.py +10 -10
- 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_public_links.py +2 -2
- package/scripts/check_references.py +14 -21
- package/scripts/check_release_includes_discovery.py +61 -0
- 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/context_hygiene_hook.py +2 -2
- package/scripts/council_cli.py +22 -22
- package/scripts/council_prune.py +3 -3
- package/scripts/extract_audit_patterns.py +2 -2
- package/scripts/gen_discovery_baseline.py +127 -0
- package/scripts/generate_ownership_matrix.py +1 -1
- 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-hooks.sh +2 -2
- package/scripts/install.py +3 -3
- package/scripts/install.sh +120 -18
- package/scripts/inventory_frontmatter.py +1 -1
- package/scripts/lint_agents_layout.py +103 -0
- package/scripts/lint_archived_skills.py +3 -3
- package/scripts/lint_artefact_frontmatter.py +180 -0
- 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_framework_leakage.py +348 -0
- package/scripts/lint_framework_leakage_allowlist.json +477 -0
- package/scripts/lint_ghostwriter_source.py +1 -1
- 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_positioning.py +143 -0
- package/scripts/lint_rule_tiers.py +2 -2
- package/scripts/lint_skill_tools.py +1 -1
- package/scripts/lint_topics_yaml.py +89 -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 +9 -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 +3 -3
- 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/onboarding_gate_hook.py +4 -4
- package/scripts/prepack-check.mjs +62 -0
- package/scripts/probe_projection_fidelity.py +2 -2
- package/scripts/refine_ticket_detect.py +1 -1
- package/scripts/schemas/command.schema.json +46 -1
- package/scripts/schemas/persona.schema.json +1 -1
- package/scripts/schemas/rule.schema.json +44 -4
- package/scripts/schemas/skill.schema.json +46 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +1 -1
- package/scripts/skill_linter.py +62 -9
- package/scripts/skill_overlap.py +1 -1
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_usage_collect.py +3 -3
- package/scripts/skill_usage_report.py +3 -3
- package/scripts/smoke/kernel.sh +4 -4
- package/scripts/smoke/router.sh +2 -2
- package/scripts/smoke_quickstart.py +1 -1
- 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_prices.py +4 -3
- package/scripts/verify_before_complete_hook.py +1 -1
- package/scripts/verify_roadmap_closure.py +1 -1
- package/templates/agent-user.md +35 -0
- package/.agent-src/commands/onboard.md +0 -459
- package/.agent-src/rules/agent-docs.md +0 -20
- package/.agent-src/rules/augment-portability.md +0 -23
- package/.agent-src/rules/capture-learnings.md +0 -19
- package/.agent-src/rules/docs-sync.md +0 -20
- package/.agent-src/rules/domain-safety-disclaimer-consulting.md +0 -52
- package/.agent-src/rules/domain-safety-disclaimer-financial.md +0 -54
- package/.agent-src/rules/domain-safety-disclaimer-legal.md +0 -49
- package/.agent-src/rules/domain-safety-disclaimer-medical.md +0 -56
- package/.agent-src/rules/domain-safety-export-redact.md +0 -65
- package/.agent-src/rules/domain-safety-logging-pii-floor.md +0 -55
- package/.agent-src/rules/domain-safety-pii-finance.md +0 -57
- package/.agent-src/rules/domain-safety-pii-marketing.md +0 -60
- package/.agent-src/rules/domain-safety-pii-recruiting.md +0 -56
- package/.agent-src/rules/domain-safety-pii-support.md +0 -57
- package/.agent-src/rules/domain-safety-retention-finance.md +0 -48
- package/.agent-src/rules/domain-safety-retention-support.md +0 -55
- package/.agent-src/rules/e2e-testing.md +0 -19
- package/.agent-src/rules/no-unsolicited-rebase.md +0 -107
- package/.agent-src/rules/post-push-rewrite-discipline.md +0 -70
package/scripts/council_cli.py
CHANGED
|
@@ -24,15 +24,15 @@ import yaml
|
|
|
24
24
|
|
|
25
25
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
26
26
|
SETTINGS_FILE = REPO_ROOT / ".agent-settings.yml"
|
|
27
|
-
AI_COUNCIL_FILE = REPO_ROOT / "agents" / ".ai-council.yml"
|
|
27
|
+
AI_COUNCIL_FILE = REPO_ROOT / "agents" / "settings" / ".ai-council.yml"
|
|
28
28
|
|
|
29
29
|
# Canonical output dirs per ai-council § "Output path convention".
|
|
30
30
|
# Enforced at write-time by `_validate_council_output_path` so shell-side
|
|
31
31
|
# `>` redirects and forgetful agents can't strand artefacts at agents/ root.
|
|
32
32
|
COUNCIL_CANONICAL_DIRS: dict[str, str] = {
|
|
33
|
-
"responses": "agents/council
|
|
34
|
-
"sessions": "agents/council
|
|
35
|
-
"questions": "agents/council
|
|
33
|
+
"responses": "agents/runtime/council/responses",
|
|
34
|
+
"sessions": "agents/runtime/council/sessions",
|
|
35
|
+
"questions": "agents/runtime/council/questions",
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
|
|
@@ -139,7 +139,7 @@ def load_settings(
|
|
|
139
139
|
``load_agent_settings``. ``ai_council.*`` keys are not whitelisted,
|
|
140
140
|
so the project file remains authoritative for council config.
|
|
141
141
|
|
|
142
|
-
Step-2 council-redesign overlay: when ``agents/.ai-council.yml``
|
|
142
|
+
Step-2 council-redesign overlay: when ``agents/settings/.ai-council.yml``
|
|
143
143
|
exists it is the single source of truth — the validated config is
|
|
144
144
|
synthesized back into ``settings['ai_council']`` and wins over any
|
|
145
145
|
legacy block in ``.agent-settings.yml``. The pre-2 path stays alive
|
|
@@ -478,7 +478,7 @@ def _construct_api_member(
|
|
|
478
478
|
"""Build an api-mode client for a known provider name.
|
|
479
479
|
|
|
480
480
|
``api_key_ref`` carries the validated ``file:<path>`` / ``env:<VAR>``
|
|
481
|
-
reference from ``agents/.ai-council.yml`` and is resolved lazily here
|
|
481
|
+
reference from ``agents/settings/.ai-council.yml`` and is resolved lazily here
|
|
482
482
|
so the council does not require keys for disabled providers. When
|
|
483
483
|
``api_key_ref`` is ``None`` (no new config yet, or legacy code path),
|
|
484
484
|
fall back to the per-provider loaders so the pre-step-2
|
|
@@ -500,7 +500,7 @@ def _construct_api_member(
|
|
|
500
500
|
if name == "gemini":
|
|
501
501
|
if not api_key_ref:
|
|
502
502
|
raise CouncilDisabledError(
|
|
503
|
-
"member 'gemini' requires api_key_ref in agents/.ai-council.yml "
|
|
503
|
+
"member 'gemini' requires api_key_ref in agents/settings/.ai-council.yml "
|
|
504
504
|
"(e.g. `env:GEMINI_API_KEY`) — no legacy fallback."
|
|
505
505
|
)
|
|
506
506
|
api_key = resolve_api_key(api_key_ref, scope="ai_council.members.gemini")
|
|
@@ -508,7 +508,7 @@ def _construct_api_member(
|
|
|
508
508
|
if name == "xai":
|
|
509
509
|
if not api_key_ref:
|
|
510
510
|
raise CouncilDisabledError(
|
|
511
|
-
"member 'xai' requires api_key_ref in agents/.ai-council.yml "
|
|
511
|
+
"member 'xai' requires api_key_ref in agents/settings/.ai-council.yml "
|
|
512
512
|
"(e.g. `env:XAI_API_KEY`) — no legacy fallback."
|
|
513
513
|
)
|
|
514
514
|
api_key = resolve_api_key(api_key_ref, scope="ai_council.members.xai")
|
|
@@ -516,7 +516,7 @@ def _construct_api_member(
|
|
|
516
516
|
if name == "perplexity":
|
|
517
517
|
if not api_key_ref:
|
|
518
518
|
raise CouncilDisabledError(
|
|
519
|
-
"member 'perplexity' requires api_key_ref in agents/.ai-council.yml "
|
|
519
|
+
"member 'perplexity' requires api_key_ref in agents/settings/.ai-council.yml "
|
|
520
520
|
"(e.g. `env:PERPLEXITY_API_KEY`) — no legacy fallback."
|
|
521
521
|
)
|
|
522
522
|
api_key = resolve_api_key(api_key_ref, scope="ai_council.members.perplexity")
|
|
@@ -794,7 +794,7 @@ def _peer_review_active(ai_cfg: dict[str, Any], args: argparse.Namespace) -> boo
|
|
|
794
794
|
Resolution chain (highest priority first):
|
|
795
795
|
1. ``--peer-review`` CLI flag — explicit opt-in.
|
|
796
796
|
2. ``ai_council.peer_review.enabled: true`` in
|
|
797
|
-
``agents/.ai-council.yml`` — opt-in via config.
|
|
797
|
+
``agents/settings/.ai-council.yml`` — opt-in via config.
|
|
798
798
|
Both default to false; peer-review is opt-in by R2 verdict.
|
|
799
799
|
"""
|
|
800
800
|
if getattr(args, "peer_review", False):
|
|
@@ -1037,7 +1037,7 @@ def _emit_debate_estimate(
|
|
|
1037
1037
|
if requested > max_rounds_cap:
|
|
1038
1038
|
raise argparse.ArgumentTypeError(
|
|
1039
1039
|
f"--rounds={requested} exceeds debate_max_rounds={max_rounds_cap}; "
|
|
1040
|
-
f"raise the cap in agents/.ai-council.yml or lower --rounds."
|
|
1040
|
+
f"raise the cap in agents/settings/.ai-council.yml or lower --rounds."
|
|
1041
1041
|
)
|
|
1042
1042
|
rounds = requested
|
|
1043
1043
|
per_round_usd = sum(e.total_usd for e in estimates)
|
|
@@ -1424,7 +1424,7 @@ def _debate_refusal_cap(
|
|
|
1424
1424
|
def _emit_shadow_slo_banner() -> None:
|
|
1425
1425
|
"""Pre-flight SLO banner for solo-dispatch invocations (step-9 P10).
|
|
1426
1426
|
|
|
1427
|
-
Reads ``agents/council
|
|
1427
|
+
Reads ``agents/runtime/council/shadow-log.jsonl`` and prints the 7-day rolling
|
|
1428
1428
|
disagreement rate. ``OK``, ``WARN``, ``BREACH`` are all surfaced so the
|
|
1429
1429
|
user can see when single-member quality is drifting. Never auto-flips
|
|
1430
1430
|
back to full council \u2014 visibility-first, action-second (D10).
|
|
@@ -1444,7 +1444,7 @@ def _apply_solo_dispatch(
|
|
|
1444
1444
|
) -> tuple[list[ExternalAIClient], str | None]:
|
|
1445
1445
|
"""Filter ``members`` to a single solo-dispatch pick (step-9 P9).
|
|
1446
1446
|
|
|
1447
|
-
Loads the routing chain from ``agents/.ai-council.yml`` and asks
|
|
1447
|
+
Loads the routing chain from ``agents/settings/.ai-council.yml`` and asks
|
|
1448
1448
|
:func:`select_solo_member` for the first chain entry whose member
|
|
1449
1449
|
is runtime-present. The probe is conservative: a member counts as
|
|
1450
1450
|
auth-valid iff ``build_members`` returned a runtime client for it
|
|
@@ -1596,7 +1596,7 @@ def cmd_run(
|
|
|
1596
1596
|
# Phase 8 step 5 — opt-in cost disclosure for non-debate lenses.
|
|
1597
1597
|
# Default mode is "off" for analysis / default (cheap enough that
|
|
1598
1598
|
# the disclosure is friction); users opt in by setting
|
|
1599
|
-
# `lenses.<name>.cost_disclosure.mode` in agents/.ai-council.yml.
|
|
1599
|
+
# `lenses.<name>.cost_disclosure.mode` in agents/settings/.ai-council.yml.
|
|
1600
1600
|
disc_mode, disc_threshold, disc_show = _resolve_cost_disclosure(
|
|
1601
1601
|
ai_cfg, question.mode,
|
|
1602
1602
|
)
|
|
@@ -1885,7 +1885,7 @@ def cmd_debate(
|
|
|
1885
1885
|
if requested > max_rounds_cap:
|
|
1886
1886
|
raise argparse.ArgumentTypeError(
|
|
1887
1887
|
f"--rounds={requested} exceeds debate_max_rounds={max_rounds_cap}; "
|
|
1888
|
-
f"raise the cap in agents/.ai-council.yml or lower --rounds."
|
|
1888
|
+
f"raise the cap in agents/settings/.ai-council.yml or lower --rounds."
|
|
1889
1889
|
)
|
|
1890
1890
|
rounds = requested
|
|
1891
1891
|
|
|
@@ -1942,7 +1942,7 @@ def cmd_debate(
|
|
|
1942
1942
|
f"❌ council:debate refused · high-end estimate "
|
|
1943
1943
|
f"${debate_estimate.high_usd:.4f} exceeds "
|
|
1944
1944
|
f"debate.max_cost_usd=${cap:.2f}. Lower --rounds, drop "
|
|
1945
|
-
f"members, or raise the cap in agents/.ai-council.yml.\n"
|
|
1945
|
+
f"members, or raise the cap in agents/settings/.ai-council.yml.\n"
|
|
1946
1946
|
)
|
|
1947
1947
|
return 4
|
|
1948
1948
|
|
|
@@ -2037,7 +2037,7 @@ def cmd_render(args: argparse.Namespace) -> int:
|
|
|
2037
2037
|
Lens resolution order: explicit ``--prompt-mode`` > ``prompt_mode``
|
|
2038
2038
|
in the payload > ``mode`` in the payload > ``None`` (default decision
|
|
2039
2039
|
template). R4 Q4 escape hatch ``--prose-synthesis`` overrides the
|
|
2040
|
-
table. ``--output`` writes to ``agents/council
|
|
2040
|
+
table. ``--output`` writes to ``agents/runtime/council/sessions/`` (enforced);
|
|
2041
2041
|
omit it for stdout.
|
|
2042
2042
|
"""
|
|
2043
2043
|
payload = json.loads(Path(args.responses).read_text(encoding="utf-8"))
|
|
@@ -2258,7 +2258,7 @@ def _add_common_input_args(p: argparse.ArgumentParser) -> None:
|
|
|
2258
2258
|
"(anonymised) responses for blind spots before "
|
|
2259
2259
|
"synthesis. Adds N extra API calls. Opt-in per the "
|
|
2260
2260
|
"R2 verdict; also accepts ai_council.peer_review."
|
|
2261
|
-
"enabled: true in agents/.ai-council.yml.")
|
|
2261
|
+
"enabled: true in agents/settings/.ai-council.yml.")
|
|
2262
2262
|
|
|
2263
2263
|
|
|
2264
2264
|
def cmd_shadow_report(args: argparse.Namespace) -> int:
|
|
@@ -2405,7 +2405,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
2405
2405
|
help="Required to actually start the debate.")
|
|
2406
2406
|
p_deb.add_argument("--rounds", type=int, default=None,
|
|
2407
2407
|
help="Number of debate rounds (default 2). Capped by "
|
|
2408
|
-
"ai_council.debate_max_rounds in agents/.ai-council.yml.")
|
|
2408
|
+
"ai_council.debate_max_rounds in agents/settings/.ai-council.yml.")
|
|
2409
2409
|
p_deb.add_argument("--auto-continue", action="store_true",
|
|
2410
2410
|
default=False, dest="auto_continue",
|
|
2411
2411
|
help="Skip the between-round y/N prompt. The hard cap "
|
|
@@ -2441,7 +2441,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
2441
2441
|
"to the `mode` recorded in the responses JSON.")
|
|
2442
2442
|
p_ren.add_argument("--output", default=None,
|
|
2443
2443
|
help="Write the rendered markdown to a file under "
|
|
2444
|
-
"agents/council
|
|
2444
|
+
"agents/runtime/council/sessions/ (enforced). Omit for "
|
|
2445
2445
|
"stdout. Prefer this over shell redirects so "
|
|
2446
2446
|
"the canonical-path check fires at write-time.")
|
|
2447
2447
|
_add_prose_synthesis_arg(p_ren)
|
|
@@ -2483,12 +2483,12 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
2483
2483
|
|
|
2484
2484
|
p_sha = sub.add_parser(
|
|
2485
2485
|
"shadow-report",
|
|
2486
|
-
help="Read agents/council
|
|
2486
|
+
help="Read agents/runtime/council/shadow-log.jsonl and print the 7-day "
|
|
2487
2487
|
"rolling disagreement rate + SLO status (step-9 P10).",
|
|
2488
2488
|
)
|
|
2489
2489
|
p_sha.add_argument("--log", default=None,
|
|
2490
2490
|
help="Path to the shadow log (default: "
|
|
2491
|
-
"agents/council
|
|
2491
|
+
"agents/runtime/council/shadow-log.jsonl).")
|
|
2492
2492
|
p_sha.add_argument("--window-days", type=int, default=7,
|
|
2493
2493
|
help="Rolling window in days (default: 7).")
|
|
2494
2494
|
|
package/scripts/council_prune.py
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
Deletes council files older than `ai_council.session_retention_days`
|
|
5
5
|
(default 7) across all four artefact directories:
|
|
6
6
|
|
|
7
|
-
- agents/council
|
|
8
|
-
- agents/council
|
|
9
|
-
- agents/council
|
|
7
|
+
- agents/runtime/council/sessions/ (timestamp subdirs + root files)
|
|
8
|
+
- agents/runtime/council/questions/ (mtime-based)
|
|
9
|
+
- agents/runtime/council/responses/ (mtime-based)
|
|
10
10
|
|
|
11
11
|
Same logic as the auto-prune that runs on every `council save()`,
|
|
12
12
|
exposed as a Task target so the user can sweep on demand.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Mine repeated phase patterns from ``agents/state/audit/*.jsonl``.
|
|
2
|
+
"""Mine repeated phase patterns from ``agents/runtime/state/audit/*.jsonl``.
|
|
3
3
|
|
|
4
4
|
Consumer side of `audit-log-v1` (see
|
|
5
5
|
`docs/contracts/audit-log-v1.md`). Reads append-only JSONL audit
|
|
@@ -46,7 +46,7 @@ from pathlib import Path
|
|
|
46
46
|
from typing import Iterable
|
|
47
47
|
|
|
48
48
|
ROOT = Path(__file__).resolve().parent.parent
|
|
49
|
-
DEFAULT_AUDIT_DIR = ROOT / "agents" / "state" / "audit"
|
|
49
|
+
DEFAULT_AUDIT_DIR = ROOT / "agents" / "runtime" / "state" / "audit"
|
|
50
50
|
SCHEMA_VERSION = 1
|
|
51
51
|
|
|
52
52
|
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Generate agents/evidence/notes/discovery-baseline.md for Phase 0.1."""
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import datetime as _dt
|
|
6
|
+
import pathlib
|
|
7
|
+
import re
|
|
8
|
+
import sys
|
|
9
|
+
from collections import Counter
|
|
10
|
+
|
|
11
|
+
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
|
12
|
+
SRC = ROOT / ".agent-src.uncompressed"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _frontmatter(path: pathlib.Path) -> dict[str, str]:
|
|
16
|
+
text = path.read_text(encoding="utf-8", errors="replace")
|
|
17
|
+
m = re.match(r"^---\n(.*?)\n---\n", text, re.DOTALL)
|
|
18
|
+
if not m:
|
|
19
|
+
return {}
|
|
20
|
+
out: dict[str, str] = {}
|
|
21
|
+
for line in m.group(1).splitlines():
|
|
22
|
+
if ":" in line and not line.startswith(" "):
|
|
23
|
+
k, _, v = line.partition(":")
|
|
24
|
+
out[k.strip()] = v.strip().strip('"').strip("'")
|
|
25
|
+
return out
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def main() -> int:
|
|
29
|
+
skills = sorted((SRC / "skills").rglob("SKILL.md"))
|
|
30
|
+
rules = sorted((SRC / "rules").rglob("*.md"))
|
|
31
|
+
commands = sorted((SRC / "commands").rglob("*.md"))
|
|
32
|
+
templates = sorted((SRC / "templates").rglob("*")) if (SRC / "templates").exists() else []
|
|
33
|
+
templates = [p for p in templates if p.is_file()]
|
|
34
|
+
|
|
35
|
+
domains: Counter[str] = Counter()
|
|
36
|
+
no_domain = 0
|
|
37
|
+
for s in skills:
|
|
38
|
+
fm = _frontmatter(s)
|
|
39
|
+
d = fm.get("domain")
|
|
40
|
+
if d:
|
|
41
|
+
domains[d] += 1
|
|
42
|
+
else:
|
|
43
|
+
no_domain += 1
|
|
44
|
+
|
|
45
|
+
out = []
|
|
46
|
+
out.append("# Discovery Baseline — Inventory (Phase 0.1)\n")
|
|
47
|
+
out.append(
|
|
48
|
+
f"> Generated by `scripts/gen_discovery_baseline.py` on "
|
|
49
|
+
f"{_dt.datetime.now(_dt.timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')}.\n"
|
|
50
|
+
)
|
|
51
|
+
out.append(
|
|
52
|
+
"> Frozen reference for the Phase 2 scanner — the `no domain` tally below must match the\n"
|
|
53
|
+
"> first scanner run's `unassigned[]` count within ±5% (Phase 2.4 acceptance).\n"
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
out.append("## Counts by category\n")
|
|
57
|
+
out.append("| Category | Path | Count |")
|
|
58
|
+
out.append("|---|---|---|")
|
|
59
|
+
out.append(f"| Skills | `.agent-src.uncompressed/skills/*/SKILL.md` | {len(skills)} |")
|
|
60
|
+
out.append(f"| Rules | `.agent-src.uncompressed/rules/**/*.md` | {len(rules)} |")
|
|
61
|
+
out.append(f"| Commands | `.agent-src.uncompressed/commands/**/*.md` | {len(commands)} |")
|
|
62
|
+
out.append(f"| Templates | `.agent-src.uncompressed/templates/**/*` | {len(templates)} |")
|
|
63
|
+
out.append("")
|
|
64
|
+
|
|
65
|
+
out.append("## Distinct `domain:` values (skills)\n")
|
|
66
|
+
for d, n in domains.most_common():
|
|
67
|
+
out.append(f"- `{d}` — {n} skill(s)")
|
|
68
|
+
out.append("")
|
|
69
|
+
|
|
70
|
+
out.append("## Skills without `domain:` (Phase 0.1 baseline)\n")
|
|
71
|
+
out.append(
|
|
72
|
+
f"- Count: **{no_domain}** (target for Phase 2.4 `unassigned[]` tally ±5%)"
|
|
73
|
+
)
|
|
74
|
+
out.append("")
|
|
75
|
+
|
|
76
|
+
out.append("## Sample frontmatter keys (first 10 skills)\n")
|
|
77
|
+
out.append("| File | name | source | domain | other keys |")
|
|
78
|
+
out.append("|---|---|---|---|---|")
|
|
79
|
+
interesting = {"status", "tier", "recommended_for_user_types", "cluster", "skills"}
|
|
80
|
+
for s in skills[:10]:
|
|
81
|
+
fm = _frontmatter(s)
|
|
82
|
+
other = ",".join(sorted(k for k in fm if k in interesting))
|
|
83
|
+
rel = s.relative_to(SRC)
|
|
84
|
+
out.append(
|
|
85
|
+
f"| `{rel}` | {fm.get('name','')} | {fm.get('source','')} | "
|
|
86
|
+
f"{fm.get('domain','')} | {other} |"
|
|
87
|
+
)
|
|
88
|
+
out.append("")
|
|
89
|
+
|
|
90
|
+
out.append("## Sample rules (first 10)\n")
|
|
91
|
+
out.append("| File | type | tier | source |")
|
|
92
|
+
out.append("|---|---|---|---|")
|
|
93
|
+
for r in rules[:10]:
|
|
94
|
+
fm = _frontmatter(r)
|
|
95
|
+
rel = r.relative_to(SRC)
|
|
96
|
+
out.append(
|
|
97
|
+
f"| `{rel}` | {fm.get('type','')} | {fm.get('tier','')} | {fm.get('source','')} |"
|
|
98
|
+
)
|
|
99
|
+
out.append("")
|
|
100
|
+
|
|
101
|
+
out.append("## Sample commands (first 10)\n")
|
|
102
|
+
out.append("| File | name | tier | cluster |")
|
|
103
|
+
out.append("|---|---|---|---|")
|
|
104
|
+
for c in commands[:10]:
|
|
105
|
+
fm = _frontmatter(c)
|
|
106
|
+
rel = c.relative_to(SRC)
|
|
107
|
+
out.append(
|
|
108
|
+
f"| `{rel}` | {fm.get('name','')} | {fm.get('tier','')} | {fm.get('cluster','')} |"
|
|
109
|
+
)
|
|
110
|
+
out.append("")
|
|
111
|
+
|
|
112
|
+
out.append("## Notes\n")
|
|
113
|
+
out.append("- Every skill carries `domain:` today — Phase 4 mapping uses it as primary signal.")
|
|
114
|
+
out.append("- Rules use `type` (always | auto) + `tier` (safety-floor | kernel | …); no `domain:` today.")
|
|
115
|
+
out.append("- Commands use `tier` + `cluster`; no `domain:` today.")
|
|
116
|
+
out.append("- Templates have no consistent frontmatter; Phase 4 quarantines them in `unassigned-artefacts.yml`.")
|
|
117
|
+
out.append("")
|
|
118
|
+
|
|
119
|
+
dest = ROOT / "agents" / "notes" / "discovery-baseline.md"
|
|
120
|
+
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
121
|
+
dest.write_text("\n".join(out), encoding="utf-8")
|
|
122
|
+
print(f"wrote {dest} — {len(out)} lines")
|
|
123
|
+
return 0
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
if __name__ == "__main__":
|
|
127
|
+
sys.exit(main())
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Produces:
|
|
5
5
|
|
|
6
6
|
* docs/contracts/file-ownership-matrix.json (machine, internal-locked)
|
|
7
|
-
* agents/contexts/structural/file-ownership-matrix.md (human-readable)
|
|
7
|
+
* agents/settings/contexts/structural/file-ownership-matrix.md (human-readable)
|
|
8
8
|
|
|
9
9
|
Walks `.agent-src.uncompressed/{rules,skills,commands,contexts,personas}/`,
|
|
10
10
|
parses frontmatter for `load_context:` / `load_context_eager:`, scans
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# - scripts/install.py (per-platform config writer)
|
|
6
6
|
#
|
|
7
7
|
# Schema and event vocabulary: docs/contracts/hook-architecture-v1.md.
|
|
8
|
-
# Per-platform event-name mapping: agents/contexts/chat-history-platform-hooks.md.
|
|
8
|
+
# Per-platform event-name mapping: agents/settings/contexts/chat-history-platform-hooks.md.
|
|
9
9
|
#
|
|
10
10
|
# When you add or remove a concern, also update:
|
|
11
11
|
# - scripts/agent-config (CLI subcommand wiring, if exposed)
|
|
@@ -32,14 +32,14 @@ concerns:
|
|
|
32
32
|
fail_closed: false
|
|
33
33
|
# Phase 5 — Tier-1 hook for the verify-before-complete rule. Records
|
|
34
34
|
# observable evidence of verification commands (tests, quality tools,
|
|
35
|
-
# builds) into agents/state/verify-before-complete.json. The rule body
|
|
35
|
+
# builds) into agents/runtime/state/verify-before-complete.json. The rule body
|
|
36
36
|
# cites that file as the source of truth for "verified this turn?".
|
|
37
37
|
verify-before-complete:
|
|
38
38
|
script: scripts/verify_before_complete_hook.py
|
|
39
39
|
args: []
|
|
40
40
|
fail_closed: false
|
|
41
41
|
# Phase 5 — Tier-1 hook for the minimal-safe-diff rule. Counts unique
|
|
42
|
-
# files touched per turn into agents/state/minimal-safe-diff.json and
|
|
42
|
+
# files touched per turn into agents/runtime/state/minimal-safe-diff.json and
|
|
43
43
|
# flips warning=true past hooks.minimal_safe_diff.threshold.
|
|
44
44
|
minimal-safe-diff:
|
|
45
45
|
script: scripts/minimal_safe_diff_hook.py
|
|
@@ -73,7 +73,7 @@ platforms:
|
|
|
73
73
|
# plugin-scope hooks. Until those land, the dispatcher binding
|
|
74
74
|
# below is structurally ready but lifecycle events do not fire.
|
|
75
75
|
# Decision matrix + upstream blockers tracked in
|
|
76
|
-
# agents/contexts/chat-history-platform-hooks.md § Cowork.
|
|
76
|
+
# agents/settings/contexts/chat-history-platform-hooks.md § Cowork.
|
|
77
77
|
cowork:
|
|
78
78
|
session_start: [chat-history, onboarding-gate, verify-before-complete, minimal-safe-diff]
|
|
79
79
|
session_end: [chat-history]
|
|
@@ -87,7 +87,7 @@ platforms:
|
|
|
87
87
|
# to route into the active workspace. UserPromptSubmit maps to
|
|
88
88
|
# `beforeSubmitPrompt` (Cursor third-party-hooks table). Stop is
|
|
89
89
|
# IDE-only — CLI-only users fall back to /checkpoint per
|
|
90
|
-
# agents/contexts/chat-history-platform-hooks.md.
|
|
90
|
+
# agents/settings/contexts/chat-history-platform-hooks.md.
|
|
91
91
|
cursor:
|
|
92
92
|
session_start: [chat-history, onboarding-gate, verify-before-complete, minimal-safe-diff]
|
|
93
93
|
session_end: [chat-history]
|
|
@@ -81,6 +81,6 @@ printf '%s' "$EVENT_DATA" \
|
|
|
81
81
|
|
|
82
82
|
# Cline expects a JSON envelope on stdout; empty object = "no cancel,
|
|
83
83
|
# no context modification, no error". Errors from concerns surface
|
|
84
|
-
# through agents/state/.dispatcher/<session_id>/ per Phase 7.3.
|
|
84
|
+
# through agents/runtime/state/.dispatcher/<session_id>/ per Phase 7.3.
|
|
85
85
|
printf '%s\n' '{}'
|
|
86
86
|
exit 0
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# because Cowork spawns the CLI with `--setting-sources user`. The
|
|
17
17
|
# trampoline is structurally ready; install plumbing is deferred
|
|
18
18
|
# until upstream resolves the bugs and a stable settings location is
|
|
19
|
-
# documented. See `agents/contexts/chat-history-platform-hooks.md`
|
|
19
|
+
# documented. See `agents/settings/contexts/chat-history-platform-hooks.md`
|
|
20
20
|
# § Cowork.
|
|
21
21
|
#
|
|
22
22
|
# Behaviour mirrors cursor-dispatcher.sh:
|
|
@@ -226,7 +226,7 @@ def _run_concern(concern: dict, envelope: dict) -> tuple[int, str, str, int]:
|
|
|
226
226
|
Returns (rc, stderr_text, stdout_text, duration_ms).
|
|
227
227
|
|
|
228
228
|
Concerns run with CWD = consumer workspace (envelope.workspace_root),
|
|
229
|
-
NOT the agent-config package root — concerns resolve `agents/state/`
|
|
229
|
+
NOT the agent-config package root — concerns resolve `agents/runtime/state/`
|
|
230
230
|
and other consumer-local paths relative to CWD. The script *itself*
|
|
231
231
|
lives in the package (REPO_ROOT), so we resolve it absolutely.
|
|
232
232
|
"""
|
|
@@ -273,11 +273,11 @@ def _write_feedback(envelope: dict, session_id: str, entries: list[dict],
|
|
|
273
273
|
matches the dispatcher's overall posture.
|
|
274
274
|
"""
|
|
275
275
|
# Replay mode skips feedback emission entirely so fixture replays
|
|
276
|
-
# never create per-session dirs under agents/state/.dispatcher/.
|
|
276
|
+
# never create per-session dirs under agents/runtime/state/.dispatcher/.
|
|
277
277
|
if is_replay_mode():
|
|
278
278
|
return
|
|
279
279
|
workspace = envelope.get("workspace_root") or str(Path.cwd())
|
|
280
|
-
state_root = Path(workspace) / "agents" / "state"
|
|
280
|
+
state_root = Path(workspace) / "agents" / "runtime" / "state"
|
|
281
281
|
fb_dir = feedback_dir(state_root, session_id)
|
|
282
282
|
try:
|
|
283
283
|
fb_dir.mkdir(parents=True, exist_ok=True)
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
#
|
|
28
28
|
# Output — none on stdout. Gemini consumes JSON on stdout for
|
|
29
29
|
# context injection / decision; we don't inject anything from this
|
|
30
|
-
# layer (concerns stream their own state via agents/state/.dispatcher/).
|
|
30
|
+
# layer (concerns stream their own state via agents/runtime/state/.dispatcher/).
|
|
31
31
|
# SessionStart / SessionEnd are advisory in Gemini (continue/decision
|
|
32
32
|
# ignored), so we always exit 0.
|
|
33
33
|
|
|
@@ -5,7 +5,7 @@ Reads a stdin payload fixture from `tests/fixtures/hooks/` (one file per
|
|
|
5
5
|
event in `EVENT_VOCABULARY`), sets `AGENT_CONFIG_REPLAY=1`, and invokes
|
|
6
6
|
the universal dispatcher with the platform / event / payload tuple. The
|
|
7
7
|
replay flag tells `state_io` (and concerns that honour it) to skip every
|
|
8
|
-
write under `agents/state/` so the replay never mutates real session
|
|
8
|
+
write under `agents/runtime/state/` so the replay never mutates real session
|
|
9
9
|
state.
|
|
10
10
|
|
|
11
11
|
Invocation:
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"""Concurrency-safe state writes for hook concerns.
|
|
2
2
|
|
|
3
3
|
Per `docs/contracts/hook-architecture-v1.md` § Concurrency, every concern
|
|
4
|
-
that writes under `agents/state/` MUST:
|
|
4
|
+
that writes under `agents/runtime/state/` MUST:
|
|
5
5
|
|
|
6
|
-
1. Acquire `fcntl.flock(LOCK_EX)` on `agents/state/.dispatcher.lock`.
|
|
6
|
+
1. Acquire `fcntl.flock(LOCK_EX)` on `agents/runtime/state/.dispatcher.lock`.
|
|
7
7
|
2. Write to a sibling `<dest>.tmp.<pid>` file in the same directory.
|
|
8
8
|
3. `os.replace(tmp, dest)` — POSIX-atomic on the same filesystem.
|
|
9
9
|
4. Release the lock.
|
|
@@ -21,7 +21,7 @@ Cross-platform notes
|
|
|
21
21
|
holds, and torn-write risk is accepted (Windows is not a primary
|
|
22
22
|
agent-config platform — Cline tracks the upstream Windows-path issue
|
|
23
23
|
separately).
|
|
24
|
-
- The lock file lives under `agents/state/` which is gitignored.
|
|
24
|
+
- The lock file lives under `agents/runtime/state/` which is gitignored.
|
|
25
25
|
- The lock is process-scoped, not session-scoped: each call opens,
|
|
26
26
|
locks, writes, releases, closes. No long-lived file handles.
|
|
27
27
|
"""
|
|
@@ -47,7 +47,7 @@ def is_replay_mode() -> bool:
|
|
|
47
47
|
"""True when the caller signalled read-only fixture replay.
|
|
48
48
|
|
|
49
49
|
Concerns and the dispatcher honour the flag by skipping side
|
|
50
|
-
effects under `agents/state/` (and any other concern-owned state
|
|
50
|
+
effects under `agents/runtime/state/` (and any other concern-owned state
|
|
51
51
|
surface). See `docs/contracts/hook-architecture-v1.md` § Replay mode.
|
|
52
52
|
"""
|
|
53
53
|
return os.environ.get(REPLAY_ENV_VAR, "").strip() == "1"
|
|
@@ -60,7 +60,7 @@ def _lock_path(state_dir: Path) -> Path:
|
|
|
60
60
|
def atomic_write_json(target: Path, payload: Any, *, indent: int = 2) -> None:
|
|
61
61
|
"""Write `payload` as JSON to `target` atomically and concurrency-safely.
|
|
62
62
|
|
|
63
|
-
`target` MUST sit under an `agents/state/` directory (or any other
|
|
63
|
+
`target` MUST sit under an `agents/runtime/state/` directory (or any other
|
|
64
64
|
directory the caller treats as the lock scope). The lock file is
|
|
65
65
|
`<target.parent>/.dispatcher.lock`. Caller does not need to create
|
|
66
66
|
the directory in advance — this function ensures it.
|
package/scripts/hooks_doctor.py
CHANGED
|
@@ -11,8 +11,8 @@ and adds three diagnostics the bare status table does not surface:
|
|
|
11
11
|
`scripts/hooks/<platform>-dispatcher.sh`; flags any platform that
|
|
12
12
|
has manifest bindings but no trampoline on disk.
|
|
13
13
|
* **Last feedback** — for each concern, the most-recent dispatcher
|
|
14
|
-
feedback file under `agents/state/.dispatcher/*/<concern>.json`,
|
|
15
|
-
plus the per-rule state file under `agents/state/<concern>.json`
|
|
14
|
+
feedback file under `agents/runtime/state/.dispatcher/*/<concern>.json`,
|
|
15
|
+
plus the per-rule state file under `agents/runtime/state/<concern>.json`
|
|
16
16
|
when one exists.
|
|
17
17
|
|
|
18
18
|
This is a **read-only** report. It never installs, modifies, or runs
|
|
@@ -36,7 +36,7 @@ import dispatch_hook # noqa: E402
|
|
|
36
36
|
import hooks_status # noqa: E402
|
|
37
37
|
|
|
38
38
|
TRAMPOLINE_DIR = REPO_ROOT / "scripts" / "hooks"
|
|
39
|
-
STATE_DIR_DEFAULT = "agents/state"
|
|
39
|
+
STATE_DIR_DEFAULT = "agents/runtime/state"
|
|
40
40
|
|
|
41
41
|
# Platforms whose bridge file (settings.json) invokes the universal
|
|
42
42
|
# dispatcher directly — no shell trampoline required. Excluded from the
|
|
@@ -55,7 +55,7 @@ def _concern_state_file(state_dir: Path, concern: str) -> Path | None:
|
|
|
55
55
|
|
|
56
56
|
def _latest_feedback(state_dir: Path, concern: str) -> Path | None:
|
|
57
57
|
"""Return the most-recent dispatcher feedback file for the concern,
|
|
58
|
-
walking `agents/state/.dispatcher/<session>/<concern>.json`."""
|
|
58
|
+
walking `agents/runtime/state/.dispatcher/<session>/<concern>.json`."""
|
|
59
59
|
dispatcher_dir = state_dir / ".dispatcher"
|
|
60
60
|
if not dispatcher_dir.is_dir():
|
|
61
61
|
return None
|
package/scripts/install-hooks.sh
CHANGED
|
@@ -98,7 +98,7 @@ echo "✅ Pre-commit hook installed."
|
|
|
98
98
|
# lifecycle hooks) cannot fire SessionStart/Stop/PostToolUse. Git hooks
|
|
99
99
|
# are the platform-agnostic lifecycle surface that fires regardless of
|
|
100
100
|
# IDE — every commit, merge, checkout, and rewrite turns into a phase
|
|
101
|
-
# boundary in agents/.agent-chat-history when an agent session is active.
|
|
101
|
+
# boundary in agents/runtime/.agent-chat-history when an agent session is active.
|
|
102
102
|
#
|
|
103
103
|
# The hooks are silent no-ops when no agent session is active (the
|
|
104
104
|
# chat_history.py hook-append script returns "skipped_no_sidecar" with
|
|
@@ -110,7 +110,7 @@ write_chat_history_hook() {
|
|
|
110
110
|
local phase_tag="$2"
|
|
111
111
|
cat > "$HOOKS_DIR/$name" << EOF
|
|
112
112
|
#!/usr/bin/env bash
|
|
113
|
-
# $name: append a phase boundary to agents/.agent-chat-history when an agent
|
|
113
|
+
# $name: append a phase boundary to agents/runtime/.agent-chat-history when an agent
|
|
114
114
|
# session is active. Silent no-op otherwise. Never blocks git.
|
|
115
115
|
|
|
116
116
|
if [ -x ./agent-config ]; then
|
package/scripts/install.py
CHANGED
|
@@ -1009,7 +1009,7 @@ def ensure_augment_user_hooks(package_root: Path, force: bool) -> list[dict[str,
|
|
|
1009
1009
|
# scripts/hook_manifest.yaml to resolve which concerns fire on each
|
|
1010
1010
|
# (platform, event) tuple. Mirrors AUGMENT_DISPATCHER_BINDINGS so each
|
|
1011
1011
|
# concern fires on the same logical surface across platforms — the
|
|
1012
|
-
# contract from agents/contexts/hardening-pattern.md § Cross-platform
|
|
1012
|
+
# contract from agents/settings/contexts/hardening-pattern.md § Cross-platform
|
|
1013
1013
|
# parity.
|
|
1014
1014
|
CLAUDE_DISPATCHER_BINDINGS = (
|
|
1015
1015
|
("session_start", "SessionStart"),
|
|
@@ -1074,7 +1074,7 @@ def ensure_claude_bridge(project_root: Path, force: bool) -> list[dict[str, Any]
|
|
|
1074
1074
|
# Native event names per https://cursor.com/docs/reference/third-party-hooks
|
|
1075
1075
|
# (camelCase). UserPromptSubmit lives at `beforeSubmitPrompt`. Stop is
|
|
1076
1076
|
# IDE-only — CLI-only Cursor users get the rule-only checkpoint
|
|
1077
|
-
# fallback per agents/contexts/chat-history-platform-hooks.md.
|
|
1077
|
+
# fallback per agents/settings/contexts/chat-history-platform-hooks.md.
|
|
1078
1078
|
CURSOR_DISPATCHER_BINDINGS = (
|
|
1079
1079
|
("session_start", "sessionStart"),
|
|
1080
1080
|
("session_end", "sessionEnd"),
|
|
@@ -1335,7 +1335,7 @@ def ensure_windsurf_bridge(project_root: Path, force: bool) -> list[dict[str, An
|
|
|
1335
1335
|
scope. Idempotent via deep_merge — rerunning replaces hook arrays
|
|
1336
1336
|
rather than appending duplicates. `show_output: false` keeps post
|
|
1337
1337
|
hooks silent (per Windsurf docs); concerns stream their own output
|
|
1338
|
-
via agents/state/.dispatcher/.
|
|
1338
|
+
via agents/runtime/state/.dispatcher/.
|
|
1339
1339
|
"""
|
|
1340
1340
|
hooks: dict[str, list] = {}
|
|
1341
1341
|
for ac_event, native in WINDSURF_DISPATCHER_BINDINGS:
|