@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
package/scripts/install.sh
CHANGED
|
@@ -248,7 +248,7 @@ create_symlink() {
|
|
|
248
248
|
local link_dir
|
|
249
249
|
link_dir="$(dirname "$link_abs")"
|
|
250
250
|
|
|
251
|
-
mkdir -p "$link_dir"
|
|
251
|
+
$DRY_RUN || mkdir -p "$link_dir"
|
|
252
252
|
|
|
253
253
|
# Remove existing file/symlink
|
|
254
254
|
if [[ -L "$link_abs" ]] || [[ -f "$link_abs" ]]; then
|
|
@@ -336,7 +336,7 @@ sync_hybrid() {
|
|
|
336
336
|
local target_dir
|
|
337
337
|
target_dir="$(dirname "$target_file")"
|
|
338
338
|
|
|
339
|
-
mkdir -p "$target_dir"
|
|
339
|
+
$DRY_RUN || mkdir -p "$target_dir"
|
|
340
340
|
|
|
341
341
|
if should_copy "$rel_path"; then
|
|
342
342
|
# Remove existing symlink before copying
|
|
@@ -446,7 +446,7 @@ create_tool_symlinks() {
|
|
|
446
446
|
local project_root="$1"
|
|
447
447
|
local rules_dir="$project_root/.augment/rules"
|
|
448
448
|
|
|
449
|
-
[[ -d "$rules_dir" ]] || return
|
|
449
|
+
[[ -d "$rules_dir" ]] || return 0
|
|
450
450
|
|
|
451
451
|
local -a tool_ids=()
|
|
452
452
|
local -a tool_dirs=()
|
|
@@ -466,7 +466,7 @@ create_tool_symlinks() {
|
|
|
466
466
|
local rel_prefix="${rel_prefixes[$i]}"
|
|
467
467
|
local target_dir="$project_root/$dir"
|
|
468
468
|
|
|
469
|
-
mkdir -p "$target_dir"
|
|
469
|
+
$DRY_RUN || mkdir -p "$target_dir"
|
|
470
470
|
|
|
471
471
|
for rule_file in "$rules_dir"/*.md; do
|
|
472
472
|
[[ -f "$rule_file" ]] || continue
|
|
@@ -516,11 +516,11 @@ create_skill_symlinks() {
|
|
|
516
516
|
local project_root="$1"
|
|
517
517
|
local skills_dir="$project_root/.augment/skills"
|
|
518
518
|
|
|
519
|
-
[[ -d "$skills_dir" ]] || return
|
|
519
|
+
[[ -d "$skills_dir" ]] || return 0
|
|
520
520
|
is_tool_enabled "claude-code" || { log_verbose "skip .claude/skills/ (claude-code not selected)"; return 0; }
|
|
521
521
|
|
|
522
522
|
local target_dir="$project_root/.claude/skills"
|
|
523
|
-
mkdir -p "$target_dir"
|
|
523
|
+
$DRY_RUN || mkdir -p "$target_dir"
|
|
524
524
|
|
|
525
525
|
local count=0
|
|
526
526
|
for skill_dir in "$skills_dir"/*/; do
|
|
@@ -569,7 +569,7 @@ generate_windsurfrules() {
|
|
|
569
569
|
local project_root="$1"
|
|
570
570
|
local rules_dir="$project_root/.augment/rules"
|
|
571
571
|
|
|
572
|
-
[[ -d "$rules_dir" ]] || return
|
|
572
|
+
[[ -d "$rules_dir" ]] || return 0
|
|
573
573
|
is_tool_enabled "windsurf" || { log_verbose "skip .windsurfrules (windsurf not selected)"; return 0; }
|
|
574
574
|
|
|
575
575
|
local output="$project_root/.windsurfrules"
|
|
@@ -629,8 +629,8 @@ copy_if_missing() {
|
|
|
629
629
|
local source="$1"
|
|
630
630
|
local target="$2"
|
|
631
631
|
|
|
632
|
-
[[ -f "$source" ]] || return
|
|
633
|
-
[[ -f "$target" ]] && return
|
|
632
|
+
[[ -f "$source" ]] || return 0
|
|
633
|
+
[[ -f "$target" ]] && return 0
|
|
634
634
|
|
|
635
635
|
if $DRY_RUN; then
|
|
636
636
|
log_verbose "copy $(basename "$target") (missing)"
|
|
@@ -641,40 +641,139 @@ copy_if_missing() {
|
|
|
641
641
|
cp "$source" "$target"
|
|
642
642
|
}
|
|
643
643
|
|
|
644
|
-
# Migrate legacy infra files
|
|
645
|
-
#
|
|
646
|
-
#
|
|
647
|
-
#
|
|
648
|
-
# /
|
|
649
|
-
#
|
|
650
|
-
# exists;
|
|
644
|
+
# Migrate legacy infra files to their current home under agents/runtime/.
|
|
645
|
+
# Three source layouts are handled per file:
|
|
646
|
+
# - pre-2.x: <name> at project root
|
|
647
|
+
# - 2.x intermediate: agents/<name>
|
|
648
|
+
# - current: agents/runtime/<name>
|
|
649
|
+
# Covered files: .agent-chat-history (+ .bak) and the append-only budget
|
|
650
|
+
# history JSONLs. Idempotent: skips silently if the target already exists;
|
|
651
|
+
# never overwrites.
|
|
652
|
+
#
|
|
653
|
+
# .agent-prices.md is handled separately by migrate_legacy_prices_file.
|
|
651
654
|
migrate_legacy_root_infra() {
|
|
652
655
|
local project_root="$1"
|
|
653
|
-
local
|
|
654
|
-
local items=(
|
|
656
|
+
local runtime_dir="$project_root/agents/runtime"
|
|
657
|
+
local items=(
|
|
658
|
+
".agent-chat-history"
|
|
659
|
+
".agent-chat-history.bak"
|
|
660
|
+
".augment-budget-history.jsonl"
|
|
661
|
+
".rule-budget-history.jsonl"
|
|
662
|
+
)
|
|
663
|
+
|
|
664
|
+
for name in "${items[@]}"; do
|
|
665
|
+
local target="$runtime_dir/$name"
|
|
666
|
+
local sources=("$project_root/$name" "$project_root/agents/$name")
|
|
667
|
+
|
|
668
|
+
for old in "${sources[@]}"; do
|
|
669
|
+
[[ -e "$old" ]] || continue
|
|
670
|
+
|
|
671
|
+
if [[ -e "$target" ]]; then
|
|
672
|
+
log_warn "Legacy ${old#"$project_root/"} found, but agents/runtime/$name already exists — leaving source in place"
|
|
673
|
+
continue
|
|
674
|
+
fi
|
|
675
|
+
|
|
676
|
+
if $DRY_RUN; then
|
|
677
|
+
log_verbose "would migrate ${old#"$project_root/"} → agents/runtime/$name"
|
|
678
|
+
continue
|
|
679
|
+
fi
|
|
680
|
+
|
|
681
|
+
mkdir -p "$runtime_dir"
|
|
682
|
+
mv "$old" "$target"
|
|
683
|
+
log_info "Migrated ${old#"$project_root/"} → agents/runtime/$name"
|
|
684
|
+
done
|
|
685
|
+
done
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
# Migrate the low-impact decision corpus from agents/ to agents/decisions/.
|
|
689
|
+
# Pre-refactor: the .md and its .lock.yaml lived at agents/ root. They
|
|
690
|
+
# now live under agents/decisions/ to separate tracked decisions from
|
|
691
|
+
# volatile runtime data. Idempotent: skips silently if the target
|
|
692
|
+
# already exists; never overwrites.
|
|
693
|
+
migrate_legacy_low_impact_decisions() {
|
|
694
|
+
local project_root="$1"
|
|
695
|
+
local decisions_dir="$project_root/agents/decisions"
|
|
696
|
+
local items=("low-impact-decisions.md" "low-impact-decisions.lock.yaml")
|
|
655
697
|
|
|
656
698
|
for name in "${items[@]}"; do
|
|
657
|
-
local old="$project_root/$name"
|
|
658
|
-
local
|
|
699
|
+
local old="$project_root/agents/$name"
|
|
700
|
+
local target="$decisions_dir/$name"
|
|
659
701
|
|
|
660
702
|
[[ -e "$old" ]] || continue
|
|
661
703
|
|
|
662
|
-
if [[ -e "$
|
|
663
|
-
log_warn "Legacy
|
|
704
|
+
if [[ -e "$target" ]]; then
|
|
705
|
+
log_warn "Legacy agents/$name found, but agents/decisions/$name already exists — leaving source in place"
|
|
664
706
|
continue
|
|
665
707
|
fi
|
|
666
708
|
|
|
667
709
|
if $DRY_RUN; then
|
|
668
|
-
log_verbose "would migrate
|
|
710
|
+
log_verbose "would migrate agents/$name → agents/decisions/$name"
|
|
669
711
|
continue
|
|
670
712
|
fi
|
|
671
713
|
|
|
672
|
-
mkdir -p "$
|
|
673
|
-
mv "$old" "$
|
|
674
|
-
log_info "Migrated
|
|
714
|
+
mkdir -p "$decisions_dir"
|
|
715
|
+
mv "$old" "$target"
|
|
716
|
+
log_info "Migrated agents/$name → agents/decisions/$name"
|
|
675
717
|
done
|
|
676
718
|
}
|
|
677
719
|
|
|
720
|
+
# Migrate the AI Council price cache to its current home under agents/runtime/.
|
|
721
|
+
# Two source locations are handled:
|
|
722
|
+
# - pre-2.x: .agent-prices.md at project root
|
|
723
|
+
# - 2.x intermediate: agents/.agent-prices.md
|
|
724
|
+
# Both move to agents/runtime/.agent-prices.md. Idempotent: skips silently
|
|
725
|
+
# if the target already exists; never overwrites.
|
|
726
|
+
migrate_legacy_prices_file() {
|
|
727
|
+
local project_root="$1"
|
|
728
|
+
local runtime_dir="$project_root/agents/runtime"
|
|
729
|
+
local target="$runtime_dir/.agent-prices.md"
|
|
730
|
+
local sources=("$project_root/.agent-prices.md" "$project_root/agents/.agent-prices.md")
|
|
731
|
+
|
|
732
|
+
for old in "${sources[@]}"; do
|
|
733
|
+
[[ -e "$old" ]] || continue
|
|
734
|
+
|
|
735
|
+
if [[ -e "$target" ]]; then
|
|
736
|
+
log_warn "Legacy ${old#"$project_root/"} found, but agents/runtime/.agent-prices.md already exists — leaving source in place"
|
|
737
|
+
continue
|
|
738
|
+
fi
|
|
739
|
+
|
|
740
|
+
if $DRY_RUN; then
|
|
741
|
+
log_verbose "would migrate ${old#"$project_root/"} → agents/runtime/.agent-prices.md"
|
|
742
|
+
continue
|
|
743
|
+
fi
|
|
744
|
+
|
|
745
|
+
mkdir -p "$runtime_dir"
|
|
746
|
+
mv "$old" "$target"
|
|
747
|
+
log_info "Migrated ${old#"$project_root/"} → agents/runtime/.agent-prices.md"
|
|
748
|
+
done
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
# Migrate the AI Council config from agents/.ai-council.yml to
|
|
752
|
+
# agents/settings/.ai-council.yml. Idempotent: skips silently if the
|
|
753
|
+
# target already exists; never overwrites.
|
|
754
|
+
migrate_legacy_council_yml() {
|
|
755
|
+
local project_root="$1"
|
|
756
|
+
local settings_dir="$project_root/agents/settings"
|
|
757
|
+
local target="$settings_dir/.ai-council.yml"
|
|
758
|
+
local source="$project_root/agents/.ai-council.yml"
|
|
759
|
+
|
|
760
|
+
[[ -e "$source" ]] || return 0
|
|
761
|
+
|
|
762
|
+
if [[ -e "$target" ]]; then
|
|
763
|
+
log_warn "Legacy agents/.ai-council.yml found, but agents/settings/.ai-council.yml already exists — leaving source in place"
|
|
764
|
+
return 0
|
|
765
|
+
fi
|
|
766
|
+
|
|
767
|
+
if $DRY_RUN; then
|
|
768
|
+
log_verbose "would migrate agents/.ai-council.yml → agents/settings/.ai-council.yml"
|
|
769
|
+
return 0
|
|
770
|
+
fi
|
|
771
|
+
|
|
772
|
+
mkdir -p "$settings_dir"
|
|
773
|
+
mv "$source" "$target"
|
|
774
|
+
log_info "Migrated agents/.ai-council.yml → agents/settings/.ai-council.yml"
|
|
775
|
+
}
|
|
776
|
+
|
|
678
777
|
# Ensure .gitignore contains the managed agent-config block.
|
|
679
778
|
# Delegates to scripts/sync_gitignore.py so the installer and the
|
|
680
779
|
# standalone /sync-gitignore command share one source of truth
|
|
@@ -735,8 +834,26 @@ install_cli_wrapper() {
|
|
|
735
834
|
}
|
|
736
835
|
|
|
737
836
|
# --- Main ---
|
|
837
|
+
# Phase 6 of monorepo-phase-3-typescript-installer (ADR-016 § Distribution):
|
|
838
|
+
# direct `bash install.sh` invocations are deprecated in favor of the
|
|
839
|
+
# TypeScript installer (`npx @event4u/agent-config init`). The banner only
|
|
840
|
+
# fires when this script is invoked directly — the orchestrator
|
|
841
|
+
# (scripts/install) and the consumer `./agent-config` wrapper set
|
|
842
|
+
# AGENT_CONFIG_FROM_ORCHESTRATOR=1 to suppress the noise. Removal target:
|
|
843
|
+
# the cutover release that flips the npx entry point to the TS installer.
|
|
844
|
+
emit_deprecation_banner() {
|
|
845
|
+
$QUIET && return 0
|
|
846
|
+
[[ "${AGENT_CONFIG_FROM_ORCHESTRATOR:-0}" == "1" ]] && return 0
|
|
847
|
+
[[ "${AGENT_CONFIG_SUPPRESS_DEPRECATION:-0}" == "1" ]] && return 0
|
|
848
|
+
echo " ⚠️ Direct \`bash install.sh\` is deprecated (ADR-016 § Distribution)." >&2
|
|
849
|
+
echo " Prefer: npx @event4u/agent-config init" >&2
|
|
850
|
+
echo " Or: bash scripts/install (orchestrator, suppresses this banner)" >&2
|
|
851
|
+
echo "" >&2
|
|
852
|
+
}
|
|
853
|
+
|
|
738
854
|
main() {
|
|
739
855
|
parse_args "$@"
|
|
856
|
+
emit_deprecation_banner
|
|
740
857
|
|
|
741
858
|
# Minimal-init short-circuit (Step 7 Phase 2): skip every payload-sync
|
|
742
859
|
# stage and only install the project-local `./agent-config` wrapper.
|
|
@@ -768,6 +885,9 @@ main() {
|
|
|
768
885
|
|
|
769
886
|
# 0. Migrate legacy infra files (root → agents/) before any content sync.
|
|
770
887
|
migrate_legacy_root_infra "$TARGET_DIR"
|
|
888
|
+
migrate_legacy_low_impact_decisions "$TARGET_DIR"
|
|
889
|
+
migrate_legacy_prices_file "$TARGET_DIR"
|
|
890
|
+
migrate_legacy_council_yml "$TARGET_DIR"
|
|
771
891
|
|
|
772
892
|
# 0b. Resolve settings (e.g. augment.rules_use_symlinks). On first
|
|
773
893
|
# install the file does not exist yet → defaults preserved.
|
|
@@ -823,7 +943,7 @@ main() {
|
|
|
823
943
|
if [[ "$airgap_mode" == "api" ]]; then
|
|
824
944
|
echo ""
|
|
825
945
|
echo "⚠️ airgapped environment detected — defaulting to mode: api"
|
|
826
|
-
echo " Set defaults.member_mode: api in agents/.ai-council.yml when configuring the council."
|
|
946
|
+
echo " Set defaults.member_mode: api in agents/settings/.ai-council.yml when configuring the council."
|
|
827
947
|
fi
|
|
828
948
|
fi
|
|
829
949
|
elif ! $QUIET; then
|
|
@@ -10,7 +10,7 @@ YAML frontmatter of every file, and prints per-type:
|
|
|
10
10
|
- sample values (up to 3) per key
|
|
11
11
|
|
|
12
12
|
Output is Markdown on stdout, intended to be captured into
|
|
13
|
-
`agents/docs/frontmatter-contract.md` as raw material for Phase 1 of the
|
|
13
|
+
`agents/reference/docs/frontmatter-contract.md` as raw material for Phase 1 of the
|
|
14
14
|
frontmatter-schema roadmap.
|
|
15
15
|
|
|
16
16
|
Stdlib-only. No PyYAML — we do a simple line-based parse sufficient for
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""CI guard for the `agents/` top-level layout.
|
|
3
|
+
|
|
4
|
+
The `agents/` tree is the project boundary for memory, roadmaps,
|
|
5
|
+
runtime artefacts, settings, audits, and policies. Flat files at the
|
|
6
|
+
`agents/` root are restricted to a small, intentional whitelist —
|
|
7
|
+
everything else lives in a typed subdirectory (`runtime/`, `settings/`,
|
|
8
|
+
`audits/`, `roadmaps/`, `policies/`, `contexts/`, etc.).
|
|
9
|
+
|
|
10
|
+
Two layout tiers:
|
|
11
|
+
|
|
12
|
+
MAINTAINER (this source repo, identified by ``.agent-src.uncompressed/``)
|
|
13
|
+
Full `agents/` tree allowed — only the flat-file whitelist is
|
|
14
|
+
enforced. Phase 4 of road-to-global-only-install keeps the
|
|
15
|
+
maintainer surface unchanged.
|
|
16
|
+
|
|
17
|
+
CONSUMER (any repo without ``.agent-src.uncompressed/``)
|
|
18
|
+
Global-only target shape: `agents/overrides/` + the bridge
|
|
19
|
+
marker `agents/.event4u-bridge.yml` are the **only** expected
|
|
20
|
+
artefacts. Anything else surfaces as a WARNING with a pointer
|
|
21
|
+
to ``agent-config settings migrate`` (exit code 0). Hard
|
|
22
|
+
violations (unknown flat files at the root) still fail.
|
|
23
|
+
|
|
24
|
+
Exit codes:
|
|
25
|
+
0 — layout is clean (warnings ok in consumer mode).
|
|
26
|
+
1 — at least one UNKNOWN flat-file violation.
|
|
27
|
+
|
|
28
|
+
Invocation (from project root):
|
|
29
|
+
python3 scripts/lint_agents_layout.py
|
|
30
|
+
python3 scripts/lint_agents_layout.py --quiet
|
|
31
|
+
python3 scripts/lint_agents_layout.py --strict # warnings → errors
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
from __future__ import annotations
|
|
35
|
+
|
|
36
|
+
import sys
|
|
37
|
+
from pathlib import Path
|
|
38
|
+
|
|
39
|
+
AGENTS_ROOT = Path("agents")
|
|
40
|
+
|
|
41
|
+
# Intentional flat files at agents/ root. Anything not in this set is
|
|
42
|
+
# UNKNOWN (linter failure). Durable records live under typed subdirs:
|
|
43
|
+
# decisions/ (low-impact corpus, ADR-style records), evidence/ (durable
|
|
44
|
+
# reports / metrics / council artefacts), runtime/ (volatile, gitignored).
|
|
45
|
+
ALLOWED_FLAT_FILES: frozenset[str] = frozenset(
|
|
46
|
+
{
|
|
47
|
+
# Entry document — narrative pointer to the agents/ tree.
|
|
48
|
+
"index.md",
|
|
49
|
+
# D1 anchor / progress dashboard — kept at root by the
|
|
50
|
+
# roadmap-progress-sync rule so consumers see it first.
|
|
51
|
+
"roadmaps-progress.md",
|
|
52
|
+
# Empty-tree sentinel so agents/ survives a fresh checkout
|
|
53
|
+
# before any runtime artefact lands.
|
|
54
|
+
".gitkeep",
|
|
55
|
+
# Consumer bridge marker (Phase 4 of road-to-global-only-install).
|
|
56
|
+
# Spec: docs/contracts/consumer-bridge.md (event4u-bridge/v1).
|
|
57
|
+
".event4u-bridge.yml",
|
|
58
|
+
}
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
# Consumer-target layout: only these top-level entries are expected in
|
|
62
|
+
# the global-only world. Anything else is a WARNING in consumer mode.
|
|
63
|
+
CONSUMER_EXPECTED_ENTRIES: frozenset[str] = frozenset(
|
|
64
|
+
{"overrides", ".event4u-bridge.yml", ".gitkeep"},
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
MIGRATE_HINT = (
|
|
68
|
+
"Run `agent-config settings migrate` (or `npx @event4u/agent-config "
|
|
69
|
+
"migrate-to-global`) to move legacy project-scope artefacts under "
|
|
70
|
+
"`~/.event4u/agent-config/` and leave `agents/overrides/` + "
|
|
71
|
+
"`agents/.event4u-bridge.yml` as the only consumer-side files."
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def is_source_repo(project_root: Path) -> bool:
|
|
76
|
+
"""True when running inside the agent-config source repo.
|
|
77
|
+
|
|
78
|
+
The maintainer surface is identified by **any** of:
|
|
79
|
+
- ``.agent-src.uncompressed/`` at the workspace root (legacy / single-pack layout),
|
|
80
|
+
- ``packages/<pack>/.agent-src.uncompressed/`` (current monorepo layout — see ``AGENTS.md``),
|
|
81
|
+
- ``.agent-src/`` at the workspace root (compressed authoring tree).
|
|
82
|
+
|
|
83
|
+
Consumer repos ship none of these — they only carry the deployed
|
|
84
|
+
`.augment/`, `.claude/`, etc. plus `agents/overrides/`.
|
|
85
|
+
"""
|
|
86
|
+
if (project_root / ".agent-src.uncompressed").is_dir():
|
|
87
|
+
return True
|
|
88
|
+
if (project_root / ".agent-src").is_dir():
|
|
89
|
+
return True
|
|
90
|
+
packages = project_root / "packages"
|
|
91
|
+
if packages.is_dir():
|
|
92
|
+
for sub in packages.iterdir():
|
|
93
|
+
if (sub / ".agent-src.uncompressed").is_dir():
|
|
94
|
+
return True
|
|
95
|
+
return False
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def find_violations(root: Path) -> list[str]:
|
|
99
|
+
"""Return UNKNOWN flat-file violations at the agents/ root."""
|
|
100
|
+
unknown: list[str] = []
|
|
101
|
+
if not root.is_dir():
|
|
102
|
+
return unknown
|
|
103
|
+
|
|
104
|
+
for path in sorted(root.iterdir()):
|
|
105
|
+
if not path.is_file():
|
|
106
|
+
continue
|
|
107
|
+
name = path.name
|
|
108
|
+
if name in ALLOWED_FLAT_FILES:
|
|
109
|
+
continue
|
|
110
|
+
unknown.append(
|
|
111
|
+
f"{path}: flat file not in agents/ whitelist — move to a typed "
|
|
112
|
+
f"subdirectory (runtime/, evidence/, decisions/, settings/, "
|
|
113
|
+
f"audits/, roadmaps/, policies/, contexts/, …) or add to "
|
|
114
|
+
f"ALLOWED_FLAT_FILES in scripts/lint_agents_layout.py with "
|
|
115
|
+
f"rationale."
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
return unknown
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def find_consumer_warnings(root: Path) -> list[str]:
|
|
122
|
+
"""Return WARNINGs for consumer repos that hold legacy artefacts.
|
|
123
|
+
|
|
124
|
+
Consumer-target shape (Phase 4 of road-to-global-only-install):
|
|
125
|
+
`agents/overrides/` + `agents/.event4u-bridge.yml` are the only
|
|
126
|
+
expected entries. Anything else is a soft warning — the linter
|
|
127
|
+
still exits 0, but the message points the user at the migration
|
|
128
|
+
subcommand so the legacy directory can be reclaimed.
|
|
129
|
+
"""
|
|
130
|
+
warnings: list[str] = []
|
|
131
|
+
if not root.is_dir():
|
|
132
|
+
return warnings
|
|
133
|
+
|
|
134
|
+
for path in sorted(root.iterdir()):
|
|
135
|
+
if path.name in CONSUMER_EXPECTED_ENTRIES:
|
|
136
|
+
continue
|
|
137
|
+
# Flat-file UNKNOWNs are already an error — don't double-count.
|
|
138
|
+
if path.is_file() and path.name not in ALLOWED_FLAT_FILES:
|
|
139
|
+
continue
|
|
140
|
+
kind = "dir" if path.is_dir() else "file"
|
|
141
|
+
warnings.append(f"{path} ({kind}): legacy artefact outside the consumer-target shape.")
|
|
142
|
+
|
|
143
|
+
return warnings
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def main() -> int:
|
|
147
|
+
args = sys.argv[1:]
|
|
148
|
+
strict = "--strict" in args
|
|
149
|
+
quiet = "--quiet" in args
|
|
150
|
+
|
|
151
|
+
project_root = Path.cwd()
|
|
152
|
+
unknown = find_violations(AGENTS_ROOT)
|
|
153
|
+
consumer_mode = not is_source_repo(project_root)
|
|
154
|
+
warnings = find_consumer_warnings(AGENTS_ROOT) if consumer_mode else []
|
|
155
|
+
|
|
156
|
+
if unknown:
|
|
157
|
+
print("❌ agents/ layout violations (unknown flat files):\n")
|
|
158
|
+
for f in unknown:
|
|
159
|
+
print(f" - {f}")
|
|
160
|
+
print(
|
|
161
|
+
"\nRule: scripts/lint_agents_layout.py — flat files at agents/ "
|
|
162
|
+
"root must be whitelisted. Typed subdirectories: runtime/, "
|
|
163
|
+
"evidence/, decisions/, settings/, audits/, roadmaps/, "
|
|
164
|
+
"policies/, contexts/, … ."
|
|
165
|
+
)
|
|
166
|
+
return 1
|
|
167
|
+
|
|
168
|
+
if warnings:
|
|
169
|
+
if not quiet:
|
|
170
|
+
print("⚠️ agents/ consumer-shape warnings:\n")
|
|
171
|
+
for w in warnings:
|
|
172
|
+
print(f" - {w}")
|
|
173
|
+
print(f"\n{MIGRATE_HINT}")
|
|
174
|
+
if strict:
|
|
175
|
+
return 1
|
|
176
|
+
|
|
177
|
+
if not unknown and not warnings and not quiet:
|
|
178
|
+
print("✅ agents/ layout clean.")
|
|
179
|
+
return 0
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
if __name__ == "__main__":
|
|
183
|
+
sys.exit(main())
|
|
@@ -65,7 +65,7 @@ class Target:
|
|
|
65
65
|
TARGETS = [
|
|
66
66
|
Target(ROOT / "AGENTS.md", "package-root", 3000, 2800, template=False),
|
|
67
67
|
Target(
|
|
68
|
-
ROOT / ".agent-src.uncompressed" / "templates" / "AGENTS.md",
|
|
68
|
+
ROOT / "packages" / "core" / ".agent-src.uncompressed" / "templates" / "AGENTS.md",
|
|
69
69
|
"consumer-template", 2500, 2300, template=True,
|
|
70
70
|
),
|
|
71
71
|
]
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Lint archive notes under agents/archived-skills/.
|
|
2
|
+
"""Lint archive notes under agents/evidence/archived-skills/.
|
|
3
3
|
|
|
4
4
|
Enforces the contract from
|
|
5
5
|
.agent-src.uncompressed/templates/skill-archive-note.md:
|
|
6
6
|
|
|
7
|
-
1. Every <slug>.md under agents/archived-skills/ has the six required
|
|
7
|
+
1. Every <slug>.md under agents/evidence/archived-skills/ has the six required
|
|
8
8
|
frontmatter fields with valid values.
|
|
9
9
|
2. `reason` is one of {unused, merged, superseded, deprecated}.
|
|
10
10
|
3. When `reason ∈ {merged, superseded}` the `replacement` slug exists
|
|
@@ -14,7 +14,7 @@ Enforces the contract from
|
|
|
14
14
|
its frontmatter `replaced_by:` field.
|
|
15
15
|
|
|
16
16
|
Hooked into `task ci` via `task lint-archived-skills`. Passes cleanly
|
|
17
|
-
against an empty agents/archived-skills/ (only README.md present).
|
|
17
|
+
against an empty agents/evidence/archived-skills/ (only README.md present).
|
|
18
18
|
|
|
19
19
|
Exit codes:
|
|
20
20
|
0 contract holds
|
|
@@ -29,8 +29,16 @@ from pathlib import Path
|
|
|
29
29
|
QUIET = "--quiet" in sys.argv
|
|
30
30
|
|
|
31
31
|
REPO = Path(__file__).resolve().parents[1]
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
# Archive notes moved under agents/evidence/ in the privilege-first
|
|
33
|
+
# taxonomy refactor (commit d2ce6748).
|
|
34
|
+
ARCHIVE_DIR = REPO / "agents" / "evidence" / "archived-skills"
|
|
35
|
+
|
|
36
|
+
# Live skill directories live under every artefact root post-monorepo
|
|
37
|
+
# Phase 4 (legacy + packages/*/.agent-src.uncompressed/skills/).
|
|
38
|
+
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
39
|
+
from _lib.agent_src import artefact_roots # noqa: E402
|
|
40
|
+
|
|
41
|
+
SKILLS_DIRS = [root / "skills" for root in artefact_roots() if (root / "skills").is_dir()]
|
|
34
42
|
|
|
35
43
|
REQUIRED_FIELDS = ("slug", "archived_on", "last_seen_count", "reason", "replacement", "last_known_callers")
|
|
36
44
|
VALID_REASONS = frozenset({"unused", "merged", "superseded", "deprecated"})
|
|
@@ -57,7 +65,13 @@ def archived_slugs() -> list[Path]:
|
|
|
57
65
|
|
|
58
66
|
|
|
59
67
|
def live_skill_slugs() -> set[str]:
|
|
60
|
-
|
|
68
|
+
slugs: set[str] = set()
|
|
69
|
+
for skills_dir in SKILLS_DIRS:
|
|
70
|
+
slugs.update(
|
|
71
|
+
p.name for p in skills_dir.iterdir()
|
|
72
|
+
if p.is_dir() and (p / "SKILL.md").exists()
|
|
73
|
+
)
|
|
74
|
+
return slugs
|
|
61
75
|
|
|
62
76
|
|
|
63
77
|
def main() -> int:
|
|
@@ -100,15 +114,16 @@ def main() -> int:
|
|
|
100
114
|
|
|
101
115
|
replacement = fm["replacement"]
|
|
102
116
|
reason = fm["reason"]
|
|
117
|
+
skills_label = ", ".join(str(d) for d in SKILLS_DIRS) or "<no skills root>"
|
|
103
118
|
if reason in {"merged", "superseded"}:
|
|
104
119
|
if replacement == "none" or not replacement:
|
|
105
120
|
errors.append(f"{note.name}: reason={reason} requires a replacement slug, got 'none'")
|
|
106
121
|
elif replacement not in live:
|
|
107
|
-
errors.append(f"{note.name}: replacement '{replacement}' not found under {
|
|
122
|
+
errors.append(f"{note.name}: replacement '{replacement}' not found under {skills_label}")
|
|
108
123
|
elif reason in {"unused", "deprecated"}:
|
|
109
124
|
if replacement not in {"none", ""}:
|
|
110
125
|
if replacement not in live:
|
|
111
|
-
errors.append(f"{note.name}: replacement '{replacement}' not found under {
|
|
126
|
+
errors.append(f"{note.name}: replacement '{replacement}' not found under {skills_label}")
|
|
112
127
|
|
|
113
128
|
if fm["slug"] in live:
|
|
114
129
|
errors.append(f"{note.name}: slug '{fm['slug']}' still has a live SKILL.md (zombie)")
|
|
@@ -116,17 +131,18 @@ def main() -> int:
|
|
|
116
131
|
archived_keys.add(fm["slug"])
|
|
117
132
|
|
|
118
133
|
# Cross-check: live skills must not list an archived slug as replaced_by.
|
|
119
|
-
for
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
for skills_dir in SKILLS_DIRS:
|
|
135
|
+
for skill_dir in sorted(skills_dir.iterdir()):
|
|
136
|
+
skill_md = skill_dir / "SKILL.md"
|
|
137
|
+
if not skill_md.exists():
|
|
138
|
+
continue
|
|
139
|
+
text = skill_md.read_text(encoding="utf-8")
|
|
140
|
+
fm = parse_frontmatter(text)
|
|
141
|
+
if fm is None:
|
|
142
|
+
continue
|
|
143
|
+
rb = fm.get("replaced_by", "").strip()
|
|
144
|
+
if rb and rb in archived_keys:
|
|
145
|
+
errors.append(f"{skill_dir.name}/SKILL.md: replaced_by '{rb}' points at an archived slug")
|
|
130
146
|
|
|
131
147
|
if errors:
|
|
132
148
|
print(f"❌ lint_archived_skills: {len(errors)} violation(s) across {len(notes)} note(s)", file=sys.stderr)
|