@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,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: systematic-debugging
|
|
3
|
+
description: "Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# systematic-debugging
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
* Test fails and failure is not self-explanatory
|
|
12
|
+
* Bug reported (Jira, Sentry, user message), root cause not obvious
|
|
13
|
+
* Production or staging shows unexpected behavior
|
|
14
|
+
* Code behaves differently than the developer expected
|
|
15
|
+
* A previous fix did not resolve the issue or introduced a new one
|
|
16
|
+
* You catch yourself thinking "let me just try changing X"
|
|
17
|
+
|
|
18
|
+
Do NOT use when:
|
|
19
|
+
|
|
20
|
+
* Failure message names the fix (typo, missing import, obvious off-by-one) — fix it
|
|
21
|
+
* Pure style / formatting / lint issues
|
|
22
|
+
* Documentation-only questions
|
|
23
|
+
|
|
24
|
+
## Goal
|
|
25
|
+
|
|
26
|
+
Find the **root cause** before changing any code. A symptom fix papering
|
|
27
|
+
over an unknown cause is a regression waiting to happen.
|
|
28
|
+
|
|
29
|
+
## The Iron Law
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
NO FIX WITHOUT ROOT CAUSE. NO ROOT CAUSE WITHOUT EVIDENCE.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
"I think it's probably X" is not evidence. A log line, a stack trace, a
|
|
36
|
+
diff, a reproduced failure — those are evidence.
|
|
37
|
+
|
|
38
|
+
## Procedure
|
|
39
|
+
|
|
40
|
+
Complete each phase before the next. Skipping ahead is the single
|
|
41
|
+
biggest cause of wasted debug time.
|
|
42
|
+
|
|
43
|
+
### Phase 1 — Reproduce
|
|
44
|
+
|
|
45
|
+
Goal: make the failure happen on demand, smallest possible setup.
|
|
46
|
+
|
|
47
|
+
1. Read the error message, stack trace, and logs **in full**. Note exact
|
|
48
|
+
file, line, and the chain of calls above it.
|
|
49
|
+
2. Identify the minimum input, state, or action sequence triggering the
|
|
50
|
+
failure. Intermittent → gather more data before guessing.
|
|
51
|
+
3. Capture the exact reproduction as a command or a test. Prefer a
|
|
52
|
+
failing test (see [`test-driven-development`](../test-driven-development/SKILL.md))
|
|
53
|
+
— turns Phase 4 into a verified fix.
|
|
54
|
+
|
|
55
|
+
Cannot reproduce? You do not yet understand the bug. Stop. Add logging,
|
|
56
|
+
re-run, collect more evidence.
|
|
57
|
+
|
|
58
|
+
### Phase 2 — Isolate
|
|
59
|
+
|
|
60
|
+
Goal: locate the failure in a single component, layer, or call site.
|
|
61
|
+
|
|
62
|
+
1. Bisect the surface area. Smallest code path that still fails? Turn
|
|
63
|
+
off/skip/mock adjacent features to narrow the window.
|
|
64
|
+
2. For multi-component systems (frontend → API → service → DB, or
|
|
65
|
+
CI → build → deploy), log at **each boundary**:
|
|
66
|
+
|
|
67
|
+
* What enters the component
|
|
68
|
+
* What leaves the component
|
|
69
|
+
* What config/env the component actually sees
|
|
70
|
+
|
|
71
|
+
Goal: answer "which boundary has expected ≠ actual?".
|
|
72
|
+
3. Check recent changes: `git log`, `git blame` on the failing line,
|
|
73
|
+
recent dependency updates, config edits, infra changes.
|
|
74
|
+
4. **Consult memory for prior matches.** Via
|
|
75
|
+
[`memory-access`](../../guidelines/agent-infra/memory-access.md):
|
|
76
|
+
```python
|
|
77
|
+
from scripts.memory_lookup import retrieve
|
|
78
|
+
priors = retrieve(
|
|
79
|
+
types=["incident-learnings", "historical-patterns"],
|
|
80
|
+
keys=[<error class>, <failing path(s)>],
|
|
81
|
+
limit=3,
|
|
82
|
+
)
|
|
83
|
+
```
|
|
84
|
+
A matching `incident-learning` may already name the root cause, fix,
|
|
85
|
+
and regression test. A matching `historical-pattern` narrows the
|
|
86
|
+
hypothesis space before Phase 3. Cite matching `id`s in the evidence
|
|
87
|
+
trail.
|
|
88
|
+
5. Trace backwards from the symptom. `null` arrives at line 42 — where
|
|
89
|
+
does the value originate? Walk up the call stack until the origin is
|
|
90
|
+
found. Fix at origin, not at line 42.
|
|
91
|
+
|
|
92
|
+
### Phase 3 — Hypothesize
|
|
93
|
+
|
|
94
|
+
Goal: one testable hypothesis at a time, rejected or confirmed by evidence.
|
|
95
|
+
|
|
96
|
+
1. State the hypothesis in one sentence: *"The failure happens because
|
|
97
|
+
X, which I can confirm by observing Y."*
|
|
98
|
+
2. Design the smallest possible experiment that confirms or rejects the
|
|
99
|
+
hypothesis. One variable at a time.
|
|
100
|
+
3. Run it. Read the output.
|
|
101
|
+
4. Confirmed → Phase 4. Rejected → back to Phase 2 with new
|
|
102
|
+
information, then form a new hypothesis.
|
|
103
|
+
|
|
104
|
+
Three hypotheses in a row fail → stop. You do not understand the system
|
|
105
|
+
well enough yet, or the architecture itself is the problem — see
|
|
106
|
+
"Three-strike rule" below.
|
|
107
|
+
|
|
108
|
+
### Phase 4 — Verify the fix
|
|
109
|
+
|
|
110
|
+
Goal: the fix resolves the root cause, not just the observed symptom.
|
|
111
|
+
|
|
112
|
+
1. Write or update a failing test reproducing the bug (if not already
|
|
113
|
+
done in Phase 1).
|
|
114
|
+
2. Apply a single, minimal fix targeting the root cause. No bundled
|
|
115
|
+
refactors, no "while I'm here".
|
|
116
|
+
3. Re-run the reproduction — failure gone.
|
|
117
|
+
4. Re-run the surrounding test suite — nothing adjacent turned red.
|
|
118
|
+
5. Read output carefully — no new warnings, deprecations, or silent
|
|
119
|
+
retries masking the same bug recurring.
|
|
120
|
+
|
|
121
|
+
Fix does not work? **Do not** stack a second fix on top. Go back to
|
|
122
|
+
Phase 2, treat the failure as new evidence.
|
|
123
|
+
|
|
124
|
+
## Three-strike rule
|
|
125
|
+
|
|
126
|
+
After **three** attempted fixes with the bug still present:
|
|
127
|
+
|
|
128
|
+
* Stop attempting fixes.
|
|
129
|
+
* Re-read phases 1–3 — something about the root cause is wrong.
|
|
130
|
+
* Ask explicitly: is this bug in the code, or in the architecture /
|
|
131
|
+
design that keeps producing this class of bug?
|
|
132
|
+
* Surface the question to the user. Do not attempt fix #4 silently.
|
|
133
|
+
|
|
134
|
+
## Gathering evidence — cheap tools first
|
|
135
|
+
|
|
136
|
+
| What you need | Tool |
|
|
137
|
+
|---|---|
|
|
138
|
+
| What does the code actually do at runtime? | `dd()`, `var_dump()`, `console.log()` at suspected line |
|
|
139
|
+
| What does the call stack look like? | Stack trace in exception, `debug_backtrace()`, `new Error().stack` |
|
|
140
|
+
| What data crosses the boundary? | Log at entry and exit of each function in the path |
|
|
141
|
+
| What does an HTTP endpoint actually return? | `curl -s <url> \| jq`, Postman MCP, or `Http::fake()` assertions in tests |
|
|
142
|
+
| Is the env/config what I think? | Print the actual value, do not trust the docs |
|
|
143
|
+
| What changed recently? | `git log -p <file>`, `git blame -L <line>,<line> <file>` |
|
|
144
|
+
| Is this a known issue? | Search tracker / Sentry / changelog of the dependency |
|
|
145
|
+
| Step through execution | Xdebug — see [`php-debugging`](../php-debugging/SKILL.md) |
|
|
146
|
+
|
|
147
|
+
Prefer the cheapest tool that resolves the question. A `dd()` at the
|
|
148
|
+
right line beats five minutes of IDE breakpoints.
|
|
149
|
+
|
|
150
|
+
## Condition-based waiting (intermittent bugs)
|
|
151
|
+
|
|
152
|
+
Intermittent tests and race conditions usually stem from waiting on
|
|
153
|
+
time instead of a condition. Replace `sleep(100)` or
|
|
154
|
+
`setTimeout(r, 100)` with an explicit wait-for:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
async function waitFor<T>(
|
|
158
|
+
check: () => T | undefined | null | false,
|
|
159
|
+
label: string,
|
|
160
|
+
timeoutMs = 5_000,
|
|
161
|
+
): Promise<T> {
|
|
162
|
+
const start = Date.now();
|
|
163
|
+
while (true) {
|
|
164
|
+
const result = check();
|
|
165
|
+
if (result) return result;
|
|
166
|
+
if (Date.now() - start > timeoutMs) {
|
|
167
|
+
throw new Error(`Timeout waiting for ${label} after ${timeoutMs}ms`);
|
|
168
|
+
}
|
|
169
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Only use an arbitrary timeout when the timing itself is the contract
|
|
175
|
+
(debounce, throttle) — add a comment explaining **why** the exact value.
|
|
176
|
+
|
|
177
|
+
## Output format
|
|
178
|
+
|
|
179
|
+
When reporting debug findings:
|
|
180
|
+
|
|
181
|
+
1. **Symptom** — what was observed (one sentence + failure message)
|
|
182
|
+
2. **Reproduction** — the command or test that triggers it
|
|
183
|
+
3. **Root cause** — what is actually wrong and where
|
|
184
|
+
4. **Evidence** — the log line, stack frame, or diff that proves it
|
|
185
|
+
5. **Fix** — the minimal change
|
|
186
|
+
6. **Regression test** — the test that catches this bug returning
|
|
187
|
+
|
|
188
|
+
## Gotchas
|
|
189
|
+
|
|
190
|
+
* Reading half a stack trace and jumping to a fix — the actual cause is
|
|
191
|
+
usually two or three frames above the one you read.
|
|
192
|
+
* "It works on my machine" — different env than the bug report.
|
|
193
|
+
Reproduce with exact conditions from the report.
|
|
194
|
+
* Adding a retry or sleep to mask an intermittent failure — hides the
|
|
195
|
+
race condition, does not fix it. Use condition-based waiting.
|
|
196
|
+
* Fixing the first line that throws when the bad value came from up the
|
|
197
|
+
call chain. Trace backwards to the origin.
|
|
198
|
+
* "The fix works, the test is just flaky" — flaky tests are bugs in the
|
|
199
|
+
test or the code. Diagnose them, do not retry-until-green.
|
|
200
|
+
* Turning a failing assertion into a softer one ("maybe 2 or 3 retries,
|
|
201
|
+
accept both") to make it pass.
|
|
202
|
+
* Bundling a bug fix with a refactor — test goes red again, cannot tell
|
|
203
|
+
which change broke it.
|
|
204
|
+
|
|
205
|
+
## Red flags — STOP and restart from Phase 1
|
|
206
|
+
|
|
207
|
+
* "Let me just try X and see if it works"
|
|
208
|
+
* "I don't fully understand it, but this probably fixes it"
|
|
209
|
+
* Proposing a fix without having reproduced the bug
|
|
210
|
+
* Bundling multiple changes in one attempt
|
|
211
|
+
* "It's probably a race condition, let me add a sleep"
|
|
212
|
+
* A green test run after changes without having first seen it red
|
|
213
|
+
* "This looks similar to bug X, so it's the same fix"
|
|
214
|
+
* Suppressing a log, warning, or exception instead of tracing its source
|
|
215
|
+
|
|
216
|
+
## Do NOT
|
|
217
|
+
|
|
218
|
+
* Do NOT propose a fix before reproducing the bug
|
|
219
|
+
* Do NOT change two things at once in a single experiment
|
|
220
|
+
* Do NOT silence a warning, failing test, or noisy log as a "fix"
|
|
221
|
+
* Do NOT mark a bug as fixed without a regression test
|
|
222
|
+
* Do NOT attempt fix #4 after three failed fixes — surface the pattern
|
|
223
|
+
|
|
224
|
+
## When to hand over to another skill
|
|
225
|
+
|
|
226
|
+
* Writing the regression test → [`test-driven-development`](../test-driven-development/SKILL.md)
|
|
227
|
+
* Stepping through PHP with Xdebug → [`php-debugging`](../php-debugging/SKILL.md)
|
|
228
|
+
* Playwright / E2E test failures → [`playwright-testing`](../playwright-testing/SKILL.md)
|
|
229
|
+
* PHPStan / Rector / ECS output → [`quality-tools`](../quality-tools/SKILL.md)
|
|
230
|
+
* Verifying the fix is complete before claiming done →
|
|
231
|
+
[`verify-before-complete`](../verify-before-complete/SKILL.md)
|
|
232
|
+
|
|
233
|
+
## Validation checklist
|
|
234
|
+
|
|
235
|
+
Before declaring a bug fixed:
|
|
236
|
+
|
|
237
|
+
* [ ] Failure was reproduced before any code changed
|
|
238
|
+
* [ ] Root cause named explicitly, not "probably"
|
|
239
|
+
* [ ] Evidence (log, trace, diff) supports the named root cause
|
|
240
|
+
* [ ] Failing test reproducing the bug was added or updated
|
|
241
|
+
* [ ] Fix is minimal, targets the root cause, not the symptom
|
|
242
|
+
* [ ] Regression test now passes
|
|
243
|
+
* [ ] Adjacent tests still pass
|
|
244
|
+
* [ ] No warning or suppressed output hides a recurrence
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: technical-specification
|
|
3
|
+
description: "Use when the user says "write a spec", "create RFC", or "document this decision". Writes technical specifications, RFCs, and ADRs with clear structure."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# technical-specification
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill when:
|
|
12
|
+
- Writing a technical specification for a new feature or system
|
|
13
|
+
- Creating an architecture decision record (ADR)
|
|
14
|
+
- Documenting a technical RFC (Request for Comments)
|
|
15
|
+
- Planning a significant technical change that needs team review
|
|
16
|
+
|
|
17
|
+
Do NOT use when:
|
|
18
|
+
- Trivial changes (a good PR description is enough)
|
|
19
|
+
- Implementation work (use `feature-planning` or `php-coder` skill)
|
|
20
|
+
|
|
21
|
+
## Procedure: Write a spec
|
|
22
|
+
|
|
23
|
+
### Technical Specification (full)
|
|
24
|
+
|
|
25
|
+
For complex features or systems. Stored in `agents/features/` or module `agents/features/`.
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# Technical Specification: {Title}
|
|
29
|
+
|
|
30
|
+
## Status
|
|
31
|
+
{ Draft | In Review | Approved | Implemented | Superseded }
|
|
32
|
+
|
|
33
|
+
## Summary
|
|
34
|
+
{2-3 sentences explaining what this spec proposes and why.}
|
|
35
|
+
|
|
36
|
+
## Problem
|
|
37
|
+
{What pain point or limitation does this address?}
|
|
38
|
+
|
|
39
|
+
## Goals
|
|
40
|
+
- {Specific, measurable goal}
|
|
41
|
+
- {Another goal}
|
|
42
|
+
|
|
43
|
+
## Non-Goals
|
|
44
|
+
- {What this spec explicitly does NOT cover}
|
|
45
|
+
|
|
46
|
+
## Proposed Solution
|
|
47
|
+
|
|
48
|
+
### Overview
|
|
49
|
+
{High-level description of the approach.}
|
|
50
|
+
|
|
51
|
+
### Detailed Design
|
|
52
|
+
{Technical details — data models, APIs, algorithms, flows.}
|
|
53
|
+
|
|
54
|
+
### Alternatives Considered
|
|
55
|
+
| Alternative | Pros | Cons | Why rejected |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
|
|
58
|
+
## Migration Plan
|
|
59
|
+
{How to transition from current state to the proposed solution.}
|
|
60
|
+
|
|
61
|
+
## Risks and Mitigations
|
|
62
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
|
|
65
|
+
## Open Questions
|
|
66
|
+
- [ ] {Unresolved question}
|
|
67
|
+
|
|
68
|
+
## References
|
|
69
|
+
- {Links to related docs, tickets, or external resources}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Architecture Decision Record (ADR)
|
|
73
|
+
|
|
74
|
+
For significant technical decisions. Stored in `agents/decisions/`.
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
# ADR-{number}: {Title}
|
|
78
|
+
|
|
79
|
+
## Status
|
|
80
|
+
{ Proposed | Accepted | Deprecated | Superseded by ADR-{N} }
|
|
81
|
+
|
|
82
|
+
## Context
|
|
83
|
+
{What is the issue? What forces are at play?}
|
|
84
|
+
|
|
85
|
+
## Decision
|
|
86
|
+
{What is the change that we're proposing or have agreed to implement?}
|
|
87
|
+
|
|
88
|
+
## Consequences
|
|
89
|
+
|
|
90
|
+
### Positive
|
|
91
|
+
- {Benefit}
|
|
92
|
+
|
|
93
|
+
### Negative
|
|
94
|
+
- {Drawback or tradeoff}
|
|
95
|
+
|
|
96
|
+
### Neutral
|
|
97
|
+
- {Other notable consequences}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Lightweight RFC
|
|
101
|
+
|
|
102
|
+
For smaller decisions that need team input. Can be a PR description or a short doc.
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
# RFC: {Title}
|
|
106
|
+
|
|
107
|
+
## Proposal
|
|
108
|
+
{What do you want to do?}
|
|
109
|
+
|
|
110
|
+
## Why
|
|
111
|
+
{Why is this needed?}
|
|
112
|
+
|
|
113
|
+
## How
|
|
114
|
+
{Brief technical approach.}
|
|
115
|
+
|
|
116
|
+
## Impact
|
|
117
|
+
{What does this change? Who is affected?}
|
|
118
|
+
|
|
119
|
+
## Open for feedback until: {date}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Writing guidelines
|
|
123
|
+
|
|
124
|
+
### Be specific, not vague
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
❌ "The system should be fast"
|
|
128
|
+
✅ "API response time should be < 200ms at p95 for list endpoints"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Include constraints
|
|
132
|
+
|
|
133
|
+
- Performance requirements (latency, throughput)
|
|
134
|
+
- Compatibility requirements (PHP version, browser support)
|
|
135
|
+
- Security requirements (authentication, data sensitivity)
|
|
136
|
+
- Scale requirements (data volume, concurrent users)
|
|
137
|
+
|
|
138
|
+
### Show your reasoning
|
|
139
|
+
|
|
140
|
+
Don't just present the solution — show **why** it was chosen over alternatives.
|
|
141
|
+
The "Alternatives Considered" section is often the most valuable part.
|
|
142
|
+
|
|
143
|
+
### Keep it actionable
|
|
144
|
+
|
|
145
|
+
A spec should be implementable by someone who wasn't in the original discussion.
|
|
146
|
+
If a developer reads only this document, they should be able to build it.
|
|
147
|
+
|
|
148
|
+
## Integration with other systems
|
|
149
|
+
|
|
150
|
+
- **Feature plans** reference specs when technical depth is needed.
|
|
151
|
+
- **Roadmaps** are generated from specs after approval.
|
|
152
|
+
- **ADRs** are referenced from `AGENTS.md` or module docs for historical context.
|
|
153
|
+
- **Sessions** link to the spec being implemented.
|
|
154
|
+
|
|
155
|
+
## Output format
|
|
156
|
+
|
|
157
|
+
1. Technical specification document with architecture decisions
|
|
158
|
+
2. API contracts, data models, and sequence diagrams
|
|
159
|
+
3. Implementation plan with dependencies
|
|
160
|
+
|
|
161
|
+
## Auto-trigger keywords
|
|
162
|
+
|
|
163
|
+
- technical spec
|
|
164
|
+
- RFC
|
|
165
|
+
- ADR
|
|
166
|
+
- architecture decision
|
|
167
|
+
|
|
168
|
+
### Validate
|
|
169
|
+
|
|
170
|
+
- Verify every section of the spec template is filled in (no placeholders left).
|
|
171
|
+
- Confirm constraints and limitations are explicit, not implied.
|
|
172
|
+
- Check that the spec answers: What, Why, How, What not, and When.
|
|
173
|
+
|
|
174
|
+
## Gotcha
|
|
175
|
+
|
|
176
|
+
- A spec without constraints is fiction — always include technical limitations, timeline, and scope boundaries.
|
|
177
|
+
- The model tends to write specs that describe the ideal solution without acknowledging existing code.
|
|
178
|
+
- Don't write specs for trivial features — a spec is overhead that's only worth it for complex changes.
|
|
179
|
+
|
|
180
|
+
## Do NOT
|
|
181
|
+
|
|
182
|
+
- Do NOT write specs without researching the codebase first.
|
|
183
|
+
- Do NOT present only one option — always consider alternatives.
|
|
184
|
+
- Do NOT leave specs in "Draft" forever — push for a decision.
|
|
185
|
+
- Do NOT implement before the spec is reviewed (for significant changes).
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terraform
|
|
3
|
+
description: "Use when writing Terraform — AWS modules, resources, variables, outputs, remote state — even when the user just says 'provision this infra' or 'add an S3 bucket' without naming Terraform."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# terraform
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill when writing or modifying Terraform configurations (`.tf` files), creating new infrastructure modules, or understanding AWS resource definitions.
|
|
12
|
+
|
|
13
|
+
## Procedure: Write Terraform config
|
|
14
|
+
|
|
15
|
+
1. Read the infrastructure repo structure (check `agents/overrides/skills/terraform.md` for the repo location).
|
|
16
|
+
2. Check existing modules in `modules/` for patterns and conventions.
|
|
17
|
+
3. Read `variables.tf` of the target module to understand required inputs.
|
|
18
|
+
4. Check `versions.tf` for provider version constraints.
|
|
19
|
+
|
|
20
|
+
## Project structure (typical)
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
{infrastructure-repo}/
|
|
24
|
+
├── environments/
|
|
25
|
+
│ ├── pro/ # Production environment
|
|
26
|
+
│ │ ├── root.hcl # Terragrunt root config
|
|
27
|
+
│ │ ├── core/ # Core infrastructure (VPC, DNS zones)
|
|
28
|
+
│ │ └── {service}/ # Per-service resources
|
|
29
|
+
│ └── sta/ # Stage environment
|
|
30
|
+
│ └── ...
|
|
31
|
+
├── modules/
|
|
32
|
+
│ ├── core/ # VPC, DNS, shared resources
|
|
33
|
+
│ └── {service}/ # Per-service module (ECS, ALB, ECR, etc.)
|
|
34
|
+
└── Taskfile.yml # Task runner commands (or Makefile)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Read `agents/overrides/skills/terraform.md` for the actual repository layout and service names.
|
|
38
|
+
|
|
39
|
+
## Conventions
|
|
40
|
+
|
|
41
|
+
### Provider versions
|
|
42
|
+
|
|
43
|
+
- Always pin provider versions in `versions.tf`.
|
|
44
|
+
- Check `versions.tf` in the existing modules for the project's version constraints.
|
|
45
|
+
|
|
46
|
+
### Module sources
|
|
47
|
+
|
|
48
|
+
Prefer community or organization-specific Terraform modules from the Terraform Registry:
|
|
49
|
+
|
|
50
|
+
```hcl
|
|
51
|
+
module "alb" {
|
|
52
|
+
source = "{org}/application-load-balancer/aws"
|
|
53
|
+
version = ">= 1.0.0, < 2.0.0"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Check existing modules in the project for which registry modules are used.
|
|
58
|
+
|
|
59
|
+
### Naming
|
|
60
|
+
|
|
61
|
+
- Resource prefix: `var.global_prefix` (e.g., `{project}-{env}`)
|
|
62
|
+
- All resources must include `tags = var.tags`
|
|
63
|
+
- Security groups: `${var.global_prefix}-<purpose>` (e.g., `-ecs`, `-mysql`, `-redis`)
|
|
64
|
+
- Log groups: `/aws/ecs/${cluster}/${service}`
|
|
65
|
+
|
|
66
|
+
### State management
|
|
67
|
+
|
|
68
|
+
- Remote state in **S3** with **DynamoDB** locking.
|
|
69
|
+
- State is encrypted.
|
|
70
|
+
- Key pattern: `${path_relative_to_include()}/terraform.tfstate`
|
|
71
|
+
|
|
72
|
+
### Variables
|
|
73
|
+
|
|
74
|
+
- Use typed `variable` blocks with `description`.
|
|
75
|
+
- Use `object()` types for complex inputs (not `any` unless unavoidable).
|
|
76
|
+
- Use `optional()` with defaults where appropriate.
|
|
77
|
+
- Group variables by domain (naming, network, ECS, Redis, database, etc.).
|
|
78
|
+
|
|
79
|
+
### Lifecycle rules
|
|
80
|
+
|
|
81
|
+
- Use `ignore_changes = [task_definition]` on ECS services — task definitions are managed by CI/CD, not Terraform.
|
|
82
|
+
- Use `deletion_protection = true` on databases.
|
|
83
|
+
|
|
84
|
+
### Security
|
|
85
|
+
|
|
86
|
+
- OIDC authentication for GitHub Actions (no long-lived credentials).
|
|
87
|
+
- Secrets stored in **AWS Secrets Manager**.
|
|
88
|
+
- Security groups follow least-privilege: only allow traffic between known services.
|
|
89
|
+
- IAM policies use specific resource ARNs, not wildcards (except where unavoidable).
|
|
90
|
+
|
|
91
|
+
## Common patterns
|
|
92
|
+
|
|
93
|
+
### ECS service with CodeDeploy (Blue/Green)
|
|
94
|
+
|
|
95
|
+
Used for web services with zero-downtime deployments:
|
|
96
|
+
- ALB → Target Group → ECS Service
|
|
97
|
+
- CodeDeploy handles traffic shifting
|
|
98
|
+
- Auto-rollback on CloudWatch alarms (5xx error rate)
|
|
99
|
+
|
|
100
|
+
### ECS service without CodeDeploy
|
|
101
|
+
|
|
102
|
+
Used for workers and schedulers:
|
|
103
|
+
- Direct ECS service update
|
|
104
|
+
- `deployment_controller { type = "ECS" }`
|
|
105
|
+
- `lifecycle { ignore_changes = [task_definition] }`
|
|
106
|
+
|
|
107
|
+
### GitHub OIDC IAM role
|
|
108
|
+
|
|
109
|
+
Each environment has a GitHub IAM role with:
|
|
110
|
+
- OIDC trust policy (scoped to repo + environment)
|
|
111
|
+
- Policies for ECR push/pull, ECS deployment, Secrets Manager read, CloudWatch logs
|
|
112
|
+
|
|
113
|
+
## Output format
|
|
114
|
+
|
|
115
|
+
1. Terraform configuration files (.tf) with proper module structure
|
|
116
|
+
2. Variables, outputs, and state management config
|
|
117
|
+
|
|
118
|
+
## Auto-trigger keywords
|
|
119
|
+
|
|
120
|
+
- Terraform
|
|
121
|
+
- AWS infrastructure
|
|
122
|
+
- modules
|
|
123
|
+
- resources
|
|
124
|
+
- state management
|
|
125
|
+
|
|
126
|
+
## Gotcha
|
|
127
|
+
|
|
128
|
+
- `terraform apply` without `-auto-approve` requires interactive confirmation — don't use in CI without the flag.
|
|
129
|
+
- The model forgets to run `terraform plan` before `apply` — always plan first, review changes.
|
|
130
|
+
- State files contain sensitive data — never commit them to Git. Use remote state (S3 + DynamoDB).
|
|
131
|
+
|
|
132
|
+
## Do NOT
|
|
133
|
+
|
|
134
|
+
- Do NOT use `*` in IAM resource ARNs unless absolutely necessary.
|
|
135
|
+
- Do NOT remove `deletion_protection` from databases.
|
|
136
|
+
- Do NOT change provider versions without testing in Stage first.
|
|
137
|
+
- Do NOT hardcode AWS account IDs — use `data.aws_caller_identity.current`.
|