@event4u/agent-config 2.26.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/commands/agent-handoff.md +15 -3
- package/.agent-src/commands/agent-status.md +12 -0
- package/.agent-src/commands/agents/audit.md +12 -0
- package/.agent-src/commands/agents/init.md +12 -0
- package/.agent-src/commands/agents/optimize.md +12 -0
- package/.agent-src/commands/agents/user/accept.md +12 -0
- package/.agent-src/commands/agents/user/init.md +12 -0
- package/.agent-src/commands/agents/user/review.md +12 -0
- package/.agent-src/commands/agents/user/show.md +12 -0
- package/.agent-src/commands/agents/user/update.md +12 -0
- package/.agent-src/commands/agents/user.md +12 -0
- package/.agent-src/commands/agents.md +12 -0
- package/.agent-src/commands/analyze-reference-repo.md +15 -3
- package/.agent-src/commands/bug-fix.md +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/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 +12 -0
- package/.agent-src/commands/video/scene.md +12 -0
- package/.agent-src/commands/video/stitch.md +13 -1
- package/.agent-src/commands/video/storyboard.md +12 -0
- package/.agent-src/commands/video.md +12 -0
- package/.agent-src/commands/work.md +12 -0
- package/.agent-src/contexts/augment-infrastructure.md +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/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 +13 -1
- package/.agent-src/rules/cli-output-handling.md +13 -1
- package/.agent-src/rules/command-suggestion-policy.md +13 -1
- package/.agent-src/rules/commit-conventions.md +13 -1
- package/.agent-src/rules/commit-policy.md +12 -0
- package/.agent-src/rules/context-hygiene.md +15 -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/external-reference-deep-dive.md +13 -1
- package/.agent-src/rules/fast-path-marker-visibility.md +21 -1
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +13 -1
- package/.agent-src/rules/git-history-discipline.md +13 -1
- 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 +12 -0
- 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 +14 -2
- package/.agent-src/rules/reviewer-awareness.md +13 -1
- package/.agent-src/rules/roadmap-ci-steps-policy.md +13 -1
- package/.agent-src/rules/roadmap-progress-sync.md +18 -1
- package/.agent-src/rules/role-mode-adherence.md +13 -1
- package/.agent-src/rules/rule-type-governance.md +13 -1
- package/.agent-src/rules/runtime-safety.md +13 -1
- package/.agent-src/rules/scope-control.md +12 -0
- package/.agent-src/rules/security-sensitive-stop.md +13 -1
- package/.agent-src/rules/size-enforcement.md +12 -0
- package/.agent-src/rules/skill-improvement-trigger.md +13 -1
- package/.agent-src/rules/skill-quality.md +13 -1
- package/.agent-src/rules/slash-command-routing-policy.md +13 -1
- package/.agent-src/rules/symfony-routing.md +13 -1
- package/.agent-src/rules/think-before-action.md +13 -1
- package/.agent-src/rules/token-efficiency.md +13 -1
- package/.agent-src/rules/token-optimizer-maintenance.md +12 -0
- package/.agent-src/rules/tool-safety.md +13 -1
- package/.agent-src/rules/ui-audit-gate.md +13 -1
- package/.agent-src/rules/upstream-proposal.md +13 -1
- package/.agent-src/rules/user-interaction.md +13 -1
- package/.agent-src/rules/user-interrupt-priority.md +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 +14 -2
- 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 +12 -0
- package/.agent-src/skills/readme-writing/SKILL.md +12 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +12 -0
- 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 +12 -0
- package/.agent-src/skills/tailwind-engineer/SKILL.md +12 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +12 -2
- package/.agent-src/skills/technical-specification/SKILL.md +12 -0
- package/.agent-src/skills/terraform/SKILL.md +12 -0
- package/.agent-src/skills/terragrunt/SKILL.md +12 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +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/rule.md +1 -1
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +3 -3
- package/.agent-src/templates/scripts/work_engine/cli.py +6 -6
- package/.agent-src/templates/scripts/work_engine/emitters.py +29 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +3 -3
- package/.agent-src/templates/scripts/work_engine/state.py +53 -0
- package/.agent-src/templates/skill-archive-note.md +4 -4
- package/.claude-plugin/marketplace.json +1 -2
- package/AGENTS.md +5 -4
- package/CHANGELOG.md +170 -90
- package/CONTRIBUTING.md +61 -0
- package/README.md +23 -20
- package/config/agent-settings.template.yml +11 -1
- package/config/discovery/packs.yml +142 -0
- package/config/discovery/unassigned-artefacts.yml +66 -0
- package/config/discovery/workspaces.yml +59 -0
- package/config/gitignore-block.txt +17 -20
- package/dist/cli/agent-config.js +199 -0
- package/dist/cli/agent-config.js.map +1 -0
- package/dist/cli/bash/runBash.js +40 -0
- package/dist/cli/bash/runBash.js.map +1 -0
- package/dist/cli/commands/doctorShell.js +91 -0
- package/dist/cli/commands/doctorShell.js.map +1 -0
- package/dist/cli/commands/packs.js +59 -0
- package/dist/cli/commands/packs.js.map +1 -0
- package/dist/cli/commands/settings.js +35 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/uiServe.js +110 -0
- package/dist/cli/commands/uiServe.js.map +1 -0
- package/dist/cli/commands/versions.js +64 -0
- package/dist/cli/commands/versions.js.map +1 -0
- package/dist/cli/commands/workspaces.js +58 -0
- package/dist/cli/commands/workspaces.js.map +1 -0
- package/dist/cli/discovery/loadManifest.js +62 -0
- package/dist/cli/discovery/loadManifest.js.map +1 -0
- package/dist/cli/log/logger.js +41 -0
- package/dist/cli/log/logger.js.map +1 -0
- package/dist/cli/paths.js +60 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/python/resolvePython.js +38 -0
- package/dist/cli/python/resolvePython.js.map +1 -0
- package/dist/cli/registry.js +75 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/discovery/discovery-manifest.json +9195 -0
- package/dist/discovery/discovery-manifest.json.sha256 +1 -0
- package/dist/discovery/discovery-manifest.summary.md +93 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -0
- package/dist/mcp/mcp-cloudflare-catalogue.json +27 -0
- package/dist/mcp/registry-manifest.json +63 -0
- package/dist/server/app.js +117 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/io/atomicMultiWrite.js +202 -0
- package/dist/server/io/atomicMultiWrite.js.map +1 -0
- package/dist/server/io/atomicWrite.js +79 -0
- package/dist/server/io/atomicWrite.js.map +1 -0
- package/dist/server/io/substituteTemplate.js +87 -0
- package/dist/server/io/substituteTemplate.js.map +1 -0
- package/dist/server/io/yamlIO.js +140 -0
- package/dist/server/io/yamlIO.js.map +1 -0
- package/dist/server/port.js +97 -0
- package/dist/server/port.js.map +1 -0
- package/dist/server/routes/discovery.js +72 -0
- package/dist/server/routes/discovery.js.map +1 -0
- package/dist/server/routes/ping.js +49 -0
- package/dist/server/routes/ping.js.map +1 -0
- package/dist/server/routes/schema.js +41 -0
- package/dist/server/routes/schema.js.map +1 -0
- package/dist/server/routes/settings.js +155 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/userMd.js +117 -0
- package/dist/server/routes/userMd.js.map +1 -0
- package/dist/server/routes/wizard.js +138 -0
- package/dist/server/routes/wizard.js.map +1 -0
- package/dist/server/schemas/settings.js +138 -0
- package/dist/server/schemas/settings.js.map +1 -0
- package/dist/server/token.js +68 -0
- package/dist/server/token.js.map +1 -0
- package/dist/server/writeRoot.js +67 -0
- package/dist/server/writeRoot.js.map +1 -0
- package/dist/server/writeRoot.test.js +73 -0
- package/dist/server/writeRoot.test.js.map +1 -0
- package/dist/shared/userMd/formAdapter.js +105 -0
- package/dist/shared/userMd/formAdapter.js.map +1 -0
- package/dist/shared/userMd/schema.js +118 -0
- package/dist/shared/userMd/schema.js.map +1 -0
- package/dist/shared/userMd/utils.js +74 -0
- package/dist/shared/userMd/utils.js.map +1 -0
- package/dist/ui/assets/index-BTRcKDlB.js +39 -0
- package/dist/ui/assets/index-BTRcKDlB.js.map +1 -0
- package/dist/ui/assets/index-Dqfhmg-d.css +1 -0
- package/dist/ui/index.html +14 -0
- package/docs/adrs/caveman/0001-default-off-until-bench.md +2 -2
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +4 -4
- package/docs/adrs/schema/README.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +2 -2
- package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
- package/docs/architecture.md +2 -1
- package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
- package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
- package/docs/catalog.md +66 -78
- package/docs/contracts/STABILITY.md +1 -1
- package/docs/contracts/adr-architectural-consensus-mechanism.md +5 -5
- package/docs/contracts/adr-chat-history-split.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -1
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-mcp-runtime.md +2 -2
- package/docs/contracts/agent-user-schema.md +11 -2
- package/docs/contracts/ai-council-config.md +13 -13
- package/docs/contracts/audit-log-v1.md +2 -2
- package/docs/contracts/command-clusters.md +2 -2
- package/docs/contracts/compression-default-kill-criterion.md +3 -3
- package/docs/contracts/decision-trace-v1.md +5 -5
- package/docs/contracts/discovery-manifest.schema.json +146 -0
- package/docs/contracts/explain-trace.schema.json +144 -0
- package/docs/contracts/file-ownership-matrix.json +117 -341
- package/docs/contracts/file-ownership-matrix.md +1 -1
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/hook-architecture-v1.md +10 -10
- package/docs/contracts/kernel-membership.md +4 -4
- package/docs/contracts/linter-structural-model.md +3 -3
- package/docs/contracts/load-context-schema.md +5 -5
- package/docs/contracts/local-server-api.md +134 -0
- package/docs/contracts/low-impact-corpus-format.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
- package/docs/contracts/mcp-phase-1-scope.md +5 -4
- package/docs/contracts/mcp-registry-manifest.schema.json +129 -0
- package/docs/contracts/mcp-tool-stub-envelope.md +1 -1
- package/docs/contracts/memory-visibility-v1.md +2 -2
- package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
- package/docs/contracts/namespace.md +1 -1
- package/docs/contracts/one-off-script-lifecycle.md +1 -1
- package/docs/contracts/package-self-orientation.md +1 -1
- package/docs/contracts/provider-lifecycle.md +2 -2
- package/docs/contracts/router-blending.md +1 -1
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/settings-api.md +160 -0
- package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
- package/docs/contracts/tier-3-contrib-plugin.md +1 -1
- package/docs/contracts/universal-skills.md +1 -1
- package/docs/contracts/write-engine.md +1 -1
- package/docs/customization.md +137 -11
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +1 -1
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +1 -1
- package/docs/decisions/ADR-004-rule-governance-pruning.md +8 -8
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +5 -5
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +4 -4
- package/docs/decisions/ADR-008-installed-tools-manifest.md +2 -2
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +2 -2
- package/docs/decisions/ADR-011-domain-pack-readiness.md +4 -4
- package/docs/decisions/ADR-012-typescript-cli-shell.md +162 -0
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +210 -0
- package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
- package/docs/decisions/INDEX.md +3 -0
- package/docs/distribution/mcp-submission-checklist.md +95 -0
- package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
- package/docs/examples/agent-user.example.md +3 -1
- package/docs/getting-started.md +5 -4
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +10 -1
- package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
- package/docs/guidelines/agent-infra/tool-integration.md +1 -1
- package/docs/guidelines/php/api-design.md +1 -1
- package/docs/guidelines/prompt-templates.md +2 -2
- package/docs/hook-payload-capture.md +3 -3
- package/docs/installation.md +12 -4
- package/docs/migrations/commands-1.15.0.md +3 -3
- package/docs/parity/bench-ruflo.json +1 -1
- package/docs/parity/ruflo.md +3 -3
- package/docs/profiles.md +1 -1
- package/docs/quality.md +2 -2
- package/docs/recruits/_template.md +3 -3
- package/docs/setup/enterprise-and-offline.md +3 -3
- package/docs/setup/mcp-server-docker.md +5 -3
- package/docs/skills-catalog.md +62 -18
- package/docs/wizard.md +121 -0
- package/llms.txt +61 -17
- package/package.json +46 -3
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_p4_migrate.py +1 -1
- package/scripts/_cli/cmd_doctor.py +5 -5
- package/scripts/_cli/cmd_explain.py +106 -2
- package/scripts/_cli/cmd_migrate.py +2 -2
- package/scripts/_cli/explain_last/__init__.py +122 -0
- package/scripts/_cli/explain_last/assumptions.py +59 -0
- package/scripts/_cli/explain_last/council.py +105 -0
- package/scripts/_cli/explain_last/halt.py +44 -0
- package/scripts/_cli/explain_last/inputs.py +125 -0
- package/scripts/_cli/explain_last/memory.py +94 -0
- package/scripts/_cli/explain_last/provider.py +52 -0
- package/scripts/_cli/explain_last/render.py +52 -0
- package/scripts/_cli/explain_last/route.py +58 -0
- package/scripts/_cli/explain_last/scrubber.py +105 -0
- package/scripts/_cli/explain_last/sections/__init__.py +35 -0
- package/scripts/_cli/explain_last/sections/assumptions.py +21 -0
- package/scripts/_cli/explain_last/sections/council.py +27 -0
- package/scripts/_cli/explain_last/sections/halt.py +31 -0
- package/scripts/_cli/explain_last/sections/header.py +24 -0
- package/scripts/_cli/explain_last/sections/inputs.py +27 -0
- package/scripts/_cli/explain_last/sections/memory.py +21 -0
- package/scripts/_cli/explain_last/sections/pack.py +16 -0
- package/scripts/_cli/explain_last/sections/provider.py +26 -0
- package/scripts/_cli/explain_last/sections/route.py +22 -0
- package/scripts/_cli/explain_last/state_loader.py +76 -0
- package/scripts/_dispatch.bash +954 -0
- package/scripts/_lib/agent_settings.py +3 -3
- package/scripts/_lib/agents_overlay.py +3 -3
- package/scripts/_phase4_bucket.py +210 -0
- package/scripts/agent-config +35 -943
- package/scripts/ai-video/adapters/higgsfield.sh +1 -1
- package/scripts/ai-video/adapters/sora.sh +1 -1
- package/scripts/ai-video/test-pipeline.sh +2 -2
- package/scripts/ai_council/_default_prices.py +5 -5
- package/scripts/ai_council/advisors.py +1 -1
- package/scripts/ai_council/clients.py +2 -2
- package/scripts/ai_council/compile_corpus.py +9 -8
- package/scripts/ai_council/config.py +3 -3
- package/scripts/ai_council/events_log.py +8 -4
- package/scripts/ai_council/low_impact_corpus.py +1 -1
- package/scripts/ai_council/low_impact_intake.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +3 -3
- package/scripts/ai_council/pricing.py +8 -7
- package/scripts/ai_council/probation_gate.py +1 -1
- package/scripts/ai_council/redact_low_impact_entry.py +1 -1
- package/scripts/ai_council/session.py +13 -13
- package/scripts/ai_council/shadow_dispatch.py +2 -2
- package/scripts/annotate_discovery.py +149 -0
- package/scripts/audit_adr_coverage.py +1 -1
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +1 -1
- package/scripts/audit_command_surface.py +2 -2
- package/scripts/audit_likelihood.py +4 -4
- package/scripts/audit_overlap.py +3 -3
- package/scripts/audit_user_type_axis.py +1 -1
- package/scripts/build_discovery_manifest.py +302 -0
- package/scripts/build_mcp_registry_manifest.py +181 -0
- package/scripts/build_rule_trigger_matrix.py +2 -2
- package/scripts/capture_showcase_session.py +1 -1
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +7 -2
- package/scripts/check_council_layout.py +26 -20
- package/scripts/check_council_references.py +10 -10
- package/scripts/check_discovery_determinism.py +70 -0
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_no_roadmap_refs.py +2 -2
- package/scripts/check_one_off_location.py +1 -1
- package/scripts/check_public_links.py +2 -2
- package/scripts/check_references.py +14 -21
- package/scripts/check_release_includes_discovery.py +61 -0
- package/scripts/ci_summary.py +2 -2
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/command_suggester/__init__.py +1 -1
- package/scripts/context_hygiene_hook.py +2 -2
- package/scripts/council_cli.py +22 -22
- package/scripts/council_prune.py +3 -3
- package/scripts/extract_audit_patterns.py +2 -2
- package/scripts/gen_discovery_baseline.py +127 -0
- package/scripts/generate_ownership_matrix.py +1 -1
- package/scripts/hook_manifest.yaml +5 -5
- package/scripts/hooks/cline-dispatcher.sh +1 -1
- package/scripts/hooks/cowork-dispatcher.sh +1 -1
- package/scripts/hooks/dispatch_hook.py +3 -3
- package/scripts/hooks/gemini-dispatcher.sh +1 -1
- package/scripts/hooks/replay_hook.py +1 -1
- package/scripts/hooks/state_io.py +5 -5
- package/scripts/hooks_doctor.py +4 -4
- package/scripts/install-hooks.sh +2 -2
- package/scripts/install.py +3 -3
- package/scripts/install.sh +120 -18
- package/scripts/inventory_frontmatter.py +1 -1
- package/scripts/lint_agents_layout.py +103 -0
- package/scripts/lint_archived_skills.py +3 -3
- package/scripts/lint_artefact_frontmatter.py +180 -0
- package/scripts/lint_discovery_manifest.py +136 -0
- package/scripts/lint_discovery_vocabulary.py +148 -0
- package/scripts/lint_explain_trace.py +80 -0
- package/scripts/lint_framework_leakage_allowlist.json +63 -62
- package/scripts/lint_ghostwriter_source.py +1 -1
- package/scripts/lint_load_context.py +3 -3
- package/scripts/lint_mcp_registry_manifest.py +69 -0
- package/scripts/lint_media_policy_linkage.py +6 -6
- package/scripts/lint_positioning.py +143 -0
- package/scripts/lint_rule_tiers.py +2 -2
- package/scripts/lint_skill_tools.py +1 -1
- package/scripts/lint_topics_yaml.py +89 -0
- package/scripts/mcp_server/consumer_tool_catalog.json +3 -3
- package/scripts/mcp_server/telemetry.py +2 -2
- package/scripts/mcp_server/tools.py +27 -11
- package/scripts/mcp_telemetry_health.py +2 -2
- package/scripts/mcp_telemetry_store.py +1 -1
- package/scripts/measure_augment_budget.py +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 +3 -3
- package/scripts/memory_report.py +1 -1
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/minimal_safe_diff_hook.py +1 -1
- package/scripts/onboarding_gate_hook.py +4 -4
- package/scripts/prepack-check.mjs +62 -0
- package/scripts/probe_projection_fidelity.py +2 -2
- package/scripts/refine_ticket_detect.py +1 -1
- package/scripts/schemas/command.schema.json +41 -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 +2 -2
- package/scripts/skill_overlap.py +1 -1
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_usage_collect.py +3 -3
- package/scripts/skill_usage_report.py +3 -3
- package/scripts/smoke_quickstart.py +1 -1
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/sync_github_metadata.py +147 -0
- package/scripts/sync_gitignore.py +15 -5
- package/scripts/update_prices.py +4 -3
- package/scripts/verify_before_complete_hook.py +1 -1
- package/scripts/verify_roadmap_closure.py +1 -1
- package/templates/agent-user.md +35 -0
- package/.agent-src/commands/onboard.md +0 -467
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Vocabulary linter for `config/discovery/{workspaces,packs}.yml`.
|
|
3
|
+
|
|
4
|
+
Source-of-truth check: the YAML files MUST mirror the closed vocabulary
|
|
5
|
+
in `docs/decisions/ADR-013-discovery-frontmatter-contract.md` exactly.
|
|
6
|
+
Cross-reference check: every default/optional pack id referenced from
|
|
7
|
+
`workspaces.yml` MUST exist in `packs.yml`, and every workspace id in
|
|
8
|
+
`packs.yml` MUST exist in `workspaces.yml`. Bidirectional integrity:
|
|
9
|
+
every pack listed as a workspace's default/optional MUST list that
|
|
10
|
+
workspace in its own `workspaces:` array (and vice versa).
|
|
11
|
+
|
|
12
|
+
Non-overlap (ADR-010 alignment): no pack id may collide with a
|
|
13
|
+
`cost_profile` value (minimal/balanced/full/custom) or a `profile.id`
|
|
14
|
+
value (founder/developer/content_creator/agency/finance/ops).
|
|
15
|
+
|
|
16
|
+
Cap: ≤ 150 LOC, stdlib + PyYAML. Exit 0 clean, 1 on failure.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import sys
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
from typing import Any
|
|
23
|
+
|
|
24
|
+
try:
|
|
25
|
+
import yaml
|
|
26
|
+
except ImportError: # pragma: no cover
|
|
27
|
+
print("ERROR: PyYAML required (pip install pyyaml)", file=sys.stderr)
|
|
28
|
+
sys.exit(2)
|
|
29
|
+
|
|
30
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
31
|
+
WORKSPACES_YML = REPO_ROOT / "config" / "discovery" / "workspaces.yml"
|
|
32
|
+
PACKS_YML = REPO_ROOT / "config" / "discovery" / "packs.yml"
|
|
33
|
+
|
|
34
|
+
# Frozen ADR-013 vocabularies. Amendments require an ADR-013 edit + this list.
|
|
35
|
+
ADR_WORKSPACES: frozenset[str] = frozenset({
|
|
36
|
+
"engineering", "product", "finance", "founder", "gtm", "ops",
|
|
37
|
+
"small-business", "construction", "agent-config-maintainer",
|
|
38
|
+
})
|
|
39
|
+
ADR_PACKS: frozenset[str] = frozenset({
|
|
40
|
+
"engineering-base", "php", "laravel", "symfony", "javascript",
|
|
41
|
+
"typescript", "react", "nextjs", "python", "product-basic",
|
|
42
|
+
"product-discovery", "finance-basic", "finance-advanced",
|
|
43
|
+
"gtm-sales", "gtm-marketing", "ops-people", "founder-strategy", "small-business",
|
|
44
|
+
"construction", "ai-video", "meta",
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
# ADR-010 non-overlap reservations.
|
|
48
|
+
COST_PROFILE_RESERVED: frozenset[str] = frozenset({
|
|
49
|
+
"minimal", "balanced", "full", "custom",
|
|
50
|
+
})
|
|
51
|
+
PROFILE_ID_RESERVED: frozenset[str] = frozenset({
|
|
52
|
+
"founder", "developer", "content_creator", "agency", "finance", "ops",
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _load(path: Path) -> list[dict[str, Any]]:
|
|
57
|
+
if not path.exists():
|
|
58
|
+
raise SystemExit(f"ERROR: missing {path.relative_to(REPO_ROOT)}")
|
|
59
|
+
data = yaml.safe_load(path.read_text(encoding="utf-8")) or []
|
|
60
|
+
if not isinstance(data, list):
|
|
61
|
+
raise SystemExit(f"ERROR: {path.relative_to(REPO_ROOT)} must be a YAML list")
|
|
62
|
+
return data
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def lint(quiet: bool) -> int:
|
|
66
|
+
errors: list[str] = []
|
|
67
|
+
workspaces = _load(WORKSPACES_YML)
|
|
68
|
+
packs = _load(PACKS_YML)
|
|
69
|
+
|
|
70
|
+
ws_ids = {entry.get("id") for entry in workspaces}
|
|
71
|
+
pack_ids = {entry.get("id") for entry in packs}
|
|
72
|
+
|
|
73
|
+
# 1. ADR frozen-set parity.
|
|
74
|
+
missing_ws = ADR_WORKSPACES - ws_ids
|
|
75
|
+
extra_ws = ws_ids - ADR_WORKSPACES
|
|
76
|
+
if missing_ws:
|
|
77
|
+
errors.append(f"workspaces.yml missing ADR-013 ids: {sorted(missing_ws)}")
|
|
78
|
+
if extra_ws:
|
|
79
|
+
errors.append(f"workspaces.yml has ids not in ADR-013: {sorted(extra_ws)}")
|
|
80
|
+
missing_p = ADR_PACKS - pack_ids
|
|
81
|
+
extra_p = pack_ids - ADR_PACKS
|
|
82
|
+
if missing_p:
|
|
83
|
+
errors.append(f"packs.yml missing ADR-013 ids: {sorted(missing_p)}")
|
|
84
|
+
if extra_p:
|
|
85
|
+
errors.append(f"packs.yml has ids not in ADR-013: {sorted(extra_p)}")
|
|
86
|
+
|
|
87
|
+
# 2. Cross-reference: workspace default/optional packs → pack ids.
|
|
88
|
+
for ws in workspaces:
|
|
89
|
+
wid = ws.get("id")
|
|
90
|
+
for key in ("default_packs", "optional_packs"):
|
|
91
|
+
for pid in ws.get(key, []) or []:
|
|
92
|
+
if pid not in pack_ids:
|
|
93
|
+
errors.append(f"workspaces.yml '{wid}'.{key} → unknown pack '{pid}'")
|
|
94
|
+
|
|
95
|
+
# 3. Cross-reference: pack workspaces → workspace ids.
|
|
96
|
+
for pk in packs:
|
|
97
|
+
pid = pk.get("id")
|
|
98
|
+
for wid in pk.get("workspaces", []) or []:
|
|
99
|
+
if wid not in ws_ids:
|
|
100
|
+
errors.append(f"packs.yml '{pid}'.workspaces → unknown workspace '{wid}'")
|
|
101
|
+
for hint in pk.get("requires_hint", []) or []:
|
|
102
|
+
if hint not in pack_ids:
|
|
103
|
+
errors.append(f"packs.yml '{pid}'.requires_hint → unknown pack '{hint}'")
|
|
104
|
+
|
|
105
|
+
# 4. Bidirectional integrity (council HIGH fold-in).
|
|
106
|
+
pack_by_id = {pk.get("id"): pk for pk in packs}
|
|
107
|
+
ws_by_id = {ws.get("id"): ws for ws in workspaces}
|
|
108
|
+
for ws in workspaces:
|
|
109
|
+
wid = ws.get("id")
|
|
110
|
+
for key in ("default_packs", "optional_packs"):
|
|
111
|
+
for pid in ws.get(key, []) or []:
|
|
112
|
+
pk = pack_by_id.get(pid)
|
|
113
|
+
if pk and wid not in (pk.get("workspaces") or []):
|
|
114
|
+
errors.append(
|
|
115
|
+
f"bidir: workspace '{wid}'.{key} lists '{pid}' but "
|
|
116
|
+
f"pack '{pid}'.workspaces does not list '{wid}'"
|
|
117
|
+
)
|
|
118
|
+
for pk in packs:
|
|
119
|
+
pid = pk.get("id")
|
|
120
|
+
for wid in pk.get("workspaces", []) or []:
|
|
121
|
+
ws = ws_by_id.get(wid)
|
|
122
|
+
if ws:
|
|
123
|
+
listed = set(ws.get("default_packs") or []) | set(ws.get("optional_packs") or [])
|
|
124
|
+
if pid not in listed:
|
|
125
|
+
errors.append(
|
|
126
|
+
f"bidir: pack '{pid}'.workspaces lists '{wid}' but "
|
|
127
|
+
f"workspace '{wid}' does not list '{pid}' in default/optional_packs"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
# 5. Non-overlap (ADR-010).
|
|
131
|
+
overlap_cost = pack_ids & COST_PROFILE_RESERVED
|
|
132
|
+
if overlap_cost:
|
|
133
|
+
errors.append(f"pack ids collide with cost_profile values: {sorted(overlap_cost)}")
|
|
134
|
+
overlap_profile = pack_ids & PROFILE_ID_RESERVED
|
|
135
|
+
if overlap_profile:
|
|
136
|
+
errors.append(f"pack ids collide with profile.id values: {sorted(overlap_profile)}")
|
|
137
|
+
|
|
138
|
+
if errors:
|
|
139
|
+
for e in errors:
|
|
140
|
+
print(f"❌ {e}", file=sys.stderr)
|
|
141
|
+
return 1
|
|
142
|
+
if not quiet:
|
|
143
|
+
print(f"✅ discovery vocabulary OK — {len(ws_ids)} workspaces · {len(pack_ids)} packs")
|
|
144
|
+
return 0
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
if __name__ == "__main__":
|
|
148
|
+
sys.exit(lint(quiet="--quiet" in sys.argv))
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Lint an ExplainTrace v1 JSON payload against the schema.
|
|
3
|
+
|
|
4
|
+
Reads a JSON file (or stdin via ``--stdin``) and validates it against
|
|
5
|
+
``docs/contracts/explain-trace.schema.json``. Exit 0 on success,
|
|
6
|
+
1 on validation failure, 2 on invocation error (missing schema, bad
|
|
7
|
+
JSON). Used by Phase 4 unit tests; called from the
|
|
8
|
+
``lint-explain-trace`` Taskfile target.
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
import json
|
|
14
|
+
import sys
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
import jsonschema
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _repo_root() -> Path:
|
|
21
|
+
return Path(__file__).resolve().parent.parent
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _load_schema() -> dict:
|
|
25
|
+
schema_path = _repo_root() / "docs" / "contracts" / "explain-trace.schema.json"
|
|
26
|
+
if not schema_path.exists():
|
|
27
|
+
print(f"❌ explain-trace schema not found at {schema_path}", file=sys.stderr)
|
|
28
|
+
raise SystemExit(2)
|
|
29
|
+
with schema_path.open("r", encoding="utf-8") as fh:
|
|
30
|
+
return json.load(fh)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _read_payload(path: str | None, *, from_stdin: bool) -> object:
|
|
34
|
+
if from_stdin:
|
|
35
|
+
try:
|
|
36
|
+
return json.load(sys.stdin)
|
|
37
|
+
except json.JSONDecodeError as exc:
|
|
38
|
+
print(f"❌ stdin is not valid JSON: {exc}", file=sys.stderr)
|
|
39
|
+
raise SystemExit(2) from exc
|
|
40
|
+
if path is None:
|
|
41
|
+
print("❌ pass a JSON file path or --stdin", file=sys.stderr)
|
|
42
|
+
raise SystemExit(2)
|
|
43
|
+
p = Path(path)
|
|
44
|
+
if not p.exists():
|
|
45
|
+
print(f"❌ trace file not found: {p}", file=sys.stderr)
|
|
46
|
+
raise SystemExit(2)
|
|
47
|
+
try:
|
|
48
|
+
with p.open("r", encoding="utf-8") as fh:
|
|
49
|
+
return json.load(fh)
|
|
50
|
+
except json.JSONDecodeError as exc:
|
|
51
|
+
print(f"❌ {p} is not valid JSON: {exc}", file=sys.stderr)
|
|
52
|
+
raise SystemExit(2) from exc
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def main(argv: list[str] | None = None) -> int:
|
|
56
|
+
parser = argparse.ArgumentParser(
|
|
57
|
+
prog="lint_explain_trace",
|
|
58
|
+
description="Validate an ExplainTrace v1 JSON payload against the schema.",
|
|
59
|
+
)
|
|
60
|
+
parser.add_argument("path", nargs="?", default=None, help="Path to a JSON trace file.")
|
|
61
|
+
parser.add_argument("--stdin", action="store_true", help="Read the trace from stdin.")
|
|
62
|
+
opts = parser.parse_args(argv)
|
|
63
|
+
|
|
64
|
+
schema = _load_schema()
|
|
65
|
+
jsonschema.Draft202012Validator.check_schema(schema)
|
|
66
|
+
payload = _read_payload(opts.path, from_stdin=opts.stdin)
|
|
67
|
+
|
|
68
|
+
validator = jsonschema.Draft202012Validator(schema)
|
|
69
|
+
errors = sorted(validator.iter_errors(payload), key=lambda e: list(e.absolute_path))
|
|
70
|
+
if errors:
|
|
71
|
+
for err in errors:
|
|
72
|
+
loc = "/".join(str(p) for p in err.absolute_path) or "<root>"
|
|
73
|
+
print(f"❌ {loc}: {err.message}", file=sys.stderr)
|
|
74
|
+
return 1
|
|
75
|
+
print("✅ explain-trace OK")
|
|
76
|
+
return 0
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if __name__ == "__main__": # pragma: no cover
|
|
80
|
+
raise SystemExit(main())
|
|
@@ -1,38 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"_doc": "Each entry: { file: relative path from repo root, lines: [int,...] | \"*\" for whole file, reason: short justification }. Use sparingly
|
|
3
|
+
"_doc": "Each entry: { file: relative path from repo root, lines: [int,...] | \"*\" for whole file, reason: short justification }. Use sparingly — first ask whether the file should be neutralized instead.",
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"file": ".agent-src.uncompressed/skills/using-git-worktrees/SKILL.md",
|
|
7
7
|
"lines": [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
142,
|
|
9
|
+
143,
|
|
10
|
+
144,
|
|
11
|
+
164
|
|
12
12
|
],
|
|
13
13
|
"reason": "Multi-stack package-manager comparison table"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"file": ".agent-src.uncompressed/skills/refine-prompt/SKILL.md",
|
|
17
17
|
"lines": [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
100,
|
|
19
|
+
102,
|
|
20
|
+
104,
|
|
21
|
+
149,
|
|
22
|
+
192,
|
|
23
|
+
281
|
|
24
24
|
],
|
|
25
25
|
"reason": "Project-detection enumeration listing all supported stacks"
|
|
26
26
|
},
|
|
27
|
-
{
|
|
28
|
-
"file": ".agent-src.uncompressed/commands/onboard.md",
|
|
29
|
-
"lines": [
|
|
30
|
-
220,
|
|
31
|
-
221,
|
|
32
|
-
224
|
|
33
|
-
],
|
|
34
|
-
"reason": "Stack-detection enumeration in onboard flow"
|
|
35
|
-
},
|
|
36
27
|
{
|
|
37
28
|
"file": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
|
|
38
29
|
"lines": [
|
|
@@ -43,12 +34,12 @@
|
|
|
43
34
|
{
|
|
44
35
|
"file": ".agent-src.uncompressed/commands/optimize/augmentignore.md",
|
|
45
36
|
"lines": "*",
|
|
46
|
-
"reason": "Per-stack augmentignore rules
|
|
37
|
+
"reason": "Per-stack augmentignore rules — by definition stack-aware"
|
|
47
38
|
},
|
|
48
39
|
{
|
|
49
40
|
"file": ".agent-src.uncompressed/commands/optimize/rtk.md",
|
|
50
41
|
"lines": "*",
|
|
51
|
-
"reason": "Per-tool rtk filter detection
|
|
42
|
+
"reason": "Per-tool rtk filter detection — by definition tool-aware"
|
|
52
43
|
},
|
|
53
44
|
{
|
|
54
45
|
"file": ".agent-src.uncompressed/rules/framework-neutrality-in-generic-skills.md",
|
|
@@ -68,94 +59,94 @@
|
|
|
68
59
|
{
|
|
69
60
|
"file": ".agent-src.uncompressed/rules/architecture.md",
|
|
70
61
|
"lines": [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
62
|
+
31,
|
|
63
|
+
32,
|
|
64
|
+
38,
|
|
65
|
+
39,
|
|
66
|
+
74
|
|
76
67
|
],
|
|
77
68
|
"reason": "Stack-routing pointers and cross-stack enumeration of validation/handler primitives"
|
|
78
69
|
},
|
|
79
70
|
{
|
|
80
71
|
"file": ".agent-src.uncompressed/skills/api-endpoint/SKILL.md",
|
|
81
72
|
"lines": [
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
53,
|
|
74
|
+
70
|
|
84
75
|
],
|
|
85
76
|
"reason": "Cross-stack validation primitive enumeration and pointer to laravel-api-endpoint carve-out"
|
|
86
77
|
},
|
|
87
78
|
{
|
|
88
79
|
"file": ".agent-src.uncompressed/skills/code-review/SKILL.md",
|
|
89
80
|
"lines": [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
62,
|
|
95
|
-
63,
|
|
81
|
+
52,
|
|
82
|
+
53,
|
|
83
|
+
54,
|
|
84
|
+
61,
|
|
96
85
|
74,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
86
|
+
75,
|
|
87
|
+
86,
|
|
88
|
+
95,
|
|
89
|
+
97,
|
|
90
|
+
99,
|
|
91
|
+
231
|
|
101
92
|
],
|
|
102
93
|
"reason": "Cross-stack code-review checklist enumerates handler shape, validation, authz, ORM, escaping per framework"
|
|
103
94
|
},
|
|
104
95
|
{
|
|
105
96
|
"file": ".agent-src.uncompressed/skills/security/SKILL.md",
|
|
106
97
|
"lines": [
|
|
107
|
-
16,
|
|
108
|
-
23,
|
|
109
|
-
27,
|
|
110
98
|
28,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
99
|
+
35,
|
|
100
|
+
39,
|
|
101
|
+
40,
|
|
102
|
+
49,
|
|
103
|
+
53,
|
|
104
|
+
60,
|
|
105
|
+
70,
|
|
106
|
+
88
|
|
116
107
|
],
|
|
117
108
|
"reason": "Cross-stack security review enumerates auth primitives (Policies, voters, guards, middleware) and config paths"
|
|
118
109
|
},
|
|
119
110
|
{
|
|
120
111
|
"file": ".agent-src.uncompressed/skills/verify-completion-evidence/SKILL.md",
|
|
121
112
|
"lines": [
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
113
|
+
65,
|
|
114
|
+
66,
|
|
115
|
+
67,
|
|
116
|
+
112,
|
|
117
|
+
189
|
|
127
118
|
],
|
|
128
119
|
"reason": "Evidence-mapping table enumerates the type-checker / linter / refactor tool per stack including PHPStan, Rector, ECS"
|
|
129
120
|
},
|
|
130
121
|
{
|
|
131
122
|
"file": ".agent-src.uncompressed/commands/tests/execute.md",
|
|
132
123
|
"lines": "*",
|
|
133
|
-
"reason": "Multi-stack test runner dispatch (Pest/PHPUnit/Jest/pytest/cargo-test)
|
|
124
|
+
"reason": "Multi-stack test runner dispatch (Pest/PHPUnit/Jest/pytest/cargo-test) — enumerates per-stack commands by design"
|
|
134
125
|
},
|
|
135
126
|
{
|
|
136
127
|
"file": ".agent-src.uncompressed/commands/tests/create.md",
|
|
137
128
|
"lines": "*",
|
|
138
|
-
"reason": "Multi-stack test framework selection
|
|
129
|
+
"reason": "Multi-stack test framework selection — enumerates Pest/PHPUnit/Jest/pytest options by design"
|
|
139
130
|
},
|
|
140
131
|
{
|
|
141
132
|
"file": ".agent-src.uncompressed/commands/module/explore.md",
|
|
142
133
|
"lines": "*",
|
|
143
|
-
"reason": "Multi-stack module detection (Laravel HMVC / Symfony bundles / DDD-lite)
|
|
134
|
+
"reason": "Multi-stack module detection (Laravel HMVC / Symfony bundles / DDD-lite) — enumerates per-stack patterns by design"
|
|
144
135
|
},
|
|
145
136
|
{
|
|
146
137
|
"file": ".agent-src.uncompressed/commands/package-test.md",
|
|
147
138
|
"lines": "*",
|
|
148
|
-
"reason": "Multi-stack package linking (composer/npm/pip/cargo/go)
|
|
139
|
+
"reason": "Multi-stack package linking (composer/npm/pip/cargo/go) — declared in skills frontmatter"
|
|
149
140
|
},
|
|
150
141
|
{
|
|
151
142
|
"file": ".agent-src.uncompressed/commands/package-reset.md",
|
|
152
143
|
"lines": "*",
|
|
153
|
-
"reason": "Multi-stack package reset (composer/npm)
|
|
144
|
+
"reason": "Multi-stack package reset (composer/npm) — declared in skills frontmatter"
|
|
154
145
|
},
|
|
155
146
|
{
|
|
156
147
|
"file": ".agent-src.uncompressed/skills/dependency-upgrade/SKILL.md",
|
|
157
148
|
"lines": "*",
|
|
158
|
-
"reason": "Multi-stack dependency upgrade examples (composer/npm/pip)
|
|
149
|
+
"reason": "Multi-stack dependency upgrade examples (composer/npm/pip) — declared stack-agnostic in description"
|
|
159
150
|
},
|
|
160
151
|
{
|
|
161
152
|
"file": ".agent-src.uncompressed/skills/fe-design/SKILL.md",
|
|
@@ -175,7 +166,7 @@
|
|
|
175
166
|
{
|
|
176
167
|
"file": ".agent-src.uncompressed/commands/project-analyze.md",
|
|
177
168
|
"lines": "*",
|
|
178
|
-
"reason": "Stack-detection templates show per-framework default outputs (Laravel/Standalone PHP/etc.)
|
|
169
|
+
"reason": "Stack-detection templates show per-framework default outputs (Laravel/Standalone PHP/etc.) — multi-stack by design"
|
|
179
170
|
},
|
|
180
171
|
{
|
|
181
172
|
"file": ".agent-src.uncompressed/commands/commit.md",
|
|
@@ -185,7 +176,7 @@
|
|
|
185
176
|
{
|
|
186
177
|
"file": ".agent-src.uncompressed/skills/test-driven-development/SKILL.md",
|
|
187
178
|
"lines": "*",
|
|
188
|
-
"reason": "Multi-stack TDD examples
|
|
179
|
+
"reason": "Multi-stack TDD examples — PHP/Pest and TypeScript/Jest sections both present"
|
|
189
180
|
},
|
|
190
181
|
{
|
|
191
182
|
"file": ".agent-src.uncompressed/skills/context-authoring/SKILL.md",
|
|
@@ -220,7 +211,7 @@
|
|
|
220
211
|
{
|
|
221
212
|
"file": ".agent-src.uncompressed/skills/systematic-debugging/SKILL.md",
|
|
222
213
|
"lines": "*",
|
|
223
|
-
"reason": "Debugging examples drawn from PHP project; the procedure is stack-agnostic (reproduce
|
|
214
|
+
"reason": "Debugging examples drawn from PHP project; the procedure is stack-agnostic (reproduce → isolate → hypothesize → verify)"
|
|
224
215
|
},
|
|
225
216
|
{
|
|
226
217
|
"file": ".agent-src.uncompressed/skills/testing-anti-patterns/SKILL.md",
|
|
@@ -325,7 +316,7 @@
|
|
|
325
316
|
{
|
|
326
317
|
"file": ".agent-src.uncompressed/commands/quality-fix.md",
|
|
327
318
|
"lines": "*",
|
|
328
|
-
"reason": "Quality-fix dispatches per stack (PHPStan/ECS/Rector for PHP, tsc/biome for JS)
|
|
319
|
+
"reason": "Quality-fix dispatches per stack (PHPStan/ECS/Rector for PHP, tsc/biome for JS) — multi-stack by design"
|
|
329
320
|
},
|
|
330
321
|
{
|
|
331
322
|
"file": ".agent-src.uncompressed/commands/roadmap/create.md",
|
|
@@ -471,6 +462,16 @@
|
|
|
471
462
|
"file": ".agent-src.uncompressed/commands/upstream-contribute.md",
|
|
472
463
|
"lines": "*",
|
|
473
464
|
"reason": "Upstream-contribute examples drawn from this package's own Laravel-tooling contributions"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"file": ".agent-src.uncompressed/skills/code-review/SKILL.md",
|
|
468
|
+
"lines": [235],
|
|
469
|
+
"reason": "Multi-stack formatter enumeration (ECS, Prettier, Ruff, gofmt) — comparative example, no project mandate"
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"file": ".agent-src.uncompressed/rules/architecture.md",
|
|
473
|
+
"lines": [80],
|
|
474
|
+
"reason": "Multi-framework module-system enumeration (Laravel, Turborepo, NestJS, Go) — comparative example, no project mandate"
|
|
474
475
|
}
|
|
475
476
|
]
|
|
476
477
|
}
|
|
@@ -7,7 +7,7 @@ Two storage tiers exist (see docs/contracts/ghostwriter-schema.md):
|
|
|
7
7
|
fictional fixtures ONLY (`fictional: true`). Every file stem must
|
|
8
8
|
be on scripts/ghostwriter_fixture_allowlist.txt. `aliases:` is
|
|
9
9
|
forbidden here (consumer-only feature).
|
|
10
|
-
* agents/ghostwriter/ — consumer real-person
|
|
10
|
+
* agents/reference/ghostwriter/ — consumer real-person
|
|
11
11
|
profiles. Gitignored. Must NOT carry `fictional: true`. Optional
|
|
12
12
|
`aliases:` list validated per § Aliases storage rules.
|
|
13
13
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
Validates per docs/contracts/load-context-schema.md:
|
|
5
5
|
- Paths exist and are .md
|
|
6
|
-
- Allowed roots only (.agent-src*/contexts/, agents/contexts/)
|
|
6
|
+
- Allowed roots only (.agent-src*/contexts/, agents/settings/contexts/)
|
|
7
7
|
- No public→project-local leak (warn)
|
|
8
8
|
- No circular refs across lazy + eager edges
|
|
9
9
|
- Combined char-budget for eager edges (rule + eager targets ≤ cap)
|
|
@@ -32,7 +32,7 @@ SCAN_DIRS = [
|
|
|
32
32
|
ALLOWED_PREFIXES = (
|
|
33
33
|
"contexts/", # logical name (canonical — P1.1 / P5.3)
|
|
34
34
|
".agent-src/contexts/", # projected (defensive — only seen in compressed inputs)
|
|
35
|
-
"agents/contexts/", # project-local
|
|
35
|
+
"agents/settings/contexts/", # project-local
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
# `.agent-src.uncompressed/contexts/` was the legacy fully-qualified form
|
|
@@ -48,7 +48,7 @@ LEGACY_PREFIX = ".agent-src.uncompressed/contexts/"
|
|
|
48
48
|
SOURCE_ROOT = ROOT / ".agent-src.uncompressed"
|
|
49
49
|
|
|
50
50
|
PUBLIC_RULE_PREFIX = ".agent-src.uncompressed/rules/"
|
|
51
|
-
PROJECT_LOCAL_PREFIX = "agents/contexts/"
|
|
51
|
+
PROJECT_LOCAL_PREFIX = "agents/settings/contexts/"
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
def resolve_entry(entry: str) -> Path:
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Lint `dist/mcp/registry-manifest.json` against its JSON Schema.
|
|
3
|
+
|
|
4
|
+
Asserts:
|
|
5
|
+
* file exists
|
|
6
|
+
* validates against `docs/contracts/mcp-registry-manifest.schema.json`
|
|
7
|
+
* `dist/mcp/awesome-mcp-servers.row.md` is non-empty and parses as a
|
|
8
|
+
single Markdown table row (one `|`-delimited line)
|
|
9
|
+
* `dist/mcp/mcp-cloudflare-catalogue.json` is valid JSON
|
|
10
|
+
|
|
11
|
+
Exits 0 on success, 1 on any failure. `--quiet` suppresses the OK line.
|
|
12
|
+
|
|
13
|
+
Roadmap: agents/roadmaps/strategic-visibility-mcp-topics-positioning.md Phase 2 exit gate.
|
|
14
|
+
"""
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
import json
|
|
19
|
+
import sys
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
import jsonschema
|
|
23
|
+
|
|
24
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
25
|
+
SCHEMA = ROOT / "docs" / "contracts" / "mcp-registry-manifest.schema.json"
|
|
26
|
+
MANIFEST = ROOT / "dist" / "mcp" / "registry-manifest.json"
|
|
27
|
+
ROW_MD = ROOT / "dist" / "mcp" / "awesome-mcp-servers.row.md"
|
|
28
|
+
CF_JSON = ROOT / "dist" / "mcp" / "mcp-cloudflare-catalogue.json"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _fail(msg: str) -> int:
|
|
32
|
+
print(f"\u274c {msg}", file=sys.stderr)
|
|
33
|
+
return 1
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def main() -> int:
|
|
37
|
+
ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
|
38
|
+
ap.add_argument("--quiet", action="store_true")
|
|
39
|
+
args = ap.parse_args()
|
|
40
|
+
|
|
41
|
+
for p in (SCHEMA, MANIFEST, ROW_MD, CF_JSON):
|
|
42
|
+
if not p.exists():
|
|
43
|
+
return _fail(f"missing: {p.relative_to(ROOT)}")
|
|
44
|
+
|
|
45
|
+
schema = json.loads(SCHEMA.read_text(encoding="utf-8"))
|
|
46
|
+
manifest = json.loads(MANIFEST.read_text(encoding="utf-8"))
|
|
47
|
+
try:
|
|
48
|
+
jsonschema.Draft202012Validator(schema).validate(manifest)
|
|
49
|
+
except jsonschema.ValidationError as e:
|
|
50
|
+
return _fail(f"schema validation: {e.message} at {list(e.absolute_path)}")
|
|
51
|
+
|
|
52
|
+
row = ROW_MD.read_text(encoding="utf-8").strip()
|
|
53
|
+
if not row:
|
|
54
|
+
return _fail("awesome-mcp-servers.row.md is empty")
|
|
55
|
+
if row.count("\n") != 0 or row.count("|") < 4:
|
|
56
|
+
return _fail("awesome-mcp-servers.row.md must be a single `|`-delimited row")
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
json.loads(CF_JSON.read_text(encoding="utf-8"))
|
|
60
|
+
except json.JSONDecodeError as e:
|
|
61
|
+
return _fail(f"mcp-cloudflare-catalogue.json: {e}")
|
|
62
|
+
|
|
63
|
+
if not args.quiet:
|
|
64
|
+
print(f"\u2705 mcp registry manifest OK ({len(manifest['registries'])} registries)")
|
|
65
|
+
return 0
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
if __name__ == "__main__":
|
|
69
|
+
raise SystemExit(main())
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Lint structural reachability of media governance policies.
|
|
3
3
|
|
|
4
|
-
Every policy file under `agents/policies/media/` (except README) must
|
|
4
|
+
Every policy file under `agents/settings/policies/media/` (except README) must
|
|
5
5
|
be linked from at least one of:
|
|
6
6
|
|
|
7
7
|
* a skill SKILL.md (any .agent-src.uncompressed/skills/*/SKILL.md
|
|
8
8
|
or .claude/skills/*/SKILL.md),
|
|
9
9
|
* a routing rule under .agent-src.uncompressed/rules/, or
|
|
10
|
-
* a sibling policy file under agents/policies/media/.
|
|
10
|
+
* a sibling policy file under agents/settings/policies/media/.
|
|
11
11
|
|
|
12
12
|
A policy that no surface references is a silent policy and a silent
|
|
13
13
|
policy is a failed policy. This is the CI-side reachability guarantee
|
|
14
14
|
the agent-in-the-loop enforcement model rests on (see
|
|
15
|
-
agents/policies/media/README.md § Enforcement model).
|
|
15
|
+
agents/settings/policies/media/README.md § Enforcement model).
|
|
16
16
|
|
|
17
17
|
Exit codes:
|
|
18
18
|
0 all policies linked
|
|
@@ -66,7 +66,7 @@ def collect_scan_files() -> list[Path]:
|
|
|
66
66
|
def referrers_for(policy: Path, scan_files: list[Path]) -> list[Path]:
|
|
67
67
|
"""Return files that reference `policy` by its repo-relative name
|
|
68
68
|
or basename. We accept both the full path token
|
|
69
|
-
(`agents/policies/media/likeness.md`) and the bare basename
|
|
69
|
+
(`agents/settings/policies/media/likeness.md`) and the bare basename
|
|
70
70
|
(`likeness.md`) inside a markdown link, because sibling policies
|
|
71
71
|
link via relative `[likeness.md](likeness.md)` form.
|
|
72
72
|
"""
|
|
@@ -91,7 +91,7 @@ def referrers_for(policy: Path, scan_files: list[Path]) -> list[Path]:
|
|
|
91
91
|
def main() -> int:
|
|
92
92
|
if not POLICY_DIR.exists():
|
|
93
93
|
emit(
|
|
94
|
-
"media-policy-linkage: agents/policies/media/ missing — "
|
|
94
|
+
"media-policy-linkage: agents/settings/policies/media/ missing — "
|
|
95
95
|
"nothing to lint."
|
|
96
96
|
)
|
|
97
97
|
return 0
|
|
@@ -99,7 +99,7 @@ def main() -> int:
|
|
|
99
99
|
policies = collect_policies()
|
|
100
100
|
if not policies:
|
|
101
101
|
emit(
|
|
102
|
-
"media-policy-linkage: agents/policies/media/ has no policy "
|
|
102
|
+
"media-policy-linkage: agents/settings/policies/media/ has no policy "
|
|
103
103
|
"files — nothing to lint."
|
|
104
104
|
)
|
|
105
105
|
return 0
|