@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""CI guard for the council clause of the `no-roadmap-references` rule.
|
|
3
3
|
|
|
4
|
-
Council artefacts under `agents/council
|
|
4
|
+
Council artefacts under `agents/runtime/council/{questions,responses,sessions}/`
|
|
5
5
|
are gitignored, local-only, and auto-pruned. A link to a specific
|
|
6
6
|
council file rots three ways: gitignored (not in cloned repo),
|
|
7
7
|
pruned after the retention window (gone even locally), and the
|
|
@@ -19,7 +19,7 @@ are exempt structurally ā see STRUCTURAL_CARVEOUTS below ā because
|
|
|
19
19
|
they encode immutable decision provenance, not transient drafting
|
|
20
20
|
state. Anything else needs an inline pragma at the end of the line:
|
|
21
21
|
|
|
22
|
-
`agents/council
|
|
22
|
+
`agents/runtime/council/sessions/...json` <!-- council-ref-allowed: <reason> -->
|
|
23
23
|
|
|
24
24
|
Exit codes:
|
|
25
25
|
0 ā no forbidden references.
|
|
@@ -39,26 +39,48 @@ from typing import Iterable
|
|
|
39
39
|
QUIET = "--quiet" in sys.argv
|
|
40
40
|
|
|
41
41
|
ROOT = Path(".")
|
|
42
|
+
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
43
|
+
from _lib.agent_src import artefact_roots, strip_source_prefix # noqa: E402
|
|
42
44
|
|
|
43
45
|
# A specific file inside a council dir: must end with .md or .json,
|
|
44
46
|
# must NOT contain `<` or `>` (placeholders), must NOT contain backticks
|
|
45
47
|
# or quotes (those are line delimiters, not path content).
|
|
46
48
|
PATTERN = re.compile(
|
|
47
|
-
r"agents/council
|
|
49
|
+
r"agents/runtime/council/(?:questions|responses|sessions)/"
|
|
48
50
|
r"([^\s\"'<>)\]`]+\.(?:md|json))"
|
|
49
51
|
)
|
|
50
52
|
|
|
51
53
|
# Only these durable surfaces are scanned. Archive, analysis, and the
|
|
52
54
|
# council dirs themselves are excluded by design.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
#
|
|
56
|
+
# Source roots (legacy `.agent-src.uncompressed/` and every
|
|
57
|
+
# `packages/*/.agent-src.uncompressed/`) are discovered at runtime via
|
|
58
|
+
# `artefact_roots()` so the linter follows the monorepo physical layout.
|
|
59
|
+
FIXED_SCAN_ROOTS = (
|
|
55
60
|
"agents/roadmaps",
|
|
56
|
-
"agents/contexts",
|
|
57
|
-
"agents/docs",
|
|
61
|
+
"agents/settings/contexts",
|
|
62
|
+
"agents/reference/docs",
|
|
58
63
|
"docs/contracts",
|
|
59
64
|
"docs/decisions",
|
|
60
65
|
"docs/guidelines",
|
|
61
66
|
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _scan_roots() -> tuple[str, ...]:
|
|
70
|
+
cwd = Path(".").resolve()
|
|
71
|
+
roots: list[str] = []
|
|
72
|
+
for r in artefact_roots():
|
|
73
|
+
try:
|
|
74
|
+
roots.append(r.relative_to(cwd).as_posix() if r.is_absolute() else r.as_posix())
|
|
75
|
+
except ValueError:
|
|
76
|
+
# Root lives outside the current working directory (e.g. tests
|
|
77
|
+
# chdir into a tmp tree). Skip ā the test isolates its own
|
|
78
|
+
# source tree.
|
|
79
|
+
continue
|
|
80
|
+
roots.extend(FIXED_SCAN_ROOTS)
|
|
81
|
+
return tuple(roots)
|
|
82
|
+
|
|
83
|
+
|
|
62
84
|
SCAN_EXTS = (".md", ".yml", ".yaml", ".json", ".py")
|
|
63
85
|
|
|
64
86
|
# Files (or directory prefixes) that legitimately document the output
|
|
@@ -68,7 +90,7 @@ ALLOWLIST_PREFIXES: tuple[str, ...] = (
|
|
|
68
90
|
"agents/roadmaps/archive/",
|
|
69
91
|
# Working comparison docs ā forward-refs to planned artefacts (mirrors
|
|
70
92
|
# the SKIP_DIRS contract in scripts/check_references.py).
|
|
71
|
-
"agents/analysis/",
|
|
93
|
+
"agents/evidence/analysis/",
|
|
72
94
|
# The rule itself documents forbidden vs. allowed forms.
|
|
73
95
|
".agent-src.uncompressed/rules/no-roadmap-references.md",
|
|
74
96
|
# ai-council skill documents the output-path schema.
|
|
@@ -87,7 +109,7 @@ INLINE_PRAGMA = re.compile(r"<!--\s*council-ref-allowed:[^>]*-->")
|
|
|
87
109
|
# Structural carve-outs ā (source_pattern, target_pattern) pairs where
|
|
88
110
|
# the reference is immutable decision provenance rather than transient
|
|
89
111
|
# drafting state. Driven by the 2026-05-14 P3.4 council round
|
|
90
|
-
# (agents/council
|
|
112
|
+
# (agents/runtime/council/sessions/2026-05-14-p3-4-references/synthesis.md).
|
|
91
113
|
#
|
|
92
114
|
# Each entry: source file matches `source` regex AND the captured
|
|
93
115
|
# reference path matches `target` regex ā reference is allowed without
|
|
@@ -97,23 +119,40 @@ STRUCTURAL_CARVEOUTS: tuple[tuple[re.Pattern[str], re.Pattern[str]], ...] = (
|
|
|
97
119
|
# the question file is a frozen function-parameter / spend-gate
|
|
98
120
|
# input, not a documentation link.
|
|
99
121
|
(
|
|
100
|
-
re.compile(r"^agents/contexts/evaluation-[^/]+\.md$"),
|
|
101
|
-
re.compile(r"^agents/council
|
|
122
|
+
re.compile(r"^agents/settings/contexts/evaluation-[^/]+\.md$"),
|
|
123
|
+
re.compile(r"^agents/runtime/council/questions/[^/]+\.md$"),
|
|
102
124
|
),
|
|
103
125
|
# (b) contract ā council-session-synthesis:
|
|
104
126
|
# the synthesis file is the audit-trail receipt the contract cites
|
|
105
127
|
# as decision provenance; the contract inlines the decision body.
|
|
106
128
|
(
|
|
107
129
|
re.compile(r"^docs/contracts/[^/]+\.md$"),
|
|
108
|
-
re.compile(r"^agents/council
|
|
130
|
+
re.compile(r"^agents/runtime/council/sessions/[^/]+/synthesis\.md$"),
|
|
109
131
|
),
|
|
110
132
|
)
|
|
111
133
|
|
|
112
134
|
|
|
113
135
|
def _is_allowlisted(rel: str) -> bool:
|
|
136
|
+
"""Match a repo-relative POSIX path against the allowlist.
|
|
137
|
+
|
|
138
|
+
Allowlist prefixes are written against the legacy
|
|
139
|
+
``.agent-src.uncompressed/`` layout. A physical hit under
|
|
140
|
+
``packages/*/.agent-src.uncompressed/`` is normalised to the same
|
|
141
|
+
logical path before matching so entries keep covering relocated files.
|
|
142
|
+
"""
|
|
114
143
|
if rel in ALLOWLIST_FILES:
|
|
115
144
|
return True
|
|
116
|
-
|
|
145
|
+
if any(rel.startswith(prefix) for prefix in ALLOWLIST_PREFIXES):
|
|
146
|
+
return True
|
|
147
|
+
logical = strip_source_prefix(rel)
|
|
148
|
+
if logical is not None:
|
|
149
|
+
canon = f"{_LEGACY_PREFIX_STR}{logical}"
|
|
150
|
+
if any(canon.startswith(prefix) for prefix in ALLOWLIST_PREFIXES):
|
|
151
|
+
return True
|
|
152
|
+
return False
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
_LEGACY_PREFIX_STR = ".agent-src.uncompressed/"
|
|
117
156
|
|
|
118
157
|
|
|
119
158
|
def _is_structurally_allowed(source_rel: str, target_capture: str) -> bool:
|
|
@@ -156,7 +195,7 @@ def _iter_files(roots: Iterable[str]) -> Iterable[Path]:
|
|
|
156
195
|
|
|
157
196
|
def main() -> int:
|
|
158
197
|
violations: list[tuple[Path, int, str]] = []
|
|
159
|
-
for path in _iter_files(
|
|
198
|
+
for path in _iter_files(_scan_roots()):
|
|
160
199
|
rel = path.as_posix()
|
|
161
200
|
if _is_allowlisted(rel):
|
|
162
201
|
continue
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Determinism check ā runs the discovery scanner twice and diffs the output.
|
|
3
|
+
|
|
4
|
+
The `generated_at` field is normalised because it intentionally captures
|
|
5
|
+
wall-clock time. Everything else (artefact order, unassigned order,
|
|
6
|
+
checksum) MUST be byte-identical between runs.
|
|
7
|
+
|
|
8
|
+
CLI:
|
|
9
|
+
python scripts/check_discovery_determinism.py
|
|
10
|
+
|
|
11
|
+
Exit codes:
|
|
12
|
+
0 byte-identical (apart from generated_at)
|
|
13
|
+
1 drift detected
|
|
14
|
+
"""
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
import subprocess
|
|
19
|
+
import sys
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
23
|
+
SCANNER = ROOT / "scripts" / "build_discovery_manifest.py"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _run() -> dict:
|
|
27
|
+
proc = subprocess.run(
|
|
28
|
+
[sys.executable, str(SCANNER)],
|
|
29
|
+
capture_output=True,
|
|
30
|
+
text=True,
|
|
31
|
+
check=False,
|
|
32
|
+
cwd=str(ROOT),
|
|
33
|
+
)
|
|
34
|
+
if proc.returncode != 0:
|
|
35
|
+
print(proc.stderr, file=sys.stderr)
|
|
36
|
+
raise SystemExit(f"scanner failed: exit {proc.returncode}")
|
|
37
|
+
return json.loads(proc.stdout)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _normalise(manifest: dict) -> dict:
|
|
41
|
+
out = dict(manifest)
|
|
42
|
+
out["generated_at"] = "<normalised>"
|
|
43
|
+
return out
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def main() -> int:
|
|
47
|
+
a = _normalise(_run())
|
|
48
|
+
b = _normalise(_run())
|
|
49
|
+
sa = json.dumps(a, indent=2, sort_keys=True, ensure_ascii=False)
|
|
50
|
+
sb = json.dumps(b, indent=2, sort_keys=True, ensure_ascii=False)
|
|
51
|
+
if sa != sb:
|
|
52
|
+
print("DRIFT: scanner produced different output across two runs", file=sys.stderr)
|
|
53
|
+
# show first divergence
|
|
54
|
+
for i, (la, lb) in enumerate(zip(sa.splitlines(), sb.splitlines()), 1):
|
|
55
|
+
if la != lb:
|
|
56
|
+
print(f" line {i}:", file=sys.stderr)
|
|
57
|
+
print(f" run1: {la}", file=sys.stderr)
|
|
58
|
+
print(f" run2: {lb}", file=sys.stderr)
|
|
59
|
+
break
|
|
60
|
+
return 1
|
|
61
|
+
# also assert the checksum survives the round-trip
|
|
62
|
+
if a["checksum"] != b["checksum"]:
|
|
63
|
+
print(f"DRIFT: checksum changed ({a['checksum']} vs {b['checksum']})", file=sys.stderr)
|
|
64
|
+
return 1
|
|
65
|
+
print(f"OK: deterministic across 2 runs, checksum {a['checksum'][:24]}...")
|
|
66
|
+
return 0
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
if __name__ == "__main__":
|
|
70
|
+
sys.exit(main())
|
|
@@ -20,7 +20,7 @@ Inputs:
|
|
|
20
20
|
Exit codes: 0 = pass Ā· 1 = fail (> 1 kernel rule, no override) Ā·
|
|
21
21
|
3 = internal error.
|
|
22
22
|
|
|
23
|
-
Source: `agents/contexts/adr-always-budget-relief-strategy.md`.
|
|
23
|
+
Source: `agents/settings/contexts/adr-always-budget-relief-strategy.md`.
|
|
24
24
|
"""
|
|
25
25
|
from __future__ import annotations
|
|
26
26
|
|
|
@@ -140,7 +140,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
140
140
|
file=sys.stderr,
|
|
141
141
|
)
|
|
142
142
|
print(
|
|
143
|
-
" Source: agents/contexts/adr-always-budget-relief-strategy.md "
|
|
143
|
+
" Source: agents/settings/contexts/adr-always-budget-relief-strategy.md "
|
|
144
144
|
"(Phase 4.2).",
|
|
145
145
|
file=sys.stderr,
|
|
146
146
|
)
|
|
@@ -34,7 +34,7 @@ STABLE_TREES = (
|
|
|
34
34
|
".agent-src.uncompressed/contexts",
|
|
35
35
|
".agent-src.uncompressed/templates",
|
|
36
36
|
".agent-src.uncompressed/personas",
|
|
37
|
-
"agents/contexts",
|
|
37
|
+
"agents/settings/contexts",
|
|
38
38
|
"docs/guidelines",
|
|
39
39
|
"docs/contracts",
|
|
40
40
|
)
|
|
@@ -128,7 +128,7 @@ def format_text(violations: list[Violation]) -> str:
|
|
|
128
128
|
for v in violations:
|
|
129
129
|
lines.append(f" š“ {v.file}:{v.line} ā {v.match}")
|
|
130
130
|
lines.append(
|
|
131
|
-
"\nPromote the durable conclusion to agents/contexts/ and cite that "
|
|
131
|
+
"\nPromote the durable conclusion to agents/settings/contexts/ and cite that "
|
|
132
132
|
"instead. See .agent-src.uncompressed/rules/no-roadmap-references.md."
|
|
133
133
|
)
|
|
134
134
|
return "\n".join(lines)
|
|
@@ -7,7 +7,7 @@ guard fails CI if a new probe lands anywhere else in the tree.
|
|
|
7
7
|
|
|
8
8
|
Rationale: one-off council probes / phase-specific measurements are
|
|
9
9
|
inherently single-purpose; their durable artefact is the council
|
|
10
|
-
session under ``agents/council
|
|
10
|
+
session under ``agents/runtime/council/sessions/``. Keeping them in the
|
|
11
11
|
archive prevents the ``scripts/`` root from accumulating noise and
|
|
12
12
|
makes their lifecycle visible (folder == month archived).
|
|
13
13
|
|
|
@@ -30,10 +30,14 @@ from scripts._lib.agents_overlay import ( # noqa: E402
|
|
|
30
30
|
|
|
31
31
|
DOCS_PATH = REPO_ROOT / "docs" / "customization.md"
|
|
32
32
|
|
|
33
|
-
# Match `agents
|
|
34
|
-
# the ā
/ā markers in columns 2 and 3.
|
|
33
|
+
# Match `agents/<...>/<kind>/` in the first column of the overlay
|
|
34
|
+
# table, plus the ā
/ā markers in columns 2 and 3. Captures only the
|
|
35
|
+
# **final** path segment as the kind, so both flat (`agents/overrides/`)
|
|
36
|
+
# and nested (`agents/settings/contexts/`) rows resolve to the bare
|
|
37
|
+
# kind name that ``CASCADE_ELIGIBLE_KINDS`` carries.
|
|
35
38
|
ROW_RE = re.compile(
|
|
36
|
-
r"^\|\s*`agents/([a-z][a-z0-9_-]
|
|
39
|
+
r"^\|\s*`agents/(?:[a-z][a-z0-9_-]*/)*([a-z][a-z0-9_-]*)/`\s*\|"
|
|
40
|
+
r"\s*(ā
|ā)[^|]*\|\s*(ā
|ā)[^|]*\|",
|
|
37
41
|
)
|
|
38
42
|
|
|
39
43
|
|
|
@@ -14,7 +14,7 @@ Rules:
|
|
|
14
14
|
- target stability=experimental ā ERROR. Public surface MUST NOT link
|
|
15
15
|
to experimental contracts.
|
|
16
16
|
- target outside docs/contracts/ but referenced for contract-shaped
|
|
17
|
-
intent (links into agents/contexts/*.md from public files) ā ERROR.
|
|
17
|
+
intent (links into agents/settings/contexts/*.md from public files) ā ERROR.
|
|
18
18
|
- target file missing ā ERROR.
|
|
19
19
|
- target file under docs/contracts/ without `stability:` frontmatter
|
|
20
20
|
(except STABILITY.md itself) ā ERROR.
|
|
@@ -100,7 +100,7 @@ def scan_file(public_file: Path, contracts: dict[Path, str | None]) -> list[Viol
|
|
|
100
100
|
continue
|
|
101
101
|
if target.parts[:2] == ("agents", "contexts") and target.suffix == ".md":
|
|
102
102
|
violations.append(Violation(str(public_file), lineno, href,
|
|
103
|
-
"public surface MUST NOT link into agents/contexts/ ā move target to docs/contracts/",
|
|
103
|
+
"public surface MUST NOT link into agents/settings/contexts/ ā move target to docs/contracts/",
|
|
104
104
|
"error"))
|
|
105
105
|
continue
|
|
106
106
|
if target.parts[:2] != ("docs", "contracts") or target.suffix != ".md":
|
|
@@ -34,10 +34,11 @@ class BrokenRef:
|
|
|
34
34
|
SCAN_DIRS = [".agent-src", "agents"]
|
|
35
35
|
SKIP_DIRS = [
|
|
36
36
|
"agents/roadmaps/archive", # archived roadmaps have historical refs
|
|
37
|
-
"agents/council
|
|
38
|
-
"agents/council
|
|
39
|
-
"agents/council
|
|
40
|
-
"agents/analysis", # plate-comparison working docs ā forward-refs to planned artifacts
|
|
37
|
+
"agents/runtime/council/sessions", # per-user audit trail (gitignored), captured provider output
|
|
38
|
+
"agents/runtime/council/responses", # paired council output (gitignored), captured provider output
|
|
39
|
+
"agents/runtime/council/questions", # design Q&A trail ā forward-refs to planned artifacts
|
|
40
|
+
"agents/evidence/analysis", # plate-comparison working docs ā forward-refs to planned artifacts
|
|
41
|
+
"agents/runtime", # volatile / machine-generated artefacts (gitignored)
|
|
41
42
|
]
|
|
42
43
|
|
|
43
44
|
# Per-file opt-out marker. When present in the first 10 lines of a .md
|
|
@@ -80,8 +81,10 @@ SKILL_REF_PATTERN = re.compile(r'`([\w-]+)`\s+skill')
|
|
|
80
81
|
RULE_REF_PATTERN = re.compile(r'`([\w-]+)`\s+rule')
|
|
81
82
|
|
|
82
83
|
# Unchecked TODO items (roadmap checkboxes) legitimately reference files
|
|
83
|
-
# and artifacts that do not exist yet. Skip these lines.
|
|
84
|
-
|
|
84
|
+
# and artifacts that do not exist yet. Skip these lines. `[~]` marks
|
|
85
|
+
# deferred work ā same semantics as `[ ]` for reference resolution
|
|
86
|
+
# (forward-looking path, will materialize when the step ships).
|
|
87
|
+
UNCHECKED_TODO_PATTERN = re.compile(r'^\s*[-*+]\s+\[[ ~]\]\s')
|
|
85
88
|
_SKIP_NAMES = {"the", "a", "an", "this", "that", "your", "my", "no", "any", "each", "one",
|
|
86
89
|
"always", "auto", "fail", "vue", "guidelines", "naming",
|
|
87
90
|
"orderBy", "no-commit", "skill-linter", "skill-validator",
|
|
@@ -90,14 +93,14 @@ _SKIP_NAMES = {"the", "a", "an", "this", "that", "your", "my", "no", "any", "eac
|
|
|
90
93
|
|
|
91
94
|
# Paths that are clearly example/template placeholders (not real references)
|
|
92
95
|
EXAMPLE_PATH_PATTERNS = [
|
|
93
|
-
re.compile(r"agents/analysis/"), # project-analyze output template
|
|
96
|
+
re.compile(r"agents/evidence/analysis/"), # project-analyze output template
|
|
94
97
|
re.compile(r"agents/roadmaps/template"), # template reference
|
|
95
98
|
re.compile(r"agents/overrides/"), # override examples
|
|
96
99
|
re.compile(r"commands/old-cmd"), # example placeholder
|
|
97
100
|
re.compile(r"agents/README"), # README reference (may not exist in package)
|
|
98
101
|
re.compile(r"agents/index[\w.-]*\.md"), # planned auto-generated artefact index (F5)
|
|
99
|
-
re.compile(r"agents/docs/"), # project-specific docs (not in package)
|
|
100
|
-
re.compile(r"agents/contexts/"), # project-specific contexts (not in package)
|
|
102
|
+
re.compile(r"agents/reference/docs/"), # project-specific docs (not in package)
|
|
103
|
+
re.compile(r"agents/settings/contexts/"), # project-specific contexts (not in package)
|
|
101
104
|
re.compile(r"agents/gates"), # project-specific policy docs
|
|
102
105
|
re.compile(r"agents/features/"), # project-specific feature docs
|
|
103
106
|
re.compile(r"agents/authentication"), # project-specific auth docs
|
|
@@ -109,6 +112,7 @@ EXAMPLE_PATH_PATTERNS = [
|
|
|
109
112
|
re.compile(r"agents/learnings/"), # consumer-project learning notes
|
|
110
113
|
re.compile(r"agents/proposals/"), # consumer-project self-improvement proposals
|
|
111
114
|
re.compile(r"agents/drafts/"), # consumer-project artefact drafts
|
|
115
|
+
re.compile(r"agents/\.event4u-bridge\.yml"), # consumer-project bridge marker (ADR-020)
|
|
112
116
|
re.compile(r"guidelines/php-"), # flattened override naming convention
|
|
113
117
|
re.compile(r"rules/no-commit"), # example rule in commands
|
|
114
118
|
re.compile(r"skills/[\w-]+\.md"), # short skill refs in examples (not SKILL.md path)
|
|
@@ -324,20 +328,12 @@ def check_file(filepath: Path, artifacts: dict[str, set[str]], root: Path) -> Li
|
|
|
324
328
|
if (prefix / rel).exists():
|
|
325
329
|
resolved = True
|
|
326
330
|
break
|
|
327
|
-
# `agents/state/*.json` are runtime hook state files
|
|
328
|
-
#
|
|
329
|
-
#
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
# `agents/.agent-prices.md` is a runtime-bootstrapped pricing
|
|
334
|
-
# cache ā gitignored (.gitignore:/agents/.agent-prices.md),
|
|
335
|
-
# auto-generated by scripts/ai_council/pricing.py from
|
|
336
|
-
# _default_prices.py if missing. Same class as agents/state/*
|
|
337
|
-
# but a single named file, not a directory pattern, so the
|
|
338
|
-
# carve-out stays narrow.
|
|
339
|
-
if not resolved and raw_ref == "agents/.agent-prices.md":
|
|
340
|
-
resolved = True
|
|
331
|
+
# `agents/runtime/state/*.json` are runtime hook state files
|
|
332
|
+
# under the gitignored runtime tree. `agents/runtime/.agent-prices.md`
|
|
333
|
+
# is the runtime-bootstrapped pricing cache, auto-generated by
|
|
334
|
+
# scripts/ai_council/pricing.py from _default_prices.py if
|
|
335
|
+
# missing. The SKIP_DIRS check above already swallows refs
|
|
336
|
+
# into `agents/runtime/`, so no extra carve-out is needed.
|
|
341
337
|
if not resolved:
|
|
342
338
|
broken.append(BrokenRef(
|
|
343
339
|
file=str(filepath), line=i, ref=m.group(1),
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Assert dist/discovery/discovery-manifest.json ships with the package.
|
|
3
|
+
|
|
4
|
+
Phase 5.3 of R3 ā wired as a `prepublishOnly` hook in package.json and
|
|
5
|
+
re-used by the publish workflow. Fails loudly when:
|
|
6
|
+
- dist/discovery/discovery-manifest.json is missing
|
|
7
|
+
- the file is empty or not valid JSON
|
|
8
|
+
- the artefacts array is empty
|
|
9
|
+
- the summary sibling is missing (release tarball ships both)
|
|
10
|
+
|
|
11
|
+
The intent is that `npm publish` (and `npm pack`) refuse to produce a
|
|
12
|
+
silently-broken artifact where the discovery contract surface
|
|
13
|
+
(ADR-013) is absent from the consumer install path.
|
|
14
|
+
"""
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
import sys
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
22
|
+
MANIFEST = ROOT / "dist" / "discovery" / "discovery-manifest.json"
|
|
23
|
+
SUMMARY = ROOT / "dist" / "discovery" / "discovery-manifest.summary.md"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _die(msg: str) -> int:
|
|
27
|
+
sys.stderr.write(f"check-release-discovery: {msg}\n")
|
|
28
|
+
sys.stderr.write(
|
|
29
|
+
" hint: run `python3 scripts/build_discovery_manifest.py --write --strict`"
|
|
30
|
+
" before `npm pack` / `npm publish`.\n"
|
|
31
|
+
)
|
|
32
|
+
return 1
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def main() -> int:
|
|
36
|
+
if not MANIFEST.is_file():
|
|
37
|
+
return _die(f"{MANIFEST.relative_to(ROOT)} is missing.")
|
|
38
|
+
raw = MANIFEST.read_text(encoding="utf-8").strip()
|
|
39
|
+
if not raw:
|
|
40
|
+
return _die(f"{MANIFEST.relative_to(ROOT)} is empty.")
|
|
41
|
+
try:
|
|
42
|
+
data = json.loads(raw)
|
|
43
|
+
except json.JSONDecodeError as exc:
|
|
44
|
+
return _die(f"{MANIFEST.relative_to(ROOT)} is not valid JSON: {exc}.")
|
|
45
|
+
artefacts = data.get("artefacts")
|
|
46
|
+
if not isinstance(artefacts, list) or not artefacts:
|
|
47
|
+
return _die(
|
|
48
|
+
f"{MANIFEST.relative_to(ROOT)} carries no artefacts ā discovery"
|
|
49
|
+
" scanner produced an empty manifest."
|
|
50
|
+
)
|
|
51
|
+
if not SUMMARY.is_file():
|
|
52
|
+
return _die(f"{SUMMARY.relative_to(ROOT)} is missing.")
|
|
53
|
+
sys.stdout.write(
|
|
54
|
+
f"check-release-discovery: OK ({len(artefacts)} artefacts in"
|
|
55
|
+
f" {MANIFEST.relative_to(ROOT)})\n"
|
|
56
|
+
)
|
|
57
|
+
return 0
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
if __name__ == "__main__":
|
|
61
|
+
raise SystemExit(main())
|
|
@@ -21,6 +21,10 @@ import re
|
|
|
21
21
|
import sys
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
|
|
24
|
+
ROOT = Path(__file__).resolve().parent.parent
|
|
25
|
+
sys.path.insert(0, str(ROOT / "scripts"))
|
|
26
|
+
from _lib.agent_src import artefact_roots # noqa: E402
|
|
27
|
+
|
|
24
28
|
QUIET = "--quiet" in sys.argv
|
|
25
29
|
|
|
26
30
|
OPTION_LINE_RE = re.compile(r"^\s*>?\s*(\d+)\.\s+\S")
|
|
@@ -95,23 +99,42 @@ def validate(text: str, strict: bool = False) -> tuple[int, str]:
|
|
|
95
99
|
|
|
96
100
|
|
|
97
101
|
def cmd_scan_dir(root: Path) -> int:
|
|
102
|
+
# If the requested root is the legacy ".agent-src.uncompressed" and it
|
|
103
|
+
# no longer exists (post-monorepo-move), fall back to artefact_roots()
|
|
104
|
+
# so every packages/*/.agent-src.uncompressed/ is scanned.
|
|
98
105
|
if not root.is_dir():
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
legacy = ROOT / ".agent-src.uncompressed"
|
|
107
|
+
if root.resolve() == legacy.resolve():
|
|
108
|
+
roots = artefact_roots()
|
|
109
|
+
if not roots:
|
|
110
|
+
print("error: no artefact roots found (legacy or packages/*)", file=sys.stderr)
|
|
111
|
+
return 9
|
|
112
|
+
else:
|
|
113
|
+
print(f"error: not a directory: {root}", file=sys.stderr)
|
|
114
|
+
return 9
|
|
115
|
+
else:
|
|
116
|
+
roots = [root]
|
|
101
117
|
violations: list[tuple[Path, int, str]] = []
|
|
102
|
-
for
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
for r in roots:
|
|
119
|
+
for md in sorted(r.rglob("*.md")):
|
|
120
|
+
text = md.read_text(encoding="utf-8")
|
|
121
|
+
for idx, raw in enumerate(text.splitlines(), start=1):
|
|
122
|
+
stripped = _strip_codespans(raw)
|
|
123
|
+
if OPTION_LINE_RE.match(stripped) and TAG_RE.search(stripped):
|
|
124
|
+
violations.append((md, idx, raw.strip()))
|
|
108
125
|
if violations:
|
|
109
126
|
for path, line, snippet in violations:
|
|
110
127
|
print(f" š“ {path}:{line} ā inline-tag ā {snippet}", file=sys.stderr)
|
|
111
128
|
print(f"\nā {len(violations)} legacy-pattern violation(s)", file=sys.stderr)
|
|
112
129
|
return 6
|
|
113
130
|
if not QUIET:
|
|
114
|
-
|
|
131
|
+
def _rel(p: Path) -> str:
|
|
132
|
+
try:
|
|
133
|
+
return p.relative_to(ROOT).as_posix()
|
|
134
|
+
except ValueError:
|
|
135
|
+
return p.as_posix()
|
|
136
|
+
scanned = ", ".join(_rel(r) for r in roots)
|
|
137
|
+
print(f"ā
No legacy (recommended) tags found under {scanned}")
|
|
115
138
|
return 0
|
|
116
139
|
|
|
117
140
|
|
|
@@ -24,12 +24,26 @@ import sys
|
|
|
24
24
|
from pathlib import Path
|
|
25
25
|
|
|
26
26
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
27
|
+
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
|
28
|
+
from _lib.agent_src import resolve_logical # noqa: E402
|
|
27
29
|
|
|
28
30
|
PACKAGE_JSON = REPO_ROOT / "package.json"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
)
|
|
31
|
+
|
|
32
|
+
# Source-of-truth template lives under whichever artefact root owns it
|
|
33
|
+
# (legacy .agent-src.uncompressed/ pre-move, packages/*/.agent-src.uncompressed/
|
|
34
|
+
# post-ADR-017). Compressed twin always lands at the flat .agent-src/ surface.
|
|
35
|
+
_TEMPLATE_LOGICAL = "templates/agents/agent-project-settings.example.yml"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _template_files() -> tuple[Path, ...]:
|
|
39
|
+
src = resolve_logical(_TEMPLATE_LOGICAL)
|
|
40
|
+
files: list[Path] = []
|
|
41
|
+
if src is not None:
|
|
42
|
+
files.append(src)
|
|
43
|
+
else:
|
|
44
|
+
files.append(REPO_ROOT / ".agent-src.uncompressed" / _TEMPLATE_LOGICAL)
|
|
45
|
+
files.append(REPO_ROOT / ".agent-src" / _TEMPLATE_LOGICAL)
|
|
46
|
+
return tuple(files)
|
|
33
47
|
PIN_LINE_RE = re.compile(r"^\s*agent_config_version\s*:\s*\"?([^\"\s#]*)\"?")
|
|
34
48
|
|
|
35
49
|
|
|
@@ -70,12 +84,15 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
70
84
|
return 1
|
|
71
85
|
|
|
72
86
|
failures: list[str] = []
|
|
73
|
-
for template in
|
|
87
|
+
for template in _template_files():
|
|
88
|
+
try:
|
|
89
|
+
rel = template.relative_to(REPO_ROOT)
|
|
90
|
+
except ValueError:
|
|
91
|
+
rel = template
|
|
74
92
|
if not template.is_file():
|
|
75
|
-
failures.append(f"missing template file: {
|
|
93
|
+
failures.append(f"missing template file: {rel}")
|
|
76
94
|
continue
|
|
77
95
|
pin = _read_template_pin(template)
|
|
78
|
-
rel = template.relative_to(REPO_ROOT)
|
|
79
96
|
if pin is None:
|
|
80
97
|
failures.append(f"{rel}: no `agent_config_version:` line found")
|
|
81
98
|
continue
|
|
@@ -21,7 +21,16 @@ import sys
|
|
|
21
21
|
from pathlib import Path
|
|
22
22
|
|
|
23
23
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
24
|
-
|
|
24
|
+
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
|
25
|
+
from _lib.agent_src import resolve_logical # noqa: E402
|
|
26
|
+
|
|
27
|
+
# Post-ADR-017 the source-of-truth lives under whichever package owns
|
|
28
|
+
# the skill; resolve_logical() walks every artefact root.
|
|
29
|
+
SKILL = resolve_logical("skills/token-optimizer/SKILL.md") or (
|
|
30
|
+
REPO_ROOT / ".agent-src.uncompressed" / "skills" / "token-optimizer" / "SKILL.md"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
from _lib.agent_src import strip_source_prefix # noqa: E402
|
|
25
34
|
|
|
26
35
|
# Catalog row pattern: | name | path | keywords | description |
|
|
27
36
|
ROW_RE = re.compile(
|
|
@@ -74,8 +83,14 @@ def resolve(path: str) -> Path | None:
|
|
|
74
83
|
return None
|
|
75
84
|
cleaned = path.strip().lstrip("`").rstrip("`")
|
|
76
85
|
cleaned = cleaned.split(")")[0].lstrip("[(")
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
# Catalog rows still cite the legacy .agent-src.uncompressed/ prefix
|
|
87
|
+
# for compactness; resolve those across every packages/* root.
|
|
88
|
+
logical = strip_source_prefix(cleaned)
|
|
89
|
+
if logical is not None:
|
|
90
|
+
hit = resolve_logical(logical)
|
|
91
|
+
if hit is not None:
|
|
92
|
+
return hit
|
|
93
|
+
return (REPO_ROOT / cleaned).resolve()
|
|
79
94
|
|
|
80
95
|
|
|
81
96
|
def check_row(row: dict[str, str]) -> list[str]:
|
package/scripts/ci_summary.py
CHANGED
|
@@ -6,7 +6,7 @@ Consumes JSON files produced by `scripts/runtime_dispatcher.py run
|
|
|
6
6
|
--output FILE`. Each file is an ExecutionResult dump (see runtime_handler).
|
|
7
7
|
|
|
8
8
|
Usage:
|
|
9
|
-
python3 scripts/ci_summary.py --runs agents/reports/runs [--title TITLE]
|
|
9
|
+
python3 scripts/ci_summary.py --runs agents/runtime/reports/runs [--title TITLE]
|
|
10
10
|
|
|
11
11
|
Writes to $GITHUB_STEP_SUMMARY if the environment variable is set,
|
|
12
12
|
otherwise prints the markdown to stdout. Missing or empty run
|
|
@@ -110,7 +110,7 @@ def write_output(summary: str) -> bool:
|
|
|
110
110
|
def main() -> int:
|
|
111
111
|
parser = argparse.ArgumentParser(description="Render CI summary from dispatcher runs")
|
|
112
112
|
parser.add_argument(
|
|
113
|
-
"--runs", type=Path, default=Path("agents/reports/runs"),
|
|
113
|
+
"--runs", type=Path, default=Path("agents/runtime/reports/runs"),
|
|
114
114
|
help="Directory containing ExecutionResult JSON files",
|
|
115
115
|
)
|
|
116
116
|
parser.add_argument(
|
package/scripts/ci_time_ratio.py
CHANGED
|
@@ -17,7 +17,7 @@ Threshold rule (Round-3 Sonnet protocol):
|
|
|
17
17
|
- Median ratio < 3Ć across all classes ā structural overhead acceptable
|
|
18
18
|
|
|
19
19
|
Output: human-readable table on stdout + JSON to
|
|
20
|
-
`agents/reports/ci-time-ratio.json`.
|
|
20
|
+
`agents/runtime/reports/ci-time-ratio.json`.
|
|
21
21
|
|
|
22
22
|
Usage:
|
|
23
23
|
python3 scripts/ci_time_ratio.py --limit 30
|
|
@@ -7,7 +7,7 @@ ranking, suppresses cooled-down suggestions, and renders a numbered
|
|
|
7
7
|
options block. It never executes a command ā the user pick is what
|
|
8
8
|
triggers the standard slash flow.
|
|
9
9
|
|
|
10
|
-
See `agents/contexts/command-suggestion-eligibility.md` for the
|
|
10
|
+
See `agents/settings/contexts/command-suggestion-eligibility.md` for the
|
|
11
11
|
locked eligibility table and `road-to-context-aware-command-suggestion`
|
|
12
12
|
for the full design.
|
|
13
13
|
"""
|