@event4u/agent-config 1.9.1
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/README.md +64 -0
- package/.agent-src/commands/agent-handoff.md +64 -0
- package/.agent-src/commands/agent-status.md +83 -0
- package/.agent-src/commands/agents-audit.md +243 -0
- package/.agent-src/commands/agents-cleanup.md +169 -0
- package/.agent-src/commands/agents-prepare.md +137 -0
- package/.agent-src/commands/analyze-reference-repo.md +191 -0
- package/.agent-src/commands/bug-fix.md +181 -0
- package/.agent-src/commands/bug-investigate.md +175 -0
- package/.agent-src/commands/commit.md +121 -0
- package/.agent-src/commands/compress.md +177 -0
- package/.agent-src/commands/config-agent-settings.md +126 -0
- package/.agent-src/commands/context-create.md +167 -0
- package/.agent-src/commands/context-refactor.md +170 -0
- package/.agent-src/commands/copilot-agents-init.md +150 -0
- package/.agent-src/commands/copilot-agents-optimize.md +251 -0
- package/.agent-src/commands/create-pr-description.md +112 -0
- package/.agent-src/commands/create-pr.md +76 -0
- package/.agent-src/commands/do-and-judge.md +114 -0
- package/.agent-src/commands/do-in-steps.md +84 -0
- package/.agent-src/commands/e2e-heal.md +98 -0
- package/.agent-src/commands/e2e-plan.md +85 -0
- package/.agent-src/commands/estimate-ticket.md +80 -0
- package/.agent-src/commands/feature-dev.md +111 -0
- package/.agent-src/commands/feature-explore.md +180 -0
- package/.agent-src/commands/feature-plan.md +288 -0
- package/.agent-src/commands/feature-refactor.md +181 -0
- package/.agent-src/commands/feature-roadmap.md +184 -0
- package/.agent-src/commands/fix-ci.md +48 -0
- package/.agent-src/commands/fix-portability.md +97 -0
- package/.agent-src/commands/fix-pr-bot-comments.md +146 -0
- package/.agent-src/commands/fix-pr-comments.md +58 -0
- package/.agent-src/commands/fix-pr-developer-comments.md +152 -0
- package/.agent-src/commands/fix-references.md +94 -0
- package/.agent-src/commands/fix-seeder.md +146 -0
- package/.agent-src/commands/implement-ticket.md +133 -0
- package/.agent-src/commands/jira-ticket.md +71 -0
- package/.agent-src/commands/judge.md +86 -0
- package/.agent-src/commands/memory-add.md +130 -0
- package/.agent-src/commands/memory-full.md +97 -0
- package/.agent-src/commands/memory-promote.md +144 -0
- package/.agent-src/commands/mode.md +121 -0
- package/.agent-src/commands/module-create.md +132 -0
- package/.agent-src/commands/module-explore.md +157 -0
- package/.agent-src/commands/optimize-agents.md +139 -0
- package/.agent-src/commands/optimize-augmentignore.md +262 -0
- package/.agent-src/commands/optimize-rtk-filters.md +120 -0
- package/.agent-src/commands/optimize-skills.md +121 -0
- package/.agent-src/commands/override-create.md +97 -0
- package/.agent-src/commands/override-manage.md +96 -0
- package/.agent-src/commands/package-reset.md +154 -0
- package/.agent-src/commands/package-test.md +154 -0
- package/.agent-src/commands/prepare-for-review.md +91 -0
- package/.agent-src/commands/project-analyze.md +300 -0
- package/.agent-src/commands/project-health.md +95 -0
- package/.agent-src/commands/propose-memory.md +108 -0
- package/.agent-src/commands/quality-fix.md +106 -0
- package/.agent-src/commands/refine-ticket.md +81 -0
- package/.agent-src/commands/review-changes.md +130 -0
- package/.agent-src/commands/review-routing.md +111 -0
- package/.agent-src/commands/roadmap-create.md +110 -0
- package/.agent-src/commands/roadmap-execute.md +68 -0
- package/.agent-src/commands/rule-compliance-audit.md +139 -0
- package/.agent-src/commands/tests-create.md +73 -0
- package/.agent-src/commands/tests-execute.md +58 -0
- package/.agent-src/commands/threat-model.md +115 -0
- package/.agent-src/commands/update-form-request-messages.md +189 -0
- package/.agent-src/commands/upstream-contribute.md +171 -0
- package/.agent-src/contexts/augment-infrastructure.md +181 -0
- package/.agent-src/contexts/documentation-hierarchy.md +142 -0
- package/.agent-src/contexts/model-recommendations.md +142 -0
- package/.agent-src/contexts/override-system.md +187 -0
- package/.agent-src/contexts/skills-and-commands.md +154 -0
- package/.agent-src/contexts/subagent-configuration.md +62 -0
- package/.agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +110 -0
- package/.agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
- package/.agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
- package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +117 -0
- package/.agent-src/guidelines/agent-infra/layered-settings.md +158 -0
- package/.agent-src/guidelines/agent-infra/memory-access.md +121 -0
- package/.agent-src/guidelines/agent-infra/naming.md +69 -0
- package/.agent-src/guidelines/agent-infra/output-patterns.md +117 -0
- package/.agent-src/guidelines/agent-infra/review-routing-data-format.md +144 -0
- package/.agent-src/guidelines/agent-infra/role-contracts.md +211 -0
- package/.agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
- package/.agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
- package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +135 -0
- package/.agent-src/guidelines/agent-infra/size-and-scope.md +189 -0
- package/.agent-src/guidelines/agent-infra/tool-integration.md +73 -0
- package/.agent-src/guidelines/docs/readme-size-and-splitting.md +153 -0
- package/.agent-src/guidelines/e2e/playwright.md +363 -0
- package/.agent-src/guidelines/php/api-design.md +115 -0
- package/.agent-src/guidelines/php/artisan-commands.md +81 -0
- package/.agent-src/guidelines/php/blade-ui.md +78 -0
- package/.agent-src/guidelines/php/controllers.md +90 -0
- package/.agent-src/guidelines/php/database.md +111 -0
- package/.agent-src/guidelines/php/eloquent.md +208 -0
- package/.agent-src/guidelines/php/flux.md +80 -0
- package/.agent-src/guidelines/php/general.md +191 -0
- package/.agent-src/guidelines/php/git.md +96 -0
- package/.agent-src/guidelines/php/jobs.md +111 -0
- package/.agent-src/guidelines/php/livewire.md +71 -0
- package/.agent-src/guidelines/php/logging.md +79 -0
- package/.agent-src/guidelines/php/naming.md +89 -0
- package/.agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
- package/.agent-src/guidelines/php/patterns/dtos.md +199 -0
- package/.agent-src/guidelines/php/patterns/events.md +67 -0
- package/.agent-src/guidelines/php/patterns/factory.md +53 -0
- package/.agent-src/guidelines/php/patterns/pipelines.md +66 -0
- package/.agent-src/guidelines/php/patterns/policies.md +66 -0
- package/.agent-src/guidelines/php/patterns/repositories.md +122 -0
- package/.agent-src/guidelines/php/patterns/service-layer.md +64 -0
- package/.agent-src/guidelines/php/patterns/strategy.md +69 -0
- package/.agent-src/guidelines/php/patterns.md +28 -0
- package/.agent-src/guidelines/php/performance.md +92 -0
- package/.agent-src/guidelines/php/resources.md +100 -0
- package/.agent-src/guidelines/php/security.md +110 -0
- package/.agent-src/guidelines/php/sql.md +97 -0
- package/.agent-src/guidelines/php/validations.md +119 -0
- package/.agent-src/guidelines/php/websocket.md +100 -0
- package/.agent-src/personas/README.md +104 -0
- package/.agent-src/personas/ai-agent.md +77 -0
- package/.agent-src/personas/critical-challenger.md +73 -0
- package/.agent-src/personas/developer.md +73 -0
- package/.agent-src/personas/product-owner.md +78 -0
- package/.agent-src/personas/qa.md +67 -0
- package/.agent-src/personas/senior-engineer.md +77 -0
- package/.agent-src/personas/stakeholder.md +78 -0
- package/.agent-src/rules/agent-docs.md +61 -0
- package/.agent-src/rules/analysis-skill-routing.md +48 -0
- package/.agent-src/rules/architecture.md +62 -0
- package/.agent-src/rules/artifact-drafting-protocol.md +73 -0
- package/.agent-src/rules/ask-when-uncertain.md +52 -0
- package/.agent-src/rules/augment-portability.md +38 -0
- package/.agent-src/rules/augment-source-of-truth.md +128 -0
- package/.agent-src/rules/capture-learnings.md +89 -0
- package/.agent-src/rules/cli-output-handling.md +94 -0
- package/.agent-src/rules/commit-conventions.md +64 -0
- package/.agent-src/rules/context-hygiene.md +90 -0
- package/.agent-src/rules/docker-commands.md +55 -0
- package/.agent-src/rules/docs-sync.md +79 -0
- package/.agent-src/rules/downstream-changes.md +70 -0
- package/.agent-src/rules/e2e-testing.md +53 -0
- package/.agent-src/rules/guidelines.md +90 -0
- package/.agent-src/rules/improve-before-implement.md +94 -0
- package/.agent-src/rules/language-and-tone.md +104 -0
- package/.agent-src/rules/laravel-translations.md +48 -0
- package/.agent-src/rules/markdown-safe-codeblocks.md +18 -0
- package/.agent-src/rules/minimal-safe-diff.md +87 -0
- package/.agent-src/rules/missing-tool-handling.md +62 -0
- package/.agent-src/rules/model-recommendation.md +70 -0
- package/.agent-src/rules/package-ci-checks.md +80 -0
- package/.agent-src/rules/php-coding.md +63 -0
- package/.agent-src/rules/preservation-guard.md +29 -0
- package/.agent-src/rules/review-routing-awareness.md +125 -0
- package/.agent-src/rules/reviewer-awareness.md +92 -0
- package/.agent-src/rules/roadmap-progress-sync.md +56 -0
- package/.agent-src/rules/role-mode-adherence.md +54 -0
- package/.agent-src/rules/rule-type-governance.md +46 -0
- package/.agent-src/rules/runtime-safety.md +42 -0
- package/.agent-src/rules/scope-control.md +40 -0
- package/.agent-src/rules/security-sensitive-stop.md +77 -0
- package/.agent-src/rules/size-enforcement.md +29 -0
- package/.agent-src/rules/skill-improvement-trigger.md +58 -0
- package/.agent-src/rules/skill-quality.md +110 -0
- package/.agent-src/rules/slash-commands.md +30 -0
- package/.agent-src/rules/think-before-action.md +91 -0
- package/.agent-src/rules/token-efficiency.md +99 -0
- package/.agent-src/rules/tool-safety.md +36 -0
- package/.agent-src/rules/upstream-proposal.md +76 -0
- package/.agent-src/rules/user-interaction.md +79 -0
- package/.agent-src/rules/verify-before-complete.md +120 -0
- package/.agent-src/scripts/scan-seeder-violations.php +145 -0
- package/.agent-src/scripts/update_roadmap_progress.py +244 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +149 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +234 -0
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +197 -0
- package/.agent-src/skills/analysis-skill-router/SKILL.md +134 -0
- package/.agent-src/skills/api-design/SKILL.md +104 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +185 -0
- package/.agent-src/skills/api-testing/SKILL.md +206 -0
- package/.agent-src/skills/artisan-commands/SKILL.md +78 -0
- package/.agent-src/skills/authz-review/SKILL.md +171 -0
- package/.agent-src/skills/aws-infrastructure/SKILL.md +152 -0
- package/.agent-src/skills/blade-ui/SKILL.md +75 -0
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +185 -0
- package/.agent-src/skills/bug-analyzer/SKILL.md +256 -0
- package/.agent-src/skills/check-refs/SKILL.md +72 -0
- package/.agent-src/skills/code-refactoring/SKILL.md +200 -0
- package/.agent-src/skills/code-review/SKILL.md +214 -0
- package/.agent-src/skills/command-routing/SKILL.md +96 -0
- package/.agent-src/skills/command-writing/SKILL.md +143 -0
- package/.agent-src/skills/composer-packages/SKILL.md +172 -0
- package/.agent-src/skills/context-authoring/SKILL.md +157 -0
- package/.agent-src/skills/context-document/SKILL.md +153 -0
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +70 -0
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +220 -0
- package/.agent-src/skills/copilot-config/SKILL.md +203 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +116 -0
- package/.agent-src/skills/data-flow-mapper/SKILL.md +160 -0
- package/.agent-src/skills/database/SKILL.md +91 -0
- package/.agent-src/skills/dependency-upgrade/SKILL.md +204 -0
- package/.agent-src/skills/description-assist/SKILL.md +169 -0
- package/.agent-src/skills/design-review/SKILL.md +228 -0
- package/.agent-src/skills/devcontainer/SKILL.md +121 -0
- package/.agent-src/skills/developer-like-execution/SKILL.md +276 -0
- package/.agent-src/skills/docker/SKILL.md +245 -0
- package/.agent-src/skills/dto-creator/SKILL.md +117 -0
- package/.agent-src/skills/eloquent/SKILL.md +92 -0
- package/.agent-src/skills/eloquent/evals/last-run.json +99 -0
- package/.agent-src/skills/eloquent/evals/triggers.json +16 -0
- package/.agent-src/skills/estimate-ticket/SKILL.md +186 -0
- package/.agent-src/skills/estimate-ticket/evals/output-schema.yml +20 -0
- package/.agent-src/skills/estimate-ticket/evals/triggers.json +18 -0
- package/.agent-src/skills/fe-design/SKILL.md +223 -0
- package/.agent-src/skills/feature-planning/SKILL.md +226 -0
- package/.agent-src/skills/file-editor/SKILL.md +129 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/.agent-src/skills/flux/SKILL.md +64 -0
- package/.agent-src/skills/git-workflow/SKILL.md +102 -0
- package/.agent-src/skills/github-ci/SKILL.md +122 -0
- package/.agent-src/skills/grafana/SKILL.md +168 -0
- package/.agent-src/skills/guideline-writing/SKILL.md +147 -0
- package/.agent-src/skills/jira-integration/SKILL.md +182 -0
- package/.agent-src/skills/jobs-events/SKILL.md +87 -0
- package/.agent-src/skills/judge-bug-hunter/SKILL.md +157 -0
- package/.agent-src/skills/judge-code-quality/SKILL.md +158 -0
- package/.agent-src/skills/judge-security-auditor/SKILL.md +167 -0
- package/.agent-src/skills/judge-test-coverage/SKILL.md +154 -0
- package/.agent-src/skills/laravel/SKILL.md +195 -0
- package/.agent-src/skills/laravel-horizon/SKILL.md +169 -0
- package/.agent-src/skills/laravel-mail/SKILL.md +193 -0
- package/.agent-src/skills/laravel-middleware/SKILL.md +185 -0
- package/.agent-src/skills/laravel-notifications/SKILL.md +168 -0
- package/.agent-src/skills/laravel-pennant/SKILL.md +188 -0
- package/.agent-src/skills/laravel-pulse/SKILL.md +160 -0
- package/.agent-src/skills/laravel-reverb/SKILL.md +205 -0
- package/.agent-src/skills/laravel-scheduling/SKILL.md +167 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +71 -0
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +249 -0
- package/.agent-src/skills/lint-skills/SKILL.md +72 -0
- package/.agent-src/skills/livewire/SKILL.md +79 -0
- package/.agent-src/skills/logging-monitoring/SKILL.md +100 -0
- package/.agent-src/skills/mcp/SKILL.md +193 -0
- package/.agent-src/skills/merge-conflicts/SKILL.md +158 -0
- package/.agent-src/skills/migration-creator/SKILL.md +160 -0
- package/.agent-src/skills/module-management/SKILL.md +154 -0
- package/.agent-src/skills/multi-tenancy/SKILL.md +129 -0
- package/.agent-src/skills/openapi/SKILL.md +154 -0
- package/.agent-src/skills/override-management/SKILL.md +186 -0
- package/.agent-src/skills/performance/SKILL.md +69 -0
- package/.agent-src/skills/performance-analysis/SKILL.md +118 -0
- package/.agent-src/skills/pest-testing/SKILL.md +321 -0
- package/.agent-src/skills/php-coder/SKILL.md +78 -0
- package/.agent-src/skills/php-coder/evals/triggers.json +16 -0
- package/.agent-src/skills/php-debugging/SKILL.md +184 -0
- package/.agent-src/skills/php-service/SKILL.md +96 -0
- package/.agent-src/skills/playwright-testing/SKILL.md +244 -0
- package/.agent-src/skills/project-analysis-core/SKILL.md +138 -0
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +130 -0
- package/.agent-src/skills/project-analysis-laravel/SKILL.md +119 -0
- package/.agent-src/skills/project-analysis-nextjs/SKILL.md +123 -0
- package/.agent-src/skills/project-analysis-node-express/SKILL.md +111 -0
- package/.agent-src/skills/project-analysis-react/SKILL.md +119 -0
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +111 -0
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +108 -0
- package/.agent-src/skills/project-analyzer/SKILL.md +341 -0
- package/.agent-src/skills/project-docs/SKILL.md +137 -0
- package/.agent-src/skills/quality-tools/SKILL.md +411 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +187 -0
- package/.agent-src/skills/readme-writing/SKILL.md +142 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +185 -0
- package/.agent-src/skills/receiving-code-review/SKILL.md +190 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +310 -0
- package/.agent-src/skills/refine-ticket/detection-map.yml +124 -0
- package/.agent-src/skills/refine-ticket/evals/output-schema.yml +16 -0
- package/.agent-src/skills/refine-ticket/evals/triggers.json +16 -0
- package/.agent-src/skills/requesting-code-review/SKILL.md +199 -0
- package/.agent-src/skills/review-routing/SKILL.md +195 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +303 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +184 -0
- package/.agent-src/skills/rule-writing/SKILL.md +148 -0
- package/.agent-src/skills/security/SKILL.md +79 -0
- package/.agent-src/skills/security-audit/SKILL.md +123 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +170 -0
- package/.agent-src/skills/sequential-thinking/SKILL.md +158 -0
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +155 -0
- package/.agent-src/skills/skill-management/SKILL.md +121 -0
- package/.agent-src/skills/skill-reviewer/SKILL.md +218 -0
- package/.agent-src/skills/skill-writing/SKILL.md +291 -0
- package/.agent-src/skills/skill-writing/evals/triggers.json +16 -0
- package/.agent-src/skills/sql-writing/SKILL.md +74 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +190 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +244 -0
- package/.agent-src/skills/technical-specification/SKILL.md +185 -0
- package/.agent-src/skills/terraform/SKILL.md +137 -0
- package/.agent-src/skills/terragrunt/SKILL.md +217 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +252 -0
- package/.agent-src/skills/test-performance/SKILL.md +172 -0
- package/.agent-src/skills/threat-modeling/SKILL.md +189 -0
- package/.agent-src/skills/traefik/SKILL.md +319 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +179 -0
- package/.agent-src/skills/upstream-contribute/SKILL.md +255 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +148 -0
- package/.agent-src/skills/validate-feature-fit/SKILL.md +113 -0
- package/.agent-src/skills/verify-before-complete/SKILL.md +188 -0
- package/.agent-src/skills/websocket/SKILL.md +75 -0
- package/.agent-src/templates/AGENTS.md +146 -0
- package/.agent-src/templates/agent-settings.md +256 -0
- package/.agent-src/templates/agents/.gitattributes.fragment +16 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +138 -0
- package/.agent-src/templates/agents/memory/architecture-decisions.example.yml +95 -0
- package/.agent-src/templates/agents/memory/domain-invariants.example.yml +80 -0
- package/.agent-src/templates/agents/memory/historical-patterns.example.yml +82 -0
- package/.agent-src/templates/agents/memory/incident-learnings.example.yml +113 -0
- package/.agent-src/templates/agents/memory/ownership.example.yml +75 -0
- package/.agent-src/templates/agents/memory/product-rules.example.yml +87 -0
- package/.agent-src/templates/agents/proposal.example.md +143 -0
- package/.agent-src/templates/command.md +84 -0
- package/.agent-src/templates/contexts/auth-model.md +59 -0
- package/.agent-src/templates/contexts/data-sensitivity.md +60 -0
- package/.agent-src/templates/contexts/deployment-order.md +72 -0
- package/.agent-src/templates/contexts/observability.md +64 -0
- package/.agent-src/templates/contexts/tenant-boundaries.md +68 -0
- package/.agent-src/templates/contexts.md +116 -0
- package/.agent-src/templates/copilot-instructions.md +115 -0
- package/.agent-src/templates/features.md +125 -0
- package/.agent-src/templates/github-workflows/memory-hygiene.yml +133 -0
- package/.agent-src/templates/github-workflows/pr-risk-review.yml +123 -0
- package/.agent-src/templates/github-workflows/proposal-drift.yml +118 -0
- package/.agent-src/templates/overrides/command.md +24 -0
- package/.agent-src/templates/overrides/guideline.md +21 -0
- package/.agent-src/templates/overrides/rule.md +19 -0
- package/.agent-src/templates/overrides/skill.md +24 -0
- package/.agent-src/templates/overrides/template.md +21 -0
- package/.agent-src/templates/persona.md +99 -0
- package/.agent-src/templates/roadmaps.md +109 -0
- package/.agent-src/templates/scripts/README.md +195 -0
- package/.agent-src/templates/scripts/check_memory.py +283 -0
- package/.agent-src/templates/scripts/check_memory_proposal.py +180 -0
- package/.agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
- package/.agent-src/templates/scripts/implement_ticket/__init__.py +57 -0
- package/.agent-src/templates/scripts/implement_ticket/__main__.py +9 -0
- package/.agent-src/templates/scripts/implement_ticket/cli.py +171 -0
- package/.agent-src/templates/scripts/implement_ticket/delivery_state.py +130 -0
- package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +134 -0
- package/.agent-src/templates/scripts/implement_ticket/persona_policy.py +85 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +49 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/analyze.py +98 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/implement.py +145 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/memory.py +136 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/plan.py +175 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +140 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/report.py +195 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/test.py +180 -0
- package/.agent-src/templates/scripts/implement_ticket/steps/verify.py +170 -0
- package/.agent-src/templates/scripts/memory_hash.py +75 -0
- package/.agent-src/templates/scripts/memory_lookup.py +216 -0
- package/.agent-src/templates/scripts/memory_report.py +184 -0
- package/.agent-src/templates/scripts/memory_signal.py +167 -0
- package/.agent-src/templates/scripts/memory_status.py +156 -0
- package/.agent-src/templates/scripts/ownership-map.example.yml +87 -0
- package/.agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
- package/.agent-src/templates/scripts/pr_review_routing.py +340 -0
- package/.agent-src/templates/scripts/pr_risk_review.py +211 -0
- package/.agent-src/templates/skill.md +136 -0
- package/.augment-plugin/marketplace.json +32 -0
- package/.augment-plugin/plugin.json +21 -0
- package/.claude-plugin/marketplace.json +119 -0
- package/AGENTS.md +121 -0
- package/CHANGELOG.md +279 -0
- package/CONTRIBUTING.md +176 -0
- package/LICENSE +21 -0
- package/README.md +357 -0
- package/bin/install.php +38 -0
- package/composer.json +29 -0
- package/config/agent-settings.template.yml +96 -0
- package/config/profiles/balanced.ini +10 -0
- package/config/profiles/full.ini +10 -0
- package/config/profiles/minimal.ini +10 -0
- package/docs/architecture.md +144 -0
- package/docs/customization.md +88 -0
- package/docs/development.md +171 -0
- package/docs/getting-started.md +130 -0
- package/docs/github-topics.md +84 -0
- package/docs/installation.md +376 -0
- package/docs/mcp.md +133 -0
- package/docs/quality.md +98 -0
- package/docs/skills-catalog.md +136 -0
- package/docs/troubleshooting.md +167 -0
- package/llms.txt +130 -0
- package/package.json +31 -0
- package/scripts/audit_skill_descriptions.py +168 -0
- package/scripts/check_compression.py +221 -0
- package/scripts/check_memory.py +341 -0
- package/scripts/check_memory_proposal.py +180 -0
- package/scripts/check_portability.py +320 -0
- package/scripts/check_proposal.py +269 -0
- package/scripts/check_references.py +400 -0
- package/scripts/ci_summary.py +131 -0
- package/scripts/compress.py +671 -0
- package/scripts/compress.sh +18 -0
- package/scripts/first-run.sh +109 -0
- package/scripts/generate_catalog.py +116 -0
- package/scripts/install +151 -0
- package/scripts/install-hooks.sh +29 -0
- package/scripts/install.py +487 -0
- package/scripts/install.sh +637 -0
- package/scripts/install_anthropic_key.sh +101 -0
- package/scripts/inventory_frontmatter.py +164 -0
- package/scripts/lint_marketplace.py +142 -0
- package/scripts/lint_regression.py +232 -0
- package/scripts/mcp_render.py +159 -0
- package/scripts/measure_patterns.py +376 -0
- package/scripts/memory_hash.py +75 -0
- package/scripts/memory_lookup.py +441 -0
- package/scripts/memory_report.py +336 -0
- package/scripts/memory_signal.py +210 -0
- package/scripts/memory_status.py +195 -0
- package/scripts/postinstall.sh +60 -0
- package/scripts/readme_linter.py +580 -0
- package/scripts/refine_ticket_detect.py +623 -0
- package/scripts/requirements-evals.txt +7 -0
- package/scripts/runtime_dispatcher.py +265 -0
- package/scripts/runtime_handler.py +148 -0
- package/scripts/runtime_registry.py +166 -0
- package/scripts/schemas/command.schema.json +32 -0
- package/scripts/schemas/persona.schema.json +42 -0
- package/scripts/schemas/rule.schema.json +28 -0
- package/scripts/schemas/skill.schema.json +73 -0
- package/scripts/setup.sh +230 -0
- package/scripts/setup_eval_venv.sh +58 -0
- package/scripts/skill_linter.py +2175 -0
- package/scripts/skill_trigger_eval.py +651 -0
- package/scripts/tool_registry.py +146 -0
- package/scripts/tools/__init__.py +1 -0
- package/scripts/tools/adapter_errors.py +63 -0
- package/scripts/tools/base_adapter.py +91 -0
- package/scripts/tools/github_adapter.py +128 -0
- package/scripts/tools/jira_adapter.py +115 -0
- package/scripts/update_counts.py +147 -0
- package/scripts/validate_frontmatter.py +424 -0
- package/templates/consumer-settings/README.md +46 -0
- package/templates/consumer-settings/augment-settings.json +12 -0
- package/templates/consumer-settings/claude-settings.json +9 -0
- package/templates/consumer-settings/copilot-settings.json +14 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# .agent-project-settings.yml — repo-shared agent settings
|
|
2
|
+
#
|
|
3
|
+
# Committed to the repository (the opposite of `.agent-settings.yml`
|
|
4
|
+
# which is git-ignored and per-developer). This file holds decisions
|
|
5
|
+
# that belong to the **project**, not to an individual's workstation.
|
|
6
|
+
#
|
|
7
|
+
# Precedence (lowest → highest):
|
|
8
|
+
# 1. Package defaults (shipped by event4u/agent-config)
|
|
9
|
+
# 2. This file (.agent-project-settings.yml) — team defaults
|
|
10
|
+
# 3. .agent-settings.yml — developer overrides (gitignored)
|
|
11
|
+
#
|
|
12
|
+
# Any key marked `locked: true` in this file CANNOT be overridden by
|
|
13
|
+
# .agent-settings.yml. Use sparingly — locked keys reduce developer
|
|
14
|
+
# autonomy. Reserve for compliance or correctness concerns (e.g.
|
|
15
|
+
# forcing a test framework, pinning a coding style).
|
|
16
|
+
#
|
|
17
|
+
# Copy this file to `.agent-project-settings.yml` (drop the `.example`)
|
|
18
|
+
# and commit it.
|
|
19
|
+
|
|
20
|
+
schema_version: 1
|
|
21
|
+
|
|
22
|
+
# --- Project identity ---
|
|
23
|
+
project:
|
|
24
|
+
# Short slug used in agent output, prompts, and PR metadata. Keep it
|
|
25
|
+
# identical to the repo name unless there is a reason to differ.
|
|
26
|
+
slug: ""
|
|
27
|
+
|
|
28
|
+
# Human-readable name — used in generated docs and PR bodies.
|
|
29
|
+
name: ""
|
|
30
|
+
|
|
31
|
+
# Primary stack indicator — agent uses this to pick the right skills.
|
|
32
|
+
# Examples: "laravel", "nextjs", "symfony", "node-express", "react",
|
|
33
|
+
# "zend-laminas", "multi" (polyglot monorepo).
|
|
34
|
+
stack: ""
|
|
35
|
+
|
|
36
|
+
# --- Memory layer (optional) ---
|
|
37
|
+
#
|
|
38
|
+
# Opt-in signal for the @event4u/agent-memory companion package and
|
|
39
|
+
# the repo-shared curated-memory files. If omitted, memory features
|
|
40
|
+
# stay inert — no writes, no reads, no nagging.
|
|
41
|
+
memory:
|
|
42
|
+
# Enable curated memory files under `agents/memory/` as part of
|
|
43
|
+
# this repo's dogfooding of its own memory conventions. Only flip
|
|
44
|
+
# to true after you have agreed on the six content types from
|
|
45
|
+
# road-to-engineering-memory.md.
|
|
46
|
+
dogfood: false
|
|
47
|
+
|
|
48
|
+
# Path strategy for curated files. `agents` keeps them alongside
|
|
49
|
+
# roadmaps; `github` puts routing-relevant files under `.github/`.
|
|
50
|
+
# `auto` picks `github` if that directory exists, else `agents`.
|
|
51
|
+
path_strategy: auto
|
|
52
|
+
|
|
53
|
+
# Hygiene reminders — the agent nudges when entries are stale.
|
|
54
|
+
# Expiry is evaluated per type (see road-to-engineering-memory.md).
|
|
55
|
+
hygiene:
|
|
56
|
+
enabled: true
|
|
57
|
+
# Warn when `last_validated` is older than this (days). 0 = off.
|
|
58
|
+
staleness_days: 180
|
|
59
|
+
|
|
60
|
+
# --- Review routing (optional) ---
|
|
61
|
+
#
|
|
62
|
+
# Points the `review-routing` skill at the two project-local YAML
|
|
63
|
+
# files. See guidelines/agent-infra/review-routing-data-format.md
|
|
64
|
+
# for the schema.
|
|
65
|
+
review_routing:
|
|
66
|
+
# Location of ownership-map.yml and historical-bug-patterns.yml.
|
|
67
|
+
# `github` = .github/<file>.yml · `agents` = agents/<file>.yml ·
|
|
68
|
+
# `auto` = first match wins.
|
|
69
|
+
location: auto
|
|
70
|
+
|
|
71
|
+
# --- Role modes (optional) ---
|
|
72
|
+
#
|
|
73
|
+
# Default role loaded for every session in this repo. See
|
|
74
|
+
# guidelines/agent-infra/role-contracts.md for the six modes.
|
|
75
|
+
# Leave empty to fall back to inferred mode switching.
|
|
76
|
+
roles:
|
|
77
|
+
# One of: developer, reviewer, tester, po, incident, planner.
|
|
78
|
+
default: ""
|
|
79
|
+
|
|
80
|
+
# If set, the agent refuses work outside the default contract
|
|
81
|
+
# until the user explicitly switches modes with `/mode <name>`.
|
|
82
|
+
locked: false
|
|
83
|
+
|
|
84
|
+
# --- Personas (optional) ---
|
|
85
|
+
#
|
|
86
|
+
# Personas are reusable review lenses (see .augment/personas/README.md).
|
|
87
|
+
# Skills cite them in frontmatter (`personas: [id]`). This block lets
|
|
88
|
+
# the project decide the default cast used by multi-lens skills without
|
|
89
|
+
# editing each skill. A developer's .agent-settings.yml can override
|
|
90
|
+
# or narrow the selection unless the key is listed under `locked_keys`.
|
|
91
|
+
personas:
|
|
92
|
+
# Core cast always loaded by multi-lens skills when `personas:` is
|
|
93
|
+
# omitted from the skill's frontmatter. Drop an id to remove it from
|
|
94
|
+
# the default cast repo-wide. Known Core ids: developer,
|
|
95
|
+
# senior-engineer, product-owner, stakeholder, critical-challenger,
|
|
96
|
+
# ai-agent.
|
|
97
|
+
default: [developer, senior-engineer, product-owner, stakeholder, critical-challenger, ai-agent]
|
|
98
|
+
|
|
99
|
+
specialists:
|
|
100
|
+
# Specialist personas auto-included on every multi-lens run. `qa`
|
|
101
|
+
# is the v1 specialist; more land in v1.1+ (security, performance).
|
|
102
|
+
# Leave empty to require explicit --personas=+<id> opt-in.
|
|
103
|
+
auto_include: [qa]
|
|
104
|
+
|
|
105
|
+
# --- Quality pipeline (optional) ---
|
|
106
|
+
#
|
|
107
|
+
# Per-language gate tools the `quality-fix` command invokes. Empty
|
|
108
|
+
# list = skip the language. Agent will still auto-detect; these
|
|
109
|
+
# values are advisory.
|
|
110
|
+
quality:
|
|
111
|
+
php:
|
|
112
|
+
# Tools to run in order. Known: phpstan, rector, ecs, pint.
|
|
113
|
+
tools: [phpstan, rector, ecs]
|
|
114
|
+
js:
|
|
115
|
+
# Known: eslint, prettier, tsc, biome.
|
|
116
|
+
tools: [eslint, prettier, tsc]
|
|
117
|
+
|
|
118
|
+
# --- Locked keys (override this file only; never locks .agent-settings.yml) ---
|
|
119
|
+
#
|
|
120
|
+
# List keys from this file whose values cannot be overridden by a
|
|
121
|
+
# developer's .agent-settings.yml. Dot-notation. Example:
|
|
122
|
+
# locked_keys:
|
|
123
|
+
# - project.stack
|
|
124
|
+
# - quality.php.tools
|
|
125
|
+
locked_keys: []
|
|
126
|
+
|
|
127
|
+
# --- Links to curated data (read-only references) ---
|
|
128
|
+
#
|
|
129
|
+
# Paths the agent consults read-only during work. Curated memory
|
|
130
|
+
# files live here when memory.dogfood is true. These paths are for
|
|
131
|
+
# reference only — no enforcement is done from this file.
|
|
132
|
+
references:
|
|
133
|
+
architecture_decisions: agents/memory/architecture-decisions/
|
|
134
|
+
domain_invariants: agents/memory/domain-invariants/
|
|
135
|
+
incident_learnings: agents/memory/incident-learnings/
|
|
136
|
+
product_rules: agents/memory/product-rules/
|
|
137
|
+
ownership_map: "" # auto-resolved by review-routing
|
|
138
|
+
historical_bug_patterns: "" # auto-resolved by review-routing
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# architecture-decisions.yml — indexed ADRs with path constraints
|
|
2
|
+
#
|
|
3
|
+
# Writer: decision author at ADR time
|
|
4
|
+
# Reader: `feature-plan`, `api-design`, `blast-radius-analyzer`
|
|
5
|
+
# (consulted BEFORE proposing structural changes)
|
|
6
|
+
# Expiry: marked `deprecated` on reversal; NEVER deleted — history
|
|
7
|
+
# is the value. Supersession via `superseded_by`.
|
|
8
|
+
# Location: agents/memory/architecture-decisions/<hash>.yml
|
|
9
|
+
# OR agents/memory/architecture-decisions.yml (single-file)
|
|
10
|
+
#
|
|
11
|
+
# The YAML is an **index**, not the decision doc. Each entry points
|
|
12
|
+
# to a long-form ADR (Markdown, Notion, Confluence — wherever your
|
|
13
|
+
# team writes them) and captures the machine-readable metadata an
|
|
14
|
+
# agent needs: paths constrained, alternatives rejected, trade-offs.
|
|
15
|
+
|
|
16
|
+
version: 1
|
|
17
|
+
|
|
18
|
+
entries:
|
|
19
|
+
- id: 0007-tenant-boundaries
|
|
20
|
+
status: active # active | deprecated | archived
|
|
21
|
+
confidence: high
|
|
22
|
+
source:
|
|
23
|
+
- docs/adr/0007-tenant-boundaries.md
|
|
24
|
+
- https://github.com/example/repo/pull/842
|
|
25
|
+
owner: platform-team
|
|
26
|
+
last_validated: 2026-04-10
|
|
27
|
+
review_after_days: 365
|
|
28
|
+
|
|
29
|
+
# --- decision body ---
|
|
30
|
+
title: Tenant boundaries enforced by global scopes + dedicated DB
|
|
31
|
+
date: 2025-11-18
|
|
32
|
+
context: >
|
|
33
|
+
Multi-tenant SaaS; legal requirement to isolate tenant data at
|
|
34
|
+
rest. Prior approach (column-based scoping) leaked in three
|
|
35
|
+
incidents over six months.
|
|
36
|
+
decision: >
|
|
37
|
+
Adopt per-tenant database connections with a `TenantScope`
|
|
38
|
+
global scope on every tenant-owned Eloquent model. Raw DB
|
|
39
|
+
access is forbidden outside migrations.
|
|
40
|
+
alternatives_rejected:
|
|
41
|
+
- id: column-scoping-only
|
|
42
|
+
reason: Column scoping proven unsafe under complex joins.
|
|
43
|
+
- id: schema-per-tenant
|
|
44
|
+
reason: Operational cost of N schemas exceeded team capacity.
|
|
45
|
+
trade_offs:
|
|
46
|
+
- Higher connection pool usage — mitigated by connection reuse.
|
|
47
|
+
- Slower local dev onboarding — mitigated by seeder changes.
|
|
48
|
+
paths: # globs this ADR constrains
|
|
49
|
+
- app/Models/Tenant*/**
|
|
50
|
+
- config/database.php
|
|
51
|
+
- database/migrations/*_tenant_*.php
|
|
52
|
+
superseded_by: "" # id of replacement ADR
|
|
53
|
+
|
|
54
|
+
- id: 0012-money-representation
|
|
55
|
+
status: active
|
|
56
|
+
confidence: high
|
|
57
|
+
source:
|
|
58
|
+
- docs/adr/0012-money-representation.md
|
|
59
|
+
owner: finance-team
|
|
60
|
+
last_validated: 2026-03-20
|
|
61
|
+
review_after_days: 730
|
|
62
|
+
|
|
63
|
+
title: Money represented as integer cents end-to-end
|
|
64
|
+
date: 2026-01-05
|
|
65
|
+
context: >
|
|
66
|
+
Float precision errors in payment reconciliation caused
|
|
67
|
+
two customer-facing discrepancies.
|
|
68
|
+
decision: >
|
|
69
|
+
All monetary values are integer cents (smallest currency unit).
|
|
70
|
+
Floats appear only inside the formatter boundary, never in
|
|
71
|
+
storage, transport, or business logic.
|
|
72
|
+
alternatives_rejected:
|
|
73
|
+
- id: decimal-type
|
|
74
|
+
reason: DB decimal support uneven across MariaDB / SQLite
|
|
75
|
+
test environments; integer is unambiguous.
|
|
76
|
+
trade_offs:
|
|
77
|
+
- Every new developer must learn the convention — mitigated by
|
|
78
|
+
a dedicated `Money` value object with a strict type.
|
|
79
|
+
paths:
|
|
80
|
+
- app/Models/Invoice*.php
|
|
81
|
+
- app/Models/Payment*.php
|
|
82
|
+
- app/Services/Billing/**
|
|
83
|
+
superseded_by: ""
|
|
84
|
+
|
|
85
|
+
# --- How to add an entry ---
|
|
86
|
+
#
|
|
87
|
+
# 1. Write the ADR as a Markdown doc FIRST. This index is a pointer,
|
|
88
|
+
# not a replacement.
|
|
89
|
+
# 2. Link the ADR doc under `source`. At least one link is mandatory.
|
|
90
|
+
# 3. List `paths` as globs the agent can match. Be generous — it is
|
|
91
|
+
# better to trigger the ADR on too many paths than too few.
|
|
92
|
+
# 4. Fill `alternatives_rejected` even when it feels obvious. The
|
|
93
|
+
# agent's main job here is to stop re-litigating decisions.
|
|
94
|
+
# 5. On reversal: keep the old entry, set `status: deprecated`, add
|
|
95
|
+
# the new entry with `superseded_by` pointing back. History stays.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# domain-invariants.yml — non-negotiable rules the system must uphold
|
|
2
|
+
#
|
|
3
|
+
# Writer: senior engineer / architect
|
|
4
|
+
# Reader: `developer-like-execution`, `php-coder`, `laravel` skills
|
|
5
|
+
# (consulted BEFORE writing code in matching paths)
|
|
6
|
+
# Expiry: reviewed at every major version bump
|
|
7
|
+
# Location: agents/memory/domain-invariants/<hash>.yml (content-addressed)
|
|
8
|
+
# OR agents/memory/domain-invariants.yml (single-file mode)
|
|
9
|
+
#
|
|
10
|
+
# See guidelines/agent-infra/role-contracts.md and
|
|
11
|
+
# road-to-engineering-memory.md for the full contract.
|
|
12
|
+
|
|
13
|
+
version: 1
|
|
14
|
+
|
|
15
|
+
# Each entry is an invariant the code MUST uphold. Agents read them
|
|
16
|
+
# before editing matched paths and call them out in their output.
|
|
17
|
+
entries:
|
|
18
|
+
- id: tenant-isolation
|
|
19
|
+
status: active # active | deprecated | archived
|
|
20
|
+
confidence: high # low | medium | high
|
|
21
|
+
source: # at least one reference
|
|
22
|
+
- https://github.com/example/repo/pull/1234
|
|
23
|
+
- adr://0007-tenant-boundaries
|
|
24
|
+
owner: platform-team
|
|
25
|
+
last_validated: 2026-04-01
|
|
26
|
+
review_after_days: 365
|
|
27
|
+
|
|
28
|
+
# --- invariant body ---
|
|
29
|
+
rule: >
|
|
30
|
+
Tenant IDs must never cross-reference. A query in tenant A
|
|
31
|
+
must never return a row belonging to tenant B, regardless of
|
|
32
|
+
join path.
|
|
33
|
+
paths: # glob patterns the rule applies to
|
|
34
|
+
- app/Models/**
|
|
35
|
+
- app/Http/Controllers/Tenant*/**
|
|
36
|
+
- app/Services/Tenant*/**
|
|
37
|
+
enforcement: # how violation is detected
|
|
38
|
+
- test: tests/Feature/TenantIsolationTest.php
|
|
39
|
+
- policy: app/Policies/TenantPolicy.php
|
|
40
|
+
guardrail: >
|
|
41
|
+
Every Eloquent query on tenant-scoped models must go through
|
|
42
|
+
the `TenantScope` global scope. Raw DB::query() calls touching
|
|
43
|
+
tenant tables are forbidden outside migrations.
|
|
44
|
+
|
|
45
|
+
- id: money-as-integer-cents
|
|
46
|
+
status: active
|
|
47
|
+
confidence: high
|
|
48
|
+
source:
|
|
49
|
+
- adr://0012-money-representation
|
|
50
|
+
owner: finance-team
|
|
51
|
+
last_validated: 2026-03-20
|
|
52
|
+
review_after_days: 730
|
|
53
|
+
|
|
54
|
+
rule: >
|
|
55
|
+
All monetary amounts are stored and passed around as integer
|
|
56
|
+
cents (or the smallest unit of the currency). Float / decimal
|
|
57
|
+
representations are forbidden at every layer below the
|
|
58
|
+
formatter.
|
|
59
|
+
paths:
|
|
60
|
+
- app/Models/Invoice*.php
|
|
61
|
+
- app/Models/Payment*.php
|
|
62
|
+
- app/Services/Billing/**
|
|
63
|
+
enforcement:
|
|
64
|
+
- static_analysis: phpstan level 9 on Billing namespace
|
|
65
|
+
- test: tests/Unit/MoneyTest.php
|
|
66
|
+
guardrail: >
|
|
67
|
+
Use the `Money` value object for all monetary values. Never
|
|
68
|
+
cast a float to a model attribute. Formatter is the ONLY
|
|
69
|
+
boundary where floats appear, and only for display.
|
|
70
|
+
|
|
71
|
+
# --- How to add an entry ---
|
|
72
|
+
#
|
|
73
|
+
# 1. Pick a stable `id` (kebab-case, unique within this file).
|
|
74
|
+
# 2. Reference at least one source (PR, ADR, spec link).
|
|
75
|
+
# 3. Pick a confidence honestly — if you are writing this from a
|
|
76
|
+
# hunch rather than evidence, start with `medium`.
|
|
77
|
+
# 4. List concrete `paths` — globs the agent can match against.
|
|
78
|
+
# 5. Describe the `guardrail` as a **mechanism**, not a wish. "Use
|
|
79
|
+
# X", "validate with Y" — not "be careful with Z".
|
|
80
|
+
# 6. Run `task check-memory` before committing.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# historical-patterns.yml — recurring bug shapes and near-misses tied
|
|
2
|
+
# to specific files or modules
|
|
3
|
+
#
|
|
4
|
+
# Writer: engineers after incidents, code reviewers, bug-fix command
|
|
5
|
+
# Reader: `judge-bug-hunter`, `review-routing`, `blast-radius-analyzer`
|
|
6
|
+
# (consulted BEFORE editing matched paths)
|
|
7
|
+
# Expiry: reviewed after each incident against the matched module
|
|
8
|
+
# Location: agents/memory/historical-patterns/<hash>.yml (content-addressed)
|
|
9
|
+
# OR agents/memory/historical-patterns.yml (single-file mode)
|
|
10
|
+
#
|
|
11
|
+
# See guidelines/agent-infra/engineering-memory-data-format.md for the
|
|
12
|
+
# full schema.
|
|
13
|
+
|
|
14
|
+
version: 1
|
|
15
|
+
|
|
16
|
+
entries:
|
|
17
|
+
- id: checkout-null-currency
|
|
18
|
+
status: active
|
|
19
|
+
confidence: high
|
|
20
|
+
source:
|
|
21
|
+
- https://github.com/example/repo/issues/8421
|
|
22
|
+
- https://sentry.example.com/events/abc123
|
|
23
|
+
owner: billing-team
|
|
24
|
+
last_validated: 2026-03-15
|
|
25
|
+
review_after_days: 180
|
|
26
|
+
|
|
27
|
+
# --- historical pattern body ---
|
|
28
|
+
symptom: >
|
|
29
|
+
`TypeError: Cannot read property 'code' of null` when a guest
|
|
30
|
+
checkout hits the price formatter without a resolved currency.
|
|
31
|
+
paths:
|
|
32
|
+
- app/Services/Billing/PriceFormatter.php
|
|
33
|
+
- app/Http/Controllers/Billing/Checkout.php
|
|
34
|
+
trigger_conditions:
|
|
35
|
+
- "Anonymous user (no session currency)"
|
|
36
|
+
- "Product priced only in a non-default currency"
|
|
37
|
+
guardrail: >
|
|
38
|
+
Any code reading `$order->currency` must resolve via
|
|
39
|
+
`CurrencyResolver::forOrder($order)`, which falls back to the
|
|
40
|
+
tenant default. Never dereference `$order->currency->code`
|
|
41
|
+
directly.
|
|
42
|
+
regression_test: tests/Feature/Billing/GuestCheckoutTest.php
|
|
43
|
+
first_seen: 2025-11-03
|
|
44
|
+
last_seen: 2026-02-18
|
|
45
|
+
recurrence_count: 4
|
|
46
|
+
|
|
47
|
+
- id: queue-retry-log-noise
|
|
48
|
+
status: active
|
|
49
|
+
confidence: medium
|
|
50
|
+
source:
|
|
51
|
+
- https://github.com/example/repo/pull/9010
|
|
52
|
+
owner: platform-team
|
|
53
|
+
last_validated: 2026-04-10
|
|
54
|
+
review_after_days: 90
|
|
55
|
+
|
|
56
|
+
symptom: >
|
|
57
|
+
Retryable jobs double-log the same exception on every attempt,
|
|
58
|
+
inflating the Sentry error budget and masking real regressions.
|
|
59
|
+
paths:
|
|
60
|
+
- app/Jobs/**
|
|
61
|
+
trigger_conditions:
|
|
62
|
+
- "Job implements ShouldQueue and throws a typed exception"
|
|
63
|
+
- "retries() > 1 and no unique_for key set"
|
|
64
|
+
guardrail: >
|
|
65
|
+
Use `SilentRetry` trait or explicitly set `$this->dontReport = true`
|
|
66
|
+
on the first N-1 retries. Final-attempt failure is the only one
|
|
67
|
+
that calls `report()`.
|
|
68
|
+
regression_test: tests/Feature/Queue/RetryReportingTest.php
|
|
69
|
+
first_seen: 2026-01-20
|
|
70
|
+
last_seen: 2026-04-05
|
|
71
|
+
recurrence_count: 7
|
|
72
|
+
|
|
73
|
+
# --- How to add an entry ---
|
|
74
|
+
#
|
|
75
|
+
# 1. Pick a stable `id` that names the pattern, not the fix.
|
|
76
|
+
# 2. Cite the first bug report and the most recent recurrence.
|
|
77
|
+
# 3. `trigger_conditions` are the minimal inputs that reproduce.
|
|
78
|
+
# 4. `guardrail` is a mechanism, not a wish. "Go through X" — not
|
|
79
|
+
# "be careful with Y".
|
|
80
|
+
# 5. Always link a `regression_test` — the pattern earns its entry
|
|
81
|
+
# only once a test exists that would have caught it.
|
|
82
|
+
# 6. Run `task check-memory` before committing.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# incident-learnings.yml — pattern + consequence + guardrail
|
|
2
|
+
#
|
|
3
|
+
# Writer: incident commander after resolution
|
|
4
|
+
# Reader: `Incident` role mode, `bug-investigate`, `bug-analyzer`
|
|
5
|
+
# Expiry: archived when the underlying class is structurally
|
|
6
|
+
# eliminated (guardrail landed AND verified in prod)
|
|
7
|
+
# Location: agents/memory/incident-learnings/<hash>.yml
|
|
8
|
+
# OR agents/memory/incident-learnings.yml (single-file)
|
|
9
|
+
#
|
|
10
|
+
# REDACTION IS MANDATORY — see road-to-engineering-memory.md.
|
|
11
|
+
# Every entry is a PATTERN + CONSEQUENCE + GUARDRAIL.
|
|
12
|
+
# Every entry that contains a customer name, internal URL, PII, or
|
|
13
|
+
# secret is rejected by `scripts/check_memory.py`. No opt-out.
|
|
14
|
+
#
|
|
15
|
+
# BAD entry (auto-rejected):
|
|
16
|
+
# "On 2026-03-14 customer ACME hit a rate limit and Redis died."
|
|
17
|
+
# GOOD entry:
|
|
18
|
+
# "When rate limit X is crossed on path Y, queue worker Z starves
|
|
19
|
+
# the primary DB pool. Guardrail: circuit-break at 80% of X."
|
|
20
|
+
|
|
21
|
+
version: 1
|
|
22
|
+
|
|
23
|
+
entries:
|
|
24
|
+
- id: queue-worker-db-pool-starvation
|
|
25
|
+
status: active # active | deprecated | archived
|
|
26
|
+
confidence: high
|
|
27
|
+
source:
|
|
28
|
+
- https://github.com/example/repo/pull/2104 # guardrail PR
|
|
29
|
+
- https://github.com/example/repo/issues/2098 # incident ticket
|
|
30
|
+
owner: platform-team
|
|
31
|
+
last_validated: 2026-04-15
|
|
32
|
+
review_after_days: 180
|
|
33
|
+
severity: high # low | medium | high | critical
|
|
34
|
+
|
|
35
|
+
# --- pattern ---
|
|
36
|
+
pattern: >
|
|
37
|
+
When sustained throughput on queue `invoices` exceeds the
|
|
38
|
+
configured rate limit on path `/api/invoices/*`, the queue
|
|
39
|
+
worker retries saturate the primary DB connection pool and
|
|
40
|
+
starve synchronous requests.
|
|
41
|
+
trigger_conditions:
|
|
42
|
+
- sustained_rps_gt: 150
|
|
43
|
+
- path_prefix: /api/invoices/
|
|
44
|
+
- worker_queue: invoices
|
|
45
|
+
|
|
46
|
+
# --- consequence (no customer specifics) ---
|
|
47
|
+
consequence: >
|
|
48
|
+
Synchronous requests on unrelated endpoints fail with 500 and
|
|
49
|
+
connection-timeout errors. User-facing latency spikes to ≥ 3s
|
|
50
|
+
p99 within 60 seconds.
|
|
51
|
+
|
|
52
|
+
# --- guardrail (mechanism, not wish) ---
|
|
53
|
+
guardrail: >
|
|
54
|
+
Circuit-break the queue worker at 80% of the rate limit.
|
|
55
|
+
Emit a sustained-latency alert on the `invoices` queue.
|
|
56
|
+
Connection pool sized to (worker_count × 2 + sync_workers).
|
|
57
|
+
enforcement:
|
|
58
|
+
- test: tests/Feature/QueueBackpressureTest.php
|
|
59
|
+
- alert: grafana/alerts/invoices-queue-latency.yml
|
|
60
|
+
- config: config/horizon.php — balance=simple, max_processes=...
|
|
61
|
+
|
|
62
|
+
paths:
|
|
63
|
+
- app/Jobs/ProcessInvoice.php
|
|
64
|
+
- app/Http/Controllers/Api/InvoiceController.php
|
|
65
|
+
- config/horizon.php
|
|
66
|
+
|
|
67
|
+
- id: webhook-signature-verify-timing
|
|
68
|
+
status: active
|
|
69
|
+
confidence: medium
|
|
70
|
+
source:
|
|
71
|
+
- https://github.com/example/repo/pull/1876
|
|
72
|
+
owner: integrations-team
|
|
73
|
+
last_validated: 2026-02-28
|
|
74
|
+
review_after_days: 90
|
|
75
|
+
severity: medium
|
|
76
|
+
|
|
77
|
+
pattern: >
|
|
78
|
+
Webhook signature verification that concatenates body parts
|
|
79
|
+
before hashing is vulnerable to timing-based side channels
|
|
80
|
+
on high-volume endpoints when response latency leaks.
|
|
81
|
+
trigger_conditions:
|
|
82
|
+
- endpoint_type: webhook
|
|
83
|
+
- verify_pattern: string-concat-then-hash
|
|
84
|
+
|
|
85
|
+
consequence: >
|
|
86
|
+
Attackers with sustained probe access can infer signature
|
|
87
|
+
prefix bytes from response-time deltas at the millisecond
|
|
88
|
+
granularity over minutes to hours.
|
|
89
|
+
|
|
90
|
+
guardrail: >
|
|
91
|
+
Always use `hash_equals()` for signature comparison. Compute
|
|
92
|
+
the full HMAC on the raw request body, never on a
|
|
93
|
+
concatenated view. Pad response time to the worst-case branch.
|
|
94
|
+
enforcement:
|
|
95
|
+
- test: tests/Security/WebhookVerifyTest.php
|
|
96
|
+
- static_analysis: phpstan rule forbids `===` on webhook sigs
|
|
97
|
+
paths:
|
|
98
|
+
- app/Http/Middleware/VerifyWebhookSignature.php
|
|
99
|
+
- app/Services/Webhook/**
|
|
100
|
+
|
|
101
|
+
# --- How to add an entry ---
|
|
102
|
+
#
|
|
103
|
+
# 1. Wait until the incident is RESOLVED. Draft entries from open
|
|
104
|
+
# incidents leak half-baked hypotheses.
|
|
105
|
+
# 2. Distil to pattern + consequence + guardrail. If the entry reads
|
|
106
|
+
# like a post-mortem summary, it is too specific.
|
|
107
|
+
# 3. Scrub — no customer names, no ticket IDs from the incident, no
|
|
108
|
+
# internal URLs, no timestamps with identifying precision. The
|
|
109
|
+
# check rejects these; do not fight it.
|
|
110
|
+
# 4. Link the guardrail PR as a source — an entry without a
|
|
111
|
+
# guardrail is not a learning, it is a confession.
|
|
112
|
+
# 5. Set `review_after_days` aggressively (90–180). Entries that
|
|
113
|
+
# outlive their guardrail are more dangerous than missing.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# ownership.yml — who owns what in the codebase
|
|
2
|
+
#
|
|
3
|
+
# Writer: tech lead / team maintainer
|
|
4
|
+
# Reader: `review-routing`, `requesting-code-review`, blast-radius
|
|
5
|
+
# analysis (consulted to pick reviewers and CODEOWNERS hints)
|
|
6
|
+
# Expiry: reviewed quarterly or after team reorganizations
|
|
7
|
+
# Location: agents/memory/ownership/<hash>.yml (content-addressed)
|
|
8
|
+
# OR agents/memory/ownership.yml (single-file mode)
|
|
9
|
+
#
|
|
10
|
+
# See guidelines/agent-infra/review-routing-data-format.md for the
|
|
11
|
+
# sibling review-router schema; this file is the authoritative source
|
|
12
|
+
# for WHO, not HOW.
|
|
13
|
+
|
|
14
|
+
version: 1
|
|
15
|
+
|
|
16
|
+
entries:
|
|
17
|
+
- id: billing-module
|
|
18
|
+
status: active
|
|
19
|
+
confidence: high
|
|
20
|
+
source:
|
|
21
|
+
- https://github.com/example/repo/blob/main/CODEOWNERS
|
|
22
|
+
- adr://0003-team-boundaries
|
|
23
|
+
owner: billing-team
|
|
24
|
+
last_validated: 2026-04-01
|
|
25
|
+
review_after_days: 180
|
|
26
|
+
|
|
27
|
+
# --- ownership body ---
|
|
28
|
+
paths:
|
|
29
|
+
- app/Services/Billing/**
|
|
30
|
+
- app/Http/Controllers/Billing/**
|
|
31
|
+
- app/Models/{Invoice,Payment,Subscription}*.php
|
|
32
|
+
primary_reviewer: "@alice-lead"
|
|
33
|
+
secondary_reviewers:
|
|
34
|
+
- "@bob-senior"
|
|
35
|
+
- "@carol-eng"
|
|
36
|
+
escalation: "@head-of-platform"
|
|
37
|
+
slack_channel: "#team-billing"
|
|
38
|
+
rotation_policy: >
|
|
39
|
+
Any PR touching `app/Services/Billing/**` must have at least one
|
|
40
|
+
review from `@alice-lead` or `@bob-senior`. Vacation coverage
|
|
41
|
+
documented in the team runbook.
|
|
42
|
+
|
|
43
|
+
- id: infra-terraform
|
|
44
|
+
status: active
|
|
45
|
+
confidence: high
|
|
46
|
+
source:
|
|
47
|
+
- https://github.com/example/repo/blob/main/CODEOWNERS
|
|
48
|
+
owner: platform-team
|
|
49
|
+
last_validated: 2026-03-10
|
|
50
|
+
review_after_days: 365
|
|
51
|
+
|
|
52
|
+
paths:
|
|
53
|
+
- terraform/**
|
|
54
|
+
- .github/workflows/deploy*.yml
|
|
55
|
+
- docker-compose*.yml
|
|
56
|
+
primary_reviewer: "@dan-infra"
|
|
57
|
+
secondary_reviewers:
|
|
58
|
+
- "@erin-sre"
|
|
59
|
+
escalation: "@head-of-platform"
|
|
60
|
+
slack_channel: "#team-platform"
|
|
61
|
+
rotation_policy: >
|
|
62
|
+
Infra changes require two platform-team reviews in business
|
|
63
|
+
hours. After-hours hotfixes follow the break-glass policy in
|
|
64
|
+
`agents/contexts/deployment-order.md`.
|
|
65
|
+
|
|
66
|
+
# --- How to add an entry ---
|
|
67
|
+
#
|
|
68
|
+
# 1. `id` is the module/domain name, not a person's handle.
|
|
69
|
+
# 2. `paths` are globs the agent uses to pick reviewers for an
|
|
70
|
+
# incoming diff. Keep them tight — avoid `app/**` catch-alls.
|
|
71
|
+
# 3. `primary_reviewer` is singular; `secondary_reviewers` is the
|
|
72
|
+
# fallback pool.
|
|
73
|
+
# 4. `escalation` routes urgent cross-cutting issues; the agent
|
|
74
|
+
# surfaces it when a PR sits idle past the team's SLA.
|
|
75
|
+
# 5. Run `task check-memory` before committing.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# product-rules.yml — product-side invariants code must honour
|
|
2
|
+
#
|
|
3
|
+
# Writer: PO or tech lead after product decision
|
|
4
|
+
# Reader: `PO` role mode, `validate-feature-fit`, `laravel-validation`
|
|
5
|
+
# (consulted BEFORE proposing feature changes)
|
|
6
|
+
# Expiry: version-stamped; old versions archived on rule change
|
|
7
|
+
# Location: agents/memory/product-rules/<hash>.yml
|
|
8
|
+
# OR agents/memory/product-rules.yml (single-file)
|
|
9
|
+
#
|
|
10
|
+
# Bridges PO intent and developer execution. An entry here exists
|
|
11
|
+
# because the agent MUST enforce this rule in validation, gating,
|
|
12
|
+
# or feature-fit checks — it is not a feature wishlist.
|
|
13
|
+
#
|
|
14
|
+
# REDACTION IS MANDATORY — see road-to-engineering-memory.md.
|
|
15
|
+
# No customer names, no pricing-with-customer-discount, no PII.
|
|
16
|
+
|
|
17
|
+
version: 1
|
|
18
|
+
|
|
19
|
+
entries:
|
|
20
|
+
- id: free-plan-no-export
|
|
21
|
+
status: active # active | deprecated | archived
|
|
22
|
+
confidence: high
|
|
23
|
+
source:
|
|
24
|
+
- https://example.com/product/pricing-tiers # public doc
|
|
25
|
+
- https://github.com/example/repo/pull/1503 # enforcement PR
|
|
26
|
+
owner: product-team
|
|
27
|
+
last_validated: 2026-04-05
|
|
28
|
+
review_after_days: 180
|
|
29
|
+
version: "2.0"
|
|
30
|
+
|
|
31
|
+
# --- rule body ---
|
|
32
|
+
rule: >
|
|
33
|
+
Users on the `free` plan cannot trigger data exports (CSV,
|
|
34
|
+
JSON, XLSX) exceeding 100 rows. Exports above the threshold
|
|
35
|
+
are reserved for `pro` and `enterprise` plans.
|
|
36
|
+
applies_to:
|
|
37
|
+
endpoints:
|
|
38
|
+
- POST /api/exports
|
|
39
|
+
- GET /api/exports/{id}/download
|
|
40
|
+
plan_tiers: [free]
|
|
41
|
+
enforcement:
|
|
42
|
+
- policy: app/Policies/ExportPolicy.php
|
|
43
|
+
- feature_gate: "plan_tiers in FeatureGate service"
|
|
44
|
+
- test: tests/Feature/FreePlanExportLimitTest.php
|
|
45
|
+
error_contract:
|
|
46
|
+
http_status: 403
|
|
47
|
+
error_code: EXPORT_PLAN_LIMIT
|
|
48
|
+
user_message: Upgrade to export more than 100 rows.
|
|
49
|
+
|
|
50
|
+
- id: weekend-sla-tier-b
|
|
51
|
+
status: active
|
|
52
|
+
confidence: medium
|
|
53
|
+
source:
|
|
54
|
+
- https://example.com/legal/sla.pdf # public SLA doc
|
|
55
|
+
- adr://0019-sla-tier-mapping
|
|
56
|
+
owner: customer-success-team
|
|
57
|
+
last_validated: 2026-03-12
|
|
58
|
+
review_after_days: 90
|
|
59
|
+
version: "1.3"
|
|
60
|
+
|
|
61
|
+
rule: >
|
|
62
|
+
Support tickets opened between 18:00 Friday and 08:00 Monday
|
|
63
|
+
in the customer's timezone fall under SLA tier B response
|
|
64
|
+
time (4h first response) instead of tier A (1h).
|
|
65
|
+
applies_to:
|
|
66
|
+
systems: [support-queue, sla-calculator]
|
|
67
|
+
timezone_scope: customer-local
|
|
68
|
+
enforcement:
|
|
69
|
+
- service: app/Services/SLA/ResponseTimeCalculator.php
|
|
70
|
+
- test: tests/Unit/SlaWeekendTest.php
|
|
71
|
+
- config: config/sla.yml
|
|
72
|
+
error_contract: {} # no user-facing error; SLA
|
|
73
|
+
# is applied silently
|
|
74
|
+
|
|
75
|
+
# --- How to add an entry ---
|
|
76
|
+
#
|
|
77
|
+
# 1. A product decision was made AND signed off. Pending proposals
|
|
78
|
+
# do not belong here.
|
|
79
|
+
# 2. The rule is enforceable — every entry must name at least one
|
|
80
|
+
# enforcement point (policy, feature gate, test, service).
|
|
81
|
+
# 3. Bump `version` whenever the rule semantics change. Old
|
|
82
|
+
# versions get `status: archived` and stay for audit.
|
|
83
|
+
# 4. Link both the PRODUCT-side doc (pricing page, SLA PDF, landing
|
|
84
|
+
# page) AND the code-side enforcement PR.
|
|
85
|
+
# 5. Keep `error_contract` precise — agents generate error messages
|
|
86
|
+
# from it. An empty contract (`{}`) means "no user error", not
|
|
87
|
+
# "to be decided later".
|