@event4u/agent-config 1.32.0 → 1.34.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/research/deep.md +149 -0
- package/.agent-src/commands/research/report.md +134 -0
- package/.agent-src/commands/research.md +43 -13
- package/.agent-src/commands/review-changes.md +13 -8
- package/.agent-src/personas/README.md +12 -21
- package/.agent-src/personas/_template-specialist/persona.md +89 -0
- package/.agent-src/personas/backend-architect.md +96 -0
- package/.agent-src/personas/eloquent-tamer.md +96 -0
- package/.agent-src/personas/frontend-engineer.md +100 -0
- package/.agent-src/personas/qa.md +27 -2
- package/.agent-src/personas/security-engineer.md +100 -0
- package/.agent-src/skills/accessibility-auditor/SKILL.md +132 -0
- package/.agent-src/skills/adr-create/SKILL.md +1 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -0
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +1 -0
- package/.agent-src/skills/ai-council/SKILL.md +1 -0
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -0
- package/.agent-src/skills/analysis-skill-router/SKILL.md +1 -0
- package/.agent-src/skills/api-design/SKILL.md +3 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +1 -0
- package/.agent-src/skills/api-testing/SKILL.md +1 -0
- package/.agent-src/skills/architecture-review-lens/SKILL.md +137 -0
- package/.agent-src/skills/artisan-commands/SKILL.md +1 -0
- package/.agent-src/skills/async-python-patterns/SKILL.md +1 -0
- package/.agent-src/skills/authz-review/SKILL.md +4 -0
- package/.agent-src/skills/aws-infrastructure/SKILL.md +1 -0
- package/.agent-src/skills/blade-ui/SKILL.md +1 -0
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +3 -0
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
- package/.agent-src/skills/check-refs/SKILL.md +1 -0
- package/.agent-src/skills/code-refactoring/SKILL.md +1 -0
- package/.agent-src/skills/code-review/SKILL.md +1 -0
- package/.agent-src/skills/command-routing/SKILL.md +1 -0
- package/.agent-src/skills/command-writing/SKILL.md +1 -0
- package/.agent-src/skills/composer-packages/SKILL.md +1 -0
- package/.agent-src/skills/context-authoring/SKILL.md +1 -0
- package/.agent-src/skills/context-document/SKILL.md +1 -0
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -0
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +1 -0
- package/.agent-src/skills/copilot-config/SKILL.md +1 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +1 -0
- package/.agent-src/skills/data-flow-mapper/SKILL.md +1 -0
- package/.agent-src/skills/database/SKILL.md +3 -0
- package/.agent-src/skills/dcf-modeling/SKILL.md +1 -0
- package/.agent-src/skills/decision-record/SKILL.md +143 -0
- package/.agent-src/skills/deep-reading-analyst/SKILL.md +1 -0
- package/.agent-src/skills/defense-in-depth/SKILL.md +1 -0
- package/.agent-src/skills/dependency-upgrade/SKILL.md +1 -0
- package/.agent-src/skills/description-assist/SKILL.md +1 -0
- package/.agent-src/skills/design-review/SKILL.md +1 -0
- package/.agent-src/skills/devcontainer/SKILL.md +1 -0
- package/.agent-src/skills/developer-like-execution/SKILL.md +1 -0
- package/.agent-src/skills/docker/SKILL.md +1 -0
- package/.agent-src/skills/dto-creator/SKILL.md +1 -0
- package/.agent-src/skills/eloquent/SKILL.md +3 -0
- package/.agent-src/skills/error-handling-patterns/SKILL.md +1 -0
- package/.agent-src/skills/estimate-ticket/SKILL.md +1 -0
- package/.agent-src/skills/existing-ui-audit/SKILL.md +3 -0
- package/.agent-src/skills/fe-design/SKILL.md +4 -1
- package/.agent-src/skills/feature-planning/SKILL.md +1 -0
- package/.agent-src/skills/file-editor/SKILL.md +1 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -0
- package/.agent-src/skills/flux/SKILL.md +1 -0
- package/.agent-src/skills/form-handler/SKILL.md +145 -0
- package/.agent-src/skills/funnel-analysis/SKILL.md +1 -0
- package/.agent-src/skills/git-workflow/SKILL.md +1 -0
- package/.agent-src/skills/github-ci/SKILL.md +1 -0
- package/.agent-src/skills/grafana/SKILL.md +1 -0
- package/.agent-src/skills/guideline-writing/SKILL.md +1 -0
- package/.agent-src/skills/incident-commander/SKILL.md +140 -0
- package/.agent-src/skills/jira-integration/SKILL.md +1 -0
- package/.agent-src/skills/jobs-events/SKILL.md +1 -0
- package/.agent-src/skills/judge-bug-hunter/SKILL.md +1 -0
- package/.agent-src/skills/judge-code-quality/SKILL.md +1 -0
- package/.agent-src/skills/judge-security-auditor/SKILL.md +3 -0
- package/.agent-src/skills/judge-test-coverage/SKILL.md +1 -0
- package/.agent-src/skills/laravel/SKILL.md +1 -0
- package/.agent-src/skills/laravel-horizon/SKILL.md +1 -0
- package/.agent-src/skills/laravel-mail/SKILL.md +1 -0
- package/.agent-src/skills/laravel-middleware/SKILL.md +1 -0
- package/.agent-src/skills/laravel-notifications/SKILL.md +1 -0
- package/.agent-src/skills/laravel-pennant/SKILL.md +1 -0
- package/.agent-src/skills/laravel-pulse/SKILL.md +1 -0
- package/.agent-src/skills/laravel-reverb/SKILL.md +1 -0
- package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +1 -0
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -0
- package/.agent-src/skills/lint-skills/SKILL.md +1 -0
- package/.agent-src/skills/livewire/SKILL.md +1 -0
- package/.agent-src/skills/livewire-architect/SKILL.md +158 -0
- package/.agent-src/skills/logging-monitoring/SKILL.md +1 -0
- package/.agent-src/skills/markitdown/SKILL.md +1 -0
- package/.agent-src/skills/mcp/SKILL.md +1 -0
- package/.agent-src/skills/mcp-builder/SKILL.md +1 -0
- package/.agent-src/skills/md-language-check/SKILL.md +1 -0
- package/.agent-src/skills/merge-conflicts/SKILL.md +1 -0
- package/.agent-src/skills/migration-architect/SKILL.md +119 -0
- package/.agent-src/skills/migration-creator/SKILL.md +1 -0
- package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +2 -1
- package/.agent-src/skills/module-management/SKILL.md +1 -0
- package/.agent-src/skills/multi-tenancy/SKILL.md +1 -0
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +1 -0
- package/.agent-src/skills/openapi/SKILL.md +1 -0
- package/.agent-src/skills/override-management/SKILL.md +1 -0
- package/.agent-src/skills/performance/SKILL.md +1 -0
- package/.agent-src/skills/performance-analysis/SKILL.md +1 -0
- package/.agent-src/skills/persona-writing/SKILL.md +1 -0
- package/.agent-src/skills/pest-testing/SKILL.md +1 -0
- package/.agent-src/skills/php-coder/SKILL.md +1 -0
- package/.agent-src/skills/php-debugging/SKILL.md +1 -0
- package/.agent-src/skills/php-service/SKILL.md +1 -0
- package/.agent-src/skills/playwright-architect/SKILL.md +141 -0
- package/.agent-src/skills/playwright-testing/SKILL.md +1 -0
- package/.agent-src/skills/po-discovery/SKILL.md +127 -0
- package/.agent-src/skills/project-analysis-core/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-laravel/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-nextjs/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-node-express/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-react/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +1 -0
- package/.agent-src/skills/project-analyzer/SKILL.md +1 -0
- package/.agent-src/skills/project-docs/SKILL.md +1 -0
- package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -0
- package/.agent-src/skills/prompt-optimizer/SKILL.md +1 -0
- package/.agent-src/skills/quality-tools/SKILL.md +1 -0
- package/.agent-src/skills/react-native-setup/SKILL.md +1 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +1 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -0
- package/.agent-src/skills/readme-writing/SKILL.md +1 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +1 -0
- package/.agent-src/skills/receiving-code-review/SKILL.md +1 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +1 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +1 -0
- package/.agent-src/skills/repomix-packer/SKILL.md +1 -0
- package/.agent-src/skills/requesting-code-review/SKILL.md +1 -0
- package/.agent-src/skills/review-routing/SKILL.md +1 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +1 -0
- package/.agent-src/skills/risk-officer/SKILL.md +141 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +1 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +1 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -0
- package/.agent-src/skills/rule-writing/SKILL.md +1 -0
- package/.agent-src/skills/script-writing/SKILL.md +1 -0
- package/.agent-src/skills/secrets-management/SKILL.md +1 -0
- package/.agent-src/skills/security/SKILL.md +1 -0
- package/.agent-src/skills/security-audit/SKILL.md +1 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +1 -0
- package/.agent-src/skills/sequential-thinking/SKILL.md +1 -0
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -0
- package/.agent-src/skills/skill-management/SKILL.md +1 -0
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -0
- package/.agent-src/skills/skill-writing/SKILL.md +1 -0
- package/.agent-src/skills/sql-writing/SKILL.md +1 -0
- package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +149 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent-src/skills/tailwind-engineer/SKILL.md +130 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +152 -0
- package/.agent-src/skills/technical-specification/SKILL.md +1 -0
- package/.agent-src/skills/terraform/SKILL.md +1 -0
- package/.agent-src/skills/terragrunt/SKILL.md +1 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +1 -0
- package/.agent-src/skills/test-performance/SKILL.md +1 -0
- package/.agent-src/skills/testing-anti-patterns/SKILL.md +1 -0
- package/.agent-src/skills/threat-modeling/SKILL.md +3 -0
- package/.agent-src/skills/token-optimizer/SKILL.md +1 -0
- package/.agent-src/skills/traefik/SKILL.md +1 -0
- package/.agent-src/skills/ui-component-architect/SKILL.md +153 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -0
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/.agent-src/skills/validate-feature-fit/SKILL.md +1 -0
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +1 -0
- package/.agent-src/skills/websocket/SKILL.md +1 -0
- package/.claude-plugin/marketplace.json +17 -1
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +68 -0
- package/README.md +3 -3
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +26 -5
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/file-ownership-matrix.json +560 -0
- package/docs/contracts/persona-schema.md +136 -0
- package/docs/contracts/skill-domains.md +143 -0
- package/docs/decisions/ADR-005-subagent-worktrees.md +120 -0
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +114 -0
- package/docs/decisions/INDEX.md +3 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/agent-infra/5w2h-analysis.md +260 -0
- package/docs/guidelines/agent-infra/critical-thinking.md +156 -0
- package/docs/guidelines/agent-infra/first-principles.md +192 -0
- package/docs/guidelines/agent-infra/six-hats.md +353 -0
- package/docs/guidelines/agent-infra/systems-thinking.md +220 -0
- package/docs/personas.md +115 -0
- package/package.json +1 -1
- package/scripts/_backfill_skill_domains.py +140 -0
- package/scripts/_emit_domain_table.py +35 -0
- package/scripts/install-hooks.sh +21 -4
- package/scripts/lint_skill_tools.py +168 -0
- package/scripts/schemas/skill.schema.json +6 -1
- package/scripts/skill_linter.py +19 -4
- package/scripts/skill_tools/__init__.py +22 -0
- package/scripts/skill_tools/audit_persona_coverage.py +147 -0
- package/scripts/skill_tools/run_block_d_eval.py +129 -0
- package/scripts/skill_tools/score_skill_relevance.py +169 -0
- package/scripts/skill_tools/suggest_skill_for_task.py +113 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: livewire-architect
|
|
3
|
+
description: "Use when shaping a Livewire component before code — full-page vs partial, parent/child split, event flow, state-vs-props boundary, hydration cost — even on 'add this Livewire component'."
|
|
4
|
+
personas:
|
|
5
|
+
- frontend-engineer
|
|
6
|
+
source: package
|
|
7
|
+
domain: engineering
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# livewire-architect
|
|
11
|
+
|
|
12
|
+
> Architectural lens **above** the existing tactical [`livewire`](../livewire/SKILL.md)
|
|
13
|
+
> skill. Decides component shape, lifecycle ownership, and the
|
|
14
|
+
> full-page-vs-partial split *before* the first `mount()` is written.
|
|
15
|
+
> The `livewire` skill handles Flux-component patterns and hydration
|
|
16
|
+
> debugging once the shape is locked.
|
|
17
|
+
|
|
18
|
+
## When to use
|
|
19
|
+
|
|
20
|
+
- A Livewire feature is about to be built and the boundary between
|
|
21
|
+
components is unclear (one big component vs nested children?).
|
|
22
|
+
- An existing component is "doing too much" — multiple unrelated
|
|
23
|
+
concerns, large `$listeners`, props bag growing turn over turn.
|
|
24
|
+
- A page mixes Livewire + Blade partials and the data flow is
|
|
25
|
+
ambiguous (who owns `$user`, who emits, who listens?).
|
|
26
|
+
- German triggers: "wie schneide ich das?", "Vollseite oder
|
|
27
|
+
Teilkomponente?", "wer feuert das Event?".
|
|
28
|
+
|
|
29
|
+
Do NOT use when:
|
|
30
|
+
|
|
31
|
+
- The shape is already locked and the question is mechanical
|
|
32
|
+
(Flux variant, `wire:model` modifier, `@entangle`) — route to
|
|
33
|
+
[`livewire`](../livewire/SKILL.md).
|
|
34
|
+
- The page has no Livewire — pure Blade or Inertia/React — route
|
|
35
|
+
to [`blade-ui`](../blade-ui/SKILL.md) or [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md).
|
|
36
|
+
- The bug is a runtime hydration error — debug with `livewire`,
|
|
37
|
+
not redesign with this skill.
|
|
38
|
+
|
|
39
|
+
## Procedure
|
|
40
|
+
|
|
41
|
+
### 1. Analyze the existing screen — before designing anything
|
|
42
|
+
|
|
43
|
+
Inspect the route and read the existing Blade / Livewire files to
|
|
44
|
+
understand what's already there. List every dynamic surface on the
|
|
45
|
+
page (form, table row, modal, nav badge). Mark each: **shared
|
|
46
|
+
state** (other surfaces re-render on change), **local state** (only
|
|
47
|
+
this surface cares), **server state** (must hit DB / queue). This
|
|
48
|
+
analysis feeds every later step — do NOT skip ahead before the
|
|
49
|
+
inventory is on paper.
|
|
50
|
+
|
|
51
|
+
### 2. Choose the component shape
|
|
52
|
+
|
|
53
|
+
Pick one **before** writing code:
|
|
54
|
+
|
|
55
|
+
| Shape | When | Cost |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| Full-page component | Route owns the whole screen, single backing model, ≤ 3 related actions | Cheapest; one mount, one render |
|
|
58
|
+
| Parent + nested children | Two or more independent state islands on one route | Two mounts; coordinate via events, not props churn |
|
|
59
|
+
| Partial component on Blade | Mostly static page, one reactive island | Cheap; component sees the world via props only |
|
|
60
|
+
| Stack of full-page components | Wizard / multi-step flow with own URL per step | Expensive; pick only when URL semantics matter |
|
|
61
|
+
|
|
62
|
+
Rule: if a child needs ≥ 4 props from the parent and emits ≥ 3
|
|
63
|
+
events back, the boundary is wrong — collapse or re-cut.
|
|
64
|
+
|
|
65
|
+
### 3. Lock the state-vs-props boundary
|
|
66
|
+
|
|
67
|
+
For each piece of data the component reads, mark **public property**
|
|
68
|
+
(reactive, persisted in payload, expensive to dehydrate) or
|
|
69
|
+
**computed / method-local** (cheap, recomputed on render). Public
|
|
70
|
+
properties are the budget — keep ≤ 8 per component; more means
|
|
71
|
+
the component is doing two jobs.
|
|
72
|
+
|
|
73
|
+
### 4. Map the event flow
|
|
74
|
+
|
|
75
|
+
Draw the events: `dispatch('foo')` → who listens? Cross-component
|
|
76
|
+
events use `dispatch()`; parent ↔ child stays on `$parent.method()`
|
|
77
|
+
when the child is owned. Avoid global events for parent-owned
|
|
78
|
+
children — they break the ownership story.
|
|
79
|
+
|
|
80
|
+
### 5. Lifecycle ownership
|
|
81
|
+
|
|
82
|
+
For each side-effect (DB write, queue dispatch, redirect, flash),
|
|
83
|
+
name the lifecycle hook: `mount` (one-time setup), `boot` (every
|
|
84
|
+
request, idempotent), action method (user-initiated), `updated*`
|
|
85
|
+
(reactive on property change). One hook per side-effect; if two
|
|
86
|
+
hooks fire the same write, the design is wrong.
|
|
87
|
+
|
|
88
|
+
### 6. Validate the design — before any code is written
|
|
89
|
+
|
|
90
|
+
Walk the design back through these checks; every "no" means
|
|
91
|
+
re-cut, not push forward:
|
|
92
|
+
|
|
93
|
+
- Each component owns ≤ 8 public properties.
|
|
94
|
+
- No child needs ≥ 4 props *and* emits ≥ 3 events back.
|
|
95
|
+
- Every event has exactly one named listener.
|
|
96
|
+
- Each side-effect maps to exactly one lifecycle hook.
|
|
97
|
+
- The component shape table is filled in (no `<TBD>` cells).
|
|
98
|
+
|
|
99
|
+
If any check fails, return to the relevant step and re-cut. The
|
|
100
|
+
design must be approved by the user before handing off to
|
|
101
|
+
`/livewire` for implementation.
|
|
102
|
+
|
|
103
|
+
## Output format
|
|
104
|
+
|
|
105
|
+
Return:
|
|
106
|
+
|
|
107
|
+
1. Component shape decision — full-page / parent+children / partial /
|
|
108
|
+
stack — with the one-sentence trade-off rationale.
|
|
109
|
+
2. Component inventory — for each: public props (≤ 8), state islands
|
|
110
|
+
owned, events listened/dispatched, side-effects on mount and action.
|
|
111
|
+
3. Boundary-risk list and tactical follow-up — prop bags > 8, event
|
|
112
|
+
chains > 3 hops, shared mutable state, and the next handoff.
|
|
113
|
+
|
|
114
|
+
Concrete shape:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Screen: <route or feature>
|
|
118
|
+
Component shape: <full-page | parent+children | partial | stack>
|
|
119
|
+
Why: <one sentence — the trade-off chosen>
|
|
120
|
+
|
|
121
|
+
Components:
|
|
122
|
+
- <Name> (full-page | partial)
|
|
123
|
+
Public props: [a, b, c] (≤ 8)
|
|
124
|
+
Owns: <state islands>
|
|
125
|
+
Listens to: [event1, event2]
|
|
126
|
+
Dispatches: [event3]
|
|
127
|
+
Side-effects: mount=<...>, action=<...>
|
|
128
|
+
|
|
129
|
+
Boundary risks:
|
|
130
|
+
- <prop bag > 8 / event chain > 3 hops / shared mutable state>
|
|
131
|
+
|
|
132
|
+
Tactical follow-up:
|
|
133
|
+
Hand off to /livewire for Flux variant + hydration check.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Gotcha
|
|
137
|
+
|
|
138
|
+
- Livewire 3 reactive props are not free — every public property
|
|
139
|
+
ships in the payload. Big arrays / DTOs as public state are a
|
|
140
|
+
performance bug waiting to fire under load.
|
|
141
|
+
- Parent-owned children and global events do not mix; pick one
|
|
142
|
+
ownership story per component tree.
|
|
143
|
+
- "Just one more public property" is the smell that turns a partial
|
|
144
|
+
into a god-component over three tickets.
|
|
145
|
+
- Full-page component + Flux modal stack: the modal owns its own
|
|
146
|
+
mount cycle; do not push modal state into the page component.
|
|
147
|
+
|
|
148
|
+
## Do NOT
|
|
149
|
+
|
|
150
|
+
- Do NOT write `mount()` / Blade partials before the shape table is
|
|
151
|
+
filled in — picking the shape after coding is the most common
|
|
152
|
+
source of refactor debt.
|
|
153
|
+
- Do NOT cite this skill alongside [`livewire`](../livewire/SKILL.md)
|
|
154
|
+
in the same step — they sit at different tiers; pick one per phase.
|
|
155
|
+
- Do NOT design Inertia / React components with this skill — the
|
|
156
|
+
state-vs-props axis differs; route to the matching stack skill.
|
|
157
|
+
- Do NOT push the architecture into the tracker as code AC — output
|
|
158
|
+
is a design note for refinement, not implementation steps.
|
|
@@ -4,6 +4,7 @@ description: "Use when converting PDF, DOCX, XLSX, PPTX, EPUB, images, or audio
|
|
|
4
4
|
status: active
|
|
5
5
|
tier: senior
|
|
6
6
|
source: package
|
|
7
|
+
domain: process
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
> **Pinned upstream:** `markitdown-mcp@0.0.1a4` (PyPI, released 2025-05-23, MIT, Beta). Re-verify per minor bump.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mcp-builder
|
|
3
3
|
description: "Use when building an MCP server in Python (FastMCP) or Node/TypeScript (MCP SDK) — agent-centric tool design, input schemas, error handling, and the 10-question evaluation harness."
|
|
4
4
|
source: package
|
|
5
|
+
domain: process
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# mcp-builder
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: md-language-check
|
|
3
3
|
description: "Use BEFORE saving any .md under .augment/, .agent-src*/, or agents/ — scans umlauts, German function words, and quoted German phrases outside DE:/EN: anchor blocks. Hard gate per language-and-tone."
|
|
4
4
|
source: package
|
|
5
|
+
domain: process
|
|
5
6
|
execution:
|
|
6
7
|
type: assisted
|
|
7
8
|
handler: shell
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: migration-architect
|
|
3
|
+
description: "Use when shaping a non-trivial migration — rollout phases, dual-write windows, cutover sequencing, deprecation cycles — hands off to `migration-creator` for DDL once locked."
|
|
4
|
+
personas:
|
|
5
|
+
- backend-architect
|
|
6
|
+
- senior-engineer
|
|
7
|
+
source: package
|
|
8
|
+
domain: process
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# migration-architect
|
|
12
|
+
|
|
13
|
+
> Shape the **rollout strategy** for a migration before any DDL or
|
|
14
|
+
> code is written. Plans phases, dual-write windows, cutover
|
|
15
|
+
> sequencing, deprecation cycles, and cross-service coordination.
|
|
16
|
+
> Hands off to [`migration-creator`](../migration-creator/SKILL.md)
|
|
17
|
+
> for tactical DDL once the plan is locked.
|
|
18
|
+
|
|
19
|
+
## When to use
|
|
20
|
+
|
|
21
|
+
- A schema change spans more than one deploy.
|
|
22
|
+
- A change requires a dual-write or backfill window.
|
|
23
|
+
- The migration touches multiple services, queues, or consumers
|
|
24
|
+
whose order of update matters.
|
|
25
|
+
- A column / table / API is being deprecated and the cycle needs
|
|
26
|
+
shape (announce → soft-fail → hard-fail → remove).
|
|
27
|
+
|
|
28
|
+
Do NOT use when:
|
|
29
|
+
|
|
30
|
+
- The change is a single additive migration safe in one deploy →
|
|
31
|
+
route to [`migration-creator`](../migration-creator/SKILL.md).
|
|
32
|
+
- The decision is *whether* to migrate at all → route to
|
|
33
|
+
[`decision-record`](../decision-record/SKILL.md) first.
|
|
34
|
+
- The concern is data correctness during the migration → route to
|
|
35
|
+
[`data-flow-mapper`](../data-flow-mapper/SKILL.md) and feed
|
|
36
|
+
findings back here.
|
|
37
|
+
|
|
38
|
+
## Procedure
|
|
39
|
+
|
|
40
|
+
### 1. Anchor on the goal
|
|
41
|
+
|
|
42
|
+
Write one sentence: *"State X must become state Y across systems Z
|
|
43
|
+
without breaking consumers W."* If you cannot, the migration is not
|
|
44
|
+
ripe — stop.
|
|
45
|
+
|
|
46
|
+
### 2. Identify the participating systems
|
|
47
|
+
|
|
48
|
+
List every service, queue, batch job, third-party consumer, and
|
|
49
|
+
client that reads or writes the affected schema. A system you
|
|
50
|
+
forget is a cutover surprise.
|
|
51
|
+
|
|
52
|
+
### 3. Pick a rollout shape
|
|
53
|
+
|
|
54
|
+
| Shape | When to pick |
|
|
55
|
+
|---|---|
|
|
56
|
+
| Expand → migrate → contract | Schema additive first, code switches reads, then drop old shape |
|
|
57
|
+
| Dual-write + backfill | Both shapes written for a window; backfill closes the gap |
|
|
58
|
+
| Strangler fig | New path runs alongside old; traffic ramps over time |
|
|
59
|
+
| Big-bang cutover | Rare; only when downtime is acceptable AND coordination cost is trivial |
|
|
60
|
+
|
|
61
|
+
State *why* the shape fits — not just which one was picked.
|
|
62
|
+
|
|
63
|
+
### 4. Sequence the phases
|
|
64
|
+
|
|
65
|
+
For each phase, list:
|
|
66
|
+
|
|
67
|
+
- **Trigger** — what condition starts it.
|
|
68
|
+
- **Actions** — DDL, code deploy, feature flag, traffic shift.
|
|
69
|
+
- **Reversibility** — can we abort here, and how?
|
|
70
|
+
- **Exit gate** — what proves we can move to the next phase
|
|
71
|
+
(metric, sign-off, soak time).
|
|
72
|
+
|
|
73
|
+
A phase without an exit gate is a wish; reject.
|
|
74
|
+
|
|
75
|
+
### 5. Plan the deprecation cycle
|
|
76
|
+
|
|
77
|
+
For anything being removed:
|
|
78
|
+
|
|
79
|
+
- Announce window — comms cadence, who is told.
|
|
80
|
+
- Soft-fail window — log + warn, do not break.
|
|
81
|
+
- Hard-fail window — return errors.
|
|
82
|
+
- Removal — DDL drop, code delete.
|
|
83
|
+
|
|
84
|
+
Each window has a duration and a metric that justifies moving on.
|
|
85
|
+
|
|
86
|
+
## Output format
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Migration Architect
|
|
90
|
+
Goal: <one sentence>
|
|
91
|
+
Systems: <list>
|
|
92
|
+
Shape: expand-migrate-contract | dual-write | strangler | big-bang
|
|
93
|
+
Reason: <why this shape>
|
|
94
|
+
|
|
95
|
+
Phases:
|
|
96
|
+
1. <name> Trigger: <cond> Exit: <gate> Reversible: yes | costly | no
|
|
97
|
+
Actions: ...
|
|
98
|
+
2. ...
|
|
99
|
+
|
|
100
|
+
Deprecation cycle (if any):
|
|
101
|
+
Announce <duration> → soft-fail <duration> → hard-fail <duration> → remove
|
|
102
|
+
|
|
103
|
+
Next: /migration-creator for the DDL of phase 1
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Gotcha
|
|
107
|
+
|
|
108
|
+
- The riskiest phase is the one with no rollback. Surface it
|
|
109
|
+
explicitly even if the user did not ask.
|
|
110
|
+
- Soak times in hours when interest is in days are a smell. Match
|
|
111
|
+
the soak to the actual blast radius.
|
|
112
|
+
|
|
113
|
+
## Do NOT
|
|
114
|
+
|
|
115
|
+
- Do NOT write DDL — that is `migration-creator`'s job.
|
|
116
|
+
- Do NOT collapse phases to "ship it" because the user is impatient;
|
|
117
|
+
surface the risk and let the user decide.
|
|
118
|
+
- Do NOT skip the deprecation cycle because nobody is using the old
|
|
119
|
+
shape "for sure" — verify before skipping.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: migration-creator
|
|
3
3
|
description: "Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness."
|
|
4
4
|
source: package
|
|
5
|
+
domain: engineering
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# migration-creator
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mobile-e2e-strategy
|
|
3
3
|
description: "Use when picking a mobile E2E framework — Detox / Appium / Maestro / XCUITest / Espresso — or planning iOS Simulator / Android Emulator coverage in CI for RN, Expo, or native apps."
|
|
4
4
|
source: package
|
|
5
|
+
domain: quality
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# mobile-e2e-strategy
|
|
@@ -27,7 +28,7 @@ source: package
|
|
|
27
28
|
|
|
28
29
|
## Procedure
|
|
29
30
|
|
|
30
|
-
1. **
|
|
31
|
+
1. **Inspect and classify the app.** Identify the stack: native iOS, native Android, React Native, Expo, Flutter, or a web view inside a shell?
|
|
31
32
|
2. **Classify the goal.** Smoke (boots + login + key flow), regression (every release), visual diff, accessibility audit, or performance baseline.
|
|
32
33
|
3. **Pick the framework** using the decision matrix below.
|
|
33
34
|
4. **Confirm host availability.** macOS for iOS Simulator (mandatory); any OS for Android Emulator.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: module-management
|
|
3
3
|
description: "Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions."
|
|
4
4
|
source: package
|
|
5
|
+
domain: process
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# module
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: override-management
|
|
3
3
|
description: "Creates and manages project-level overrides for shared skills, rules, and commands — extending or replacing originals from .augment/ with project-specific behavior in agents/overrides/."
|
|
4
4
|
source: package
|
|
5
|
+
domain: process
|
|
5
6
|
execution:
|
|
6
7
|
type: assisted
|
|
7
8
|
handler: internal
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: persona-writing
|
|
3
3
|
description: "Use when creating or editing a persona in .agent-src.uncompressed/personas/ — voice / focus / unique questions / output expectations — even when the user just says 'add a reviewer voice for X'."
|
|
4
4
|
source: package
|
|
5
|
+
domain: process
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
<!-- cloud_safe: degrade -->
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: php-coder
|
|
3
3
|
description: "Writes or edits PHP code — controllers, classes, type hints, SOLID refactors, modern idioms — even without naming PHP. NOT for writing tests (use pest-testing) or explaining PHP concepts."
|
|
4
4
|
source: package
|
|
5
|
+
domain: engineering
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# coder
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: php-debugging
|
|
3
3
|
description: "Use when debugging PHP with Xdebug — breakpoints, step-through, dual-container setup, IDE configuration, header-based routing — even when the user just says 'why does this blow up on request X'."
|
|
4
4
|
source: package
|
|
5
|
+
domain: engineering
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# php-debugging
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright-architect
|
|
3
|
+
description: "Use when shaping a Playwright suite — locator strategy, Page Object boundaries, fixture composition, flake-prevention architecture, CI-vs-local split — even on 'design our E2E tests'."
|
|
4
|
+
personas:
|
|
5
|
+
- frontend-engineer
|
|
6
|
+
source: package
|
|
7
|
+
domain: quality
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# playwright-architect
|
|
11
|
+
|
|
12
|
+
> Architectural lens **above** the existing tactical
|
|
13
|
+
> [`playwright-testing`](../playwright-testing/SKILL.md). Decides
|
|
14
|
+
> locator philosophy, Page Object boundaries, fixture composition,
|
|
15
|
+
> and the CI-vs-local split *before* the first test is written.
|
|
16
|
+
> The `playwright-testing` skill handles concrete assertions,
|
|
17
|
+
> selectors, and visual-regression mechanics once the design is
|
|
18
|
+
> locked.
|
|
19
|
+
|
|
20
|
+
## When to use
|
|
21
|
+
|
|
22
|
+
- A new Playwright suite is starting and the directory shape, fixture
|
|
23
|
+
hierarchy, and locator strategy are unsettled.
|
|
24
|
+
- An existing suite has flake > 2 % runs, slow CI (> 10 min), or a
|
|
25
|
+
god-test file mixing unrelated journeys.
|
|
26
|
+
- A second app / surface (admin, mobile-web, embedded widget) needs
|
|
27
|
+
to share fixtures with the main suite.
|
|
28
|
+
- German triggers: "Playwright Setup planen", "Page Objects schneiden",
|
|
29
|
+
"warum flaket der Test?".
|
|
30
|
+
|
|
31
|
+
Do NOT use when:
|
|
32
|
+
|
|
33
|
+
- A single test fails and the question is the assertion or selector
|
|
34
|
+
— route to [`playwright-testing`](../playwright-testing/SKILL.md).
|
|
35
|
+
- The platform is mobile-native (Detox, Appium, Maestro) — route to
|
|
36
|
+
[`mobile-e2e-strategy`](../mobile-e2e-strategy/SKILL.md).
|
|
37
|
+
- Unit / component tests are the question — Playwright is the wrong
|
|
38
|
+
tool; route to the stack-specific testing skill.
|
|
39
|
+
|
|
40
|
+
## Procedure
|
|
41
|
+
|
|
42
|
+
### 1. Inspect the suite, pick the locator philosophy
|
|
43
|
+
|
|
44
|
+
Review existing tests for current locator patterns; the established
|
|
45
|
+
strategy wins unless it is the "last resort" tier. One philosophy
|
|
46
|
+
per suite, written into `CONTRIBUTING-tests.md`:
|
|
47
|
+
|
|
48
|
+
| Strategy | When |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `getByRole` + accessible name | Default — couples tests to the user contract, not markup |
|
|
51
|
+
| `data-testid` | Legacy markup, third-party widgets, hash-suffixed CSS modules |
|
|
52
|
+
| Text content (`getByText`) | Static marketing pages, copy-stable surfaces |
|
|
53
|
+
| CSS / XPath | Last resort — every use is a debt entry |
|
|
54
|
+
|
|
55
|
+
Mixing strategies inside one test file is the smell — pick one and
|
|
56
|
+
fall back only with comment.
|
|
57
|
+
|
|
58
|
+
### 2. Cut Page Object boundaries
|
|
59
|
+
|
|
60
|
+
A Page Object owns: (a) one URL or one logical surface (modal,
|
|
61
|
+
drawer), (b) the locators on that surface, (c) the **actions** a
|
|
62
|
+
user can perform there. It does NOT own assertions about other
|
|
63
|
+
surfaces or test setup. Boundary rule: if two POs need to call
|
|
64
|
+
each other, introduce a **flow object** (`SignupFlow`) above them.
|
|
65
|
+
|
|
66
|
+
### 3. Compose fixtures, don't inherit
|
|
67
|
+
|
|
68
|
+
Playwright fixtures stack via `test.extend()`. Three layers max:
|
|
69
|
+
|
|
70
|
+
| Layer | Owns |
|
|
71
|
+
|---|---|
|
|
72
|
+
| Base | Browser, context, storageState, network mocks |
|
|
73
|
+
| Auth | Logged-in user states (admin, member, guest) |
|
|
74
|
+
| Domain | Pre-seeded entities for a journey |
|
|
75
|
+
|
|
76
|
+
Deeper stacks become un-debuggable; flatten by extracting helpers.
|
|
77
|
+
|
|
78
|
+
### 4. Plan flake prevention before the first failure
|
|
79
|
+
|
|
80
|
+
Bake in: auto-retry on network idle, soft assertions for parallel
|
|
81
|
+
checks, deterministic seed data, time freezing (`page.clock`),
|
|
82
|
+
explicit `expect.poll()` for eventual consistency, no
|
|
83
|
+
`waitForTimeout` ever. If a test needs `sleep`, the fixture is
|
|
84
|
+
wrong.
|
|
85
|
+
|
|
86
|
+
### 5. Split CI vs local execution
|
|
87
|
+
|
|
88
|
+
Local: headed browser, single worker, slowMo enabled, video off,
|
|
89
|
+
trace-on-retry. CI: headless, sharded workers (2–8), trace-on-first-retry,
|
|
90
|
+
video-on-failure, Github reporter + HTML. Document both in
|
|
91
|
+
`playwright.config.ts`; do not let local config leak into CI.
|
|
92
|
+
|
|
93
|
+
## Output format
|
|
94
|
+
|
|
95
|
+
Return:
|
|
96
|
+
|
|
97
|
+
1. Locator + Page Object plan — chosen strategy, PO list with surface
|
|
98
|
+
and action count, flow objects when ≥ 2 POs collaborate.
|
|
99
|
+
2. Fixture composition — base / auth / domain layer with what each
|
|
100
|
+
layer sets up.
|
|
101
|
+
3. Parallelism + flake budget — worker count, shard strategy,
|
|
102
|
+
isolation, target flake ceiling, CI-vs-local config delta.
|
|
103
|
+
|
|
104
|
+
Concrete shape:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Suite: <name>
|
|
108
|
+
Locator strategy: <getByRole | data-testid | text | mixed (justified)>
|
|
109
|
+
Page Objects: <list with surface owned + action count>
|
|
110
|
+
Flow objects: <list — only when ≥ 2 POs collaborate>
|
|
111
|
+
Fixture layers: base / auth / domain — each with what it sets up
|
|
112
|
+
Parallelism: <workers, shards, isolation strategy>
|
|
113
|
+
Flake budget: ≤ 1 % failure on green main; alert threshold
|
|
114
|
+
CI-vs-local: <key config delta, one bullet each>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Gotcha
|
|
118
|
+
|
|
119
|
+
- `page.waitForSelector` is almost always wrong — `expect(locator).toBeVisible()`
|
|
120
|
+
has built-in retry. The former teaches devs to think "wait, then
|
|
121
|
+
assert" instead of "auto-retry assertion".
|
|
122
|
+
- Storage-state reuse across workers requires cookie domain
|
|
123
|
+
isolation; the same `auth.json` across two browsers in parallel
|
|
124
|
+
shares a session and corrupts state.
|
|
125
|
+
- Visual regression in CI requires identical fonts and renderer —
|
|
126
|
+
pin the Docker image, never run visual tests against host
|
|
127
|
+
Chromium.
|
|
128
|
+
- One Page Object per URL **looks** clean but creates god-objects
|
|
129
|
+
for SPA routes; cut by *user surface*, not by `pathname`.
|
|
130
|
+
|
|
131
|
+
## Do NOT
|
|
132
|
+
|
|
133
|
+
- Do NOT cite this skill alongside [`playwright-testing`](../playwright-testing/SKILL.md)
|
|
134
|
+
in the same step — they sit at different tiers; pick one per phase.
|
|
135
|
+
- Do NOT design suites for component tests with this skill —
|
|
136
|
+
Playwright Component Testing has different fixture rules; route
|
|
137
|
+
there instead.
|
|
138
|
+
- Do NOT promise zero flake; budget for ≤ 1 % and instrument the
|
|
139
|
+
metric. Zero is a goal that disguises silent retries.
|
|
140
|
+
- Do NOT push the architecture into the tracker as code AC — output
|
|
141
|
+
is a design note for refinement, not implementation steps.
|