@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,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: threat-modeling
|
|
3
|
+
description: "Use when adding auth, webhooks, uploads, queues, secrets, tenant boundaries, or public endpoints — produces trust boundaries + abuse cases mapped to files, BEFORE implementation."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# threat-modeling
|
|
8
|
+
|
|
9
|
+
> You are a reviewer specialized in **pre-implementation threat analysis**.
|
|
10
|
+
> Your only job is to produce a compact threat model for a planned change —
|
|
11
|
+
> actors, assets, trust boundaries, abuse cases, and the minimum controls
|
|
12
|
+
> the implementer must add. You do **not** audit existing code end-to-end,
|
|
13
|
+
> you do **not** review diffs, you do **not** implement controls — sibling
|
|
14
|
+
> skills handle those.
|
|
15
|
+
|
|
16
|
+
## When to use
|
|
17
|
+
|
|
18
|
+
* The change adds or modifies authentication, authorization, or permission checks
|
|
19
|
+
* The change adds a public endpoint, webhook, file upload, queue worker,
|
|
20
|
+
scheduled task, or third-party integration
|
|
21
|
+
* The change touches sensitive data, tenant boundaries, secrets, billing flows,
|
|
22
|
+
or admin-only capabilities
|
|
23
|
+
* A `security-sensitive-stop-rule` trigger fired and the agent must produce a
|
|
24
|
+
risk review before patching
|
|
25
|
+
|
|
26
|
+
Do NOT use when:
|
|
27
|
+
|
|
28
|
+
* The change is a cosmetic refactor or documentation-only edit — skip entirely
|
|
29
|
+
* The change is a diff ready for review — route to
|
|
30
|
+
[`judge-security-auditor`](../judge-security-auditor/SKILL.md)
|
|
31
|
+
* The concern is a full-codebase security posture review — route to
|
|
32
|
+
[`security-audit`](../security-audit/SKILL.md)
|
|
33
|
+
* The concern is end-to-end authorization enforcement — route to
|
|
34
|
+
[`authz-review`](../authz-review/SKILL.md)
|
|
35
|
+
* The concern is output/log leakage on an existing API — route to
|
|
36
|
+
[`data-exposure-review`](../data-exposure-review/SKILL.md)
|
|
37
|
+
* The concern is implementing the controls once identified — route to
|
|
38
|
+
[`security`](../security/SKILL.md)
|
|
39
|
+
|
|
40
|
+
## Procedure
|
|
41
|
+
|
|
42
|
+
### 1. Anchor on the planned change
|
|
43
|
+
|
|
44
|
+
Read the task description (ticket, feature plan, spec) and the entrypoints
|
|
45
|
+
the change will touch. You are modelling **the stated change**, not the
|
|
46
|
+
whole system. If the change is unclear from available context, stop and ask
|
|
47
|
+
before continuing — never invent a threat model for an imagined feature.
|
|
48
|
+
|
|
49
|
+
### 2. Inspect the execution path
|
|
50
|
+
|
|
51
|
+
Trace the path once through existing code:
|
|
52
|
+
|
|
53
|
+
- Where does untrusted input enter? (route, webhook, queue payload, CLI arg,
|
|
54
|
+
uploaded file, imported record)
|
|
55
|
+
- Which actor types cross this path? (anonymous, authenticated user, admin,
|
|
56
|
+
service account, queue worker, cron)
|
|
57
|
+
- What assets does the path touch? (PII, credentials, internal IDs, billing,
|
|
58
|
+
tenant-scoped records, files, secrets)
|
|
59
|
+
- Where are the privilege boundaries? (auth gate, authorization layer, tenant
|
|
60
|
+
scope, admin gate)
|
|
61
|
+
|
|
62
|
+
### 3. Model the risks
|
|
63
|
+
|
|
64
|
+
For every distinct abuse case, answer:
|
|
65
|
+
|
|
66
|
+
| Field | What to fill in |
|
|
67
|
+
|---|---|
|
|
68
|
+
| Entry point | route / job / webhook + concrete file |
|
|
69
|
+
| Actor | who can trigger it |
|
|
70
|
+
| Precondition | what must be true (auth state, data state) |
|
|
71
|
+
| Impact | concrete damage (data loss, privilege escalation, DoS, leakage) |
|
|
72
|
+
| Current control | what exists today |
|
|
73
|
+
| Missing control | what the change must add |
|
|
74
|
+
|
|
75
|
+
Prioritize by **impact × plausibility**, not by novelty. Skip generic
|
|
76
|
+
OWASP bullets unless you can anchor them in a concrete file or line.
|
|
77
|
+
|
|
78
|
+
### 4. Convert risks to engineering actions
|
|
79
|
+
|
|
80
|
+
For each prioritized abuse case, propose the **smallest effective control**
|
|
81
|
+
and name the exact file/layer it belongs in:
|
|
82
|
+
|
|
83
|
+
- input validation → where
|
|
84
|
+
- authorization check → where
|
|
85
|
+
- rate limiting → where
|
|
86
|
+
- output filtering → where
|
|
87
|
+
- safer default → where
|
|
88
|
+
- logging / alerting → where
|
|
89
|
+
|
|
90
|
+
State whether a new **negative test** is required and what condition it
|
|
91
|
+
must assert (e.g. *"POST /imports with tenant-B id from tenant-A session
|
|
92
|
+
returns 403"*).
|
|
93
|
+
|
|
94
|
+
## Validation
|
|
95
|
+
|
|
96
|
+
Before finalizing the threat model, confirm:
|
|
97
|
+
|
|
98
|
+
1. Every entry point has at least one identified control owner
|
|
99
|
+
2. Every 🔴 abuse case has either an existing control or a required new one
|
|
100
|
+
3. Every 🔴 abuse case has at least one proposed negative test
|
|
101
|
+
4. You have NOT produced generic advice — every risk cites a file, route, or job
|
|
102
|
+
5. You have NOT proposed offensive testing steps, exploit chains, or bypass ideas
|
|
103
|
+
6. If the change is out of scope for threat modelling (no trust boundary
|
|
104
|
+
crossed), you have said so explicitly and stopped
|
|
105
|
+
|
|
106
|
+
## Output format
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Skill: threat-modeling
|
|
110
|
+
Target: <feature / ticket / change summary>
|
|
111
|
+
|
|
112
|
+
Actors: <list, one per line>
|
|
113
|
+
Assets: <list, one per line>
|
|
114
|
+
Entry points: <route / job / webhook — file:line>
|
|
115
|
+
Trust boundaries: <where untrusted → trusted crossings happen>
|
|
116
|
+
|
|
117
|
+
Abuse cases (prioritized):
|
|
118
|
+
🔴 <name> — entry point · actor · precondition
|
|
119
|
+
Impact: <concrete damage>
|
|
120
|
+
Current control: <what exists>
|
|
121
|
+
Missing control: <what to add, where>
|
|
122
|
+
Required test: <negative assertion>
|
|
123
|
+
🟡 ...
|
|
124
|
+
🟢 ...
|
|
125
|
+
|
|
126
|
+
Implementation plan:
|
|
127
|
+
1. <control>, <file/layer>
|
|
128
|
+
2. ...
|
|
129
|
+
|
|
130
|
+
Missing tests:
|
|
131
|
+
1. <assertion>, <test file>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Severity: 🔴 exploitable by external actor with current or no privilege /
|
|
135
|
+
🟡 exploitable only with elevated privilege or partial auth / 🟢 defense-in-depth
|
|
136
|
+
improvement, not a concrete exploit path.
|
|
137
|
+
|
|
138
|
+
Required fields (ordered):
|
|
139
|
+
|
|
140
|
+
1. **Skill** and **Target** — one-line change summary
|
|
141
|
+
2. **Actors**, **Assets**, **Entry points**, **Trust boundaries**
|
|
142
|
+
3. **Abuse cases** — prioritized; every entry cites entry point + actor + impact + current + missing control + required test
|
|
143
|
+
4. **Implementation plan** — ordered controls mapped to files/layers
|
|
144
|
+
5. **Missing tests** — ordered negative assertions
|
|
145
|
+
|
|
146
|
+
Runtime confirmation (e.g. *"reproduce the abuse against staging"*, *"query
|
|
147
|
+
the DB to confirm scope leakage exists today"*) is a follow-up for the
|
|
148
|
+
implementer — **this skill does not execute tools, reproduce exploits, or
|
|
149
|
+
run tests**.
|
|
150
|
+
|
|
151
|
+
## Gotcha
|
|
152
|
+
|
|
153
|
+
* **Generic OWASP bullets without a file anchor** — "SQL injection risk" is
|
|
154
|
+
noise unless you cite the query. Drop it or anchor it.
|
|
155
|
+
* **Confusing authentication with authorization** — a logged-in user is not an
|
|
156
|
+
authorized user. Model authorization as a distinct boundary even when auth
|
|
157
|
+
is already enforced upstream.
|
|
158
|
+
* **Treating queue workers and webhooks as trusted** — they carry attacker-
|
|
159
|
+
influenced payloads. Model them as untrusted entry points.
|
|
160
|
+
* **Modelling the whole system when the change is narrow** — the model is
|
|
161
|
+
scoped to the planned change. Out-of-scope risks belong to `security-audit`.
|
|
162
|
+
* **Producing offensive test steps** — you name abuse cases and required
|
|
163
|
+
controls, not exploit procedures.
|
|
164
|
+
|
|
165
|
+
## Do NOT
|
|
166
|
+
|
|
167
|
+
* NEVER produce exploit chains, payloads, or bypass techniques — if the task
|
|
168
|
+
asks for offensive work, stop and refuse per `never-help-build-offensive-cyber-capability`
|
|
169
|
+
* NEVER return a threat model out of politeness when no trust boundary is crossed — say so and stop
|
|
170
|
+
* NEVER treat "internal" or "behind the WAF" as a substitute for a control
|
|
171
|
+
* NEVER approve a plan without at least one negative test per 🔴 abuse case
|
|
172
|
+
* NEVER silently fall back to a generic checklist when the diff context is missing — ask instead
|
|
173
|
+
|
|
174
|
+
## References
|
|
175
|
+
|
|
176
|
+
- **STRIDE threat model** — Microsoft Security Development Lifecycle, Shostack
|
|
177
|
+
*Threat Modeling: Designing for Security* (2014). Framing basis for the
|
|
178
|
+
Actors / Assets / Entry Points / Trust Boundaries / Abuse Cases rubric.
|
|
179
|
+
[learn.microsoft.com/en-us/security/engineering/threat-modeling-tool-threats](https://learn.microsoft.com/en-us/security/engineering/threat-modeling-tool-threats)
|
|
180
|
+
- **OWASP ASVS v4.0.3** — Authorization (V4), Validation & Encoding (V5),
|
|
181
|
+
Session Management (V3) — default baseline for "Missing control" entries.
|
|
182
|
+
[owasp.org/www-project-application-security-verification-standard/](https://owasp.org/www-project-application-security-verification-standard/)
|
|
183
|
+
- **OWASP Top 10 2021** — A01 Broken Access Control, A04 Insecure Design,
|
|
184
|
+
A05 Security Misconfiguration — cross-reference when naming abuse cases.
|
|
185
|
+
[owasp.org/Top10/](https://owasp.org/Top10/)
|
|
186
|
+
- [`authz-review`](../authz-review/SKILL.md),
|
|
187
|
+
[`data-exposure-review`](../data-exposure-review/SKILL.md),
|
|
188
|
+
[`security`](../security/SKILL.md),
|
|
189
|
+
[`security-audit`](../security-audit/SKILL.md) — sibling review / implementation skills.
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: traefik
|
|
3
|
+
description: "Use when setting up Traefik as a local reverse proxy — real domains on 127.0.0.1, trusted HTTPS via mkcert, automatic service discovery, and multi-project routing."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Traefik Skill
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill when:
|
|
12
|
+
- Setting up local development with real domain names and trusted HTTPS
|
|
13
|
+
- Configuring SSL certificates (self-signed, mkcert, ACME via Namecheap/AWS)
|
|
14
|
+
- Routing multiple Docker projects through a single reverse proxy
|
|
15
|
+
- Embedding external services (Grafana, etc.) that require HTTPS/same-origin
|
|
16
|
+
|
|
17
|
+
## Procedure: Set up Traefik
|
|
18
|
+
|
|
19
|
+
### 0. Understand current setup
|
|
20
|
+
|
|
21
|
+
Before changing routing:
|
|
22
|
+
|
|
23
|
+
1. Check existing proxy — `docker ps | grep traefik`
|
|
24
|
+
2. Review docker-compose for existing labels and network config
|
|
25
|
+
3. Check `/etc/hosts` or dnsmasq for existing domain mappings
|
|
26
|
+
|
|
27
|
+
### Architecture
|
|
28
|
+
|
|
29
|
+
Traefik acts as a **local reverse proxy** that:
|
|
30
|
+
1. Resolves real domains (e.g., `local.example.dev`, `app.test`) to `127.0.0.1`
|
|
31
|
+
2. Terminates HTTPS with trusted certificates
|
|
32
|
+
3. Auto-discovers Docker services via labels (no manual config per service)
|
|
33
|
+
4. Routes requests to the correct container based on hostname
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Browser → https://app.example.com
|
|
37
|
+
→ DNS resolves to 127.0.0.1 (via /etc/hosts or dnsmasq)
|
|
38
|
+
→ Traefik (port 443) picks up the request
|
|
39
|
+
→ Routes to app container (based on Docker labels)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## DNS Resolution (domains → 127.0.0.1)
|
|
43
|
+
|
|
44
|
+
**Option A: `/etc/hosts` (simple, per-domain)**
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
127.0.0.1 local.example.dev
|
|
48
|
+
127.0.0.1 grafana.local.example.dev
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Option B: dnsmasq (wildcard, all subdomains — preferred)**
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
brew install dnsmasq
|
|
55
|
+
echo 'address=/.local.example.dev/127.0.0.1' >> /opt/homebrew/etc/dnsmasq.conf
|
|
56
|
+
sudo brew services restart dnsmasq
|
|
57
|
+
sudo mkdir -p /etc/resolver
|
|
58
|
+
echo 'nameserver 127.0.0.1' | sudo tee /etc/resolver/local.example.dev
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Certificate Strategies
|
|
62
|
+
|
|
63
|
+
Choose based on project needs:
|
|
64
|
+
|
|
65
|
+
| Strategy | Tool | Trust | Use when |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| **Self-signed** | openssl | Manual trust via keychain | Quick local dev, no external deps |
|
|
68
|
+
| **mkcert** | mkcert | Auto-trusted local CA | Local dev, easiest setup |
|
|
69
|
+
| **ACME (Namecheap)** | lego + DNS-01 | Real CA (Let's Encrypt) | Real domain, Namecheap DNS |
|
|
70
|
+
| **ACME (AWS Route53)** | lego + DNS-01 | Real CA (Let's Encrypt) | Real domain, AWS DNS |
|
|
71
|
+
|
|
72
|
+
### Self-signed (openssl)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
mkdir -p traefik/certificates
|
|
76
|
+
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
|
|
77
|
+
-keyout traefik/certificates/_.${CERT_DOMAIN}.key \
|
|
78
|
+
-out traefik/certificates/_.${CERT_DOMAIN}.crt \
|
|
79
|
+
-subj "/CN=*.${CERT_DOMAIN}" \
|
|
80
|
+
-addext "subjectAltName=DNS:*.${CERT_DOMAIN},DNS:${CERT_DOMAIN}"
|
|
81
|
+
|
|
82
|
+
# Trust on macOS
|
|
83
|
+
sudo security add-trusted-cert -d -r trustRoot \
|
|
84
|
+
-k /Library/Keychains/System.keychain traefik/certificates/tls.crt
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### mkcert (simplest for local dev)
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
brew install mkcert && mkcert -install
|
|
91
|
+
mkcert "local.example.dev" "*.local.example.dev"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### ACME via Lego container (real certs)
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
# docker-compose.yml
|
|
98
|
+
lego:
|
|
99
|
+
image: goacme/lego:latest
|
|
100
|
+
profiles: [manual] # Only run on demand
|
|
101
|
+
volumes:
|
|
102
|
+
- ./traefik/certificates:/etc/lego
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Namecheap DNS-01
|
|
107
|
+
docker compose run --rm \
|
|
108
|
+
-e NAMECHEAP_API_USER -e NAMECHEAP_API_KEY \
|
|
109
|
+
lego --dns namecheap \
|
|
110
|
+
--domains "*.${CERT_DOMAIN}" --email "admin@${CERT_DOMAIN}" \
|
|
111
|
+
--path /etc/lego run
|
|
112
|
+
|
|
113
|
+
# AWS Route53 DNS-01
|
|
114
|
+
docker compose run --rm \
|
|
115
|
+
-e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_REGION \
|
|
116
|
+
lego --dns route53 \
|
|
117
|
+
--domains "*.${CERT_DOMAIN}" --email "admin@${CERT_DOMAIN}" \
|
|
118
|
+
--path /etc/lego run
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Taskfile integration for cert management
|
|
122
|
+
|
|
123
|
+
```yaml
|
|
124
|
+
# certificates/generate.yml (included in main Taskfile)
|
|
125
|
+
tasks:
|
|
126
|
+
selfsigned:
|
|
127
|
+
desc: Generate self-signed certificate for ${CERT_DOMAIN}
|
|
128
|
+
cmds: [...]
|
|
129
|
+
|
|
130
|
+
namecheap:
|
|
131
|
+
desc: Generate ACME certificate via Namecheap DNS-01
|
|
132
|
+
cmds: [...]
|
|
133
|
+
|
|
134
|
+
aws:
|
|
135
|
+
desc: Generate ACME certificate via AWS Route53 DNS-01
|
|
136
|
+
cmds: [...]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
# Main Taskfile
|
|
141
|
+
trust:
|
|
142
|
+
desc: Add cert to macOS keychain
|
|
143
|
+
cmds:
|
|
144
|
+
- sudo security add-trusted-cert -d -r trustRoot \
|
|
145
|
+
-k /Library/Keychains/System.keychain traefik/certificates/tls.crt
|
|
146
|
+
|
|
147
|
+
untrust:
|
|
148
|
+
desc: Remove cert from macOS keychain
|
|
149
|
+
cmds:
|
|
150
|
+
- sudo security delete-certificate -c "*.${CERT_DOMAIN}" \
|
|
151
|
+
/Library/Keychains/System.keychain
|
|
152
|
+
|
|
153
|
+
cert:setup:
|
|
154
|
+
desc: Generate and trust self-signed certificate
|
|
155
|
+
deps: [generate:selfsigned, trust]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Traefik Container
|
|
159
|
+
|
|
160
|
+
```yaml
|
|
161
|
+
traefik:
|
|
162
|
+
image: traefik:v3.2 # or v2.11 for older setups
|
|
163
|
+
command:
|
|
164
|
+
- --providers.docker=true
|
|
165
|
+
- --providers.docker.exposedbydefault=false
|
|
166
|
+
- --providers.file.directory=/etc/traefik/dynamic
|
|
167
|
+
- --providers.file.watch=true
|
|
168
|
+
- --entrypoints.web.address=:80
|
|
169
|
+
- --entrypoints.websecure.address=:443
|
|
170
|
+
ports:
|
|
171
|
+
- "${TRAEFIK_HTTP_PORT:-80}:80"
|
|
172
|
+
- "${TRAEFIK_HTTPS_PORT:-443}:443"
|
|
173
|
+
volumes:
|
|
174
|
+
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
175
|
+
- ./traefik/dynamic:/etc/traefik/dynamic:ro
|
|
176
|
+
- ./traefik/certificates:/certs:ro
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### TLS dynamic config
|
|
180
|
+
|
|
181
|
+
```yaml
|
|
182
|
+
# traefik/dynamic/tls.yml
|
|
183
|
+
tls:
|
|
184
|
+
certificates:
|
|
185
|
+
- certFile: /certs/tls.crt
|
|
186
|
+
keyFile: /certs/tls.key
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Service Labels
|
|
190
|
+
|
|
191
|
+
### Basic pattern (HTTP → HTTPS redirect + TLS)
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
my-service:
|
|
195
|
+
labels:
|
|
196
|
+
- "traefik.enable=true"
|
|
197
|
+
# HTTP router (redirect to HTTPS)
|
|
198
|
+
- "traefik.http.routers.myapp.rule=Host(`${CERT_HOST}`)"
|
|
199
|
+
- "traefik.http.routers.myapp.entrypoints=web"
|
|
200
|
+
- "traefik.http.routers.myapp.middlewares=myapp-https-redirect"
|
|
201
|
+
- "traefik.http.middlewares.myapp-https-redirect.redirectscheme.scheme=https"
|
|
202
|
+
- "traefik.http.middlewares.myapp-https-redirect.redirectscheme.port=${TRAEFIK_HTTPS_PORT}"
|
|
203
|
+
# HTTPS router
|
|
204
|
+
- "traefik.http.routers.myapp-secure.rule=Host(`${CERT_HOST}`)"
|
|
205
|
+
- "traefik.http.routers.myapp-secure.entrypoints=websecure"
|
|
206
|
+
- "traefik.http.routers.myapp-secure.tls=true"
|
|
207
|
+
- "traefik.http.services.myapp.loadbalancer.server.port=80"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Subdomain routing
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
grafana:
|
|
214
|
+
labels:
|
|
215
|
+
- "traefik.enable=true"
|
|
216
|
+
- "traefik.http.routers.grafana-secure.rule=Host(`grafana.${CERT_HOST}`)"
|
|
217
|
+
- "traefik.http.routers.grafana-secure.entrypoints=websecure"
|
|
218
|
+
- "traefik.http.routers.grafana-secure.tls=true"
|
|
219
|
+
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Path-based routing
|
|
223
|
+
|
|
224
|
+
```yaml
|
|
225
|
+
horizon:
|
|
226
|
+
labels:
|
|
227
|
+
- "traefik.http.routers.horizon-secure.rule=Host(`${CERT_HOST}`) && PathPrefix(`/horizon`)"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Integration Patterns
|
|
231
|
+
|
|
232
|
+
### With NGINX
|
|
233
|
+
|
|
234
|
+
Traefik sits **in front of** NGINX — does NOT replace it:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
Traefik (443) → NGINX (80 internal) → PHP-FPM
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
NGINX keeps: PHP-FPM routing, Xdebug header detection, static files.
|
|
241
|
+
Traefik adds: real domains, HTTPS, multi-service routing.
|
|
242
|
+
|
|
243
|
+
### Standalone
|
|
244
|
+
|
|
245
|
+
Traefik routes directly to the app container:
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
Traefik (443) → App container (80 internal)
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Multi-project (shared Traefik)
|
|
252
|
+
|
|
253
|
+
One Traefik instance routes to multiple projects via shared network:
|
|
254
|
+
|
|
255
|
+
```yaml
|
|
256
|
+
networks:
|
|
257
|
+
traefik-public:
|
|
258
|
+
external: true # docker network create traefik-public
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
traefik
|
|
263
|
+
├── local.example.dev → api-service
|
|
264
|
+
├── grafana.local.example.dev → grafana
|
|
265
|
+
├── other.local.example.dev → other-service
|
|
266
|
+
└── app.test → frontend
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Middleware Examples
|
|
270
|
+
|
|
271
|
+
```yaml
|
|
272
|
+
# Rate limiting
|
|
273
|
+
- "traefik.http.middlewares.rate-limit.ratelimit.average=100"
|
|
274
|
+
|
|
275
|
+
# Basic auth
|
|
276
|
+
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$..."
|
|
277
|
+
|
|
278
|
+
# CORS
|
|
279
|
+
- "traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist=*"
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## Related
|
|
283
|
+
|
|
284
|
+
- **Skill:** `docker` — Docker setup, compose services, container architecture
|
|
285
|
+
- **Skill:** `devcontainer` — DevContainer and Codespaces setup
|
|
286
|
+
- **Skill:** `grafana` — Grafana dashboards (benefits from HTTPS for embedding)
|
|
287
|
+
- **Skill:** `dashboard-design` — Grafana embedding requires same-origin/HTTPS
|
|
288
|
+
- **Rule:** `docker-commands.md` — all commands run inside Docker containers
|
|
289
|
+
|
|
290
|
+
### Validate
|
|
291
|
+
|
|
292
|
+
- Verify Traefik dashboard is accessible and shows all expected services.
|
|
293
|
+
- Confirm HTTPS works with trusted certificates (no browser warnings).
|
|
294
|
+
- Check that each service has correct Docker labels for routing.
|
|
295
|
+
- Test DNS resolution: `curl -I https://your-domain.localhost` should return 200.
|
|
296
|
+
|
|
297
|
+
## Output format
|
|
298
|
+
|
|
299
|
+
1. Traefik configuration with routing rules and TLS setup
|
|
300
|
+
2. Docker labels or dynamic config for service discovery
|
|
301
|
+
|
|
302
|
+
## Gotcha
|
|
303
|
+
|
|
304
|
+
- Traefik requires Docker labels on each service — a missing label means the service isn't routed.
|
|
305
|
+
- mkcert certificates must be trusted by the OS — `mkcert -install` is a one-time setup step.
|
|
306
|
+
- The model forgets to add the Traefik network to docker-compose services — no network = no routing.
|
|
307
|
+
|
|
308
|
+
## Do NOT
|
|
309
|
+
|
|
310
|
+
- Do NOT expose internal services without authentication.
|
|
311
|
+
- Do NOT use self-signed certificates when mkcert is available.
|
|
312
|
+
|
|
313
|
+
## Auto-trigger keywords
|
|
314
|
+
|
|
315
|
+
- Traefik
|
|
316
|
+
- reverse proxy
|
|
317
|
+
- local domains
|
|
318
|
+
- HTTPS
|
|
319
|
+
- mkcert
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: universal-project-analysis
|
|
3
|
+
description: "ONLY when user explicitly requests: full project analysis, deep codebase audit, or comprehensive architecture review. Routes to core and framework-specific analysis skills."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# universal-project-analysis
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill when:
|
|
12
|
+
|
|
13
|
+
* The user explicitly requests a full project analysis
|
|
14
|
+
* The user wants a deep codebase audit
|
|
15
|
+
* The user wants a comprehensive architecture review
|
|
16
|
+
* The system is large, unclear, or spans multiple layers
|
|
17
|
+
* `analysis-autonomous-mode` routes here for broad understanding
|
|
18
|
+
|
|
19
|
+
Do NOT use when:
|
|
20
|
+
|
|
21
|
+
* The task is normal feature work
|
|
22
|
+
* Only a small isolated code area needs review
|
|
23
|
+
* The issue is already narrow enough for a specialist skill
|
|
24
|
+
* A framework-specific analysis skill can be called directly
|
|
25
|
+
|
|
26
|
+
## Mission
|
|
27
|
+
|
|
28
|
+
Act as the top-level router for deep project investigation.
|
|
29
|
+
|
|
30
|
+
This skill must:
|
|
31
|
+
|
|
32
|
+
* confirm whether full-project analysis is justified
|
|
33
|
+
* identify the stack and framework
|
|
34
|
+
* choose the correct analysis mode
|
|
35
|
+
* route to the right specialist analysis skills
|
|
36
|
+
* define the required output for broad project investigations
|
|
37
|
+
|
|
38
|
+
This skill must NOT become:
|
|
39
|
+
|
|
40
|
+
* a giant framework encyclopedia
|
|
41
|
+
* a shallow pointer-only file
|
|
42
|
+
* a replacement for framework-specific deep-dive skills
|
|
43
|
+
|
|
44
|
+
## Core principles
|
|
45
|
+
|
|
46
|
+
1. Never assume — verify against code, config, docs, and evidence
|
|
47
|
+
2. Version dictates behavior
|
|
48
|
+
3. Broad understanding comes before narrow conclusions
|
|
49
|
+
4. Use framework-specific skills once the stack is known
|
|
50
|
+
5. Use hypothesis-driven analysis when root cause is unclear
|
|
51
|
+
6. Mark uncertainty explicitly
|
|
52
|
+
|
|
53
|
+
## Thinking model
|
|
54
|
+
|
|
55
|
+
Always think in this order:
|
|
56
|
+
|
|
57
|
+
1. Observe
|
|
58
|
+
2. Understand
|
|
59
|
+
3. Verify
|
|
60
|
+
4. Route
|
|
61
|
+
5. Investigate
|
|
62
|
+
6. Conclude
|
|
63
|
+
|
|
64
|
+
## Analysis modes
|
|
65
|
+
|
|
66
|
+
### Exploration mode
|
|
67
|
+
|
|
68
|
+
Use when the system is unknown.
|
|
69
|
+
Goal: understand structure, identify major components, detect investigation paths, choose the next specialist skill.
|
|
70
|
+
|
|
71
|
+
### Investigation mode
|
|
72
|
+
|
|
73
|
+
Use when there is a concrete issue inside a large or unclear system.
|
|
74
|
+
Goal: isolate the affected area, route into root-cause analysis, verify likely causes with evidence.
|
|
75
|
+
|
|
76
|
+
### Optimization mode
|
|
77
|
+
|
|
78
|
+
Use when the system works but may be inefficient or over-complex.
|
|
79
|
+
Goal: identify hot paths, find expensive boundaries, route into architecture or performance specialists.
|
|
80
|
+
|
|
81
|
+
## Procedure
|
|
82
|
+
|
|
83
|
+
### 1. Confirm scope
|
|
84
|
+
|
|
85
|
+
Check whether full-project analysis is really needed.
|
|
86
|
+
Use this skill only if the user wants: broad system understanding, architecture reconstruction, deep multi-layer debugging, broad audit across modules or runtime boundaries.
|
|
87
|
+
If not: route to the narrower specialist skill directly.
|
|
88
|
+
|
|
89
|
+
### 2. Discover the project
|
|
90
|
+
|
|
91
|
+
Identify: language, framework, runtime environment, package managers, major entrypoints, documentation locations.
|
|
92
|
+
Look at: package manifests, lock files, bootstrap files, Docker/CI config, README/AGENTS/docs.
|
|
93
|
+
|
|
94
|
+
### 3. Choose the primary route
|
|
95
|
+
|
|
96
|
+
* unknown or mixed system → `project-analysis-core`
|
|
97
|
+
* concrete root-cause problem → `project-analysis-hypothesis-driven`
|
|
98
|
+
* Laravel → `project-analysis-laravel`
|
|
99
|
+
* Symfony → `project-analysis-symfony`
|
|
100
|
+
* Zend/Laminas → `project-analysis-zend-laminas`
|
|
101
|
+
* Node/Express → `project-analysis-node-express`
|
|
102
|
+
* React → `project-analysis-react`
|
|
103
|
+
* Next.js → `project-analysis-nextjs`
|
|
104
|
+
|
|
105
|
+
### 4. Chain specialists where needed
|
|
106
|
+
|
|
107
|
+
* bottleneck found → `performance-analysis`
|
|
108
|
+
* security concern found → `security-audit`
|
|
109
|
+
* bug isolated → `bug-analyzer`
|
|
110
|
+
|
|
111
|
+
### 5. Consolidate findings
|
|
112
|
+
|
|
113
|
+
Combine: system overview, framework-specific findings, verified risks, explicit uncertainties, next investigation steps.
|
|
114
|
+
|
|
115
|
+
### 6. Validate analysis quality
|
|
116
|
+
|
|
117
|
+
Check:
|
|
118
|
+
|
|
119
|
+
* full-project analysis was actually justified
|
|
120
|
+
* framework detection is explicit
|
|
121
|
+
* chosen specialist skills match the discovered stack
|
|
122
|
+
* uncertainties are marked
|
|
123
|
+
* conclusions are evidence-based
|
|
124
|
+
|
|
125
|
+
## Routing map
|
|
126
|
+
|
|
127
|
+
### Universal analysis skills
|
|
128
|
+
|
|
129
|
+
* `project-analysis-core`
|
|
130
|
+
* `project-analysis-hypothesis-driven`
|
|
131
|
+
|
|
132
|
+
### Framework-specific deep dives
|
|
133
|
+
|
|
134
|
+
* `project-analysis-laravel`
|
|
135
|
+
* `project-analysis-symfony`
|
|
136
|
+
* `project-analysis-zend-laminas`
|
|
137
|
+
* `project-analysis-node-express`
|
|
138
|
+
* `project-analysis-react`
|
|
139
|
+
* `project-analysis-nextjs`
|
|
140
|
+
|
|
141
|
+
### Optional downstream specialists
|
|
142
|
+
|
|
143
|
+
* `bug-analyzer`
|
|
144
|
+
* `performance-analysis`
|
|
145
|
+
* `security-audit`
|
|
146
|
+
|
|
147
|
+
## When to add a new framework analysis skill
|
|
148
|
+
|
|
149
|
+
A framework gets its own `project-analysis-*` skill ONLY if:
|
|
150
|
+
|
|
151
|
+
* it has its own lifecycle that creates unique debugging patterns
|
|
152
|
+
* it produces failure classes that `project-analysis-core` cannot explain
|
|
153
|
+
* debugging it requires framework-specific mental models (not just API knowledge)
|
|
154
|
+
|
|
155
|
+
Examples that qualify: Laravel, Symfony, Express, React, Next.js.
|
|
156
|
+
Examples that do NOT qualify: Tailwind, small utility libraries, CSS frameworks, simple state libs.
|
|
157
|
+
|
|
158
|
+
## Output format
|
|
159
|
+
|
|
160
|
+
1. Investigation summary
|
|
161
|
+
2. Detected stack and framework
|
|
162
|
+
3. Chosen analysis mode
|
|
163
|
+
4. Routed specialist skills
|
|
164
|
+
5. Consolidated findings
|
|
165
|
+
6. Risks and next steps
|
|
166
|
+
|
|
167
|
+
## Gotcha
|
|
168
|
+
|
|
169
|
+
* This skill must remain a real orchestration skill.
|
|
170
|
+
* Do not move long framework-specific deep dives back into this file.
|
|
171
|
+
* Do not let this skill become a generic "analyze everything" bucket.
|
|
172
|
+
|
|
173
|
+
## Do NOT
|
|
174
|
+
|
|
175
|
+
* Do NOT analyze everything here directly if a specialist skill exists
|
|
176
|
+
* Do NOT skip framework detection
|
|
177
|
+
* Do NOT present broad guesses as conclusions
|
|
178
|
+
* Do NOT turn this into a shallow pointer-only file
|
|
179
|
+
* Do NOT duplicate framework-specific deep-dive content here
|