@ennamjsc/agents-scaffold 1.1.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/dist/index.js +674 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -0
- package/templates/_shared/.claude/agents/project-owner.md +19 -0
- package/templates/_shared/.claude/agents/reviewer.md +24 -0
- package/templates/_shared/.claude/agents/team-lead.md +20 -0
- package/templates/_shared/.claude/commands/boot.md +14 -0
- package/templates/_shared/.claude/commands/checkpoint.md +28 -0
- package/templates/_shared/.claude/commands/escalate.md +26 -0
- package/templates/_shared/.claude/commands/memory.md +12 -0
- package/templates/_shared/.claude/hooks/session-start.ps1 +3 -0
- package/templates/_shared/.claude/hooks/session-start.sh +4 -0
- package/templates/_shared/.claude/settings.json.hbs +17 -0
- package/templates/_shared/.gitignore.append +12 -0
- package/templates/_shared/.mcp.json.hbs +25 -0
- package/templates/_shared/.serena/checkpoint/.gitkeep +1 -0
- package/templates/_shared/.serena/memories/INDEX.md +13 -0
- package/templates/_shared/.serena/memories/backlog/.gitkeep +1 -0
- package/templates/_shared/.serena/memories/comms/active/.gitkeep +1 -0
- package/templates/_shared/.serena/memories/comms/resolved/.gitkeep +1 -0
- package/templates/_shared/.serena/memories/decisions/.gitkeep +1 -0
- package/templates/_shared/.serena/memories/services/.gitkeep +1 -0
- package/templates/_shared/AGENTS.md +75 -0
- package/templates/_shared/CLAUDE.md.partial.hbs +286 -0
- package/templates/_shared/docs/superpowers/plans/.gitkeep +1 -0
- package/templates/_shared/docs/superpowers/specs/.gitkeep +1 -0
- package/templates/flutter/.claude/agents/mobile-dev.md +21 -0
- package/templates/flutter/.mcp.json.partial.hbs +9 -0
- package/templates/flutter/CLAUDE.md.partial.hbs +26 -0
- package/templates/go/.claude/agents/backend-dev-go.md +22 -0
- package/templates/go/CLAUDE.md.partial.hbs +28 -0
- package/templates/local-root/CLAUDE.md.partial.hbs +50 -0
- package/templates/next/.claude/agents/web-dev.md +23 -0
- package/templates/next/.mcp.json.partial.hbs +13 -0
- package/templates/next/CLAUDE.md.partial.hbs +35 -0
- package/templates/python/.claude/agents/backend-dev-python.md +21 -0
- package/templates/python/CLAUDE.md.partial.hbs +27 -0
- package/templates/qa/.claude/agents/qa-tester.md +23 -0
- package/templates/qa/.claude/commands/qa-report.md +13 -0
- package/templates/qa/.claude/commands/qa-run.md +13 -0
- package/templates/qa/.mcp.json.partial.hbs +8 -0
- package/templates/qa/CLAUDE.md.partial.hbs +20 -0
- package/templates/qa/evidence/.gitkeep +1 -0
- package/templates/qa/qa/.gitkeep +1 -0
- package/templates/qa/test-cases/README.md +11 -0
- package/templates/qa/test-cases/TEMPLATE.md +25 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
<!-- ennam-agents-scaffold:begin v{{scaffoldVersion}} -->
|
|
2
|
+
## Agents Workflow
|
|
3
|
+
|
|
4
|
+
@AGENTS.md
|
|
5
|
+
|
|
6
|
+
### Session Boot Protocol
|
|
7
|
+
|
|
8
|
+
**Every agent MUST follow this exact sequence at session start.**
|
|
9
|
+
DO NOT read source code, explore directories, or scan the codebase
|
|
10
|
+
until you have completed steps 1-3. Source code is a last resort,
|
|
11
|
+
not a starting point.
|
|
12
|
+
|
|
13
|
+
1. **Read Serena** — `memories/INDEX.md` → relevant module memories → `comms/active/` → `backlog/`
|
|
14
|
+
2. **Read checkpoint** — `.serena/checkpoint/` for the most recent checkpoint from your role
|
|
15
|
+
3. **Understand the task** — you now have project context. Only NOW assess what source files you need.
|
|
16
|
+
4. **Read ONLY the source files relevant to your task** — targeted reads, not bulk exploration.
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
Start([Session Start]) --> S1
|
|
21
|
+
|
|
22
|
+
S1["1. Read Serena\nmemories/INDEX.md → modules → comms → backlog"]
|
|
23
|
+
S1 --> S2["2. Read Checkpoint\n.serena/checkpoint/ (latest for your role)"]
|
|
24
|
+
S2 --> S3["3. Understand the Task\nAssess what source files you need"]
|
|
25
|
+
S3 --> S4["4. Read ONLY Relevant Source Files\nTargeted reads, not bulk exploration"]
|
|
26
|
+
|
|
27
|
+
S1 -.- warn:::violation
|
|
28
|
+
warn["⛔ VIOLATION: Scanning src/ or running\nfind / ls -R before completing steps 1-3"]
|
|
29
|
+
|
|
30
|
+
classDef violation fill:#fee,stroke:#c00,color:#900,stroke-dasharray: 5 5
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Violations**: Scanning `src/`, or running `find` / `ls -R` at session start before completing steps 1-3 is a protocol violation. It wastes tokens and ignores existing knowledge.
|
|
34
|
+
|
|
35
|
+
### Superpowers Workflow
|
|
36
|
+
|
|
37
|
+
Every agent session follows this structured workflow.
|
|
38
|
+
Phases may be skipped for trivial tasks (< 3 steps, single file, obvious fix).
|
|
39
|
+
When skipping, state which phases you're skipping and why.
|
|
40
|
+
|
|
41
|
+
#### Phase 1 — Understand
|
|
42
|
+
**Skill**: `superpowers:brainstorming`
|
|
43
|
+
**When**: Creating features, modifying behavior, adding functionality.
|
|
44
|
+
**Skip if**: Bug fix with clear reproduction, typo, config change.
|
|
45
|
+
**Output**: Approved design in `docs/superpowers/specs/`
|
|
46
|
+
|
|
47
|
+
#### Phase 2 — Plan
|
|
48
|
+
**Skill**: `superpowers:writing-plans`
|
|
49
|
+
**When**: Task requires 3+ steps or touches multiple files/services.
|
|
50
|
+
**Skip if**: Single-file change with obvious implementation.
|
|
51
|
+
**Output**: Implementation plan with success criteria per step.
|
|
52
|
+
|
|
53
|
+
#### Phase 3 — Isolate
|
|
54
|
+
**Skill**: `superpowers:using-git-worktrees`
|
|
55
|
+
**When**: Feature work that should not pollute the working branch.
|
|
56
|
+
**Skip if**: Hotfix, docs-only change, or user requests in-place work.
|
|
57
|
+
**Output**: Isolated worktree or branch ready for implementation.
|
|
58
|
+
|
|
59
|
+
#### Phase 4 — Implement
|
|
60
|
+
**Skills** (use as needed):
|
|
61
|
+
- `superpowers:test-driven-development` — write tests first, then implementation
|
|
62
|
+
- `superpowers:executing-plans` — execute the plan from Phase 2
|
|
63
|
+
- `superpowers:dispatching-parallel-agents` — 2+ independent tasks
|
|
64
|
+
- `superpowers:subagent-driven-development` — delegate to specialized agents
|
|
65
|
+
- `superpowers:systematic-debugging` — when encountering failures during implementation
|
|
66
|
+
**Output**: Working code with tests.
|
|
67
|
+
|
|
68
|
+
#### Phase 5 — Verify
|
|
69
|
+
**Skill**: `superpowers:verification-before-completion`
|
|
70
|
+
**When**: ALWAYS. This phase is never skipped.
|
|
71
|
+
**Output**: Evidence that success criteria are met (test output, build output).
|
|
72
|
+
|
|
73
|
+
#### Phase 6 — Review
|
|
74
|
+
**Skill**: `superpowers:requesting-code-review`
|
|
75
|
+
**When**: Feature work, significant changes, anything touching shared code.
|
|
76
|
+
**Skip if**: Docs-only, config-only, or user explicitly waives review.
|
|
77
|
+
**Output**: Review feedback addressed.
|
|
78
|
+
|
|
79
|
+
#### Phase 7 — Complete
|
|
80
|
+
**Skill**: `superpowers:finishing-a-development-branch`
|
|
81
|
+
**When**: Implementation verified and reviewed.
|
|
82
|
+
**Output**: PR created, branch merged, or completion option presented to user.
|
|
83
|
+
|
|
84
|
+
#### Workflow Diagram
|
|
85
|
+
|
|
86
|
+
```mermaid
|
|
87
|
+
flowchart LR
|
|
88
|
+
P1["Phase 1\nUnderstand\n<i>brainstorming</i>"]
|
|
89
|
+
P2["Phase 2\nPlan\n<i>writing-plans</i>"]
|
|
90
|
+
P3["Phase 3\nIsolate\n<i>git worktrees</i>"]
|
|
91
|
+
P4["Phase 4\nImplement\n<i>TDD / execute</i>"]
|
|
92
|
+
P5["Phase 5\nVerify\n<i>verification</i>"]:::mandatory
|
|
93
|
+
P6["Phase 6\nReview\n<i>code review</i>"]
|
|
94
|
+
P7["Phase 7\nComplete\n<i>finish branch</i>"]
|
|
95
|
+
|
|
96
|
+
P1 -->|"skip?"| P2
|
|
97
|
+
P2 -->|"skip?"| P3
|
|
98
|
+
P3 -->|"skip?"| P4
|
|
99
|
+
P4 --> P5
|
|
100
|
+
P5 -->|"NEVER SKIP"| P6
|
|
101
|
+
P6 -->|"skip?"| P7
|
|
102
|
+
|
|
103
|
+
classDef mandatory fill:#d4edda,stroke:#155724,stroke-width:3px,color:#155724
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### On-Demand Skills (any phase)
|
|
107
|
+
- `superpowers:systematic-debugging` — when hitting unexpected failures
|
|
108
|
+
- `superpowers:receiving-code-review` — when receiving feedback from others
|
|
109
|
+
- `superpowers:writing-skills` — when creating/modifying workflow skills
|
|
110
|
+
|
|
111
|
+
### Task Complexity Guide
|
|
112
|
+
|
|
113
|
+
| Complexity | Example | Required Phases |
|
|
114
|
+
|-----------|---------|-----------------|
|
|
115
|
+
| **Trivial** | Fix typo, update config value | Implement → Verify |
|
|
116
|
+
| **Simple** | Single-file bug fix, add field | Plan → Implement → Verify |
|
|
117
|
+
| **Medium** | New endpoint, new component | Plan → Implement → Verify → Review |
|
|
118
|
+
| **Complex** | New feature across services | ALL phases |
|
|
119
|
+
|
|
120
|
+
### Knowledge Source Priority
|
|
121
|
+
|
|
122
|
+
Agents MUST consult existing knowledge before exploring source code.
|
|
123
|
+
|
|
124
|
+
#### Retrieval order (strict)
|
|
125
|
+
|
|
126
|
+
```mermaid
|
|
127
|
+
flowchart TD
|
|
128
|
+
Q["Need context or information?"]
|
|
129
|
+
Q --> C1{"Exists in\nSerena memories?"}
|
|
130
|
+
C1 -->|Yes| S1["1. Use Serena\ndecisions/ services/ backlog/"]
|
|
131
|
+
C1 -->|No| C2{"Need current\nimplementation?"}
|
|
132
|
+
C2 -->|Yes| S2["2. Source code\ntargeted file reads"]
|
|
133
|
+
C2 -->|No| C3{"Need history\nor blame?"}
|
|
134
|
+
C3 -->|Yes| S3["3. Git log / blame"]
|
|
135
|
+
C3 -->|No| S4["Ask the user"]
|
|
136
|
+
|
|
137
|
+
style S1 fill:#d4edda,stroke:#155724,color:#155724
|
|
138
|
+
style S4 fill:#fff3cd,stroke:#856404,color:#856404
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
1. **Serena memories** — primary source for decisions, architecture context, conventions, and inter-agent communication
|
|
142
|
+
2. **Source code / git log** — when you need exact current implementation details
|
|
143
|
+
|
|
144
|
+
#### When to read from Serena
|
|
145
|
+
|
|
146
|
+
| Moment | Action |
|
|
147
|
+
|--------|--------|
|
|
148
|
+
| Session start | Read `memories/INDEX.md` — understand what's been decided, what's in progress |
|
|
149
|
+
| Before coding a function | Check `services/<module>.md` — check related decisions and conventions |
|
|
150
|
+
| Before making a design decision | Search `decisions/` — check for prior decisions on same topic |
|
|
151
|
+
| When encountering unfamiliar code | Check memories — there may be a decision or discovery explaining it |
|
|
152
|
+
|
|
153
|
+
#### When to write to Serena
|
|
154
|
+
|
|
155
|
+
| Moment | Action |
|
|
156
|
+
|--------|--------|
|
|
157
|
+
| After making a design decision | Write to `memories/decisions/<topic>.md` |
|
|
158
|
+
| After discovering something non-obvious | Write to `memories/decisions/<topic>.md` |
|
|
159
|
+
| After completing a task | Update checkpoint + relevant service memory |
|
|
160
|
+
| When identifying work for another agent | Write to `memories/backlog/<service>-<topic>.md` |
|
|
161
|
+
|
|
162
|
+
### Serena MCP Protocol (canonical — defines *how*; overrides file-path wording below)
|
|
163
|
+
|
|
164
|
+
**All `.serena/memories/` I/O goes through Serena MCP tools (`mcp__serena__*`). NEVER hand-edit memory files** with Read/Edit/Write — Serena indexes memories and resolves `` `mem:` `` links; hand-editing bypasses both.
|
|
165
|
+
|
|
166
|
+
**Session start (before reading source):**
|
|
167
|
+
1. `mcp__serena__activate_project` for this repo **by path** → `mcp__serena__initial_instructions` (loads the manual + lists available memories).
|
|
168
|
+
2. `mcp__serena__read_memory`: `INDEX` → relevant `decisions/` / `services/` → `comms/active/` → `backlog/` → latest `checkpoint/`.
|
|
169
|
+
|
|
170
|
+
**Writing:** `mcp__serena__write_memory(name, content)` — names use `/` topics (`decisions/…`, `services/…`, `backlog/…`, `comms/active/…`, `qa/…`, `checkpoint/…`); link memories as `` `mem:<name>` ``. Use `mcp__serena__edit_memory` for targeted edits and `mcp__serena__delete_memory` when an item is done.
|
|
171
|
+
|
|
172
|
+
**Checkpoint (end of EVERY session):** `mcp__serena__write_memory("checkpoint/<agent-name>-<YYYY-MM-DD>", …)` → stored at `.serena/memories/checkpoint/<agent-name>-<YYYY-MM-DD>.md`.
|
|
173
|
+
|
|
174
|
+
> The subsections below (Session Boot / Knowledge Source / Serena Memory Protocol / checkpoint) remain the reference for *what* to read/write and *where things go*; **this block is authoritative for *how*** — always via Serena MCP, checkpoints under `memories/checkpoint/`.
|
|
175
|
+
|
|
176
|
+
### Mandatory Session Checkpoint
|
|
177
|
+
|
|
178
|
+
**All AI agents MUST write a checkpoint at the end of every session — via Serena MCP** (`mcp__serena__write_memory`).
|
|
179
|
+
|
|
180
|
+
**Format**: `mcp__serena__write_memory("checkpoint/<agent-name>-<YYYY-MM-DD>", …)` → stored at `.serena/memories/checkpoint/<agent-name>-<YYYY-MM-DD>.md`. Write through Serena MCP, **never** by hand-editing the file.
|
|
181
|
+
|
|
182
|
+
**Required content**:
|
|
183
|
+
|
|
184
|
+
```markdown
|
|
185
|
+
# Checkpoint: <agent-name> — <date>
|
|
186
|
+
|
|
187
|
+
## What was done
|
|
188
|
+
- <bullet list of completed work>
|
|
189
|
+
|
|
190
|
+
## Files changed
|
|
191
|
+
- <list of files created/modified/deleted>
|
|
192
|
+
|
|
193
|
+
## Current state
|
|
194
|
+
- <what is working, what is broken, what is partially done>
|
|
195
|
+
|
|
196
|
+
## Next steps
|
|
197
|
+
- <what the next session should pick up>
|
|
198
|
+
|
|
199
|
+
## Blockers / Risks
|
|
200
|
+
- <anything that could block progress>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Rules**:
|
|
204
|
+
- Write checkpoint BEFORE ending the session — no exceptions
|
|
205
|
+
- If the session was interrupted or failed, still write a checkpoint noting the failure
|
|
206
|
+
- One file per agent per day; append if multiple sessions in the same day
|
|
207
|
+
- Keep each checkpoint concise (under 50 lines)
|
|
208
|
+
- This applies to ALL agents: any subagents, specialized agents, or the main session agent
|
|
209
|
+
|
|
210
|
+
### Serena Memory Protocol
|
|
211
|
+
|
|
212
|
+
Serena is the project's knowledge store for decisions, conventions, service state, and inter-agent communication.
|
|
213
|
+
All agents MUST follow these rules when reading/writing to `.serena/memories/`.
|
|
214
|
+
|
|
215
|
+
#### Read Protocol — Session Start
|
|
216
|
+
|
|
217
|
+
```mermaid
|
|
218
|
+
flowchart LR
|
|
219
|
+
R1["INDEX.md"] --> R2["services/\n<module>.md"]
|
|
220
|
+
R2 --> R3["comms/active/\nmessages for you"]
|
|
221
|
+
R3 --> R4["backlog/\npending items"]
|
|
222
|
+
R4 --> Ready(["Ready to work"])
|
|
223
|
+
|
|
224
|
+
style Ready fill:#d4edda,stroke:#155724,color:#155724
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
1. Read `memories/INDEX.md` first
|
|
228
|
+
2. Read `services/<your-module>.md` for current state
|
|
229
|
+
3. Check `comms/active/` for messages addressed to you
|
|
230
|
+
4. Check `backlog/` for pending action items in your domain
|
|
231
|
+
|
|
232
|
+
#### Write Protocol — What goes where
|
|
233
|
+
|
|
234
|
+
```mermaid
|
|
235
|
+
flowchart TD
|
|
236
|
+
W["What do you want to write?"]
|
|
237
|
+
W --> D{"Technical\ndecision?"}
|
|
238
|
+
W --> S{"Module\nstate update?"}
|
|
239
|
+
W --> B{"Work for\nanother agent?"}
|
|
240
|
+
W --> C{"Question for\nanother agent?"}
|
|
241
|
+
W --> QA{"QA results?"}
|
|
242
|
+
|
|
243
|
+
D -->|Yes| DF["decisions/<topic>.md"]
|
|
244
|
+
S -->|Yes| SF["services/<module>.md"]
|
|
245
|
+
B -->|Yes| BF["backlog/<module>-<topic>.md"]
|
|
246
|
+
C -->|Yes| CF["comms/active/<you>-to-<them>.md"]
|
|
247
|
+
QA -->|Yes| QAF["qa/latest-results.md"]
|
|
248
|
+
|
|
249
|
+
style DF fill:#e8f4fd,stroke:#0366d6
|
|
250
|
+
style SF fill:#e8f4fd,stroke:#0366d6
|
|
251
|
+
style BF fill:#fff3cd,stroke:#856404
|
|
252
|
+
style CF fill:#f0e8fd,stroke:#6f42c1
|
|
253
|
+
style QAF fill:#e8f4fd,stroke:#0366d6
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
| You want to... | Write to | Naming |
|
|
257
|
+
|----------------|----------|--------|
|
|
258
|
+
| Record a technical decision | `decisions/<topic>.md` | Descriptive topic name |
|
|
259
|
+
| Update module/service state | `services/<module>.md` | Append or replace section |
|
|
260
|
+
| Flag work for another agent | `backlog/<module>-<topic>.md` | Prefix with target module |
|
|
261
|
+
| Ask another agent a question | `comms/active/<you>-to-<them>-<topic>.md` | |
|
|
262
|
+
| Respond to a question | Append to the existing file in `comms/active/` | |
|
|
263
|
+
| Close a resolved thread | Move both files to `comms/resolved/` | |
|
|
264
|
+
| Report QA results | `qa/latest-results.md` (replace) | Keep only latest |
|
|
265
|
+
| Store something historical | `archive/<category>/` | |
|
|
266
|
+
|
|
267
|
+
#### Rules
|
|
268
|
+
|
|
269
|
+
- **Never create new top-level directories** under `memories/`
|
|
270
|
+
- **Never put files directly in `memories/`** — always in a subdirectory
|
|
271
|
+
- **1 file per module** in `services/` — update, don't create siblings
|
|
272
|
+
- **Backlog items**: delete the file when the work is done
|
|
273
|
+
- **Comms**: respond within the SAME file (append), don't create
|
|
274
|
+
a separate response file. Move to `resolved/` when done.
|
|
275
|
+
- **Decisions**: only for choices that affect future work. Don't store
|
|
276
|
+
implementation details — those belong in code comments.
|
|
277
|
+
- **Update INDEX.md** when adding new files to `decisions/` or `services/`
|
|
278
|
+
- **QA**: `latest-results.md` is overwritten each run. Archive old
|
|
279
|
+
results to `archive/qa-runs/<date>.md` before overwriting.
|
|
280
|
+
{{#if profileSection}}
|
|
281
|
+
|
|
282
|
+
### Profile: {{profile}}
|
|
283
|
+
|
|
284
|
+
{{{profileSection}}}
|
|
285
|
+
{{/if}}
|
|
286
|
+
<!-- ennam-agents-scaffold:end -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-dev
|
|
3
|
+
description: Flutter 3 + Dart specialist — Riverpod/Bloc, dio HTTP, flutter_test. Implements features following AGENTS.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the mobile developer. Your stack is Flutter 3.x + Dart with sound null safety.
|
|
7
|
+
|
|
8
|
+
Process:
|
|
9
|
+
1. Run @superpowers:brainstorming if the task is new/creative.
|
|
10
|
+
2. Read existing widget patterns in the touched directory before writing.
|
|
11
|
+
3. Use the project's chosen state lib (Riverpod or Bloc) consistently. Don't introduce a second.
|
|
12
|
+
4. Use dio with interceptors for HTTP; never roll a custom HTTP client.
|
|
13
|
+
5. Add widget keys to test targets; cover with flutter_test (unit) or integration_test (flow).
|
|
14
|
+
6. `flutter analyze` must report zero warnings before declaring done.
|
|
15
|
+
7. Run @superpowers:verification-before-completion.
|
|
16
|
+
8. Write a checkpoint when session ends.
|
|
17
|
+
|
|
18
|
+
Boundaries:
|
|
19
|
+
- Don't change `pubspec.yaml` dependencies without an explicit task.
|
|
20
|
+
- Don't mix state libraries.
|
|
21
|
+
- Never disable lints to "make it compile".
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## Stack: Flutter 3.x + Dart
|
|
2
|
+
|
|
3
|
+
| Layer | Tech |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Framework | Flutter 3.x |
|
|
6
|
+
| Language | Dart (sound null safety) |
|
|
7
|
+
| State | Riverpod or Bloc (pick one — don't mix) |
|
|
8
|
+
| HTTP | dio |
|
|
9
|
+
| Testing | flutter_test + integration_test |
|
|
10
|
+
|
|
11
|
+
### Conventions
|
|
12
|
+
|
|
13
|
+
- **One state lib per project.** If using Riverpod, never import bloc; vice versa.
|
|
14
|
+
- **dio interceptors** for auth + logging; do not roll a custom HTTP client.
|
|
15
|
+
- **Widget keys** required on stateful test targets so integration_test can find them.
|
|
16
|
+
- **Type-check before declaring done:** `flutter analyze` (zero warnings policy).
|
|
17
|
+
|
|
18
|
+
### Common commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
flutter pub get
|
|
22
|
+
flutter run # debug on connected device
|
|
23
|
+
flutter test
|
|
24
|
+
flutter build apk # or appbundle, ios, etc.
|
|
25
|
+
flutter analyze
|
|
26
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend-dev-go
|
|
3
|
+
description: Go 1.24 specialist — stdlib net/http, pgx, slog. Implements features following AGENTS.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the backend (Go) developer. Your stack is Go 1.24+ with stdlib-first idioms.
|
|
7
|
+
|
|
8
|
+
Process:
|
|
9
|
+
1. Run @superpowers:brainstorming if the task is new/creative.
|
|
10
|
+
2. Read existing handlers and packages in the touched directory before writing.
|
|
11
|
+
3. Use stdlib net/http with the new ServeMux pattern (`http.HandleFunc("GET /users/{id}", …)`).
|
|
12
|
+
4. Use pgx for Postgres; never database/sql.
|
|
13
|
+
5. Use log/slog for all logging; never fmt.Println outside tests.
|
|
14
|
+
6. Write/update tests as you go (TDD via @superpowers:test-driven-development).
|
|
15
|
+
7. `go vet ./...` and `go test ./...` must pass before declaring done.
|
|
16
|
+
8. Run @superpowers:verification-before-completion.
|
|
17
|
+
9. Write a checkpoint when session ends.
|
|
18
|
+
|
|
19
|
+
Boundaries:
|
|
20
|
+
- Don't add a web framework (gin, echo, etc.) — stdlib is enough.
|
|
21
|
+
- Don't panic in handlers; return errors via standard middleware.
|
|
22
|
+
- Don't introduce new logging libraries.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Stack: Go 1.24 + stdlib net/http
|
|
2
|
+
|
|
3
|
+
| Layer | Tech |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Language | Go 1.24+ |
|
|
6
|
+
| HTTP | stdlib `net/http` (ServeMux from 1.22+) |
|
|
7
|
+
| DB | pgx (PostgreSQL) |
|
|
8
|
+
| Migrations | golang-migrate |
|
|
9
|
+
| Logging | stdlib `log/slog` |
|
|
10
|
+
| Testing | stdlib `testing` + `testify/assert` only for assertions |
|
|
11
|
+
|
|
12
|
+
### Conventions
|
|
13
|
+
|
|
14
|
+
- **No web frameworks.** stdlib net/http with the new ServeMux is enough.
|
|
15
|
+
- **pgx for Postgres** — never database/sql.
|
|
16
|
+
- **slog** for all logging — never fmt.Println in non-test code.
|
|
17
|
+
- **Errors:** wrap with `fmt.Errorf("doing X: %w", err)`. No panic in handlers.
|
|
18
|
+
- **Type-check before declaring done:** `go vet ./... && go test ./...`.
|
|
19
|
+
|
|
20
|
+
### Common commands
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
go mod tidy
|
|
24
|
+
go run ./cmd/server
|
|
25
|
+
go test ./...
|
|
26
|
+
go vet ./...
|
|
27
|
+
go build -o bin/server ./cmd/server
|
|
28
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## Stack: Orchestration Root (Polyrepo Meta-Root)
|
|
2
|
+
|
|
3
|
+
| Layer | Tech |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Architecture | Polyrepo orchestrator — no build, no runtime; coordinates sub-platforms |
|
|
6
|
+
| Memory coordination | Serena MCP (reads `.serena/` from each sub-platform) |
|
|
7
|
+
| Sub-platform communication | Published interfaces (HTTP APIs, databases, MCPs) — never shared code |
|
|
8
|
+
| Infrastructure coordination | Docker Compose / Kubernetes / custom (user-defined) |
|
|
9
|
+
|
|
10
|
+
### The Orchestrator's Job
|
|
11
|
+
|
|
12
|
+
This root orchestrates multiple independent platforms (sub-repositories or sub-folders). Each platform is autonomous — it has its own `CLAUDE.md`, `AGENTS.md`, `.serena/` memories, build, and deploy.
|
|
13
|
+
|
|
14
|
+
The orchestrator's role is to:
|
|
15
|
+
1. Read from `.serena/` stores across platforms via Serena MCP (by path-activating each platform)
|
|
16
|
+
2. Collect signals — decisions (`decisions/`), service state (`services/`), comms (`comms/active/`), backlog items (`backlog/`), and checkpoints
|
|
17
|
+
3. Present a cross-platform view — status, risk, dependencies, and work signals
|
|
18
|
+
4. Direct work — write ecosystem-wide decisions to `global/ecosystem/*` (owned by this orchestrator)
|
|
19
|
+
|
|
20
|
+
**Sub-platform `.serena/` locations the orchestrator reads:**
|
|
21
|
+
|
|
22
|
+
<!-- TODO: Fill in your platforms. Example: -->
|
|
23
|
+
| Platform folder | `.serena/` path | Purpose |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| `platform-a/` | `platform-a/.serena/` | (your first platform) |
|
|
26
|
+
| `platform-b/` | `platform-b/.serena/` | (your second platform) |
|
|
27
|
+
| `shared-infra/` | `shared-infra/.serena/` (if applicable) | (shared services) |
|
|
28
|
+
|
|
29
|
+
(Remove or update this table to match your actual platform structure.)
|
|
30
|
+
|
|
31
|
+
**Ecosystem (the orchestrator OWNS this):** the orchestrator **writes** Serena **`global/ecosystem/*`** — the shared contract + per-platform plans, the only Serena channel readable by every platform. Read each platform's own store by **path-activating** it; never reach into another platform's source. Keep THIS repo's project store to orchestrator-private items (INDEX + checkpoints).
|
|
32
|
+
|
|
33
|
+
### Conventions
|
|
34
|
+
|
|
35
|
+
- **No build at this root.** Each sub-platform builds and runs independently. This folder is pure coordination.
|
|
36
|
+
- **No shared code.** Platforms interact only via published interfaces (HTTP APIs, databases, MCPs), never by importing code.
|
|
37
|
+
- **Decisions in Serena.** Record cross-platform decisions in `.serena/memories/global/ecosystem/` so all platforms can read them.
|
|
38
|
+
- **Respect platform autonomy.** Don't fork or duplicate a platform's logic — consume its published surface (API / MCP / DB).
|
|
39
|
+
|
|
40
|
+
### Common commands
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# (Fill in your orchestration commands. Examples:)
|
|
44
|
+
# docker compose up # start shared infra
|
|
45
|
+
# cd platform-a && npm run dev # run platform A
|
|
46
|
+
# cd platform-b && go run ./cmd/... # run platform B
|
|
47
|
+
# kubectl apply -f k8s/ # apply Kubernetes manifests
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
(Edit this section to document how to start your platforms and shared infrastructure.)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-dev
|
|
3
|
+
description: Next.js 16 + React 19 specialist — Server/Client components, TanStack Query, shadcn/ui, Tailwind 4. Implements features following AGENTS.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the web developer. Your stack is Next.js 16 + React 19 + TypeScript strict.
|
|
7
|
+
|
|
8
|
+
Process:
|
|
9
|
+
1. Run @superpowers:brainstorming if the task is new/creative.
|
|
10
|
+
2. Read existing code patterns in the touched directory before writing. Match the project's style (Rule 11).
|
|
11
|
+
3. Default to Server Components. Add `'use client'` only when needed.
|
|
12
|
+
4. Use TanStack Query for client-side data fetching; use Server Components for server-side.
|
|
13
|
+
5. Compose shadcn/ui primitives; don't reinvent.
|
|
14
|
+
6. Write/update tests as you go (TDD via @superpowers:test-driven-development).
|
|
15
|
+
7. Type-check with `npm run build` before declaring done.
|
|
16
|
+
8. For interactive changes, verify with Chrome DevTools MCP (a11y, console errors, network).
|
|
17
|
+
9. Run @superpowers:verification-before-completion.
|
|
18
|
+
10. Write a checkpoint when session ends.
|
|
19
|
+
|
|
20
|
+
Boundaries:
|
|
21
|
+
- Don't touch `next.config.ts` or `eslint.config.mjs` without an explicit task.
|
|
22
|
+
- Don't modify Server Component → Client Component boundary unless asked.
|
|
23
|
+
- Never disable strict TypeScript checks to "make it compile".
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"chrome-devtools": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@modelcontextprotocol/chrome-devtools-mcp"]
|
|
6
|
+
},
|
|
7
|
+
"figma": {
|
|
8
|
+
"command": "npx",
|
|
9
|
+
"args": ["-y", "@ennam/figma-mcp"],
|
|
10
|
+
"env": { "FIGMA_TOKEN": "${FIGMA_TOKEN}" }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Stack: Next.js 16 + React 19 + TypeScript
|
|
2
|
+
|
|
3
|
+
| Layer | Tech |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Framework | Next.js 16 (App Router) |
|
|
6
|
+
| UI runtime | React 19 (Server Components by default) |
|
|
7
|
+
| Language | TypeScript strict mode |
|
|
8
|
+
| Data fetching | TanStack Query for client-side; Server Components for server-side |
|
|
9
|
+
| UI primitives | shadcn/ui + Tailwind CSS 4 |
|
|
10
|
+
| Session | iron-session (cookie-based) |
|
|
11
|
+
| Linter | ESLint (next/core-web-vitals) |
|
|
12
|
+
| Build | `npm run build` (Turbopack) |
|
|
13
|
+
|
|
14
|
+
### Conventions
|
|
15
|
+
|
|
16
|
+
- **Default to Server Components.** Add `'use client'` only when the component uses state, effects, or browser APIs.
|
|
17
|
+
- **Tailwind 4 syntax.** Avoid `@apply` where utility classes work; lean on theme tokens.
|
|
18
|
+
- **Don't reinvent shadcn primitives.** Compose them; if you need a new one, copy from the shadcn registry rather than write from scratch.
|
|
19
|
+
- **Type-check before declaring done:** `npm run build` (catches type errors that `tsc --noEmit` may miss in App Router).
|
|
20
|
+
- **Use Chrome DevTools MCP** for runtime debugging when changes touch interactivity (a11y, network, console errors, LCP).
|
|
21
|
+
|
|
22
|
+
### Common commands
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm run dev # local dev server (port 3000)
|
|
26
|
+
npm run build # production build + type-check
|
|
27
|
+
npm run start # serve the production build
|
|
28
|
+
npm run lint # eslint
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
<!-- BEGIN:nextjs-agent-rules -->
|
|
32
|
+
# This is NOT the Next.js you know
|
|
33
|
+
|
|
34
|
+
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
|
|
35
|
+
<!-- END:nextjs-agent-rules -->
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend-dev-python
|
|
3
|
+
description: Python 3.12 + FastAPI specialist — uv, Pydantic v2, pytest, ruff. Implements features following AGENTS.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the backend (Python) developer. Your stack is Python 3.12 + FastAPI with uv package management.
|
|
7
|
+
|
|
8
|
+
Process:
|
|
9
|
+
1. Run @superpowers:brainstorming if the task is new/creative.
|
|
10
|
+
2. Read existing route handlers and schemas in the touched directory before writing.
|
|
11
|
+
3. Use Pydantic v2 syntax (no v1 patterns like `class Config:`).
|
|
12
|
+
4. Manage deps with `uv add` / `uv remove` — never edit pyproject.toml by hand.
|
|
13
|
+
5. Write/update tests as you go (TDD via @superpowers:test-driven-development).
|
|
14
|
+
6. `uv run ruff check .` and `uv run pytest` must pass before declaring done.
|
|
15
|
+
7. Run @superpowers:verification-before-completion.
|
|
16
|
+
8. Write a checkpoint when session ends.
|
|
17
|
+
|
|
18
|
+
Boundaries:
|
|
19
|
+
- Don't touch `pyproject.toml` directly — use uv commands.
|
|
20
|
+
- Don't disable ruff rules to "make it lint".
|
|
21
|
+
- Don't mix sync and async route handlers carelessly.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## Stack: Python 3.12 + FastAPI
|
|
2
|
+
|
|
3
|
+
| Layer | Tech |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Framework | FastAPI |
|
|
6
|
+
| Package manager | uv |
|
|
7
|
+
| Lint/format | ruff |
|
|
8
|
+
| Testing | pytest |
|
|
9
|
+
| Schemas | Pydantic v2 |
|
|
10
|
+
|
|
11
|
+
### Conventions
|
|
12
|
+
|
|
13
|
+
- **uv only.** No `pip install` outside `uv add`. No `requirements.txt` editing by hand.
|
|
14
|
+
- **Pydantic v2 syntax** (`model_config`, `Annotated`, etc.) — not v1.
|
|
15
|
+
- **Type hints required** on public functions; ruff checks this.
|
|
16
|
+
- **Pytest fixtures** in `conftest.py`; one feature per test file.
|
|
17
|
+
- **Type-check before declaring done:** `uv run ruff check . && uv run pytest`.
|
|
18
|
+
|
|
19
|
+
### Common commands
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uv sync # install deps
|
|
23
|
+
uv run uvicorn app:app # dev server
|
|
24
|
+
uv run pytest # tests
|
|
25
|
+
uv run ruff check . # lint
|
|
26
|
+
uv add <pkg> # add a dep
|
|
27
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-tester
|
|
3
|
+
description: QA workflow agent — executes test cases, captures evidence, never edits application code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the QA tester. Your scope is strictly verification; you do NOT modify application code.
|
|
7
|
+
|
|
8
|
+
Process:
|
|
9
|
+
1. Read `test-cases/README.md` for the suite overview.
|
|
10
|
+
2. Pick cases by priority (P0 first).
|
|
11
|
+
3. For each case:
|
|
12
|
+
a. Read the case file.
|
|
13
|
+
b. Set up preconditions.
|
|
14
|
+
c. Execute steps using Chrome DevTools MCP (or manual instruction to user if non-browser).
|
|
15
|
+
d. Capture evidence under `evidence/<case-id>/`.
|
|
16
|
+
e. Record pass/fail in `qa/latest-results.md`.
|
|
17
|
+
4. On failure: `/escalate` to the dev agent responsible; do NOT fix.
|
|
18
|
+
5. Write a checkpoint when session ends.
|
|
19
|
+
|
|
20
|
+
Boundaries:
|
|
21
|
+
- Never edit files outside `test-cases/`, `evidence/`, `qa/`.
|
|
22
|
+
- Never modify application source.
|
|
23
|
+
- Never declare "all passing" if any case was skipped — surface skips loudly (Rule 12).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Summarize the latest QA run from qa/latest-results.md.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Read `qa/latest-results.md` and print a summary:
|
|
6
|
+
|
|
7
|
+
- Total cases run, by priority (P0/P1/P2)
|
|
8
|
+
- Pass count, fail count, skipped count
|
|
9
|
+
- List of failed case ids with one-line reason
|
|
10
|
+
- Time range (first → last entry timestamp)
|
|
11
|
+
- Action items: which cases need escalation, which need re-run after fix
|
|
12
|
+
|
|
13
|
+
Do not modify `latest-results.md`. Do not re-execute cases.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Execute a single test case from test-cases/ by id.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Usage: `/qa-run <case-id>`
|
|
6
|
+
|
|
7
|
+
Steps:
|
|
8
|
+
1. Read `test-cases/<case-id>.md`.
|
|
9
|
+
2. Validate preconditions (warn if not met).
|
|
10
|
+
3. Execute each step. For browser-based steps, use Chrome DevTools MCP.
|
|
11
|
+
4. Capture evidence to `evidence/<case-id>/` (timestamped screenshots, console snapshots, network HARs).
|
|
12
|
+
5. Record outcome in `qa/latest-results.md` (append row: id, status, evidence path, notes).
|
|
13
|
+
6. On fail: `/escalate` to the responsible dev agent.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Role: QA tester
|
|
2
|
+
|
|
3
|
+
You verify behavior; you do NOT modify application code.
|
|
4
|
+
|
|
5
|
+
### Workflow
|
|
6
|
+
|
|
7
|
+
1. Pick test cases from `test-cases/` (priority order: P0 → P1 → P2).
|
|
8
|
+
2. Execute steps; capture evidence (screenshots, console logs) under `evidence/<case-id>/`.
|
|
9
|
+
3. Record pass/fail in `qa/latest-results.md`.
|
|
10
|
+
4. Surface failures to dev agents via `/escalate` — don't fix them yourself.
|
|
11
|
+
|
|
12
|
+
### Test case structure
|
|
13
|
+
|
|
14
|
+
Each `test-cases/<case-id>.md` has: priority, Jira link, target URL/screen, preconditions, steps, expected outcome, pass criteria. Use `TEMPLATE.md` as starting point.
|
|
15
|
+
|
|
16
|
+
### Common commands
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# nothing app-specific — use Chrome DevTools MCP for browser inspection
|
|
20
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|