@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,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: override-management
|
|
3
|
+
description: "Creates and manages project-level overrides for shared skills, rules, and commands — extending or replacing originals from .augment/ with project-specific behavior in agents/overrides/."
|
|
4
|
+
source: package
|
|
5
|
+
execution:
|
|
6
|
+
type: assisted
|
|
7
|
+
handler: internal
|
|
8
|
+
allowed_tools: []
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Override Skill
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
Use when creating or managing project-level overrides for shared skills, rules, commands, or guidelines — customizing `.augment/` content without modifying originals.
|
|
16
|
+
|
|
17
|
+
Do NOT use when:
|
|
18
|
+
- Changing shared content that should affect all projects (edit `.agent-src.uncompressed/` directly)
|
|
19
|
+
- Creating new skills from scratch (use `skill-writing` skill)
|
|
20
|
+
|
|
21
|
+
## Purpose
|
|
22
|
+
|
|
23
|
+
The `.augment/` directory is delivered as a **Composer package** and is **read-only** at project level.
|
|
24
|
+
It contains shared skills, rules, commands, guidelines, and templates that work across all projects.
|
|
25
|
+
|
|
26
|
+
The `agents/overrides/` directory is **project-specific** and lives in the project's own repository.
|
|
27
|
+
It customizes shared behavior for a particular codebase **without modifying the originals**.
|
|
28
|
+
|
|
29
|
+
**Critical rule:** Never edit files in `.augment/` to fix a project-specific need.
|
|
30
|
+
Changes to `.augment/` affect ALL projects. Use overrides instead.
|
|
31
|
+
|
|
32
|
+
## Procedure: Create an override
|
|
33
|
+
|
|
34
|
+
Before creating, understand the original:
|
|
35
|
+
|
|
36
|
+
1. **Read the original** from `.augment/{type}/{name}` — understand purpose and behavior
|
|
37
|
+
2. **Check existing overrides** in `agents/overrides/{type}/` — avoid duplicates
|
|
38
|
+
3. **Identify what needs changing** — only override specific behavior that differs
|
|
39
|
+
|
|
40
|
+
When loading any skill, rule, or command:
|
|
41
|
+
|
|
42
|
+
1. **Load the original** from `.augment/{type}/{name}`
|
|
43
|
+
2. **Check for override** in `agents/overrides/{type}/{name}`
|
|
44
|
+
3. **If override exists**, read its `Mode` header:
|
|
45
|
+
- **`extend`** — Apply the original first, then layer the override on top (additive)
|
|
46
|
+
- **`replace`** — Ignore the original entirely, use only the override
|
|
47
|
+
|
|
48
|
+
## Directory Structure
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
agents/overrides/
|
|
52
|
+
├── rules/ ← Override .augment/rules/*.md
|
|
53
|
+
│ └── .gitkeep
|
|
54
|
+
├── skills/ ← Override .augment/skills/*/SKILL.md
|
|
55
|
+
│ └── .gitkeep
|
|
56
|
+
├── commands/ ← Override .augment/commands/*.md
|
|
57
|
+
│ └── .gitkeep
|
|
58
|
+
├── guidelines/ ← Override .augment/guidelines/**/*.md
|
|
59
|
+
│ └── .gitkeep
|
|
60
|
+
└── templates/ ← Override .augment/templates/*.md
|
|
61
|
+
└── .gitkeep
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## File Naming Convention
|
|
65
|
+
|
|
66
|
+
Override files **must match the original filename** exactly:
|
|
67
|
+
|
|
68
|
+
| Original | Override |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `.augment/rules/php-coding.md` | `agents/overrides/rules/php-coding.md` |
|
|
71
|
+
| `.augment/skills/eloquent/SKILL.md` | `agents/overrides/skills/eloquent.md` |
|
|
72
|
+
| `.augment/commands/feature-plan.md` | `agents/overrides/commands/feature-plan.md` |
|
|
73
|
+
| `.augment/guidelines/php/controllers.md` | `agents/overrides/guidelines/php-controllers.md` |
|
|
74
|
+
| `.augment/templates/roadmaps.md` | `agents/overrides/templates/roadmaps.md` |
|
|
75
|
+
|
|
76
|
+
**Skills** are flattened: the original lives in a directory (`skills/{name}/SKILL.md`),
|
|
77
|
+
but the override is a single file (`skills/{name}.md`).
|
|
78
|
+
|
|
79
|
+
**Guidelines** are flattened with a prefix: `guidelines/php/controllers.md` → `guidelines/php-controllers.md`.
|
|
80
|
+
|
|
81
|
+
**Templates** keep their original filename: `templates/roadmaps.md` → `templates/roadmaps.md`.
|
|
82
|
+
|
|
83
|
+
## Override File Format
|
|
84
|
+
|
|
85
|
+
Every override file **must** have this header:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
# Override: {Type} — {name}
|
|
89
|
+
|
|
90
|
+
> Override for `.augment/{path-to-original}`
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
**Mode:** `extend`
|
|
94
|
+
**Original:** `.augment/{path-to-original}`
|
|
95
|
+
---
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Mode: extend
|
|
99
|
+
|
|
100
|
+
- The original is loaded first
|
|
101
|
+
- The override adds, modifies, or removes specific parts
|
|
102
|
+
- Reference original sections by heading name
|
|
103
|
+
- Only write what changes — everything else stays as-is
|
|
104
|
+
|
|
105
|
+
### Mode: replace
|
|
106
|
+
|
|
107
|
+
- The original is completely ignored
|
|
108
|
+
- The override is the sole source of truth
|
|
109
|
+
- Must be self-contained and complete
|
|
110
|
+
|
|
111
|
+
## When to Create Overrides
|
|
112
|
+
|
|
113
|
+
| Situation | Action |
|
|
114
|
+
|---|---|
|
|
115
|
+
| Shared skill doesn't match project conventions | **extend** — add project-specific rules |
|
|
116
|
+
| Shared command needs extra steps for this project | **extend** — inject additional steps |
|
|
117
|
+
| Shared rule is too strict/lenient for this project | **extend** — adjust specific rules |
|
|
118
|
+
| Shared guideline misses project-specific patterns | **extend** — add examples or sections |
|
|
119
|
+
| Shared template needs extra fields for this project | **extend** — add project-specific fields |
|
|
120
|
+
| Shared skill is completely wrong for this project | **replace** — write from scratch |
|
|
121
|
+
| Project needs behavior not in any shared skill | Create a new skill in `.augment/skills/` instead |
|
|
122
|
+
|
|
123
|
+
## When NOT to Create Overrides
|
|
124
|
+
|
|
125
|
+
- **Don't override to fix bugs in the shared package** — fix the original in the `.augment/` package repo instead
|
|
126
|
+
- **Don't override for temporary changes** — use branch-specific notes instead
|
|
127
|
+
- **Don't create empty overrides** — only create when there's actual content
|
|
128
|
+
- **Don't duplicate the original** — `extend` mode should only contain the delta
|
|
129
|
+
|
|
130
|
+
## Checking for Overrides (Agent Behavior)
|
|
131
|
+
|
|
132
|
+
Before executing any skill, rule, or command, agents **must**:
|
|
133
|
+
|
|
134
|
+
1. Note the original path (e.g., `.augment/skills/eloquent/SKILL.md`)
|
|
135
|
+
2. Check if `agents/overrides/skills/eloquent.md` exists
|
|
136
|
+
3. If it exists, read the `Mode` header
|
|
137
|
+
4. Apply accordingly:
|
|
138
|
+
- `extend` → Load original, then apply override additions/changes
|
|
139
|
+
- `replace` → Skip original, use override only
|
|
140
|
+
|
|
141
|
+
## Templates
|
|
142
|
+
|
|
143
|
+
Override templates are in `.augment/templates/overrides/`:
|
|
144
|
+
|
|
145
|
+
| Template | For |
|
|
146
|
+
|---|---|
|
|
147
|
+
| `rule.md` | Overriding a rule |
|
|
148
|
+
| `skill.md` | Overriding a skill |
|
|
149
|
+
| `command.md` | Overriding a command |
|
|
150
|
+
| `guideline.md` | Overriding a guideline |
|
|
151
|
+
| `template.md` | Overriding a template |
|
|
152
|
+
|
|
153
|
+
## Related
|
|
154
|
+
|
|
155
|
+
- **Commands:** `/override-create`, `/override-manage`
|
|
156
|
+
- **Skill:** `agent-docs-writing` (documentation hierarchy)
|
|
157
|
+
- **Templates:** `.augment/templates/overrides/`
|
|
158
|
+
|
|
159
|
+
### Validate
|
|
160
|
+
|
|
161
|
+
- Verify the override file exists at the correct path in `agents/overrides/`.
|
|
162
|
+
- Confirm the override actually takes effect (test the behavior it modifies).
|
|
163
|
+
- Check that the original in `.augment/` is not modified.
|
|
164
|
+
|
|
165
|
+
## Output format
|
|
166
|
+
|
|
167
|
+
1. Override file in agents/overrides/ matching the original's structure
|
|
168
|
+
2. Summary of what was overridden and why
|
|
169
|
+
|
|
170
|
+
## Gotcha
|
|
171
|
+
|
|
172
|
+
- Overrides are invisible to other projects — only the current project sees them.
|
|
173
|
+
- Replace mode discards the original entirely — use extend mode unless you need a full rewrite.
|
|
174
|
+
- If the override stops working after a package update, the original's structure likely changed.
|
|
175
|
+
|
|
176
|
+
## Do NOT
|
|
177
|
+
|
|
178
|
+
- Do NOT create overrides for things that should be changed in the original.
|
|
179
|
+
- Do NOT use replace mode when extend mode is sufficient.
|
|
180
|
+
|
|
181
|
+
## Auto-trigger keywords
|
|
182
|
+
|
|
183
|
+
- override
|
|
184
|
+
- project override
|
|
185
|
+
- extend skill
|
|
186
|
+
- replace skill
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance
|
|
3
|
+
description: "Use when optimizing application performance — caching strategies, eager loading, query optimization, Redis patterns, or background job design."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# performance
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use when optimizing slow endpoints, designing caching, or improving query performance.
|
|
12
|
+
|
|
13
|
+
Do NOT use when:
|
|
14
|
+
- Database schema design (use `database` skill)
|
|
15
|
+
- Queue job creation (use `jobs-events` skill)
|
|
16
|
+
|
|
17
|
+
## Procedure: Optimize performance
|
|
18
|
+
|
|
19
|
+
### Step 0: Identify the bottleneck
|
|
20
|
+
|
|
21
|
+
1. Don't optimize prematurely — measure first.
|
|
22
|
+
2. Use `DB::enableQueryLog()` or Telescope to find slow queries.
|
|
23
|
+
3. Check for N+1 queries on list endpoints.
|
|
24
|
+
4. Search for existing cache services in the project.
|
|
25
|
+
|
|
26
|
+
### Step 1: Apply the right fix
|
|
27
|
+
|
|
28
|
+
| Bottleneck | Fix |
|
|
29
|
+
|---|---|
|
|
30
|
+
| N+1 queries | Eager loading with `with()` |
|
|
31
|
+
| Slow queries | Add indexes, optimize (see `database` skill) |
|
|
32
|
+
| Repeated expensive queries | Cache with TTL |
|
|
33
|
+
| Blocking API calls | Queue as background job |
|
|
34
|
+
| Large datasets | Paginate, chunk, cursor |
|
|
35
|
+
| Missing counts | `withCount()` instead of loading relations |
|
|
36
|
+
|
|
37
|
+
### Step 2: Verify
|
|
38
|
+
|
|
39
|
+
Re-measure after fix. Check that cache invalidation works correctly.
|
|
40
|
+
|
|
41
|
+
## Conventions
|
|
42
|
+
|
|
43
|
+
→ See guideline `php/performance.md` for caching patterns, Redis, response time targets.
|
|
44
|
+
|
|
45
|
+
## Output format
|
|
46
|
+
|
|
47
|
+
1. Optimized code with before/after performance comparison
|
|
48
|
+
2. Caching strategy or query optimization applied
|
|
49
|
+
|
|
50
|
+
## Gotcha
|
|
51
|
+
|
|
52
|
+
- Cache invalidation bugs are worse than slow queries — don't add caching everywhere.
|
|
53
|
+
- Eager loading N+1 is the #1 win — always check list endpoints.
|
|
54
|
+
- Don't cache Eloquent collections with loaded relations — too large.
|
|
55
|
+
- Always include tenant ID in cache keys (multi-tenant).
|
|
56
|
+
|
|
57
|
+
## Do NOT
|
|
58
|
+
|
|
59
|
+
- Do NOT cache without tenant isolation in multi-tenant contexts.
|
|
60
|
+
- Do NOT use `get()` or `all()` on large tables — paginate or chunk.
|
|
61
|
+
- Do NOT add indexes blindly — analyze query patterns first.
|
|
62
|
+
|
|
63
|
+
## Auto-trigger keywords
|
|
64
|
+
|
|
65
|
+
- performance
|
|
66
|
+
- caching
|
|
67
|
+
- eager loading
|
|
68
|
+
- query optimization
|
|
69
|
+
- Redis
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-analysis
|
|
3
|
+
description: "ONLY when user explicitly requests: performance audit, bottleneck analysis, or N+1 query detection. NOT for regular feature work."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# performance-analysis
|
|
8
|
+
|
|
9
|
+
## Mission
|
|
10
|
+
|
|
11
|
+
Find performance bottlenecks before they affect users. This skill is **proactive** — it
|
|
12
|
+
analyzes code for performance issues, not just responds to "it's slow" reports.
|
|
13
|
+
|
|
14
|
+
For writing performant code patterns (caching, eager loading, Redis), use the `performance` skill.
|
|
15
|
+
For test suite performance, use `test-performance`.
|
|
16
|
+
|
|
17
|
+
## When to use
|
|
18
|
+
|
|
19
|
+
Use this skill when:
|
|
20
|
+
|
|
21
|
+
- Auditing a codebase or flow for performance bottlenecks
|
|
22
|
+
- `analysis-autonomous-mode` routes here after detecting slow patterns
|
|
23
|
+
- Reviewing code that handles large datasets, loops, or external calls
|
|
24
|
+
- Investigating why a specific endpoint or job is slow
|
|
25
|
+
|
|
26
|
+
Do NOT use when:
|
|
27
|
+
|
|
28
|
+
- Writing new caching/optimization code → use `performance`
|
|
29
|
+
- Optimizing test suite speed → use `test-performance`
|
|
30
|
+
- Hunting for functional bugs → use `bug-analyzer` (proactive mode)
|
|
31
|
+
|
|
32
|
+
## Procedure: Performance analysis
|
|
33
|
+
|
|
34
|
+
### 1. Identify hotspots
|
|
35
|
+
|
|
36
|
+
Focus on code paths with high execution frequency or large data volumes:
|
|
37
|
+
|
|
38
|
+
- API endpoints called frequently (list endpoints, dashboards)
|
|
39
|
+
- Queue jobs processing batches
|
|
40
|
+
- Scheduled commands running on large datasets
|
|
41
|
+
- Import/export operations
|
|
42
|
+
- Report generation
|
|
43
|
+
|
|
44
|
+
### 2. Database query analysis
|
|
45
|
+
|
|
46
|
+
| Pattern | What to look for |
|
|
47
|
+
|---|---|
|
|
48
|
+
| **N+1 queries** | `->load()` or relationship access in loops, missing `->with()` |
|
|
49
|
+
| **Missing indexes** | `WHERE` clauses on unindexed columns, slow `ORDER BY` |
|
|
50
|
+
| **Full table scans** | `SELECT *` without `WHERE`, `LIKE '%term%'` |
|
|
51
|
+
| **Unnecessary queries** | Same query executed multiple times in one request |
|
|
52
|
+
| **Large result sets** | Loading thousands of models when only counts or IDs are needed |
|
|
53
|
+
| **Missing pagination** | `->get()` on unbounded queries |
|
|
54
|
+
| **Suboptimal joins** | Multiple queries that should be a single JOIN |
|
|
55
|
+
| **Transaction scope** | Transactions holding locks longer than necessary |
|
|
56
|
+
|
|
57
|
+
### 3. Application-level bottlenecks
|
|
58
|
+
|
|
59
|
+
| Pattern | What to look for |
|
|
60
|
+
|---|---|
|
|
61
|
+
| **Synchronous I/O** | HTTP calls, file operations, or API calls in the request cycle |
|
|
62
|
+
| **Memory bloat** | Loading entire collections when chunking would work |
|
|
63
|
+
| **Redundant computation** | Same calculation repeated without caching |
|
|
64
|
+
| **Missing cache** | Data that rarely changes but is queried on every request |
|
|
65
|
+
| **Stale cache** | Cache that is never invalidated or has wrong TTL |
|
|
66
|
+
| **Serialization overhead** | Large models serialized to JSON unnecessarily |
|
|
67
|
+
| **Loop inefficiency** | O(n²) patterns with nested loops or repeated array searches |
|
|
68
|
+
|
|
69
|
+
### 4. Queue and job analysis
|
|
70
|
+
|
|
71
|
+
- Jobs that should be batched but run individually
|
|
72
|
+
- Missing `chunk()` for large dataset processing
|
|
73
|
+
- Retry storms from failing jobs without backoff
|
|
74
|
+
- Jobs that hold database connections too long
|
|
75
|
+
- Missing `WithoutOverlapping` for idempotency-critical jobs
|
|
76
|
+
|
|
77
|
+
### 5. Infrastructure-level checks
|
|
78
|
+
|
|
79
|
+
- Missing Redis for session/cache (using file/database driver)
|
|
80
|
+
- Missing CDN for static assets
|
|
81
|
+
- Missing response caching for read-heavy endpoints
|
|
82
|
+
- Database connection pooling and limits
|
|
83
|
+
- Queue worker concurrency vs database connection limits
|
|
84
|
+
|
|
85
|
+
## Output format
|
|
86
|
+
|
|
87
|
+
For each bottleneck:
|
|
88
|
+
|
|
89
|
+
- **Issue:** concise title
|
|
90
|
+
- **Location:** file, line, or endpoint
|
|
91
|
+
- **Severity:** Low / Medium / High / Critical
|
|
92
|
+
- **Impact:** estimated effect (e.g., "adds ~500ms per request", "causes N+1 on 100+ records")
|
|
93
|
+
- **Evidence:** code reference, query pattern, or measurement
|
|
94
|
+
- **Fix:** concrete optimization
|
|
95
|
+
- **Effort:** Low / Medium / High
|
|
96
|
+
- **Confidence:** Low / Medium / High
|
|
97
|
+
|
|
98
|
+
## Integration with other skills
|
|
99
|
+
|
|
100
|
+
- **analysis-autonomous-mode** — routes here when performance concerns are detected
|
|
101
|
+
- **performance** — complementary: performance is about writing fast code, this is about finding slow code
|
|
102
|
+
- **test-performance** — for test suite speed specifically
|
|
103
|
+
- **bug-analyzer** — some performance issues are actually bugs (N+1, infinite loops)
|
|
104
|
+
- **database** — for deep DB optimization guidance
|
|
105
|
+
|
|
106
|
+
## Gotcha
|
|
107
|
+
|
|
108
|
+
- Don't present raw numbers without context — "200ms" means nothing without knowing the baseline.
|
|
109
|
+
- The model tends to focus on code-level optimization when the bottleneck is a database query.
|
|
110
|
+
- Profiling in development differs from production — different data volumes, different query plans.
|
|
111
|
+
|
|
112
|
+
## Do NOT
|
|
113
|
+
|
|
114
|
+
- Do NOT micro-optimize code that runs infrequently or on small datasets
|
|
115
|
+
- Do NOT recommend caching without considering invalidation
|
|
116
|
+
- Do NOT assume bottlenecks — measure or trace the actual code path
|
|
117
|
+
- Do NOT confuse code style preferences with performance issues
|
|
118
|
+
- Do NOT recommend infrastructure changes when code fixes would suffice
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pest-testing
|
|
3
|
+
description: "Use when writing, generating, or improving Pest tests for Laravel — clear intent, good coverage, maintainable structure, and alignment with project testing conventions."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# pest-testing
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill for all Laravel testing tasks, especially when working with:
|
|
12
|
+
|
|
13
|
+
- Feature tests
|
|
14
|
+
- Unit tests
|
|
15
|
+
- API endpoint tests
|
|
16
|
+
- Model tests
|
|
17
|
+
- Service tests
|
|
18
|
+
- Authorization tests
|
|
19
|
+
- Validation tests
|
|
20
|
+
- Database interaction tests
|
|
21
|
+
- Factories, fakes, mocks, and test setup
|
|
22
|
+
|
|
23
|
+
This skill extends `php-coder`, `laravel`, and `eloquent`.
|
|
24
|
+
|
|
25
|
+
## Procedure: Write Pest tests
|
|
26
|
+
|
|
27
|
+
1. **Read the base skills first** — apply `php-coder`, `laravel`, and `eloquent` where relevant.
|
|
28
|
+
2. **Check the project's test framework** — confirm Pest is used and inspect existing tests.
|
|
29
|
+
3. **Match the current test style** — naming, helpers, datasets, expectations, setup, traits, and folder structure.
|
|
30
|
+
4. **Check available factories and seeders** — reuse existing test data patterns.
|
|
31
|
+
5. **Understand the behavior under test** — inspect controllers, services, requests, policies, jobs, and models before writing tests.
|
|
32
|
+
6. **Prefer existing helpers** — authentication helpers, custom assertions, base test classes, and shared setup.
|
|
33
|
+
|
|
34
|
+
## Core testing principles
|
|
35
|
+
|
|
36
|
+
- Test behavior, not implementation details.
|
|
37
|
+
- Prefer clear, intention-revealing tests over overly clever abstractions.
|
|
38
|
+
- One test should verify one meaningful behavior.
|
|
39
|
+
- Keep setup minimal and relevant.
|
|
40
|
+
- Favor confidence and maintainability over excessive mocking.
|
|
41
|
+
- Cover happy path, validation failures, authorization failures, and important edge cases.
|
|
42
|
+
|
|
43
|
+
## TDD workflow (Red-Green-Refactor)
|
|
44
|
+
|
|
45
|
+
For bug fixes and new features, prefer test-driven development:
|
|
46
|
+
|
|
47
|
+
1. **RED** — Write a failing test that describes the expected behavior.
|
|
48
|
+
2. **Verify RED** — Run the test, confirm it fails for the expected reason (missing feature,
|
|
49
|
+
not a typo or syntax error). If the test passes immediately, it tests existing behavior — fix it.
|
|
50
|
+
3. **GREEN** — Write the **minimal** code to make the test pass. No extras, no "while I'm here".
|
|
51
|
+
4. **Verify GREEN** — Run all tests, confirm the new test passes and nothing else broke.
|
|
52
|
+
5. **REFACTOR** — Clean up code while keeping tests green.
|
|
53
|
+
|
|
54
|
+
### Why test-first matters
|
|
55
|
+
|
|
56
|
+
Tests written **after** implementation pass immediately. Passing immediately proves nothing:
|
|
57
|
+
- The test might test the wrong thing.
|
|
58
|
+
- The test might test implementation, not behavior.
|
|
59
|
+
- You never saw it catch the bug — so you don't know if it would.
|
|
60
|
+
|
|
61
|
+
### Bug fix TDD
|
|
62
|
+
|
|
63
|
+
For every bug fix: write a failing test that reproduces the bug FIRST, then fix it.
|
|
64
|
+
The test proves the fix works AND prevents regression.
|
|
65
|
+
|
|
66
|
+
### TDD rationalization prevention
|
|
67
|
+
|
|
68
|
+
| Excuse | Reality |
|
|
69
|
+
|---|---|
|
|
70
|
+
| "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
|
|
71
|
+
| "I'll test after" | Tests passing immediately prove nothing. |
|
|
72
|
+
| "Manual test is faster" | Manual doesn't prevent regression. You'll re-test every change. |
|
|
73
|
+
| "Test is hard to write" | Hard to test = hard to use. Simplify the design. |
|
|
74
|
+
| "Need to explore first" | Fine — throw away exploration code, start fresh with TDD. |
|
|
75
|
+
| "Existing code has no tests" | You're improving it. Add tests for what you touch. |
|
|
76
|
+
|
|
77
|
+
## Laravel testing rules
|
|
78
|
+
|
|
79
|
+
- Use **Feature tests** for HTTP endpoints, request validation, middleware behavior, authorization, and end-to-end application flow.
|
|
80
|
+
- Use **Unit tests** for isolated services or pure logic when true isolation adds value.
|
|
81
|
+
- Prefer Feature tests over Unit tests when framework integration is part of the behavior.
|
|
82
|
+
- Use `RefreshDatabase` or the project's standard database reset strategy where appropriate.
|
|
83
|
+
- Reuse factories instead of manually creating large fixture arrays.
|
|
84
|
+
|
|
85
|
+
## Pest style rules
|
|
86
|
+
|
|
87
|
+
- Write descriptive test names in plain language.
|
|
88
|
+
- Use `it()` / `test()` according to existing project conventions.
|
|
89
|
+
- Group related tests logically.
|
|
90
|
+
- Use datasets when they improve readability and reduce duplication.
|
|
91
|
+
- Keep each test focused and concise.
|
|
92
|
+
|
|
93
|
+
## Pest-specific PHP rules
|
|
94
|
+
|
|
95
|
+
- Do NOT use `readonly` or `final` on Pest test classes.
|
|
96
|
+
- Do NOT mark classes `final` if they need to be mocked via `Mockery::mock()`.
|
|
97
|
+
- Pest test files (without a `namespace` declaration) treat all PHP built-in classes as global.
|
|
98
|
+
Do **NOT** add `use` statements for global classes like `DateTimeImmutable`, `Exception`,
|
|
99
|
+
`stdClass`, etc. — PHP will warn: *"The use statement with non-compound name has no effect"*.
|
|
100
|
+
- Only `use` statements for **namespaced** classes (e.g., `use App\Models\...`) are needed.
|
|
101
|
+
|
|
102
|
+
## Avoiding flaky tests
|
|
103
|
+
|
|
104
|
+
- **Time-dependent tests:** Use `$this->travel(5)->seconds()` (Laravel's time travel) to create
|
|
105
|
+
a clear gap between "before" and "after" timestamps. Never rely on `now()` being different
|
|
106
|
+
between two lines of code — on fast hardware, they can be identical.
|
|
107
|
+
- **Database-dependent tests:** Don't assume column values are `null` just because the seeder
|
|
108
|
+
doesn't set them — previous tests in parallel may have modified the same record.
|
|
109
|
+
- **Parallel testing:** The project may use parallel testing (8+ processes). Avoid relying on
|
|
110
|
+
global state, specific row counts, or auto-increment IDs.
|
|
111
|
+
|
|
112
|
+
## HTTP and API tests
|
|
113
|
+
|
|
114
|
+
- Test:
|
|
115
|
+
- status codes
|
|
116
|
+
- response structure
|
|
117
|
+
- validation errors
|
|
118
|
+
- authorization behavior
|
|
119
|
+
- persistence side effects
|
|
120
|
+
- For JSON APIs, assert:
|
|
121
|
+
- exact relevant fields
|
|
122
|
+
- error structure when applicable
|
|
123
|
+
- database state after the request
|
|
124
|
+
- Do not only assert `200` — verify meaningful behavior.
|
|
125
|
+
|
|
126
|
+
## Validation tests
|
|
127
|
+
|
|
128
|
+
- Validate important request rules explicitly.
|
|
129
|
+
- Cover required fields, invalid formats, boundary values, and business-critical constraints.
|
|
130
|
+
- Prefer focused validation tests over giant "all fields invalid" tests unless the project already uses that pattern.
|
|
131
|
+
|
|
132
|
+
## Authorization tests
|
|
133
|
+
|
|
134
|
+
- Always test protected actions for:
|
|
135
|
+
- guest users
|
|
136
|
+
- unauthorized users
|
|
137
|
+
- authorized users
|
|
138
|
+
- Match the project's auth setup and policy usage.
|
|
139
|
+
- Do not assume authorization works just because a policy exists.
|
|
140
|
+
|
|
141
|
+
## Database assertions
|
|
142
|
+
|
|
143
|
+
- Assert persistence effects with:
|
|
144
|
+
- `assertDatabaseHas`
|
|
145
|
+
- `assertDatabaseMissing`
|
|
146
|
+
- relation checks where relevant
|
|
147
|
+
- Keep assertions focused on meaningful fields.
|
|
148
|
+
- Do not assert every column unless necessary.
|
|
149
|
+
|
|
150
|
+
## Snapshot testing with `coduo/php-matcher`
|
|
151
|
+
|
|
152
|
+
This project uses [`coduo/php-matcher`](https://github.com/coduo/php-matcher) for flexible snapshot assertions.
|
|
153
|
+
Pattern files live in `snapshots/` directories next to the test files.
|
|
154
|
+
|
|
155
|
+
### Pattern variables
|
|
156
|
+
|
|
157
|
+
Use pattern variables instead of hardcoded values in snapshot files.
|
|
158
|
+
This makes snapshots resilient to data changes while still enforcing type correctness.
|
|
159
|
+
|
|
160
|
+
| Pattern | Matches | Example |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| `@boolean@` | `true` or `false` | `'is_active' => '@boolean@'` |
|
|
163
|
+
| `@integer@` | Any integer | `'id' => '@integer@'` |
|
|
164
|
+
| `@string@` | Any string | `'name' => '@string@'` |
|
|
165
|
+
| `@null@` | `null` | `'deleted_at' => '@null@'` |
|
|
166
|
+
| `@datetime@` | ISO datetime string | `'created_at' => '@datetime@'` |
|
|
167
|
+
| `@uuid@` | UUID string | `'uuid' => '@uuid@'` |
|
|
168
|
+
| `@array@` | Any array | `'items' => '@array@'` |
|
|
169
|
+
| `@double@` | Any float | `'amount' => '@double@'` |
|
|
170
|
+
| `@wildcard@` | Anything | `'data' => '@wildcard@'` |
|
|
171
|
+
|
|
172
|
+
Combine with `||` for nullable fields: `'deleted_at' => '@null@||@datetime@'`
|
|
173
|
+
|
|
174
|
+
### Rules
|
|
175
|
+
|
|
176
|
+
- **Never hardcode dynamic values** (IDs, timestamps, UUIDs) in snapshots — use pattern variables or `$replacements`.
|
|
177
|
+
- **Never hardcode boolean defaults** (e.g., `false`) when other booleans in the same file use `@boolean@` — be consistent.
|
|
178
|
+
- Use `$variable ?? '@pattern@'` syntax to allow test-specific overrides via `replacements` parameter.
|
|
179
|
+
- Use `PhpMatcherHelper::ruleBackedEnum(EnumClass::class, 'string')` for enum fields.
|
|
180
|
+
|
|
181
|
+
### Example snapshot file
|
|
182
|
+
|
|
183
|
+
```php
|
|
184
|
+
// snapshots/user-resource.php
|
|
185
|
+
return [
|
|
186
|
+
'id' => $id ?? '@integer@',
|
|
187
|
+
'name' => $name ?? '@string@',
|
|
188
|
+
'email' => $email ?? '@string@',
|
|
189
|
+
'is_active' => $is_active ?? '@boolean@',
|
|
190
|
+
'created_at' => $created_at ?? '@datetime@',
|
|
191
|
+
'deleted_at' => $deleted_at ?? '@null@||@datetime@',
|
|
192
|
+
];
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Example test usage
|
|
196
|
+
|
|
197
|
+
```php
|
|
198
|
+
expect($response->json())
|
|
199
|
+
->toMatchPhpPatternFile(
|
|
200
|
+
patternFile: __DIR__ . '/snapshots/user-resource.php',
|
|
201
|
+
replacements: ['id' => $user->getId()],
|
|
202
|
+
);
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Fakes, mocks, and external boundaries
|
|
206
|
+
|
|
207
|
+
- Use Laravel fakes for framework integrations when appropriate:
|
|
208
|
+
- `Queue::fake()`
|
|
209
|
+
- `Bus::fake()`
|
|
210
|
+
- `Event::fake()`
|
|
211
|
+
- `Mail::fake()`
|
|
212
|
+
- `Notification::fake()`
|
|
213
|
+
- `Storage::fake()`
|
|
214
|
+
- Mock only true external boundaries or expensive dependencies.
|
|
215
|
+
- Avoid mocking internal application code unless isolation is necessary for the specific test.
|
|
216
|
+
|
|
217
|
+
## Factories and fixtures
|
|
218
|
+
|
|
219
|
+
- Prefer factories with explicit state over large inline setup.
|
|
220
|
+
- Use named states for meaningful scenarios.
|
|
221
|
+
- Keep test data realistic and minimal.
|
|
222
|
+
- Do not create unnecessary records.
|
|
223
|
+
|
|
224
|
+
## Test quality analysis
|
|
225
|
+
|
|
226
|
+
When reviewing or auditing existing tests, check for these anti-patterns:
|
|
227
|
+
|
|
228
|
+
### Test smells to detect
|
|
229
|
+
|
|
230
|
+
| Smell | Description | Fix |
|
|
231
|
+
|---|---|---|
|
|
232
|
+
| **Overmocking** | Too many mocks disconnect the test from reality | Replace mocks with real implementations or fakes |
|
|
233
|
+
| **Fragile tests** | Tests break with unrelated changes (e.g., asserting exact JSON structure) | Assert only meaningful fields |
|
|
234
|
+
| **Flaky tests** | Non-deterministic results (time, ordering, parallel state) | Use time travel, explicit ordering, isolated data |
|
|
235
|
+
| **Giant tests** | One test covers 5+ behaviors | Split into focused tests |
|
|
236
|
+
| **Missing assertions** | Test runs code but doesn't verify outcomes | Add meaningful assertions |
|
|
237
|
+
| **Test duplication** | Same scenario tested in multiple places | Consolidate or use datasets |
|
|
238
|
+
| **Assertion roulette** | Many assertions without clear failure messages | Use named assertions or split tests |
|
|
239
|
+
| **Eager test** | Tests too many things, making failures hard to diagnose | One behavior per test |
|
|
240
|
+
|
|
241
|
+
### FIRST principles
|
|
242
|
+
|
|
243
|
+
- **Fast** — Tests should run quickly. Avoid unnecessary DB operations.
|
|
244
|
+
- **Isolated** — Tests should not depend on each other or shared state.
|
|
245
|
+
- **Repeatable** — Same result every time, regardless of environment or order.
|
|
246
|
+
- **Self-validating** — Pass or fail, no manual inspection needed.
|
|
247
|
+
- **Timely** — Written close to the code they test.
|
|
248
|
+
|
|
249
|
+
### Mock usage guidelines
|
|
250
|
+
|
|
251
|
+
- Mock **external boundaries** (APIs, file systems, third-party services).
|
|
252
|
+
- Use Laravel fakes (`Queue::fake()`, `Http::fake()`) over manual mocks.
|
|
253
|
+
- Do NOT mock the class under test.
|
|
254
|
+
- Do NOT mock value objects or DTOs.
|
|
255
|
+
- If a test needs 3+ mocks, consider testing at a higher level (Feature test).
|
|
256
|
+
|
|
257
|
+
## What NOT to do
|
|
258
|
+
|
|
259
|
+
- Do not test private methods directly.
|
|
260
|
+
- Do not over-mock Laravel internals.
|
|
261
|
+
- Do not assert implementation details when behavior assertions are enough.
|
|
262
|
+
- Do not write brittle tests tied to formatting or irrelevant response noise.
|
|
263
|
+
- Do not create giant tests that cover many behaviors at once.
|
|
264
|
+
- Do not skip authorization or validation coverage for important endpoints.
|
|
265
|
+
|
|
266
|
+
## Output expectations
|
|
267
|
+
|
|
268
|
+
When generating Pest tests:
|
|
269
|
+
|
|
270
|
+
- follow the existing folder and naming conventions
|
|
271
|
+
- test behavior clearly and directly
|
|
272
|
+
- cover success, failure, and authorization paths
|
|
273
|
+
- use factories and Laravel test helpers
|
|
274
|
+
- assert both response and side effects where relevant
|
|
275
|
+
- keep tests readable, isolated, and maintainable
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
## Output format
|
|
279
|
+
|
|
280
|
+
1. Pest test file with descriptive test names and clear assertions
|
|
281
|
+
2. Tests organized by happy path, validation, edge cases
|
|
282
|
+
|
|
283
|
+
## Gotcha
|
|
284
|
+
|
|
285
|
+
- Don't use `readonly` or `final` on Pest test helper classes — it breaks mocking.
|
|
286
|
+
- Don't add `use` statements for global classes (`Exception`, `DateTimeImmutable`) in Pest files — they're auto-imported.
|
|
287
|
+
- The model forgets `$this->travel(5)->seconds()` for time-dependent tests — never rely on `now()` differing between lines.
|
|
288
|
+
- Parallel tests share the database — don't assume column values are null unless you explicitly set them.
|
|
289
|
+
|
|
290
|
+
## Do NOT
|
|
291
|
+
|
|
292
|
+
- Do NOT mark classes final if they need to be mocked via Mockery.
|
|
293
|
+
- Do NOT use PHPUnit class-based syntax — use Pest syntax.
|
|
294
|
+
|
|
295
|
+
## What to test (generation checklist)
|
|
296
|
+
|
|
297
|
+
When generating new tests, focus on:
|
|
298
|
+
- **Business logic**: calculations, status transitions, validation rules, data transformations
|
|
299
|
+
- **Edge cases**: null, empty string, zero, negative numbers, boundary values, max length
|
|
300
|
+
- **Error paths**: invalid input, missing dependencies, exception handling
|
|
301
|
+
- **Different code branches**: if/else, early returns, fallback behavior
|
|
302
|
+
|
|
303
|
+
What NOT to test:
|
|
304
|
+
- Trivial getters/setters without logic
|
|
305
|
+
- Parameter counts, method existence, class names
|
|
306
|
+
- Framework internals (Eloquent, routing)
|
|
307
|
+
- Private methods directly — test through public API
|
|
308
|
+
|
|
309
|
+
**Quality over quantity** — 5 meaningful tests beat 20 trivial ones.
|
|
310
|
+
|
|
311
|
+
## Auto-trigger keywords
|
|
312
|
+
|
|
313
|
+
- Pest test
|
|
314
|
+
- PHPUnit
|
|
315
|
+
- test writing
|
|
316
|
+
- test quality
|
|
317
|
+
- TDD
|
|
318
|
+
- generate tests
|
|
319
|
+
- write tests
|
|
320
|
+
- test coverage
|
|
321
|
+
- test scenarios
|