@event4u/agent-config 1.20.0 → 1.22.0
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/commands/agents.md +1 -1
- package/.agent-src/commands/bug-fix.md +2 -1
- package/.agent-src/commands/bug-investigate.md +3 -2
- package/.agent-src/commands/challenge-me/vision.md +348 -0
- package/.agent-src/commands/challenge-me/with-docs.md +333 -0
- package/.agent-src/commands/challenge-me.md +61 -0
- package/.agent-src/commands/chat-history/import.md +60 -64
- package/.agent-src/commands/compress.md +12 -0
- package/.agent-src/commands/context/create.md +2 -2
- package/.agent-src/commands/context.md +1 -1
- package/.agent-src/commands/copilot-agents.md +1 -1
- package/.agent-src/commands/council/default.md +69 -10
- package/.agent-src/commands/council.md +1 -1
- package/.agent-src/commands/create-pr.md +7 -3
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/feature/dev.md +3 -3
- package/.agent-src/commands/feature.md +1 -1
- package/.agent-src/commands/fix/seeder.md +2 -2
- package/.agent-src/commands/fix.md +1 -1
- package/.agent-src/commands/grill-me.md +38 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/judge/steps.md +1 -1
- package/.agent-src/commands/judge.md +2 -2
- package/.agent-src/commands/memory.md +1 -1
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/module.md +1 -1
- package/.agent-src/commands/onboard.md +4 -4
- package/.agent-src/commands/optimize/augmentignore.md +1 -1
- package/.agent-src/commands/optimize-prompt.md +61 -0
- package/.agent-src/commands/optimize.md +1 -1
- package/.agent-src/commands/override.md +1 -1
- package/.agent-src/commands/review-changes.md +1 -1
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/roadmap/ai-council.md +183 -0
- package/.agent-src/commands/roadmap/create.md +6 -1
- package/.agent-src/commands/roadmap/process-full.md +58 -0
- package/.agent-src/commands/roadmap/process-phase.md +69 -0
- package/.agent-src/commands/roadmap/process-step.md +57 -0
- package/.agent-src/commands/roadmap.md +45 -17
- package/.agent-src/commands/set-cost-profile.md +3 -3
- package/.agent-src/commands/sync-agent-settings.md +2 -2
- package/.agent-src/commands/tests/create.md +2 -2
- package/.agent-src/commands/tests.md +1 -1
- package/.agent-src/commands/threat-model.md +5 -4
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
- package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
- package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
- package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +54 -19
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
- package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +125 -0
- package/.agent-src/contexts/model-recommendations.md +2 -2
- package/.agent-src/contexts/override-system.md +1 -1
- package/.agent-src/contexts/skills-and-commands.md +1 -1
- package/.agent-src/personas/product-owner.md +2 -2
- package/.agent-src/personas/qa.md +1 -1
- package/.agent-src/rules/agent-authority.md +5 -6
- package/.agent-src/rules/agent-docs.md +11 -53
- package/.agent-src/rules/analysis-skill-routing.md +10 -40
- package/.agent-src/rules/architecture.md +6 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
- package/.agent-src/rules/artifact-engagement-recording.md +23 -59
- package/.agent-src/rules/ask-when-uncertain.md +24 -47
- package/.agent-src/rules/augment-portability.md +14 -62
- package/.agent-src/rules/augment-source-of-truth.md +10 -1
- package/.agent-src/rules/autonomous-execution.md +17 -98
- package/.agent-src/rules/capture-learnings.md +9 -80
- package/.agent-src/rules/cli-output-handling.md +12 -42
- package/.agent-src/rules/command-suggestion-policy.md +25 -73
- package/.agent-src/rules/commit-conventions.md +9 -58
- package/.agent-src/rules/commit-policy.md +16 -47
- package/.agent-src/rules/context-hygiene.md +5 -0
- package/.agent-src/rules/direct-answers.md +21 -50
- package/.agent-src/rules/docker-commands.md +11 -45
- package/.agent-src/rules/docs-sync.md +10 -56
- package/.agent-src/rules/downstream-changes.md +5 -0
- package/.agent-src/rules/e2e-testing.md +9 -44
- package/.agent-src/rules/guidelines.md +13 -75
- package/.agent-src/rules/improve-before-implement.md +11 -2
- package/.agent-src/rules/invite-challenge.md +71 -0
- package/.agent-src/rules/language-and-tone.md +41 -106
- package/.agent-src/rules/laravel-translations.md +11 -40
- package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
- package/.agent-src/rules/minimal-safe-diff.md +4 -0
- package/.agent-src/rules/missing-tool-handling.md +4 -0
- package/.agent-src/rules/model-recommendation.md +9 -61
- package/.agent-src/rules/no-attribution-footers.md +5 -0
- package/.agent-src/rules/no-cheap-questions.md +11 -27
- package/.agent-src/rules/no-council-references.md +76 -0
- package/.agent-src/rules/no-roadmap-references.md +7 -0
- package/.agent-src/rules/non-destructive-by-default.md +13 -43
- package/.agent-src/rules/onboarding-gate.md +9 -117
- package/.agent-src/rules/package-ci-checks.md +10 -37
- package/.agent-src/rules/php-coding.md +10 -55
- package/.agent-src/rules/preservation-guard.md +9 -0
- package/.agent-src/rules/review-routing-awareness.md +9 -97
- package/.agent-src/rules/reviewer-awareness.md +8 -83
- package/.agent-src/rules/roadmap-progress-sync.md +7 -170
- package/.agent-src/rules/role-mode-adherence.md +6 -2
- package/.agent-src/rules/rule-type-governance.md +8 -66
- package/.agent-src/rules/runtime-safety.md +5 -0
- package/.agent-src/rules/scope-control.md +17 -62
- package/.agent-src/rules/security-sensitive-stop.md +7 -1
- package/.agent-src/rules/size-enforcement.md +6 -1
- package/.agent-src/rules/skill-improvement-trigger.md +9 -49
- package/.agent-src/rules/skill-quality.md +7 -113
- package/.agent-src/rules/slash-command-routing-policy.md +11 -63
- package/.agent-src/rules/think-before-action.md +22 -87
- package/.agent-src/rules/token-efficiency.md +10 -74
- package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
- package/.agent-src/rules/tool-safety.md +4 -0
- package/.agent-src/rules/ui-audit-gate.md +25 -61
- package/.agent-src/rules/upstream-proposal.md +9 -67
- package/.agent-src/rules/user-interaction.md +22 -108
- package/.agent-src/rules/verify-before-complete.md +1 -1
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/.agent-src/skills/ai-council/SKILL.md +197 -8
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/.agent-src/skills/authz-review/SKILL.md +1 -1
- package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
- package/.agent-src/skills/bug-analyzer/SKILL.md +6 -5
- package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
- package/.agent-src/skills/code-review/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +11 -0
- package/.agent-src/skills/composer-packages/SKILL.md +2 -2
- package/.agent-src/skills/context-authoring/SKILL.md +11 -0
- package/.agent-src/skills/context-document/SKILL.md +1 -1
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
- package/.agent-src/skills/copilot-config/SKILL.md +1 -1
- package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
- package/.agent-src/skills/devcontainer/SKILL.md +2 -2
- package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
- package/.agent-src/skills/docker/SKILL.md +1 -1
- package/.agent-src/skills/dto-creator/SKILL.md +1 -1
- package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/.agent-src/skills/fe-design/SKILL.md +4 -4
- package/.agent-src/skills/feature-planning/SKILL.md +5 -5
- package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
- package/.agent-src/skills/laravel/SKILL.md +1 -1
- package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
- package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
- package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
- package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
- package/.agent-src/skills/migration-creator/SKILL.md +7 -7
- package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
- package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
- package/.agent-src/skills/pest-testing/SKILL.md +6 -6
- package/.agent-src/skills/php-service/SKILL.md +2 -2
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
- package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/roadmap-management/SKILL.md +7 -7
- package/.agent-src/skills/rule-writing/SKILL.md +33 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +14 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +22 -2
- package/.agent-src/skills/technical-specification/SKILL.md +58 -1
- package/.agent-src/skills/terraform/SKILL.md +2 -2
- package/.agent-src/skills/terragrunt/SKILL.md +8 -8
- package/.agent-src/skills/test-performance/SKILL.md +5 -5
- package/.agent-src/skills/threat-modeling/SKILL.md +3 -2
- package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/.agent-src/templates/AGENTS.md +1 -1
- package/.agent-src/templates/agent-settings.md +35 -19
- package/.agent-src/templates/command.md +17 -1
- package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +21 -0
- package/.agent-src/templates/copilot-review-instructions.md +76 -0
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/roadmaps.md +10 -2
- package/.agent-src/templates/rule.md +129 -0
- package/.agent-src/templates/skill.md +17 -0
- package/.claude-plugin/marketplace.json +12 -2
- package/AGENTS.md +32 -5
- package/CHANGELOG.md +107 -3
- package/README.md +22 -21
- package/config/agent-settings.template.yml +66 -10
- package/config/gitignore-block.txt +7 -0
- package/docs/architecture.md +86 -5
- package/docs/catalog.md +16 -6
- package/docs/contracts/agent-memory-contract.md +1 -1
- package/docs/contracts/command-clusters.md +45 -1
- package/docs/contracts/context-paths.md +2 -1
- package/docs/contracts/file-ownership-matrix.json +354 -500
- package/docs/contracts/iron-law-overrides.txt +25 -0
- package/docs/contracts/kernel-membership.md +273 -0
- package/docs/contracts/load-context-schema.md +26 -11
- package/docs/contracts/pilot/agent-authority.md +24 -0
- package/docs/contracts/pilot/direct-answers.md +70 -0
- package/docs/contracts/pilot/language-and-tone.md +63 -0
- package/docs/contracts/rule-classification.md +170 -0
- package/docs/contracts/rule-router.md +153 -0
- package/docs/customization.md +17 -6
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +126 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
- package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
- package/docs/guidelines/augment-portability-patterns.md +68 -0
- package/docs/guidelines/php/php-coding-patterns.md +62 -0
- package/package.json +1 -1
- package/scripts/_p43_bodies.py +235 -0
- package/scripts/_p43_compress.py +118 -0
- package/scripts/_p4_migrate.py +199 -0
- package/scripts/_phase2_shim_helper.py +1 -1
- package/scripts/_pilot_council_question.py +57 -0
- package/scripts/_pilot_measure.py +53 -0
- package/scripts/ai_council/session.py +107 -5
- package/scripts/build_linear_digest.py +3 -5
- package/scripts/check_always_budget.py +39 -6
- package/scripts/check_compressed_paths.py +213 -0
- package/scripts/check_compression.py +15 -0
- package/scripts/check_context_paths.py +1 -0
- package/scripts/check_council_layout.py +105 -0
- package/scripts/check_council_references.py +145 -0
- package/scripts/check_portability.py +2 -0
- package/scripts/check_references.py +2 -0
- package/scripts/check_token_optimizer_freshness.py +131 -0
- package/scripts/compile_router.py +148 -0
- package/scripts/compress.py +219 -11
- package/scripts/council_cli.py +132 -11
- package/scripts/council_prune.py +81 -0
- package/scripts/count_token_optimizer_usage.sh +54 -0
- package/scripts/install.sh +44 -2
- package/scripts/iron_law_sha.py +98 -0
- package/scripts/lint_load_context.py +35 -5
- package/scripts/measure_rule_budget.py +314 -0
- package/scripts/migrate_command_suggestions.py +2 -2
- package/scripts/prototype_lint_contradictions.py +150 -0
- package/scripts/schemas/command.schema.json +5 -0
- package/scripts/schemas/rule.schema.json +60 -6
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +197 -7
- package/scripts/smoke_path_resolution.py +93 -0
- package/scripts/validate_frontmatter.py +41 -1
- package/.agent-src/commands/roadmap/execute.md +0 -109
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
- /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
- /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
|
@@ -80,7 +80,7 @@ Focus on code paths with high execution frequency or large data volumes:
|
|
|
80
80
|
- Missing CDN for static assets
|
|
81
81
|
- Missing response caching for read-heavy endpoints
|
|
82
82
|
- Database connection pooling and limits
|
|
83
|
-
- Queue worker concurrency vs
|
|
83
|
+
- Queue worker concurrency vs DB connection limits
|
|
84
84
|
|
|
85
85
|
## Output format
|
|
86
86
|
|
|
@@ -101,12 +101,12 @@ For each bottleneck:
|
|
|
101
101
|
- **performance** — complementary: performance is about writing fast code, this is about finding slow code
|
|
102
102
|
- **test-performance** — for test suite speed specifically
|
|
103
103
|
- **bug-analyzer** — some performance issues are actually bugs (N+1, infinite loops)
|
|
104
|
-
- **
|
|
104
|
+
- **DB** — for deep DB optimization guidance
|
|
105
105
|
|
|
106
106
|
## Gotcha
|
|
107
107
|
|
|
108
108
|
- Don't present raw numbers without context — "200ms" means nothing without knowing the baseline.
|
|
109
|
-
- The model tends to focus on code-level optimization when the bottleneck is a
|
|
109
|
+
- The model tends to focus on code-level optimization when the bottleneck is a DB query.
|
|
110
110
|
- Profiling in development differs from production — different data volumes, different query plans.
|
|
111
111
|
|
|
112
112
|
## Do NOT
|
|
@@ -53,9 +53,9 @@ For bug fixes and new features, prefer test-driven development:
|
|
|
53
53
|
|
|
54
54
|
### Why test-first matters
|
|
55
55
|
|
|
56
|
-
Tests written **after**
|
|
56
|
+
Tests written **after** impl pass immediately. Passing immediately proves nothing:
|
|
57
57
|
- The test might test the wrong thing.
|
|
58
|
-
- The test might test
|
|
58
|
+
- The test might test impl, not behavior.
|
|
59
59
|
- You never saw it catch the bug — so you don't know if it would.
|
|
60
60
|
|
|
61
61
|
### Bug fix TDD
|
|
@@ -120,7 +120,7 @@ The test proves the fix works AND prevents regression.
|
|
|
120
120
|
- For JSON APIs, assert:
|
|
121
121
|
- exact relevant fields
|
|
122
122
|
- error structure when applicable
|
|
123
|
-
-
|
|
123
|
+
- DB state after the request
|
|
124
124
|
- Do not only assert `200` — verify meaningful behavior.
|
|
125
125
|
|
|
126
126
|
## Validation tests
|
|
@@ -258,7 +258,7 @@ When reviewing or auditing existing tests, check for these anti-patterns:
|
|
|
258
258
|
|
|
259
259
|
- Do not test private methods directly.
|
|
260
260
|
- Do not over-mock Laravel internals.
|
|
261
|
-
- Do not assert
|
|
261
|
+
- Do not assert impl details when behavior assertions are enough.
|
|
262
262
|
- Do not write brittle tests tied to formatting or irrelevant response noise.
|
|
263
263
|
- Do not create giant tests that cover many behaviors at once.
|
|
264
264
|
- Do not skip authorization or validation coverage for important endpoints.
|
|
@@ -285,7 +285,7 @@ When generating Pest tests:
|
|
|
285
285
|
- Don't use `readonly` or `final` on Pest test helper classes — it breaks mocking.
|
|
286
286
|
- Don't add `use` statements for global classes (`Exception`, `DateTimeImmutable`) in Pest files — they're auto-imported.
|
|
287
287
|
- The model forgets `$this->travel(5)->seconds()` for time-dependent tests — never rely on `now()` differing between lines.
|
|
288
|
-
- Parallel tests share the
|
|
288
|
+
- Parallel tests share the DB — don't assume column values are null unless you explicitly set them.
|
|
289
289
|
|
|
290
290
|
## Do NOT
|
|
291
291
|
|
|
@@ -297,7 +297,7 @@ When generating Pest tests:
|
|
|
297
297
|
When generating new tests, focus on:
|
|
298
298
|
- **Business logic**: calculations, status transitions, validation rules, data transformations
|
|
299
299
|
- **Edge cases**: null, empty string, zero, negative numbers, boundary values, max length
|
|
300
|
-
- **Error paths**: invalid input, missing
|
|
300
|
+
- **Error paths**: invalid input, missing deps, exception handling
|
|
301
301
|
- **Different code branches**: if/else, early returns, fallback behavior
|
|
302
302
|
|
|
303
303
|
What NOT to test:
|
|
@@ -38,7 +38,7 @@ Do NOT use when:
|
|
|
38
38
|
1. Location: `app/Services/{Domain}/` or `app/Modules/{Module}/App/Services/`.
|
|
39
39
|
2. `declare(strict_types=1)`, proper namespace.
|
|
40
40
|
3. Constructor inject dependencies (repositories, other services).
|
|
41
|
-
4. Max 4 constructor
|
|
41
|
+
4. Max 4 constructor deps — if more, split the service.
|
|
42
42
|
|
|
43
43
|
### Step 2: Implement methods
|
|
44
44
|
|
|
@@ -69,7 +69,7 @@ public function __invoke(
|
|
|
69
69
|
|
|
70
70
|
- Run PHPStan on the service — must pass at level 9.
|
|
71
71
|
- Verify single responsibility: service does one thing, no mixed concerns.
|
|
72
|
-
- Confirm all
|
|
72
|
+
- Confirm all deps are constructor-injected (no `app()` or facades in service).
|
|
73
73
|
- Run affected tests — must pass.
|
|
74
74
|
|
|
75
75
|
## Output format
|
|
@@ -11,7 +11,7 @@ source: package
|
|
|
11
11
|
Use this skill when:
|
|
12
12
|
|
|
13
13
|
* There is a concrete issue to explain
|
|
14
|
-
* Multiple root
|
|
14
|
+
* Multiple root → are plausible
|
|
15
15
|
* The system spans several layers
|
|
16
16
|
* A shallow single-explanation answer would be risky
|
|
17
17
|
* `universal-project-analysis` or `bug-analyzer` routes here
|
|
@@ -27,7 +27,7 @@ Do NOT use when:
|
|
|
27
27
|
* Never stop at the first plausible explanation
|
|
28
28
|
* Code, docs, and evidence beat intuition
|
|
29
29
|
* Rejected hypotheses matter
|
|
30
|
-
* Multiple interacting
|
|
30
|
+
* Multiple interacting → are common
|
|
31
31
|
* Uncertainty must be marked explicitly
|
|
32
32
|
|
|
33
33
|
## Procedure
|
|
@@ -89,7 +89,7 @@ Ask:
|
|
|
89
89
|
|
|
90
90
|
* does this fully explain the behavior?
|
|
91
91
|
* what remains unexplained?
|
|
92
|
-
* could multiple
|
|
92
|
+
* could multiple → interact?
|
|
93
93
|
* does contradictory evidence exist?
|
|
94
94
|
|
|
95
95
|
If anything major remains unexplained: continue analysis, do not present a final conclusion yet.
|
|
@@ -107,7 +107,7 @@ Check:
|
|
|
107
107
|
## Gotcha
|
|
108
108
|
|
|
109
109
|
* React bugs often come from stale state, not broken logic.
|
|
110
|
-
* Missing
|
|
110
|
+
* Missing deps in hooks are one of the most common root causes.
|
|
111
111
|
* Overusing memoization can make code harder to reason about without solving real problems.
|
|
112
112
|
|
|
113
113
|
## Do NOT
|
|
@@ -34,7 +34,7 @@ Do NOT use when:
|
|
|
34
34
|
### 1. Confirm Symfony version and app shape
|
|
35
35
|
|
|
36
36
|
Check: `composer.lock`, `composer.json`, Symfony packages/components, PHP version, environment config structure.
|
|
37
|
-
Validate: Symfony version is explicit, major bundles/components are identified,
|
|
37
|
+
Validate: Symfony version is explicit, major bundles/components are identified, env-specific config layout is known.
|
|
38
38
|
|
|
39
39
|
### 2. Analyze kernel and container boot
|
|
40
40
|
|
|
@@ -44,7 +44,7 @@ Check:
|
|
|
44
44
|
|
|
45
45
|
* merge order surprises
|
|
46
46
|
* missing overrides
|
|
47
|
-
*
|
|
47
|
+
* env config mismatches
|
|
48
48
|
* heavy bootstrap logic
|
|
49
49
|
|
|
50
50
|
### 3. Analyze ServiceManager behavior
|
|
@@ -96,7 +96,7 @@ Check:
|
|
|
96
96
|
## Gotcha
|
|
97
97
|
|
|
98
98
|
* Many Zend/Laminas issues are caused by config order and service resolution, not controller code.
|
|
99
|
-
* Shared services and legacy migration remnants can create cross-request or
|
|
99
|
+
* Shared services and legacy migration remnants can create cross-request or env-specific bugs.
|
|
100
100
|
* Old project behavior may depend on historical bootstrap side effects that are easy to miss.
|
|
101
101
|
|
|
102
102
|
## Do NOT
|
|
@@ -233,7 +233,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
233
233
|
### Phase 3: Data layer
|
|
234
234
|
|
|
235
235
|
- List all models with their connections, tables, and key relationships
|
|
236
|
-
- Map
|
|
236
|
+
- Map DB schema: tables, foreign keys, indexes
|
|
237
237
|
- Document multi-tenant split (which tables in which DB)
|
|
238
238
|
- **Output:** `agents/analysis/models/api-database.md`, `customer-database.md`
|
|
239
239
|
|
|
@@ -242,7 +242,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
242
242
|
- Identify domains from models, services, routes, and directory structure
|
|
243
243
|
- For each domain: map models → services → controllers → jobs → events
|
|
244
244
|
- Document business rules and data flows
|
|
245
|
-
- Document inter-domain
|
|
245
|
+
- Document inter-domain deps
|
|
246
246
|
- **Output:** `agents/analysis/domains/{domain}.md` (one per domain)
|
|
247
247
|
|
|
248
248
|
### Phase 5: API surface
|
|
@@ -254,7 +254,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
254
254
|
|
|
255
255
|
### Phase 6: Service map
|
|
256
256
|
|
|
257
|
-
- List all services with purpose, key methods, and
|
|
257
|
+
- List all services with purpose, key methods, and deps
|
|
258
258
|
- Map service → repository → model relationships
|
|
259
259
|
- Identify God services (too many responsibilities)
|
|
260
260
|
- **Output:** `agents/analysis/services/service-map.md`
|
|
@@ -315,7 +315,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
315
315
|
## Output format
|
|
316
316
|
|
|
317
317
|
1. Structured analysis document in agents/analysis/
|
|
318
|
-
2. Tech stack inventory with versions and
|
|
318
|
+
2. Tech stack inventory with versions and deps
|
|
319
319
|
3. Architecture diagram or module map
|
|
320
320
|
|
|
321
321
|
## Auto-trigger keywords
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prompt-optimizer
|
|
3
|
+
description: "Use when the user wants a prompt optimized for ChatGPT, Claude, Gemini, or another AI — 'make this prompt better', 'optimize for ChatGPT', 'rewrite my prompt' — even without saying 'optimize'."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# prompt-optimizer
|
|
8
|
+
|
|
9
|
+
> Persona: **Lyra** — a master-level prompt-optimization specialist. Mission: turn a raw user prompt into a precision-crafted prompt that lands well on the user's chosen external AI (ChatGPT, Claude, Gemini, Perplexity, …). Sibling of [`refine-prompt`](../refine-prompt/SKILL.md) which is engine-inbound; this skill is engine-outbound (the polished prompt is text the user will paste elsewhere).
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
- The user pastes a rough prompt and asks for it to be optimized, rewritten, sharpened, or "made better".
|
|
14
|
+
- The user mentions a target AI (ChatGPT, Claude, Gemini, Perplexity, Copilot) and wants their prompt tuned for it.
|
|
15
|
+
- The user invokes [`/optimize-prompt`](../../commands/optimize-prompt.md).
|
|
16
|
+
- The user describes a goal ("I need a marketing-email prompt for ChatGPT") and the deliverable is a prompt, not the email itself.
|
|
17
|
+
|
|
18
|
+
## When NOT to use (near-misses)
|
|
19
|
+
|
|
20
|
+
| Phrasing | Route to |
|
|
21
|
+
|---|---|
|
|
22
|
+
| "refine this ticket / prompt for the engine" | [`refine-prompt`](../refine-prompt/SKILL.md) |
|
|
23
|
+
| "make this skill description pushier" | [`description-assist`](../description-assist/SKILL.md) |
|
|
24
|
+
| "write the marketing email itself" | direct execution — the user wants the artifact, not a prompt |
|
|
25
|
+
| "review my code / commit" | [`review-changes`](../../commands/review-changes.md) and friends |
|
|
26
|
+
|
|
27
|
+
## The 4-D Methodology
|
|
28
|
+
|
|
29
|
+
1. **Deconstruct** — extract core intent, key entities, output shape, constraints; map what's provided vs missing.
|
|
30
|
+
2. **Diagnose** — audit clarity gaps, ambiguity, missing specificity, missing structure; flag unstated assumptions.
|
|
31
|
+
3. **Develop** — pick techniques by request type:
|
|
32
|
+
- *Creative* → multi-perspective + tone anchoring
|
|
33
|
+
- *Technical* → constraint-based + precision focus
|
|
34
|
+
- *Educational* → few-shot examples + clear structure
|
|
35
|
+
- *Complex* → chain-of-thought + systematic framing
|
|
36
|
+
- Assign an AI role/expertise; layer context; add logical structure.
|
|
37
|
+
4. **Deliver** — output the optimized prompt + a short "what changed" + (DETAIL only) techniques applied + one pro-tip.
|
|
38
|
+
|
|
39
|
+
## Modes — BASIC vs DETAIL
|
|
40
|
+
|
|
41
|
+
**Auto-detect on first turn:**
|
|
42
|
+
|
|
43
|
+
| Signal | Mode |
|
|
44
|
+
|---|---|
|
|
45
|
+
| User wrote "BASIC" or "DETAIL" verbatim | honor it |
|
|
46
|
+
| One-line ask, common task (resume help, casual email, summary) | BASIC |
|
|
47
|
+
| Multi-paragraph context, professional/technical scope, named audience, named tone | DETAIL |
|
|
48
|
+
| Target AI not named AND request implies platform-sensitive output | DETAIL |
|
|
49
|
+
| **Tiebreaker** — both BASIC and DETAIL signals fire | DETAIL (safer default) |
|
|
50
|
+
|
|
51
|
+
**BASIC** — apply core 4-D fixes silently, return optimized prompt + 3-bullet "what changed". No questions.
|
|
52
|
+
|
|
53
|
+
**DETAIL** — gather missing context **one question per turn** (Iron Law from `ask-when-uncertain`). Stop asking once Deconstruct + Diagnose are clean. Then deliver.
|
|
54
|
+
|
|
55
|
+
**Always inform mode + override**: first reply names the chosen mode and offers the other in one numbered-options block. Re-pick is silent on subsequent turns.
|
|
56
|
+
|
|
57
|
+
## Procedure
|
|
58
|
+
|
|
59
|
+
### 1. Receive input
|
|
60
|
+
|
|
61
|
+
Capture: (a) the rough prompt, (b) target AI if named, (c) explicit BASIC/DETAIL marker if present. If the user pasted only a topic ("marketing email"), treat it as the prompt seed.
|
|
62
|
+
|
|
63
|
+
### 2. Auto-detect mode + announce
|
|
64
|
+
|
|
65
|
+
Apply the table above. State: *"Running in BASIC — say `DETAIL` to switch."* (or vice-versa). Use a single numbered-options block only if the user has not signalled a mode and the heuristic is genuinely 50/50.
|
|
66
|
+
|
|
67
|
+
### 3. Inspect + Diagnose (Deconstruct)
|
|
68
|
+
|
|
69
|
+
Identify each slot in the rough prompt: intent · entities · output shape · constraints · target AI · tone · audience. List every missing slot. Check for ambiguity, unstated assumptions, and contradictory requirements.
|
|
70
|
+
|
|
71
|
+
### 4a. BASIC path
|
|
72
|
+
|
|
73
|
+
Fill missing slots with safe defaults (general audience, neutral tone, the named AI or "any modern LLM"). Skip to step 5.
|
|
74
|
+
|
|
75
|
+
### 4b. DETAIL path
|
|
76
|
+
|
|
77
|
+
Ask **one** question for the highest-leverage missing slot. Order: target AI → output shape → audience → tone → constraints. Stop asking once the prompt would land cleanly. Never batch. Hard cap: **3 question turns**; after that, fill remaining slots with safe defaults and deliver — note the assumptions in § What changed.
|
|
78
|
+
|
|
79
|
+
### 5. Develop
|
|
80
|
+
|
|
81
|
+
Pick techniques per request type (see § 4-D step 3). Assign role ("You are a senior X…"), layer context, add structure (numbered steps, bullet headers, output format spec, length cap), and inject specificity (concrete numbers, named formats, explicit success criteria — replace "good", "professional", "high-quality" with measurable criteria).
|
|
82
|
+
|
|
83
|
+
### 6. Deliver
|
|
84
|
+
|
|
85
|
+
Format per § Output format. Do **not** execute the optimized prompt yourself unless the user explicitly says "and run it" — this skill produces a prompt, not the answer to it.
|
|
86
|
+
|
|
87
|
+
## Output format
|
|
88
|
+
|
|
89
|
+
1. **Optimized prompt** — fenced code block, ready to copy. Top line names the target AI if known.
|
|
90
|
+
2. **What changed** — 3-5 bullets, each ≤ 12 words.
|
|
91
|
+
3. **Techniques applied** *(DETAIL only)* — bullet list naming the techniques (e.g. "few-shot", "chain-of-thought", "role assignment").
|
|
92
|
+
4. **Pro tip** — one sentence, platform-specific when target AI is known (e.g. "Claude responds well to XML tags"; "ChatGPT honors length caps in the system message").
|
|
93
|
+
|
|
94
|
+
## Gotcha
|
|
95
|
+
|
|
96
|
+
- The model tends to **execute** the rough prompt instead of optimizing it — when the user pastes "write a marketing email", treat the whole line as the *seed*, not the *task*. Confirm by asking "optimize this prompt, or write the email?" if genuinely ambiguous.
|
|
97
|
+
- The model tends to ask **multiple** clarifying questions in DETAIL mode — Iron Law is one per turn. Pick the highest-leverage missing slot and stop.
|
|
98
|
+
- The model tends to invent platform tips that aren't true — only emit a pro-tip when the technique is well-known for the named AI; otherwise omit the section.
|
|
99
|
+
- The model tends to over-engineer BASIC mode — for a one-line ask, the optimized prompt should still be short. No 800-word system prompts for "help with my resume".
|
|
100
|
+
- Don't drift into German welcome text. The optimized prompt mirrors the user's source-language preference; the skill's own scaffolding stays English (per `language-and-tone` for `.md`).
|
|
101
|
+
- The model tends to **mix languages** in the optimized prompt when the user wrote in German but named an English-speaking target audience — pick one language for the whole optimized prompt body (default: source-language of the rough prompt unless the user explicitly named the target audience's language).
|
|
102
|
+
|
|
103
|
+
## Do NOT
|
|
104
|
+
|
|
105
|
+
- Do NOT execute the optimized prompt and return its answer unless the user explicitly asks for both.
|
|
106
|
+
- Do NOT ask more than one clarifying question per turn (`ask-when-uncertain` Iron Law).
|
|
107
|
+
- Do NOT add an "I'm Lyra" preamble on every turn — the welcome belongs to the command entry point, not every reply.
|
|
108
|
+
- Do NOT modify project files — this skill is conversational, no file writes, no commits.
|
|
@@ -9,8 +9,8 @@ source: package
|
|
|
9
9
|
## When to use
|
|
10
10
|
|
|
11
11
|
Use this skill when:
|
|
12
|
-
- Creating a new roadmap (
|
|
13
|
-
- Executing a roadmap (
|
|
12
|
+
- Creating a new roadmap (`/roadmap:create` command)
|
|
13
|
+
- Executing a roadmap (`/roadmap:process-step|phase|full` commands)
|
|
14
14
|
- Checking roadmap progress
|
|
15
15
|
- Updating roadmap status after completing work
|
|
16
16
|
|
|
@@ -119,8 +119,8 @@ Every roadmap follows this structure:
|
|
|
119
119
|
|
|
120
120
|
Every roadmap implicitly includes the project's quality pipeline
|
|
121
121
|
(static analysis, autofixes, tests). What's configurable is **when**
|
|
122
|
-
the pipeline runs during `/roadmap
|
|
123
|
-
`roadmap.quality_cadence` in `.agent-settings.yml`:
|
|
122
|
+
the pipeline runs during `/roadmap:process-step|phase|full`,
|
|
123
|
+
controlled by `roadmap.quality_cadence` in `.agent-settings.yml`:
|
|
124
124
|
|
|
125
125
|
| Cadence | Pipeline runs | Trade-off |
|
|
126
126
|
|---|---|---|
|
|
@@ -164,7 +164,7 @@ unfamiliar codebases.
|
|
|
164
164
|
evidence-based reason (e.g. risky migration benefits from a spike).
|
|
165
165
|
Never include release versions, deprecation dates, or git tags in
|
|
166
166
|
the roadmap text. If the user declines, do **not** re-propose during
|
|
167
|
-
|
|
167
|
+
`/roadmap:process-*`. Decline = silence. See [`scope-control`](../../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
168
168
|
5. Save with a kebab-case filename (e.g. `optimize-webhook-jobs.md`).
|
|
169
169
|
**Before writing**, scan the entire roadmap namespace for a
|
|
170
170
|
collision — active, `archive/`, `skipped/`, and nested subdirs —
|
|
@@ -289,8 +289,8 @@ is rewritten by `.augment/scripts/update_roadmap_progress.py`.
|
|
|
289
289
|
**Always regenerate in the SAME response** after any of the following
|
|
290
290
|
(enforced by [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)):
|
|
291
291
|
|
|
292
|
-
- Creating a new roadmap (
|
|
293
|
-
- Marking a step `[x]`, `[~]`, or `[-]` during
|
|
292
|
+
- Creating a new roadmap (`/roadmap:create`)
|
|
293
|
+
- Marking a step `[x]`, `[~]`, or `[-]` during `/roadmap:process-*`
|
|
294
294
|
- Archiving or moving a roadmap to `skipped/`
|
|
295
295
|
- Adding, renaming, or removing a phase
|
|
296
296
|
|
|
@@ -82,6 +82,29 @@ no silent edits, max two rounds.
|
|
|
82
82
|
* No numbered procedures — if you need steps, it is a skill.
|
|
83
83
|
* Link out to guidelines for deep reference instead of inlining them.
|
|
84
84
|
|
|
85
|
+
### 3b. Path conventions in frontmatter and body — load-bearing
|
|
86
|
+
|
|
87
|
+
Three different surfaces, three different rules. Mixing them up will
|
|
88
|
+
either fail the schema (`python3 scripts/validate_frontmatter.py`) or
|
|
89
|
+
fail `python3 scripts/lint_load_context.py`. Canonical reference:
|
|
90
|
+
[`templates/rule.md`](../../templates/rule.md) § Path conventions and
|
|
91
|
+
[`docs/contracts/load-context-schema.md`](../../../docs/contracts/load-context-schema.md).
|
|
92
|
+
|
|
93
|
+
| Field | Form | Example |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| `load_context:` / `load_context_eager:` | **Logical name** rooted at the source — never `.agent-src.uncompressed/` | `contexts/execution/verification-mechanics.md` |
|
|
96
|
+
| `triggers[].path_prefix:` | **Literal match pattern** the host evaluates against the file the agent is editing — not rewritten | `.agent-src.uncompressed/skills/` (source-of-truth rules) or `agents/`, `app/`, `.augment/` |
|
|
97
|
+
| Body links to guidelines / contracts | **Verbatim relative form** — `../../docs/...` works in any markdown viewer; rewriter handles depth | `[guideline](../../docs/guidelines/<group>/<name>.md)` |
|
|
98
|
+
|
|
99
|
+
The compress-time rewriter (`scripts/compress.py::_rewrite_paths`) is
|
|
100
|
+
idempotent and depth-aware — it resolves logical names and body links
|
|
101
|
+
to the deployment-correct relative path at compress time, leaving
|
|
102
|
+
`path_prefix:` literally as written. The schema regex
|
|
103
|
+
(`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.py`
|
|
104
|
+
both reject the `.agent-src.uncompressed/` prefix in `load_context:` /
|
|
105
|
+
`load_context_eager:` with an error pointing at the canonical logical
|
|
106
|
+
name.
|
|
107
|
+
|
|
85
108
|
### 4. Enforce the size budget
|
|
86
109
|
|
|
87
110
|
Normative source: [`size-enforcement`](../../rules/size-enforcement.md) +
|
|
@@ -113,9 +136,19 @@ type: "auto" # or "always"
|
|
|
113
136
|
description: "Trigger-shaped sentence — domain + symptoms — soft cap 200 chars"
|
|
114
137
|
alwaysApply: false # true only if type: always
|
|
115
138
|
source: package # or project for consumer-local rules
|
|
139
|
+
load_context: # logical names only — `contexts/<area>/<file>.md`
|
|
140
|
+
- contexts/execution/verification-mechanics.md
|
|
141
|
+
triggers: # path_prefix is literal, not rewritten
|
|
142
|
+
- path_prefix: ".agent-src.uncompressed/rules/"
|
|
143
|
+
routes_to:
|
|
144
|
+
- "skill:related-skill"
|
|
116
145
|
---
|
|
117
146
|
```
|
|
118
147
|
|
|
148
|
+
See § 3b above for the load-bearing distinction between `load_context:`
|
|
149
|
+
(logical, rewritten), `triggers[].path_prefix:` (literal, verbatim),
|
|
150
|
+
and body links (relative `../../docs/...`, rewriter handles depth).
|
|
151
|
+
|
|
119
152
|
## Output format
|
|
120
153
|
|
|
121
154
|
1. Complete rule file at `.agent-src.uncompressed/rules/{name}.md`
|
|
@@ -152,7 +152,7 @@ search_events(organizationSlug='my-org', naturalLanguageQuery='count of database
|
|
|
152
152
|
|
|
153
153
|
## Gotcha
|
|
154
154
|
|
|
155
|
-
- Sentry groups errors by stacktrace — different root
|
|
155
|
+
- Sentry groups errors by stacktrace — different root → may appear as the same issue. Check multiple events.
|
|
156
156
|
- The model tends to analyze only the latest event — check the "Events" tab for patterns across time.
|
|
157
157
|
- Don't use Sentry MCP tools for simple lookups — use the Sentry web UI link instead (saves tokens).
|
|
158
158
|
|
|
@@ -258,6 +258,20 @@ Example:
|
|
|
258
258
|
* Validation must be concrete
|
|
259
259
|
* One skill = one job
|
|
260
260
|
|
|
261
|
+
### Cross-references and paths
|
|
262
|
+
|
|
263
|
+
* Body links to guidelines / contracts use the verbatim relative form
|
|
264
|
+
(`../../docs/guidelines/<group>/<name>.md`,
|
|
265
|
+
`../../docs/contracts/<name>.md`). The compress-time rewriter
|
|
266
|
+
resolves them to depth-aware single-up form — do not pre-rewrite in
|
|
267
|
+
source.
|
|
268
|
+
* Skills do **not** declare `load_context:` / `load_context_eager:`;
|
|
269
|
+
those frontmatter keys are rule-only. If a skill needs to point at a
|
|
270
|
+
context, link to it inline (`[context-name](../../contexts/<area>/<file>.md)`).
|
|
271
|
+
* Never write `.agent-src.uncompressed/` in any skill body link or
|
|
272
|
+
example — it ships into `.augment/skills/` and breaks consumer
|
|
273
|
+
resolution. See `rule-writing` § 3b for the canonical reference.
|
|
274
|
+
|
|
261
275
|
### Execution metadata (optional)
|
|
262
276
|
|
|
263
277
|
Skills may declare an `execution` frontmatter block (`type`, `handler`,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: systematic-debugging
|
|
3
3
|
description: "Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'."
|
|
4
4
|
source: package
|
|
5
|
+
council_depth: deep
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# systematic-debugging
|
|
@@ -35,10 +36,28 @@ papers over an unknown cause is a regression waiting to happen.
|
|
|
35
36
|
|
|
36
37
|
```
|
|
37
38
|
NO FIX WITHOUT ROOT CAUSE. NO ROOT CAUSE WITHOUT EVIDENCE.
|
|
39
|
+
NO BUG MARKED FIXED WITHOUT A REGRESSION TEST.
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
"I think it's probably X" is not evidence. A log line, a stack trace, a
|
|
41
|
-
diff, a reproduced failure — those are evidence.
|
|
43
|
+
diff, a reproduced failure — those are evidence. A green run after a
|
|
44
|
+
manual edit is not a regression test — a test that fails without the fix
|
|
45
|
+
and passes with it, is.
|
|
46
|
+
|
|
47
|
+
## The 6-phase loop (the spine)
|
|
48
|
+
|
|
49
|
+
Every debug session walks these six phases in order. Treat them as a
|
|
50
|
+
checklist — tick each box before claiming the bug fixed:
|
|
51
|
+
|
|
52
|
+
- [ ] **1. Reproduce** — bug triggers on demand, smallest possible setup _(Phase 1)_
|
|
53
|
+
- [ ] **2. Minimize** — smallest failing case isolated, irrelevant context stripped _(Phase 1, step 2)_
|
|
54
|
+
- [ ] **3. Hypothesize** — one testable theory stated in one sentence _(Phase 3)_
|
|
55
|
+
- [ ] **4. Instrument** — log / breakpoint / trace at the boundary where expected ≠ actual _(Phase 2)_
|
|
56
|
+
- [ ] **5. Fix** — single, minimal change targeting the root cause _(Phase 4, step 2)_
|
|
57
|
+
- [ ] **6. Regression-test** — failing test added that catches the bug returning **(MANDATORY — no exception)** _(Phase 4, step 1 + Validation checklist)_
|
|
58
|
+
|
|
59
|
+
Skipping a box (especially #2 or #6) is the single biggest cause of
|
|
60
|
+
wasted debug time and re-opened bugs.
|
|
42
61
|
|
|
43
62
|
## Procedure
|
|
44
63
|
|
|
@@ -242,10 +261,11 @@ When reporting debug findings to the user:
|
|
|
242
261
|
|
|
243
262
|
Before declaring a bug fixed:
|
|
244
263
|
|
|
264
|
+
* [ ] **6-phase loop** — all six boxes (Reproduce → Minimize → Hypothesize → Instrument → Fix → Regression-test) ticked
|
|
245
265
|
* [ ] The failure was reproduced before any code changed
|
|
246
266
|
* [ ] The root cause is named explicitly, not "probably"
|
|
247
267
|
* [ ] Evidence (log, trace, diff) supports the named root cause
|
|
248
|
-
* [ ]
|
|
268
|
+
* [ ] **Regression test added — MANDATORY**: a test that fails without the fix and passes with it. No exception. "Manual reproduction confirmed gone" is not a regression test
|
|
249
269
|
* [ ] The fix is minimal and targets the root cause, not the symptom
|
|
250
270
|
* [ ] The regression test now passes
|
|
251
271
|
* [ ] Adjacent tests still pass
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: technical-specification
|
|
3
|
-
description: "Use when the user says "write a spec", "create RFC", or "document this decision". Writes technical specifications, RFCs, and ADRs with clear structure."
|
|
3
|
+
description: "Use when the user says "write a spec", "create RFC", "write a PRD", or "document this decision". Writes technical specifications, PRDs, RFCs, and ADRs with clear structure."
|
|
4
4
|
source: package
|
|
5
|
+
council_depth: deep
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# technical-specification
|
|
@@ -10,6 +11,7 @@ source: package
|
|
|
10
11
|
|
|
11
12
|
Use this skill when:
|
|
12
13
|
- Writing a technical specification for a new feature or system
|
|
14
|
+
- Writing a Product Requirements Document (PRD) when user pain leads and solution shape follows
|
|
13
15
|
- Creating an architecture decision record (ADR)
|
|
14
16
|
- Documenting a technical RFC (Request for Comments)
|
|
15
17
|
- Planning a significant technical change that needs team review
|
|
@@ -69,6 +71,59 @@ For complex features or systems. Stored in `agents/features/` or module `agents/
|
|
|
69
71
|
- {Links to related docs, tickets, or external resources}
|
|
70
72
|
```
|
|
71
73
|
|
|
74
|
+
### Product Requirements Document (PRD)
|
|
75
|
+
|
|
76
|
+
For features whose **shape is product-driven** rather than implementation-driven —
|
|
77
|
+
when "what users get" matters more than "how the code is wired". Use a PRD
|
|
78
|
+
when a Technical Specification would over-index on internals and under-index
|
|
79
|
+
on user value. Stored in `agents/features/` next to the technical spec when
|
|
80
|
+
both exist.
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
# PRD: {Title}
|
|
84
|
+
|
|
85
|
+
## Status
|
|
86
|
+
{ Draft | In Review | Approved | Shipped | Parked }
|
|
87
|
+
|
|
88
|
+
## Problem
|
|
89
|
+
{The user-visible pain. One paragraph. Cite evidence — support tickets,
|
|
90
|
+
analytics, user quotes — not assumptions.}
|
|
91
|
+
|
|
92
|
+
## Success Criteria
|
|
93
|
+
- {Measurable outcome with a number and a timeframe}
|
|
94
|
+
- {Another measurable outcome}
|
|
95
|
+
|
|
96
|
+
## Non-Goals
|
|
97
|
+
- {What this PRD explicitly does NOT cover — protect scope}
|
|
98
|
+
|
|
99
|
+
## User Stories
|
|
100
|
+
- As a {role}, I want to {action}, so that {outcome}.
|
|
101
|
+
- As a {role}, I want to {action}, so that {outcome}.
|
|
102
|
+
|
|
103
|
+
## Major Modules
|
|
104
|
+
{The 3-7 functional building blocks the feature decomposes into. One
|
|
105
|
+
sentence each — what it does, not how. Implementation lives in the
|
|
106
|
+
technical spec, not here.}
|
|
107
|
+
|
|
108
|
+
- **{Module name}** — {one-sentence responsibility}
|
|
109
|
+
- **{Module name}** — {one-sentence responsibility}
|
|
110
|
+
|
|
111
|
+
## Open Questions
|
|
112
|
+
- [ ] {Unresolved product question — pricing, permission, copy, edge case}
|
|
113
|
+
|
|
114
|
+
## References
|
|
115
|
+
- {Links to research, related PRDs, technical spec when it exists}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**PRD vs Technical Specification — when to pick which:**
|
|
119
|
+
|
|
120
|
+
- **PRD first** when the user pain is clear but the solution shape is not
|
|
121
|
+
("users can't share dashboards" → PRD scopes the problem; spec follows).
|
|
122
|
+
- **Spec first** when the solution shape is clear but the implementation
|
|
123
|
+
is non-trivial ("rebuild auth on OAuth2" → spec leads; PRD often skipped).
|
|
124
|
+
- **Both** when the feature is large enough that product and engineering
|
|
125
|
+
decisions belong in different artifacts.
|
|
126
|
+
|
|
72
127
|
### Architecture Decision Record (ADR)
|
|
73
128
|
|
|
74
129
|
For significant technical decisions. Stored in `agents/decisions/`.
|
|
@@ -161,6 +216,8 @@ If a developer reads only this document, they should be able to build it.
|
|
|
161
216
|
## Auto-trigger keywords
|
|
162
217
|
|
|
163
218
|
- technical spec
|
|
219
|
+
- PRD
|
|
220
|
+
- product requirements
|
|
164
221
|
- RFC
|
|
165
222
|
- ADR
|
|
166
223
|
- architecture decision
|
|
@@ -106,8 +106,8 @@ Used for workers and schedulers:
|
|
|
106
106
|
|
|
107
107
|
### GitHub OIDC IAM role
|
|
108
108
|
|
|
109
|
-
Each
|
|
110
|
-
- OIDC trust policy (scoped to repo +
|
|
109
|
+
Each env has a GitHub IAM role with:
|
|
110
|
+
- OIDC trust policy (scoped to repo + env)
|
|
111
111
|
- Policies for ECR push/pull, ECS deployment, Secrets Manager read, CloudWatch logs
|
|
112
112
|
|
|
113
113
|
## Output format
|
|
@@ -12,7 +12,7 @@ Use this skill when working with Terragrunt configurations (`.hcl` files), manag
|
|
|
12
12
|
|
|
13
13
|
## Procedure: Write Terragrunt config
|
|
14
14
|
|
|
15
|
-
1. Read the `root.hcl` in the target
|
|
15
|
+
1. Read the `root.hcl` in the target env (`environments/pro/root.hcl` or `environments/sta/root.hcl`).
|
|
16
16
|
2. Check existing `terragrunt.hcl` files in sibling directories for patterns.
|
|
17
17
|
3. Read the target module's `variables.tf` to understand required inputs.
|
|
18
18
|
|
|
@@ -36,7 +36,7 @@ environments/
|
|
|
36
36
|
|
|
37
37
|
## Root configuration (`root.hcl`)
|
|
38
38
|
|
|
39
|
-
The root HCL defines shared settings for all modules in an
|
|
39
|
+
The root HCL defines shared settings for all modules in an env:
|
|
40
40
|
|
|
41
41
|
### Environment variables
|
|
42
42
|
|
|
@@ -50,9 +50,9 @@ locals {
|
|
|
50
50
|
}
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
- `.env.yaml` — committed, shared
|
|
53
|
+
- `.env.yaml` — committed, shared env config
|
|
54
54
|
- `.env.local.yaml` — gitignored, local overrides (AWS profiles, etc.)
|
|
55
|
-
- Real
|
|
55
|
+
- Real env variables take precedence over file values.
|
|
56
56
|
|
|
57
57
|
### Remote state
|
|
58
58
|
|
|
@@ -101,7 +101,7 @@ Each module directory contains a `terragrunt.hcl` that:
|
|
|
101
101
|
1. **Loads module-specific variables** from a YAML file
|
|
102
102
|
2. **Includes the root config** for backend and providers
|
|
103
103
|
3. **Points to the Terraform module source**
|
|
104
|
-
4. **Declares
|
|
104
|
+
4. **Declares deps** on other modules
|
|
105
105
|
5. **Passes inputs** by merging dependency outputs with local variables
|
|
106
106
|
|
|
107
107
|
### Example pattern
|
|
@@ -183,19 +183,19 @@ devbox run d # terragrunt destroy
|
|
|
183
183
|
|
|
184
184
|
## Output format
|
|
185
185
|
|
|
186
|
-
1. Terragrunt HCL files with DRY
|
|
186
|
+
1. Terragrunt HCL files with DRY env configuration
|
|
187
187
|
2. Dependency graph and remote state references
|
|
188
188
|
|
|
189
189
|
## Auto-trigger keywords
|
|
190
190
|
|
|
191
191
|
- Terragrunt
|
|
192
|
-
- multi-
|
|
192
|
+
- multi-env
|
|
193
193
|
- DRY config
|
|
194
194
|
- remote state
|
|
195
195
|
|
|
196
196
|
## Gotcha
|
|
197
197
|
|
|
198
|
-
- Terragrunt `dependency` blocks create implicit ordering — circular
|
|
198
|
+
- Terragrunt `dependency` blocks create implicit ordering — circular deps cause cryptic errors.
|
|
199
199
|
- Don't duplicate Terraform variables in terragrunt.hcl — use `inputs` to pass them through.
|
|
200
200
|
- The model tends to hardcode values that should come from `include` blocks — use DRY patterns.
|
|
201
201
|
|