@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,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "refine-ticket"
|
|
3
|
+
description: "Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt."
|
|
4
|
+
personas:
|
|
5
|
+
- developer
|
|
6
|
+
- senior-engineer
|
|
7
|
+
- product-owner
|
|
8
|
+
- stakeholder
|
|
9
|
+
- critical-challenger
|
|
10
|
+
- ai-agent
|
|
11
|
+
source: package
|
|
12
|
+
execution:
|
|
13
|
+
type: assisted
|
|
14
|
+
handler: internal
|
|
15
|
+
allowed_tools: []
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Refine Ticket
|
|
19
|
+
|
|
20
|
+
> Move a ticket from "raw idea" to "implementation-ready" in one run.
|
|
21
|
+
> Produces a rewritten ticket, Top-5 risks, and persona voices.
|
|
22
|
+
> Orchestrates `validate-feature-fit` and `threat-modeling` as sub-skills
|
|
23
|
+
> — never duplicates their logic. Output is copy-paste ready; the user
|
|
24
|
+
> decides write-back.
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
- The user hands over a Jira / Linear ticket key, URL, branch name, or
|
|
29
|
+
pasted ticket text and asks for a sanity check before planning.
|
|
30
|
+
- A ticket looks too vague, too broad, or smells wrong.
|
|
31
|
+
- Before `/feature-plan` or `/feature-explore` on a ticket-anchored scope.
|
|
32
|
+
- The user says "tighten the AC", "poke holes in this ticket",
|
|
33
|
+
"is this ready to plan?", "ist das Ticket klar genug?",
|
|
34
|
+
"verbessere das Ticket".
|
|
35
|
+
|
|
36
|
+
## When NOT to use (near-misses)
|
|
37
|
+
|
|
38
|
+
| Phrasing | Route to |
|
|
39
|
+
|---|---|
|
|
40
|
+
| "plan this feature" | `/feature-plan` (downstream) |
|
|
41
|
+
| "estimate this ticket" | `/estimate-ticket` (sibling, Phase 4) |
|
|
42
|
+
| "is this a duplicate feature?" | `validate-feature-fit` (sub-skill) |
|
|
43
|
+
| "threat-model this change" | `threat-modeling` (sub-skill) |
|
|
44
|
+
| "investigate this bug" | `/bug-investigate` (bug-focused) |
|
|
45
|
+
|
|
46
|
+
`/refine-ticket` **orchestrates** these — it does not replace them.
|
|
47
|
+
|
|
48
|
+
## Language strategy
|
|
49
|
+
|
|
50
|
+
Pick output prose language once, up front; apply to every section.
|
|
51
|
+
First hit wins:
|
|
52
|
+
|
|
53
|
+
1. **User-message language.** Latest user message decides. Honours the
|
|
54
|
+
global `language-and-tone` iron law.
|
|
55
|
+
2. **Ticket body language.** When the user's message is ambiguous
|
|
56
|
+
(one-word `/refine-ticket PROJ-123`), mirror the language the ticket
|
|
57
|
+
is written in (summary + description).
|
|
58
|
+
3. **`.agent-settings.yml` default** (`personal.language` or equivalent).
|
|
59
|
+
If missing, default to English.
|
|
60
|
+
|
|
61
|
+
Quoted identifiers (keys, paths, commands, code) stay native. Only
|
|
62
|
+
prose mirrors the picked language.
|
|
63
|
+
|
|
64
|
+
## Inputs (four equivalent paths)
|
|
65
|
+
|
|
66
|
+
Reuses the `jira-ticket` command's loader. Accepts:
|
|
67
|
+
|
|
68
|
+
1. **Ticket key** — `/refine-ticket PROJ-123`
|
|
69
|
+
2. **Branch detection** — `/refine-ticket` with no arg; regex
|
|
70
|
+
`[A-Z]+-[0-9]+` against `git branch --show-current`
|
|
71
|
+
3. **Pasted text** — `/refine-ticket` followed by a markdown block
|
|
72
|
+
4. **URL** — `/refine-ticket https://acme.atlassian.net/browse/PROJ-123`
|
|
73
|
+
|
|
74
|
+
If none resolve to a ticket, fall back to conversational discovery
|
|
75
|
+
(`feature-explore`-style): ask one focused question, then continue.
|
|
76
|
+
|
|
77
|
+
## Procedure
|
|
78
|
+
|
|
79
|
+
### 1. Load ticket
|
|
80
|
+
|
|
81
|
+
Delegate to `jira-ticket` §1-3:
|
|
82
|
+
- Extract ticket ID (branch / URL / arg).
|
|
83
|
+
- Fetch via Jira API (`GET /issue/{id}`) — summary, description,
|
|
84
|
+
issue type, priority, status, comments, linked issues.
|
|
85
|
+
- Scan description + comments for Sentry URLs; pull stacktrace /
|
|
86
|
+
tags when present.
|
|
87
|
+
|
|
88
|
+
If pasted text: skip API, parse markdown, extract title + AC
|
|
89
|
+
bullets + body.
|
|
90
|
+
|
|
91
|
+
**Auto-fetch parent (Phase F4).** Before detection, check the issue
|
|
92
|
+
type and fold parent context in:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from scripts.refine_ticket_detect import (
|
|
96
|
+
issuetype_needs_parent, fold_parent_context,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
if issuetype_needs_parent(ticket["issuetype"]):
|
|
100
|
+
parent_key = ticket["parent_key"] # from `fields.parent.key`
|
|
101
|
+
parent = fetch_jira_issue(parent_key) # +1 API call
|
|
102
|
+
ticket_body = fold_parent_context(
|
|
103
|
+
ticket_body, parent_body=parent["body"], parent_key=parent_key,
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Rules:
|
|
108
|
+
- Applies to `Story` and `Sub-task` (and Linear / Shortcut equivalents).
|
|
109
|
+
`Task` / `Bug` / `Epic` skip the auto-fetch unless a `parent` link is
|
|
110
|
+
populated — then the agent folds explicitly without the issuetype guard.
|
|
111
|
+
- `fold_parent_context()` is idempotent; folding twice with the same
|
|
112
|
+
parent does not duplicate the block.
|
|
113
|
+
- Parent fetch fails (404, permission, network) → skip the fold, append
|
|
114
|
+
to orchestration notes:
|
|
115
|
+
*"Parent `<key>` not reachable — AC may lack upstream context."*
|
|
116
|
+
|
|
117
|
+
Parent AC lines surfaced this way must be cited verbatim in the refined
|
|
118
|
+
output's *Open questions* section so the user sees which constraints
|
|
119
|
+
come from the parent.
|
|
120
|
+
|
|
121
|
+
### 2. Inspect ticket + detect orchestration triggers
|
|
122
|
+
|
|
123
|
+
Check the loaded ticket for clarity signals before orchestrating:
|
|
124
|
+
- Does the summary match the description body?
|
|
125
|
+
- Are AC bullets concrete (observable / testable) or vague ("works well")?
|
|
126
|
+
- Is the scope one feature, or multiple tangled together?
|
|
127
|
+
- Any sentence that references an existing module name, feature flag, or domain concept?
|
|
128
|
+
|
|
129
|
+
Then run the deterministic detection helper — do **not** re-derive trigger
|
|
130
|
+
logic in prose:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
python3 scripts/refine_ticket_detect.py <ticket-body-file>
|
|
134
|
+
# or, inside the skill run:
|
|
135
|
+
from scripts.refine_ticket_detect import detect, load_map
|
|
136
|
+
decision = detect(ticket_body, load_map(), cwd=Path.cwd())
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The helper consumes [`detection-map.yml`](detection-map.yml) (co-located
|
|
140
|
+
in this skill folder) and returns:
|
|
141
|
+
|
|
142
|
+
- `validate-feature-fit` — fires when ≥ 2 distinct feature-area keywords
|
|
143
|
+
appear in the body (see `sub_skills.validate-feature-fit.keywords`).
|
|
144
|
+
- `threat-modeling` — fires on any auth / webhook / upload / queue /
|
|
145
|
+
secret / tenant / admin / PII / payment keyword, or a `CVE-YYYY-N`
|
|
146
|
+
regex match.
|
|
147
|
+
- `repo_aware` — on when `.git/`, `agents/contexts/`, `composer.json`,
|
|
148
|
+
or `package.json` is present in the cwd; off otherwise.
|
|
149
|
+
- When `repo_aware=True`, `decision.repo_context` is populated by
|
|
150
|
+
`gather_repo_context()`:
|
|
151
|
+
- `recent_branches` — up to 20 most recent local branches (naming
|
|
152
|
+
convention signal).
|
|
153
|
+
- `recent_commits` — up to 30 most recent commit subjects (active
|
|
154
|
+
modules + verb conventions).
|
|
155
|
+
- `context_docs` — every `agents/contexts/*.md` filename (domain
|
|
156
|
+
vocabulary).
|
|
157
|
+
- Outside a repo the context is empty — the skill produces the same
|
|
158
|
+
output shape, minus repo-specific citations (graceful degrade).
|
|
159
|
+
|
|
160
|
+
Use `repo_context.recent_branches` to anchor the "Refined ticket" title
|
|
161
|
+
naming (e.g. `feat/` vs `fix/` vs `refactor/` prefix), and
|
|
162
|
+
`repo_context.context_docs` to cite domain vocabulary in the Top-5
|
|
163
|
+
risks instead of inventing terms.
|
|
164
|
+
|
|
165
|
+
The match lists and `require_count` thresholds are owned by
|
|
166
|
+
`detection-map.yml` — edit the map, not this skill. Tests:
|
|
167
|
+
[`tests/test_refine_ticket_detect.py`](../../../tests/test_refine_ticket_detect.py)
|
|
168
|
+
(17 cases, DE + EN fixtures, repo-aware + graceful-degrade coverage).
|
|
169
|
+
|
|
170
|
+
### 3. Orchestrate
|
|
171
|
+
|
|
172
|
+
For every `SubSkillDecision` with `fired=True`, invoke the named sub-skill
|
|
173
|
+
with the ticket body as input:
|
|
174
|
+
|
|
175
|
+
- `validate-feature-fit` → returns duplicate / scope-creep findings
|
|
176
|
+
- `threat-modeling` → returns trust boundaries + abuse cases
|
|
177
|
+
|
|
178
|
+
**Cite, don't copy** — the output references findings by sub-skill name and
|
|
179
|
+
file:line where applicable. If a sub-skill reports zero findings, emit
|
|
180
|
+
`fired → clean` in the orchestration section. Skipped sub-skills appear
|
|
181
|
+
as `skipped (no trigger match)` — never silently omitted.
|
|
182
|
+
|
|
183
|
+
Each fired finding must map to at least one entry in the Top-5 risks
|
|
184
|
+
section; orchestration that does not influence the risks is waste.
|
|
185
|
+
|
|
186
|
+
### 4. Apply personas
|
|
187
|
+
|
|
188
|
+
Load the persona set from frontmatter (Core-6 default). Each persona
|
|
189
|
+
reviews the ticket through its lens and produces one paragraph:
|
|
190
|
+
|
|
191
|
+
- **Developer** — implementability, unknowns, test seams
|
|
192
|
+
- **Senior Engineer** — architectural fit, blast radius, hidden deps
|
|
193
|
+
- **Product Owner** — value, user story integrity, AC completeness
|
|
194
|
+
- **Stakeholder** — deadline fit, business impact, comms plan
|
|
195
|
+
- **Critical Challenger** — devil's advocate; what's wrong with this?
|
|
196
|
+
- **AI Agent** — automation hooks, tool boundaries, clarity for agents
|
|
197
|
+
|
|
198
|
+
Optional: `--personas=+qa` adds the QA persona (edge cases, regression
|
|
199
|
+
risk, test matrix).
|
|
200
|
+
|
|
201
|
+
### 5. Synthesize + close-prompt
|
|
202
|
+
|
|
203
|
+
Produce the three-section output (template below). After rendering,
|
|
204
|
+
emit the close-prompt (below). Do **not** write to Jira. Do **not**
|
|
205
|
+
open a planning doc.
|
|
206
|
+
|
|
207
|
+
## Output template
|
|
208
|
+
|
|
209
|
+
Frozen per Q25 (see
|
|
210
|
+
[`road-to-ticket-refinement.md`](../../../agents/roadmaps/road-to-ticket-refinement.md)).
|
|
211
|
+
|
|
212
|
+
````markdown
|
|
213
|
+
## Refined ticket
|
|
214
|
+
|
|
215
|
+
**Title:** <rewritten title>
|
|
216
|
+
|
|
217
|
+
<rewritten description — tightened AC, explicit out-of-scope,
|
|
218
|
+
open questions surfaced>
|
|
219
|
+
|
|
220
|
+
## Top-5 risks
|
|
221
|
+
|
|
222
|
+
1. <risk> — <mitigation / deferral>
|
|
223
|
+
2. <risk> — <mitigation / deferral>
|
|
224
|
+
3. <risk> — <mitigation / deferral>
|
|
225
|
+
4. <risk> — <mitigation / deferral>
|
|
226
|
+
5. <risk> — <mitigation / deferral>
|
|
227
|
+
|
|
228
|
+
## Persona voices
|
|
229
|
+
|
|
230
|
+
- **Developer** — <one paragraph>
|
|
231
|
+
- **Senior Engineer** — <one paragraph>
|
|
232
|
+
- **Product Owner** — <one paragraph>
|
|
233
|
+
- **Stakeholder** — <one paragraph>
|
|
234
|
+
- **Critical Challenger** — <one paragraph>
|
|
235
|
+
- **AI Agent** — <one paragraph>
|
|
236
|
+
- **[qa]** — *(only when `--personas=+qa`)* <one paragraph>
|
|
237
|
+
|
|
238
|
+
## Orchestration notes
|
|
239
|
+
|
|
240
|
+
- `validate-feature-fit` — <fired / skipped; key findings or "clean">
|
|
241
|
+
- `threat-modeling` — <fired / skipped; key findings or "clean">
|
|
242
|
+
- Repo-aware — <on / off; contexts loaded>
|
|
243
|
+
````
|
|
244
|
+
|
|
245
|
+
The "Refined ticket" section is wrapped in a **copyable Markdown box**
|
|
246
|
+
so the user can grab it verbatim.
|
|
247
|
+
|
|
248
|
+
## Close-prompt (mandatory final step)
|
|
249
|
+
|
|
250
|
+
**Probe write access first (Phase F6).** Cheap upfront check before
|
|
251
|
+
rendering:
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
from scripts.refine_ticket_detect import render_close_prompt
|
|
255
|
+
|
|
256
|
+
try:
|
|
257
|
+
me = jira_get("/myself") # existence → auth works
|
|
258
|
+
meta = jira_get(f"/issue/{key}/editmeta")# fields → write access
|
|
259
|
+
write = bool(meta.get("fields"))
|
|
260
|
+
except Exception:
|
|
261
|
+
write = None # probe itself failed
|
|
262
|
+
|
|
263
|
+
print(render_close_prompt(write))
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Behaviour:
|
|
267
|
+
|
|
268
|
+
| Probe result | Prompt shape |
|
|
269
|
+
|---|---|
|
|
270
|
+
| Write access present (`True`) | Full three-option prompt (comment / replace / nothing) |
|
|
271
|
+
| Read-only (`False`) | Single option: *"Copy-paste — no write access to this project"* |
|
|
272
|
+
| Probe failed (`None`) | Full three-option prompt; skill degrades to copy-paste on selection (v1 fallback) |
|
|
273
|
+
|
|
274
|
+
Per user interaction rules, accept number or free text. `editmeta`
|
|
275
|
+
is cheap and cacheable; cache per Jira project key for the session,
|
|
276
|
+
re-probe on project change.
|
|
277
|
+
|
|
278
|
+
## Output format
|
|
279
|
+
|
|
280
|
+
1. **Refined ticket** section with rewritten title + description, wrapped in a copyable markdown block.
|
|
281
|
+
2. **Top-5 risks** as a numbered list, each item paired with a mitigation or deferral.
|
|
282
|
+
3. **Persona voices** — one paragraph per persona from the active set; no skipped personas without explicit reason.
|
|
283
|
+
4. **Orchestration notes** naming every sub-skill that fired or was skipped, with a one-line reason.
|
|
284
|
+
5. **Close-prompt** with exactly three numbered options (comment / replace / nothing); no fourth option in v1.
|
|
285
|
+
|
|
286
|
+
## Gotcha
|
|
287
|
+
|
|
288
|
+
- The model tends to invent risks that sound plausible but aren't anchored in the ticket text. Every risk in Top-5 must cite a phrase, AC bullet, or sub-skill finding — no hypotheticals.
|
|
289
|
+
- Persona voices degrade into generic platitudes when the ticket is already tight. If a persona has nothing real to flag, write one sentence stating that — do not pad.
|
|
290
|
+
- Sub-skills (`validate-feature-fit`, `threat-modeling`) cost tokens; orchestrate only when the trigger matrix actually matches, not defensively on every run.
|
|
291
|
+
- Branch-detection matches the first `[A-Z]+-[0-9]+` in the branch name; chained keys (e.g. `feat/PROJ-1-and-PROJ-2`) pick the first and note the rest.
|
|
292
|
+
|
|
293
|
+
## Do NOT
|
|
294
|
+
|
|
295
|
+
- Do NOT write back to Jira in v1 — output is copyable markdown; write-back is user-gated via the close-prompt.
|
|
296
|
+
- Do NOT chain into `/estimate-ticket` or `/feature-plan` automatically — separate invocations by design (Q5 decision).
|
|
297
|
+
- Do NOT duplicate logic from `validate-feature-fit` or `threat-modeling` — orchestrate by reference, cite findings, don't re-derive them.
|
|
298
|
+
- Do NOT skip the close-prompt, even when the ticket looks fine and the user seems eager to move on — the prompt is the contract.
|
|
299
|
+
- Do NOT emit persona voices outside the active set; if the user passed `--personas=+qa`, add QA, otherwise do not.
|
|
300
|
+
|
|
301
|
+
## See also
|
|
302
|
+
|
|
303
|
+
- [`jira-ticket`](../../commands/jira-ticket.md) — ticket loader
|
|
304
|
+
- [`validate-feature-fit`](../validate-feature-fit/SKILL.md) — orchestrated sub-skill
|
|
305
|
+
- [`threat-modeling`](../threat-modeling/SKILL.md) — orchestrated sub-skill
|
|
306
|
+
- [`feature-explore`](../../commands/feature-explore.md) — upstream idea capture; hints at `/refine-ticket` when input looks like a ticket
|
|
307
|
+
- [`feature-plan`](../../commands/feature-plan.md) — downstream planning
|
|
308
|
+
- [`adversarial-review`](../adversarial-review/SKILL.md) — same `critical-challenger` persona, different stage (post-plan)
|
|
309
|
+
- [`road-to-ticket-refinement.md`](../../../agents/roadmaps/road-to-ticket-refinement.md) — governing roadmap
|
|
310
|
+
- [`artifact-drafting-protocol`](../../rules/artifact-drafting-protocol.md) — this skill was drafted under it
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Detection map for refine-ticket orchestration
|
|
2
|
+
#
|
|
3
|
+
# Declares which sub-skills fire on which ticket-body signals.
|
|
4
|
+
# Consumed by:
|
|
5
|
+
# - scripts/refine_ticket_detect.py (deterministic helper, pytest-covered)
|
|
6
|
+
# - the refine-ticket skill's Step 2 (cites this file, never re-derives)
|
|
7
|
+
#
|
|
8
|
+
# Schema:
|
|
9
|
+
# sub_skills:
|
|
10
|
+
# <skill-name>:
|
|
11
|
+
# description: one-line reason this skill should fire
|
|
12
|
+
# keywords: [list of case-insensitive substring signals]
|
|
13
|
+
# require_count: int (minimum distinct matches to fire; default 1)
|
|
14
|
+
# regex: [list of python-compatible regex; any match counts as 1]
|
|
15
|
+
# notes: free text — visible in the orchestration-notes output
|
|
16
|
+
# alternative_signals: (Phase F3, optional)
|
|
17
|
+
# min_distinct_ac_first_words: int # scope-creep proxy
|
|
18
|
+
# min_body_sentences: int # sprawl-in-prose proxy
|
|
19
|
+
|
|
20
|
+
version: 1
|
|
21
|
+
|
|
22
|
+
sub_skills:
|
|
23
|
+
validate-feature-fit:
|
|
24
|
+
description: >
|
|
25
|
+
Ticket body mentions multiple existing feature names — potential
|
|
26
|
+
duplicate or scope-creep signal.
|
|
27
|
+
require_count: 2
|
|
28
|
+
# Feature names are repo-specific; the default list covers common
|
|
29
|
+
# product areas. Projects can extend via agents/overrides/ or by
|
|
30
|
+
# editing a project-local copy of this file.
|
|
31
|
+
keywords:
|
|
32
|
+
- dashboard
|
|
33
|
+
- billing
|
|
34
|
+
- subscription
|
|
35
|
+
- onboarding
|
|
36
|
+
- notifications
|
|
37
|
+
- reporting
|
|
38
|
+
- export
|
|
39
|
+
- import
|
|
40
|
+
- audit log
|
|
41
|
+
- integration
|
|
42
|
+
- api
|
|
43
|
+
- webhook
|
|
44
|
+
- user management
|
|
45
|
+
- permissions
|
|
46
|
+
- roles
|
|
47
|
+
- invoicing
|
|
48
|
+
- admin
|
|
49
|
+
alternative_signals:
|
|
50
|
+
# Phase F3 — scope-creep / prose-sprawl safety net. Thresholds
|
|
51
|
+
# calibrated on existing fixtures so current behaviour does not
|
|
52
|
+
# regress: clean.md (2 sentences / 5 AC first-words) and
|
|
53
|
+
# duplicate_intent.md (3 / 3) stay below the bar; a dedicated
|
|
54
|
+
# scope_creep_prose.md fixture sits above it.
|
|
55
|
+
min_distinct_ac_first_words: 7
|
|
56
|
+
min_body_sentences: 6
|
|
57
|
+
notes: >
|
|
58
|
+
Matches count distinct keywords — if two or more different feature
|
|
59
|
+
names appear in the ticket, validate-feature-fit fires. Single-
|
|
60
|
+
keyword tickets skip this sub-skill, unless the alt-signal
|
|
61
|
+
thresholds catch a scope-creep pattern (many distinct AC first-
|
|
62
|
+
words or a sprawling description body).
|
|
63
|
+
|
|
64
|
+
threat-modeling:
|
|
65
|
+
description: >
|
|
66
|
+
Ticket touches auth / data-sensitivity / trust-boundary surfaces —
|
|
67
|
+
pre-implementation threat model required.
|
|
68
|
+
require_count: 1
|
|
69
|
+
keywords:
|
|
70
|
+
- auth
|
|
71
|
+
- authentication
|
|
72
|
+
- authorization
|
|
73
|
+
- login
|
|
74
|
+
- logout
|
|
75
|
+
- password
|
|
76
|
+
- token
|
|
77
|
+
- jwt
|
|
78
|
+
- oauth
|
|
79
|
+
- session
|
|
80
|
+
- webhook
|
|
81
|
+
- upload
|
|
82
|
+
- file upload
|
|
83
|
+
- queue
|
|
84
|
+
- queued job
|
|
85
|
+
- worker
|
|
86
|
+
- secret
|
|
87
|
+
- secrets
|
|
88
|
+
- api key
|
|
89
|
+
- tenant
|
|
90
|
+
- tenancy
|
|
91
|
+
- multi-tenant
|
|
92
|
+
- admin
|
|
93
|
+
- admin-only
|
|
94
|
+
- pii
|
|
95
|
+
- personal data
|
|
96
|
+
- gdpr
|
|
97
|
+
- public endpoint
|
|
98
|
+
- public api
|
|
99
|
+
- billing
|
|
100
|
+
- payment
|
|
101
|
+
- invoice
|
|
102
|
+
- stripe
|
|
103
|
+
- paypal
|
|
104
|
+
regex:
|
|
105
|
+
- '\bCVE-\d{4}-\d+\b'
|
|
106
|
+
notes: >
|
|
107
|
+
Single-keyword match fires; threat-modeling is cheap and
|
|
108
|
+
security-sensitive tickets are expensive to re-visit post-ship.
|
|
109
|
+
|
|
110
|
+
repo_aware:
|
|
111
|
+
description: >
|
|
112
|
+
When invoked inside a repo clone, /refine-ticket loads
|
|
113
|
+
agents/contexts/ for domain vocabulary and scans recent branches /
|
|
114
|
+
commits for naming conventions. Outside a repo, skip silently.
|
|
115
|
+
signals:
|
|
116
|
+
- path: .git
|
|
117
|
+
type: dir
|
|
118
|
+
- path: agents/contexts
|
|
119
|
+
type: dir
|
|
120
|
+
- path: composer.json
|
|
121
|
+
type: file
|
|
122
|
+
- path: package.json
|
|
123
|
+
type: file
|
|
124
|
+
require_count: 1
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Output-schema contract for `refine-ticket`.
|
|
2
|
+
#
|
|
3
|
+
# Locks the frozen three-section shape of the `## Output template`
|
|
4
|
+
# block so refactors cannot silently drift the output away from what
|
|
5
|
+
# consumers copy-paste into Jira. Enforced by `scripts/skill_linter.py`
|
|
6
|
+
# (`lint_output_schema`) — a drift is a hard error.
|
|
7
|
+
#
|
|
8
|
+
# Governed by: road-to-trigger-evals.md Phase 3.5 (originally deferred
|
|
9
|
+
# from archive/road-to-ticket-refinement.md Phase 1 per Q26).
|
|
10
|
+
|
|
11
|
+
version: 1
|
|
12
|
+
|
|
13
|
+
required_headers:
|
|
14
|
+
- "Refined ticket"
|
|
15
|
+
- "Top-5 risks"
|
|
16
|
+
- "Persona voices"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "refine-ticket",
|
|
3
|
+
"description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings and the four input paths (key, branch, paste, URL). Should-not-trigger covers the four near-miss neighbors (plan / estimate / duplicate / threat-model / bug-investigate) whose vocabulary overlaps with ticket refinement.",
|
|
4
|
+
"queries": [
|
|
5
|
+
{"q": "refine this ticket before I plan it", "trigger": true},
|
|
6
|
+
{"q": "tighten the AC on PROJ-123", "trigger": true},
|
|
7
|
+
{"q": "is this ticket ready for planning?", "trigger": true},
|
|
8
|
+
{"q": "verbessere das Ticket, ist das klar genug?", "trigger": true},
|
|
9
|
+
{"q": "poke holes in this Jira ticket and rewrite it", "trigger": true},
|
|
10
|
+
{"q": "plan the feature described in PROJ-123", "trigger": false, "note": "routes to /feature-plan, not refinement"},
|
|
11
|
+
{"q": "estimate how big PROJ-123 is", "trigger": false, "note": "routes to /estimate-ticket (Phase 4 sibling)"},
|
|
12
|
+
{"q": "is this feature already implemented somewhere?", "trigger": false, "note": "routes to validate-feature-fit directly"},
|
|
13
|
+
{"q": "threat-model the webhook endpoint in PROJ-123", "trigger": false, "note": "routes to threat-modeling directly"},
|
|
14
|
+
{"q": "investigate this bug — I think there's a Sentry issue linked", "trigger": false, "note": "routes to /bug-investigate"}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requesting-code-review
|
|
3
|
+
description: "Use when asking for a review or creating a PR — self-review first, frame the right context, test plan included — even when the user just says 'open a PR' or 'ready to merge'."
|
|
4
|
+
personas:
|
|
5
|
+
- critical-challenger
|
|
6
|
+
source: package
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# requesting-code-review
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
* About to run `/create-pr` or `/prepare-for-review`
|
|
14
|
+
* Feature or bug fix is code-complete and the next step is "get eyes on it"
|
|
15
|
+
* A stacked PR is ready and the parent-branch reviewer needs to
|
|
16
|
+
context-switch smoothly
|
|
17
|
+
* Asking a human for a quick sanity check on a specific commit or diff
|
|
18
|
+
|
|
19
|
+
Do NOT use when:
|
|
20
|
+
|
|
21
|
+
* You are *processing* review feedback — use [`receiving-code-review`](../receiving-code-review/SKILL.md)
|
|
22
|
+
* Branch is not yet code-complete — the review-request gate requires
|
|
23
|
+
green tests and a clean diff
|
|
24
|
+
* Change is documentation-only with no behavior impact
|
|
25
|
+
|
|
26
|
+
## Goal
|
|
27
|
+
|
|
28
|
+
Give the reviewer exactly the context they need — what changed, why,
|
|
29
|
+
how to verify — without forcing them to reconstruct your thought
|
|
30
|
+
process. A well-framed review request **halves** review time and
|
|
31
|
+
**reduces** back-and-forth on missing context.
|
|
32
|
+
|
|
33
|
+
## The Iron Law
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
NEVER REQUEST REVIEW FROM A BRANCH YOU HAVE NOT REVIEWED YOURSELF.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Self-review is the single cheapest filter. Catches the issues a human
|
|
40
|
+
reviewer would flag in round one, so the human can spend time on
|
|
41
|
+
issues only they can see.
|
|
42
|
+
|
|
43
|
+
## Procedure
|
|
44
|
+
|
|
45
|
+
### 1. Self-review first
|
|
46
|
+
|
|
47
|
+
Before asking anyone else:
|
|
48
|
+
|
|
49
|
+
* Read the full diff (`git diff <base>...<head>`), not just files you
|
|
50
|
+
remember touching
|
|
51
|
+
* Check for accidental debug output, dead code, leftover `dd()`,
|
|
52
|
+
`console.log`, commented-out blocks
|
|
53
|
+
* Check for secrets in diff — API keys, connection strings, tokens
|
|
54
|
+
* Check file-system side effects — generated files, lockfile churn,
|
|
55
|
+
IDE configs, `.env` changes
|
|
56
|
+
* Run the linter + tests (see [`verify-before-complete`](../verify-before-complete/SKILL.md))
|
|
57
|
+
* Find issues → fix them, do **not** ship and hope the reviewer flags
|
|
58
|
+
|
|
59
|
+
Use [`review-changes`](../../commands/review-changes.md) as the
|
|
60
|
+
structured walk-through.
|
|
61
|
+
|
|
62
|
+
### 2. Establish the diff baseline
|
|
63
|
+
|
|
64
|
+
Determine the correct base commit:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Simple branch from main
|
|
68
|
+
BASE=$(git merge-base HEAD main)
|
|
69
|
+
|
|
70
|
+
# Stacked PR — parent branch is base, not main
|
|
71
|
+
BASE=$(git merge-base HEAD <parent-branch>)
|
|
72
|
+
|
|
73
|
+
HEAD=$(git rev-parse HEAD)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The base matters for the reviewer's diff view — wrong base = they
|
|
77
|
+
review 80 unrelated commits.
|
|
78
|
+
|
|
79
|
+
### 3. Write the review request context
|
|
80
|
+
|
|
81
|
+
Any review request must answer four questions. Missing any → the
|
|
82
|
+
reviewer will ask, and that round trip is preventable.
|
|
83
|
+
|
|
84
|
+
| Question | Where it lives |
|
|
85
|
+
|---|---|
|
|
86
|
+
| **What changed?** | PR title (imperative, Conventional Commits) + summary bullets |
|
|
87
|
+
| **Why?** | Link to ticket / issue / Sentry event / user message |
|
|
88
|
+
| **How do I verify it?** | Test plan: commands to run, URLs to hit, expected behavior |
|
|
89
|
+
| **What should I look at first?** | Highlights: "pay attention to X because Y" or "skip Z, it is generated" |
|
|
90
|
+
|
|
91
|
+
See [`create-pr-description`](../../commands/create-pr-description.md)
|
|
92
|
+
for the full structured template, and
|
|
93
|
+
[`conventional-commits-writing`](../conventional-commits-writing/SKILL.md)
|
|
94
|
+
for the title format.
|
|
95
|
+
|
|
96
|
+
### 4. Keep the PR reviewable in size
|
|
97
|
+
|
|
98
|
+
* Target < 400 lines of real diff (excluding generated / lockfiles)
|
|
99
|
+
* Bigger — consider splitting into a stack (refactor PR → feature PR)
|
|
100
|
+
so reviewers can handle each in one sitting
|
|
101
|
+
* Flag generated files explicitly in the description so reviewers skip
|
|
102
|
+
* Never mix a refactor + behavior change in one PR — reviewers cannot
|
|
103
|
+
isolate the risk
|
|
104
|
+
|
|
105
|
+
### 5. Pick the right reviewer set
|
|
106
|
+
|
|
107
|
+
* **Architectural impact** → code owner for the affected area
|
|
108
|
+
* **Security-sensitive** → a security-reviewer role if the project has one
|
|
109
|
+
* **Bots** → let Copilot / Greptile / Augment run automatically; do not
|
|
110
|
+
gate human review on bot completion
|
|
111
|
+
* **Cross-team change** → each affected team's owner
|
|
112
|
+
|
|
113
|
+
Project with a `CODEOWNERS` file → GitHub handles this automatically;
|
|
114
|
+
do not override without a reason.
|
|
115
|
+
|
|
116
|
+
### 6. Send and wait — do not nudge early
|
|
117
|
+
|
|
118
|
+
After the PR is open:
|
|
119
|
+
|
|
120
|
+
* Respond to questions, not to the implicit "where is my review?"
|
|
121
|
+
schedule
|
|
122
|
+
* Review blocking and overdue → a single short nudge is appropriate;
|
|
123
|
+
do not re-open or force-push to bump the PR list
|
|
124
|
+
|
|
125
|
+
When review comments arrive → switch to
|
|
126
|
+
[`receiving-code-review`](../receiving-code-review/SKILL.md).
|
|
127
|
+
|
|
128
|
+
## Output format
|
|
129
|
+
|
|
130
|
+
When handing the review request to the reviewer (PR body, Slack, email):
|
|
131
|
+
|
|
132
|
+
1. **Title** — Conventional Commit imperative
|
|
133
|
+
2. **Summary** — 2–5 bullets of what changed
|
|
134
|
+
3. **Motivation** — why, with ticket / Sentry / user-message link
|
|
135
|
+
4. **Test plan** — exact commands or URLs + expected result
|
|
136
|
+
5. **Risk / scope notes** — what the reviewer should pay attention to
|
|
137
|
+
6. **Non-goals** — what this PR deliberately does **not** do
|
|
138
|
+
7. **Screenshots / logs** — when UI or runtime behavior changed
|
|
139
|
+
|
|
140
|
+
## Gotchas
|
|
141
|
+
|
|
142
|
+
* "Ready for review" on a red CI run signals carelessness — wait for
|
|
143
|
+
green or explain the specific failure
|
|
144
|
+
* A 1000-line PR with "no behavior change" still needs review — the
|
|
145
|
+
reviewer has no way to confirm "no behavior change" without reading
|
|
146
|
+
every line
|
|
147
|
+
* Auto-merge on approval bypasses re-review after later force-pushes —
|
|
148
|
+
use deliberately, not by habit
|
|
149
|
+
* A PR description saying "see the code" is not a description —
|
|
150
|
+
reviewers need the why
|
|
151
|
+
* Requesting review from someone without context (new hire, other
|
|
152
|
+
team) without a longer pairing — they cannot do a deep review cold
|
|
153
|
+
* Rebasing during review invalidates line-comments; let reviewers
|
|
154
|
+
finish a round before rebasing when possible
|
|
155
|
+
|
|
156
|
+
## Do NOT
|
|
157
|
+
|
|
158
|
+
* Do NOT request review before self-review
|
|
159
|
+
* Do NOT request review on a branch with failing CI (except when
|
|
160
|
+
explicitly documenting "CI broken, please eyeball X only")
|
|
161
|
+
* Do NOT mix unrelated changes in one PR
|
|
162
|
+
* Do NOT force-push during active review without a good reason and a
|
|
163
|
+
note to the reviewer
|
|
164
|
+
* Do NOT leave the PR description empty
|
|
165
|
+
* Do NOT request review from reviewers who lack context just to get
|
|
166
|
+
approvals
|
|
167
|
+
|
|
168
|
+
## Anti-patterns
|
|
169
|
+
|
|
170
|
+
* "Small cleanup" titles on 800-line diffs
|
|
171
|
+
* Test plan that says "should work"
|
|
172
|
+
* Hiding a risky change inside a 40-file refactor PR
|
|
173
|
+
* Pinging reviewers before CI goes green
|
|
174
|
+
* Requesting review as a substitute for thinking the problem through
|
|
175
|
+
|
|
176
|
+
## When to hand over to another skill / command
|
|
177
|
+
|
|
178
|
+
* Self-review walkthrough → [`review-changes`](../../commands/review-changes.md)
|
|
179
|
+
* Bringing a stacked branch up to date first →
|
|
180
|
+
[`prepare-for-review`](../../commands/prepare-for-review.md)
|
|
181
|
+
* Writing the PR description → [`create-pr-description`](../../commands/create-pr-description.md)
|
|
182
|
+
* Actually opening the PR → [`create-pr`](../../commands/create-pr.md)
|
|
183
|
+
* Writing the commits themselves → [`commit`](../../commands/commit.md),
|
|
184
|
+
[`conventional-commits-writing`](../conventional-commits-writing/SKILL.md)
|
|
185
|
+
* Verifying readiness → [`verify-before-complete`](../verify-before-complete/SKILL.md)
|
|
186
|
+
* Processing the feedback when it arrives → [`receiving-code-review`](../receiving-code-review/SKILL.md)
|
|
187
|
+
|
|
188
|
+
## Validation checklist
|
|
189
|
+
|
|
190
|
+
Before asking for review:
|
|
191
|
+
|
|
192
|
+
* [ ] Self-review walkthrough done on the full diff
|
|
193
|
+
* [ ] Linter + targeted tests + full test suite green
|
|
194
|
+
* [ ] PR title follows Conventional Commits
|
|
195
|
+
* [ ] PR description has summary, motivation, test plan, risk notes
|
|
196
|
+
* [ ] Diff is reviewable in size (split if > 400 lines of real code)
|
|
197
|
+
* [ ] CODEOWNERS / reviewer set is correct
|
|
198
|
+
* [ ] No debug code, secrets, or stray files in the diff
|
|
199
|
+
* [ ] No unrelated changes bundled in
|