@dv.nghiem/flowdeck 0.2.4 → 0.3.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/README.md +24 -41
- package/dist/hooks/memory-hook.d.ts +21 -0
- package/dist/hooks/memory-hook.d.ts.map +1 -0
- package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -1
- package/dist/hooks/todo-hook.d.ts +1 -7
- package/dist/hooks/todo-hook.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +709 -420
- package/dist/services/memory-store.d.ts +40 -0
- package/dist/services/memory-store.d.ts.map +1 -0
- package/dist/tools/memory-search.d.ts +3 -0
- package/dist/tools/memory-search.d.ts.map +1 -0
- package/docs/commands/fd-doctor.md +21 -0
- package/docs/commands/fd-quick.md +33 -0
- package/docs/commands/fd-reflect.md +23 -0
- package/docs/commands/fd-status.md +31 -0
- package/docs/commands/fd-translate-intent.md +17 -0
- package/docs/commands.md +209 -271
- package/docs/configuration.md +1 -2
- package/docs/index.md +22 -28
- package/docs/memory.md +69 -0
- package/docs/quick-start.md +1 -1
- package/package.json +1 -1
- package/src/commands/fd-deploy-check.md +131 -11
- package/src/commands/fd-new-project.md +14 -1
- package/src/commands/fd-quick.md +60 -0
- package/src/commands/fd-reflect.md +41 -2
- package/src/commands/fd-status.md +84 -0
- package/src/rules/README.md +8 -7
- package/src/skills/agent-harness-construction/SKILL.md +227 -0
- package/src/skills/api-design/SKILL.md +5 -0
- package/src/skills/backend-patterns/SKILL.md +105 -0
- package/src/skills/clean-architecture/SKILL.md +85 -0
- package/src/skills/cqrs/SKILL.md +230 -0
- package/src/skills/ddd-architecture/SKILL.md +104 -0
- package/src/skills/django-patterns/SKILL.md +304 -0
- package/src/skills/django-tdd/SKILL.md +297 -0
- package/src/skills/event-driven-architecture/SKILL.md +152 -0
- package/src/skills/frontend-pattern/SKILL.md +159 -0
- package/src/skills/hexagonal-architecture/SKILL.md +80 -0
- package/src/skills/layered-architecture/SKILL.md +64 -0
- package/src/skills/postgres-patterns/SKILL.md +74 -0
- package/src/skills/python-patterns/SKILL.md +5 -0
- package/src/skills/saga-architecture/SKILL.md +113 -0
- package/dist/tools/run-parallel.d.ts +0 -4
- package/dist/tools/run-parallel.d.ts.map +0 -1
- package/docs/command-migration.md +0 -175
- package/docs/commands/fd-analyze-change.md +0 -107
- package/docs/commands/fd-dashboard.md +0 -11
- package/docs/commands/fd-evaluate-risk.md +0 -134
- package/docs/commands/fd-guarded-edit.md +0 -105
- package/docs/commands/fd-progress.md +0 -11
- package/docs/commands/fd-review-code.md +0 -29
- package/docs/commands/fd-roadmap.md +0 -10
- package/docs/commands/fd-settings.md +0 -10
- package/docs/parallel-execution.md +0 -255
- package/src/commands/fd-analyze-change.md +0 -57
- package/src/commands/fd-approve.md +0 -64
- package/src/commands/fd-blast-radius.md +0 -49
- package/src/commands/fd-dashboard.md +0 -57
- package/src/commands/fd-evaluate-risk.md +0 -62
- package/src/commands/fd-guarded-edit.md +0 -69
- package/src/commands/fd-impact-radar.md +0 -51
- package/src/commands/fd-learn.md +0 -36
- package/src/commands/fd-progress.md +0 -50
- package/src/commands/fd-regression-predict.md +0 -57
- package/src/commands/fd-review-code.md +0 -96
- package/src/commands/fd-review-route.md +0 -54
- package/src/commands/fd-roadmap.md +0 -46
- package/src/commands/fd-settings.md +0 -57
- package/src/commands/fd-test-gap.md +0 -54
- package/src/commands/fd-volatility-map.md +0 -64
- package/src/commands/fd-workspace-status.md +0 -34
- package/src/skills/parallel-execute/SKILL.md +0 -92
package/src/commands/fd-learn.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Capture a repeatable pattern from this session and save it as a reusable FlowDeck skill
|
|
3
|
-
argument-hint: [skill-name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Learn: Capture Session Knowledge
|
|
7
|
-
|
|
8
|
-
Review what happened in this session and create a reusable skill from the most significant learning.
|
|
9
|
-
|
|
10
|
-
**Input:** `$ARGUMENTS` — optional kebab-case name for the skill (the agent will choose one if omitted)
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
1. **Identify what is worth capturing.** Look for:
|
|
15
|
-
- A novel problem that required figuring out a non-obvious solution
|
|
16
|
-
- A pattern that required human guidance or clarification to resolve
|
|
17
|
-
- A workflow or sequence that would save significant time if remembered
|
|
18
|
-
- A pitfall that was hit and corrected
|
|
19
|
-
|
|
20
|
-
If nothing significant was discovered, reply: "No new patterns to capture from this session." and stop.
|
|
21
|
-
|
|
22
|
-
2. **Draft the skill.** Structure it as:
|
|
23
|
-
- `## When to Activate` — concrete triggers (e.g., "when X file pattern exists", "when the user asks about Y")
|
|
24
|
-
- `## Steps` — ordered, concrete steps to apply the skill
|
|
25
|
-
- `## Examples` — at least one short, concrete example
|
|
26
|
-
- `## Pitfalls` — common mistakes to avoid
|
|
27
|
-
|
|
28
|
-
3. **Choose the skill name.** Use `$ARGUMENTS` if provided, otherwise derive a kebab-case name from the pattern.
|
|
29
|
-
|
|
30
|
-
4. **Write the skill** using the `create-skill` tool with:
|
|
31
|
-
- `name`: kebab-case identifier
|
|
32
|
-
- `description`: one sentence summarising what the skill does
|
|
33
|
-
- `content`: the full Markdown body from step 2
|
|
34
|
-
- `tags`: 2–4 relevant tags
|
|
35
|
-
|
|
36
|
-
5. **Report** what was captured, why it is useful, and remind the user to restart OpenCode to activate it.
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Display project progress — STATE.md summary, active PLAN.md steps, and recent results
|
|
3
|
-
argument-hint: [--json]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Progress
|
|
7
|
-
|
|
8
|
-
Display current project progress from planning files.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS (pass `--json` for machine-readable output)
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
1. Check `.planning/STATE.md` exists — if not, return error: "Initialize project first with /fd-new-project."
|
|
15
|
-
|
|
16
|
-
2. Read STATE.md and parse:
|
|
17
|
-
- Current phase number
|
|
18
|
-
- Status (planned/in_progress/completed)
|
|
19
|
-
- Last updated timestamp
|
|
20
|
-
- `plan_confirmed` flag
|
|
21
|
-
|
|
22
|
-
3. Read `.planning/phases/phase-<N>/PLAN.md` if it exists:
|
|
23
|
-
- Count total steps (lines matching `- [ ]` or `- [x]`)
|
|
24
|
-
- Count completed steps (lines matching `- [x]`)
|
|
25
|
-
|
|
26
|
-
4. Check for recent RESULT.md files in the last 3 phases.
|
|
27
|
-
|
|
28
|
-
5. Display:
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
════════════════════════════════════════════════════════════
|
|
32
|
-
Phase: <N> | Status: <status> | Updated: <timestamp>
|
|
33
|
-
────────────────────────────────────────────────────────────
|
|
34
|
-
Plan: <X> steps (<Y> complete)
|
|
35
|
-
Plan confirmed: <yes/no>
|
|
36
|
-
Recent results: Phase <N-1>, Phase <N>
|
|
37
|
-
════════════════════════════════════════════════════════════
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
If `--json`, output structured JSON instead:
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"phase": N,
|
|
44
|
-
"status": "...",
|
|
45
|
-
"plan_confirmed": true,
|
|
46
|
-
"steps_total": X,
|
|
47
|
-
"steps_complete": Y,
|
|
48
|
-
"last_updated": "..."
|
|
49
|
-
}
|
|
50
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Regression Prediction — estimate the most likely regression categories for a proposed change
|
|
3
|
-
argument-hint: [change description]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Regression Predict
|
|
7
|
-
|
|
8
|
-
Predict the most likely regression categories for a proposed change before implementing it.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS — description of the proposed change
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
Run two agents in parallel:
|
|
15
|
-
|
|
16
|
-
- **@researcher**: Map the changed code paths in `$ARGUMENTS` to regression category keywords and patterns; check `.codebase/FAILURES.json` for prior regressions in the same area
|
|
17
|
-
|
|
18
|
-
- **@tester**: Analyze existing test coverage for the affected paths; identify which regression categories are under-tested
|
|
19
|
-
|
|
20
|
-
## Regression Categories
|
|
21
|
-
|
|
22
|
-
| Category | Indicators |
|
|
23
|
-
|----------|-----------|
|
|
24
|
-
| **Performance** | touching caching, DB queries, loops, response serialization |
|
|
25
|
-
| **Auth / Security** | touching middleware, tokens, sessions, permissions |
|
|
26
|
-
| **Schema / Data** | touching DB models, migrations, serializers |
|
|
27
|
-
| **UI States** | touching frontend components, state management, events |
|
|
28
|
-
| **Async Flows** | touching queues, workers, webhooks, timeouts |
|
|
29
|
-
| **API Contracts** | touching public endpoints, request/response shapes |
|
|
30
|
-
| **Integration** | touching external service calls, adapters |
|
|
31
|
-
|
|
32
|
-
## Report
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
════════════════════════════════════════════
|
|
36
|
-
REGRESSION PREDICTION
|
|
37
|
-
════════════════════════════════════════════
|
|
38
|
-
Change: <summary of $ARGUMENTS>
|
|
39
|
-
|
|
40
|
-
Likely Regressions (ranked by probability):
|
|
41
|
-
|
|
42
|
-
🔴 HIGH — Auth/Security
|
|
43
|
-
Reason: change touches middleware X
|
|
44
|
-
Prior: FAILURES.json F-12 (×3 recurrences)
|
|
45
|
-
|
|
46
|
-
🟠 MEDIUM — API Contracts
|
|
47
|
-
Reason: modifies response shape of /api/checkout
|
|
48
|
-
|
|
49
|
-
🟡 LOW — Performance
|
|
50
|
-
Reason: adds DB query in hot path
|
|
51
|
-
|
|
52
|
-
────────────────────────────────────────────
|
|
53
|
-
Recommended Tests to Add:
|
|
54
|
-
1. <specific test scenario>
|
|
55
|
-
2. <specific test scenario>
|
|
56
|
-
════════════════════════════════════════════
|
|
57
|
-
```
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Parallel reviewer + researcher + tester — aggregates findings into critical/major/minor report
|
|
3
|
-
argument-hint: [--scope=path | --focus=security,quality,tdd]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Review Code
|
|
7
|
-
|
|
8
|
-
Run a comprehensive parallel code review before merging or deploying.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS — optional `--scope=<path>` and `--focus=<areas>`
|
|
11
|
-
|
|
12
|
-
## Process
|
|
13
|
-
|
|
14
|
-
### Step 1: Identify Scope
|
|
15
|
-
|
|
16
|
-
If `/review-code [scope]` provided: review files matching scope.
|
|
17
|
-
If no scope: review all files changed since last commit.
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
git diff --name-only HEAD~1
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
If no changes found, report: "Nothing to review."
|
|
24
|
-
|
|
25
|
-
### Step 2: Parallel Review
|
|
26
|
-
|
|
27
|
-
Spawn three agents simultaneously:
|
|
28
|
-
|
|
29
|
-
**@reviewer**
|
|
30
|
-
- Security: secrets, injection, auth, XSS
|
|
31
|
-
- Quality: function size, nesting, error handling
|
|
32
|
-
- Conventions: naming, import style, patterns
|
|
33
|
-
|
|
34
|
-
**@researcher**
|
|
35
|
-
- Look up best practices for flagged patterns
|
|
36
|
-
- Check if flagged patterns are known vulnerabilities
|
|
37
|
-
- Provide context for MEDIUM findings
|
|
38
|
-
|
|
39
|
-
**@tester**
|
|
40
|
-
- Check coverage for changed files
|
|
41
|
-
- Identify untested paths
|
|
42
|
-
- Run existing tests
|
|
43
|
-
|
|
44
|
-
### Step 3: Aggregate Results
|
|
45
|
-
|
|
46
|
-
Merge all findings by severity:
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
## Code Review: <scope>
|
|
50
|
-
|
|
51
|
-
### 🔴 CRITICAL (block merge)
|
|
52
|
-
- [finding with file:line and fix]
|
|
53
|
-
|
|
54
|
-
### 🟠 HIGH (strongly recommend fix)
|
|
55
|
-
- [finding]
|
|
56
|
-
|
|
57
|
-
### 🟡 MEDIUM (consider fixing)
|
|
58
|
-
- [finding]
|
|
59
|
-
|
|
60
|
-
### 🟢 LOW (optional)
|
|
61
|
-
- [finding]
|
|
62
|
-
|
|
63
|
-
### Coverage
|
|
64
|
-
- Changed files: N%
|
|
65
|
-
- Untested paths: [list]
|
|
66
|
-
|
|
67
|
-
### Verdict: PASS | FAIL | PASS_WITH_NOTES
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Step 4: Decision
|
|
71
|
-
|
|
72
|
-
- **CRITICAL found** → Block. Fix before merge.
|
|
73
|
-
- **HIGH found** → Strongly recommend fix. Document if proceeding anyway.
|
|
74
|
-
- **MEDIUM/LOW** → Document. Proceed.
|
|
75
|
-
- **PASS** → Ready to merge.
|
|
76
|
-
|
|
77
|
-
## Agent Configuration
|
|
78
|
-
|
|
79
|
-
| Agent | Model | Purpose |
|
|
80
|
-
|-------|-------|---------|
|
|
81
|
-
| @reviewer | google/gemini-2.5-flash | Security and quality |
|
|
82
|
-
| @researcher | anthropic/claude-sonnet-4-5 | Context and best practices |
|
|
83
|
-
| @tester | anthropic/claude-sonnet-4-5 | Coverage analysis |
|
|
84
|
-
|
|
85
|
-
## Severity Classification
|
|
86
|
-
|
|
87
|
-
| Severity | Meaning | Action |
|
|
88
|
-
|----------|---------|--------|
|
|
89
|
-
| CRITICAL | Security vulnerability or data loss risk | **BLOCK** - Must fix before merge |
|
|
90
|
-
| HIGH | Bug or significant quality issue | **WARN** - Should fix before merge |
|
|
91
|
-
| MEDIUM | Maintainability concern | **INFO** - Consider fixing |
|
|
92
|
-
| LOW | Style or minor suggestion | **NOTE** - Optional |
|
|
93
|
-
|
|
94
|
-
## Output
|
|
95
|
-
|
|
96
|
-
Report: files reviewed, findings by severity, coverage, verdict.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Human Review Routing — route risky patches to the right reviewer type based on change nature and risk score
|
|
3
|
-
argument-hint: [change description or PR number]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Review Route
|
|
7
|
-
|
|
8
|
-
Determine the right reviewer type for a proposed change based on its nature and risk.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS — change description or PR number/URL
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
1. Analyze the change described in `$ARGUMENTS`:
|
|
15
|
-
- Read affected files and their categories
|
|
16
|
-
- Check `.codebase/VOLATILITY.json` for risk scores if available
|
|
17
|
-
- Check `.codebase/FAILURES.json` for prior failures in this area
|
|
18
|
-
|
|
19
|
-
2. Classify change by domain:
|
|
20
|
-
|
|
21
|
-
| Domain Signals | Reviewer Type |
|
|
22
|
-
|---------------|---------------|
|
|
23
|
-
| Auth, tokens, sessions, permissions | **Security reviewer** |
|
|
24
|
-
| DB migrations, schema, models | **Backend/DB reviewer** |
|
|
25
|
-
| Infrastructure, CI/CD, containers | **Infra reviewer** |
|
|
26
|
-
| Public APIs, SDK changes | **API owner** |
|
|
27
|
-
| High-churn or volatile file (score >0.7) | **Domain owner** |
|
|
28
|
-
| New external dependency | **Security + Arch reviewer** |
|
|
29
|
-
| Low risk, no sensitive paths | **Any peer reviewer** |
|
|
30
|
-
|
|
31
|
-
## Report
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
════════════════════════════════════════════
|
|
35
|
-
REVIEW ROUTING
|
|
36
|
-
════════════════════════════════════════════
|
|
37
|
-
Change: <summary>
|
|
38
|
-
Risk score: <0-10>
|
|
39
|
-
|
|
40
|
-
Recommended Reviewers:
|
|
41
|
-
|
|
42
|
-
PRIMARY: <reviewer type> — <reason>
|
|
43
|
-
SECONDARY: <reviewer type> — <reason>
|
|
44
|
-
|
|
45
|
-
Why:
|
|
46
|
-
- <specific signal that triggered routing>
|
|
47
|
-
- <prior failures in this area if any>
|
|
48
|
-
|
|
49
|
-
SLA:
|
|
50
|
-
- <high risk: same-day | medium: 24h | low: 48h>
|
|
51
|
-
════════════════════════════════════════════
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
If risk score < 3: "Low risk — any peer reviewer is sufficient."
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: View or update project roadmap — displays ROADMAP.md, shows phase statuses, add new phase, or mark phase complete
|
|
3
|
-
argument-hint: [--add "Phase Name" | --complete N | --list]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Roadmap
|
|
7
|
-
|
|
8
|
-
View or update the project roadmap.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS
|
|
11
|
-
|
|
12
|
-
## Behavior
|
|
13
|
-
|
|
14
|
-
### View Roadmap (no args or `--list`)
|
|
15
|
-
|
|
16
|
-
1. Read `.planning/ROADMAP.md` — if not found, error: "Run /fd-new-project first."
|
|
17
|
-
2. Read `.planning/STATE.md` for current phase and completed phases.
|
|
18
|
-
3. Display the roadmap with status indicators:
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
═══════════════════════════════════════
|
|
22
|
-
PROJECT ROADMAP
|
|
23
|
-
═══════════════════════════════════════
|
|
24
|
-
✅ Phase 1: <name> — completed
|
|
25
|
-
🔄 Phase 2: <name> — in progress ← current
|
|
26
|
-
⏳ Phase 3: <name> — planned
|
|
27
|
-
═══════════════════════════════════════
|
|
28
|
-
Current: Phase 2 | Status: in_progress
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Add Phase (`--add "Phase Name"`)
|
|
32
|
-
|
|
33
|
-
Append a new phase row to the `ROADMAP.md` overview table with status `planned`.
|
|
34
|
-
|
|
35
|
-
Update STATE.md `total_phases` counter.
|
|
36
|
-
|
|
37
|
-
Report: "Phase <N> '<name>' added."
|
|
38
|
-
|
|
39
|
-
### Mark Complete (`--complete N`)
|
|
40
|
-
|
|
41
|
-
1. Update ROADMAP.md to mark phase N as completed.
|
|
42
|
-
2. Update STATE.md:
|
|
43
|
-
- Increment `completed_phases`
|
|
44
|
-
- Advance `phase` to N+1 if N is current phase
|
|
45
|
-
- Set new phase `status: planned`
|
|
46
|
-
3. Report: "Phase N marked complete. Now on phase N+1."
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: View or update FlowDeck settings — agent models, quality profiles, and workflow toggles
|
|
3
|
-
argument-hint: [key=value | --list]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Settings
|
|
7
|
-
|
|
8
|
-
View or update FlowDeck configuration.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS
|
|
11
|
-
|
|
12
|
-
## Behavior
|
|
13
|
-
|
|
14
|
-
### List Settings (`--list` or no arguments)
|
|
15
|
-
|
|
16
|
-
Read `.planning/config.json` (create with defaults if missing) and display current settings:
|
|
17
|
-
|
|
18
|
-
| Setting | Value | Description |
|
|
19
|
-
|---------|-------|-------------|
|
|
20
|
-
| `model_profile` | balanced | Agent quality profile (quality/balanced/economy) |
|
|
21
|
-
| `tdd_enforced` | true | Require TDD red-green-refactor cycle |
|
|
22
|
-
| `approval_required` | false | Require human approval for risky changes |
|
|
23
|
-
| `volatility_threshold` | 0.7 | Risk score that triggers approval gate |
|
|
24
|
-
| `default_agent` | orchestrator | Default agent for commands |
|
|
25
|
-
|
|
26
|
-
### Set a Value (`key=value`)
|
|
27
|
-
|
|
28
|
-
Parse `$ARGUMENTS` as `key=value` pairs (space-separated for multiple).
|
|
29
|
-
|
|
30
|
-
Valid keys:
|
|
31
|
-
- `model_profile` — `quality`, `balanced`, `economy`
|
|
32
|
-
- `tdd_enforced` — `true`, `false`
|
|
33
|
-
- `approval_required` — `true`, `false`
|
|
34
|
-
- `volatility_threshold` — number between 0.0 and 1.0
|
|
35
|
-
- `default_agent` — agent name string
|
|
36
|
-
|
|
37
|
-
Update `.planning/config.json` with the new values.
|
|
38
|
-
|
|
39
|
-
Report what was changed.
|
|
40
|
-
|
|
41
|
-
### Invalid Key
|
|
42
|
-
|
|
43
|
-
Report error with list of valid keys.
|
|
44
|
-
|
|
45
|
-
## Default Config
|
|
46
|
-
|
|
47
|
-
If `.planning/config.json` does not exist, create it with defaults:
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"model_profile": "balanced",
|
|
52
|
-
"tdd_enforced": true,
|
|
53
|
-
"approval_required": false,
|
|
54
|
-
"volatility_threshold": 0.7,
|
|
55
|
-
"default_agent": "orchestrator"
|
|
56
|
-
}
|
|
57
|
-
```
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Test Gap Detector — identify areas of a proposed change weakly covered by tests and suggest minimum high-value tests to add
|
|
3
|
-
argument-hint: [change description or file paths]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Test Gap
|
|
7
|
-
|
|
8
|
-
Identify test gaps in a proposed change and recommend the minimum high-value tests to add.
|
|
9
|
-
|
|
10
|
-
**Input:** $ARGUMENTS — description of the change or specific file paths
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
Run two agents in parallel:
|
|
15
|
-
|
|
16
|
-
- **@tester**: Find source files mentioned in `$ARGUMENTS` that have no corresponding test file; identify branches/edge cases in changed functions with no test coverage; look for missing error-path tests
|
|
17
|
-
|
|
18
|
-
- **@researcher**: Check if the changed functions appear in any integration or end-to-end test; find prior test gaps in this area from git history (tests added reactively after bugs)
|
|
19
|
-
|
|
20
|
-
## Gap Scoring
|
|
21
|
-
|
|
22
|
-
For each identified gap:
|
|
23
|
-
- **CRITICAL**: public API with no test at all
|
|
24
|
-
- **HIGH**: error handling path with no test
|
|
25
|
-
- **MEDIUM**: business logic branch not covered
|
|
26
|
-
- **LOW**: edge case (empty input, max values) not tested
|
|
27
|
-
|
|
28
|
-
## Report
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
════════════════════════════════════════════
|
|
32
|
-
TEST GAP REPORT
|
|
33
|
-
════════════════════════════════════════════
|
|
34
|
-
Change: <summary>
|
|
35
|
-
|
|
36
|
-
Gaps Found (<N>):
|
|
37
|
-
|
|
38
|
-
CRITICAL: <file> — no test file exists
|
|
39
|
-
Suggest: <test file path> testing <what>
|
|
40
|
-
|
|
41
|
-
HIGH: <function> in <file> — error path not tested
|
|
42
|
-
Suggest: test case for <error condition>
|
|
43
|
-
|
|
44
|
-
MEDIUM: <function> — branch "<condition>" not covered
|
|
45
|
-
Suggest: test case where <condition is true>
|
|
46
|
-
|
|
47
|
-
────────────────────────────────────────────
|
|
48
|
-
Minimum Tests to Add (prioritized):
|
|
49
|
-
1. <test description> — covers CRITICAL gap
|
|
50
|
-
2. <test description> — covers HIGH gap
|
|
51
|
-
════════════════════════════════════════════
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Ask: "Should I write these tests now?"
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Codebase Volatility Map — highlight unstable zones based on git churn, hotfix frequency, and TODO clusters. Updates .codebase/VOLATILITY.json
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Volatility Map
|
|
6
|
-
|
|
7
|
-
Generate a volatility map of the codebase to identify unstable, high-churn areas.
|
|
8
|
-
|
|
9
|
-
## Steps
|
|
10
|
-
|
|
11
|
-
Run three analyses in parallel:
|
|
12
|
-
|
|
13
|
-
### 1. Git Churn (@researcher)
|
|
14
|
-
```bash
|
|
15
|
-
git log --follow --format="%ad" --date=short -- <file> | wc -l
|
|
16
|
-
```
|
|
17
|
-
Run for all source files (last 90 days). Identify files with the most commits.
|
|
18
|
-
|
|
19
|
-
### 2. TODO/FIXME Scan (@researcher)
|
|
20
|
-
Scan all source files for `TODO`, `FIXME`, `HACK`, `XXX` comments. Count per file.
|
|
21
|
-
|
|
22
|
-
### 3. Hotfix Frequency (@researcher)
|
|
23
|
-
Search git log for commit messages containing `fix`, `hotfix`, `patch`, `urgent`, `bug` (last 90 days). Count per file touched.
|
|
24
|
-
|
|
25
|
-
## Scoring
|
|
26
|
-
|
|
27
|
-
For each file, compute a volatility score (0.0–1.0):
|
|
28
|
-
- `churn_score` = commits / max_commits (normalized)
|
|
29
|
-
- `todo_score` = todo_count / max_todos (normalized)
|
|
30
|
-
- `hotfix_score` = hotfix_commits / max_hotfixes (normalized)
|
|
31
|
-
- `volatility = (churn * 0.4) + (hotfix * 0.4) + (todo * 0.2)`
|
|
32
|
-
|
|
33
|
-
## Output
|
|
34
|
-
|
|
35
|
-
Write results to `.codebase/VOLATILITY.json`:
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"generated_at": "<timestamp>",
|
|
39
|
-
"hotspots": [
|
|
40
|
-
{ "path": "<file>", "score": 0.92, "commits": 47, "todos": 8, "hotfixes": 12 }
|
|
41
|
-
],
|
|
42
|
-
"stable_zones": [
|
|
43
|
-
{ "path": "<file>", "score": 0.05 }
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Report
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
════════════════════════════════
|
|
52
|
-
VOLATILITY MAP
|
|
53
|
-
════════════════════════════════
|
|
54
|
-
Top Hotspots:
|
|
55
|
-
🔴 <file> — score: 0.92 (47 commits, 12 hotfixes)
|
|
56
|
-
🟠 <file> — score: 0.71 (23 commits, 5 hotfixes)
|
|
57
|
-
🟡 <file> — score: 0.45 (15 commits, 8 TODOs)
|
|
58
|
-
|
|
59
|
-
Stable Zones:
|
|
60
|
-
🟢 <file> — score: 0.05
|
|
61
|
-
|
|
62
|
-
Saved: .codebase/VOLATILITY.json
|
|
63
|
-
════════════════════════════════
|
|
64
|
-
```
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Display workspace overview — all repos, their current phase, status, and progress
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Workspace Status
|
|
6
|
-
|
|
7
|
-
Display an overview of all repositories registered in the workspace.
|
|
8
|
-
|
|
9
|
-
## Steps
|
|
10
|
-
|
|
11
|
-
1. Read `.planning/config.json` for the list of registered repos.
|
|
12
|
-
- If no repos registered, show status for the current directory only.
|
|
13
|
-
|
|
14
|
-
2. For each repo, read its `.planning/STATE.md`:
|
|
15
|
-
- Current phase, status, last_updated
|
|
16
|
-
- Plan confirmed flag
|
|
17
|
-
|
|
18
|
-
3. Display workspace overview:
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
════════════════════════════════════════════════════
|
|
22
|
-
WORKSPACE OVERVIEW
|
|
23
|
-
════════════════════════════════════════════════════
|
|
24
|
-
frontend — Phase 2 | in_progress | Plan: ✅ | Updated: <time>
|
|
25
|
-
backend — Phase 3 | completed | Plan: ✅ | Updated: <time>
|
|
26
|
-
shared — Phase 1 | planned | Plan: ❌ | Updated: <time>
|
|
27
|
-
────────────────────────────────────────────────────
|
|
28
|
-
Total: 3 repos | 1 in progress | 1 completed | 1 planned
|
|
29
|
-
════════════════════════════════════════════════════
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
4. Highlight any repos with:
|
|
33
|
-
- `status: blocked` → show with ⚠️
|
|
34
|
-
- `plan_confirmed: false` + `status: in_progress` → note: "plan not confirmed"
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: parallel-execute
|
|
3
|
-
description: Coordinate parallel agent execution for independent workstreams. Assign tasks to specialist agents by wave, merge outputs, handle conflicts. Use when a plan has parallel tasks.
|
|
4
|
-
origin: FlowDeck
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Parallel Execute Skill
|
|
8
|
-
|
|
9
|
-
Maximizes throughput by running independent work simultaneously. Manages waves, verifies independence, handles merge conflicts.
|
|
10
|
-
|
|
11
|
-
## When to Activate
|
|
12
|
-
|
|
13
|
-
Activate when:
|
|
14
|
-
- A plan has tasks that can run simultaneously
|
|
15
|
-
- Multiple independent features need to be implemented
|
|
16
|
-
- Research can happen in parallel with implementation
|
|
17
|
-
|
|
18
|
-
## Core Principles
|
|
19
|
-
|
|
20
|
-
- Parallel = different files + no shared state + not dependent on each other
|
|
21
|
-
- Always wait for an entire wave before starting the next
|
|
22
|
-
- Conflicts mean the tasks weren't truly independent — reassign as sequential
|
|
23
|
-
- Brief each agent completely — they are stateless
|
|
24
|
-
|
|
25
|
-
## Workflow
|
|
26
|
-
|
|
27
|
-
1. **Identify Wave 1** — tasks with no dependencies
|
|
28
|
-
2. **Verify independence** — confirm different files, no shared state
|
|
29
|
-
3. **Spawn Wave 1 simultaneously** — delegate all Wave 1 tasks at once
|
|
30
|
-
4. **Wait for all Wave 1** — do not start Wave 2 until all complete
|
|
31
|
-
5. **Check for conflicts** — compare files changed by each agent
|
|
32
|
-
6. **Spawn Wave 2** — tasks that depend on Wave 1 outputs
|
|
33
|
-
|
|
34
|
-
## Wave Structure Example
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Wave 1 (start simultaneously — ~2 hours):
|
|
38
|
-
Track A: @coder implements UserModel in src/models/user.ts
|
|
39
|
-
Track B: @researcher documents bcrypt API for password hashing
|
|
40
|
-
Track C: @tester writes tests for UserService in src/user.test.ts
|
|
41
|
-
|
|
42
|
-
[Wait for all three to complete]
|
|
43
|
-
|
|
44
|
-
Wave 2 (sequential — ~2 hours):
|
|
45
|
-
Task 2.A: @coder implements auth service using outputs from Track A + B
|
|
46
|
-
Task 2.B: @writer documents the public API using outputs from Track A
|
|
47
|
-
|
|
48
|
-
[Wait for 2.A and 2.B to complete]
|
|
49
|
-
|
|
50
|
-
Wave 3 (review — 30 min):
|
|
51
|
-
@reviewer reviews all changes together
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Timing example:
|
|
55
|
-
- Sequential total: 6.5 hours
|
|
56
|
-
- Parallel total: ~4.5 hours (30% faster)
|
|
57
|
-
|
|
58
|
-
## Independence Checklist
|
|
59
|
-
|
|
60
|
-
Before marking tasks as parallel:
|
|
61
|
-
- [ ] Task A and Task B touch different files
|
|
62
|
-
- [ ] Neither task's output is needed as input by the other
|
|
63
|
-
- [ ] Both tasks can be verified independently
|
|
64
|
-
- [ ] If both complete correctly, integration will be straightforward
|
|
65
|
-
|
|
66
|
-
## Conflict Resolution
|
|
67
|
-
|
|
68
|
-
If two agents modified the same file:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
CONFLICT: Track A and Track C both modified src/types/user.ts
|
|
72
|
-
Resolution: Assigning @coder to reconcile both versions sequentially.
|
|
73
|
-
Track A change: [description]
|
|
74
|
-
Track C change: [description]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Output Format
|
|
78
|
-
|
|
79
|
-
```markdown
|
|
80
|
-
## Parallel Execution Report
|
|
81
|
-
|
|
82
|
-
### Wave 1 Results (all must complete before Wave 2)
|
|
83
|
-
- Track A (@coder): ✅ src/models/user.ts created
|
|
84
|
-
- Track B (@researcher): ✅ bcrypt docs ready
|
|
85
|
-
- Track C (@tester): ✅ 8 tests written, 8 passing
|
|
86
|
-
|
|
87
|
-
### Conflicts
|
|
88
|
-
None detected.
|
|
89
|
-
|
|
90
|
-
### Wave 2 Starting
|
|
91
|
-
Task 2.A: @coder building auth service with Wave 1 outputs
|
|
92
|
-
```
|