@dv.nghiem/flowdeck 0.1.1 → 0.2.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 +1 -1
- package/dist/agents/auto-learner.d.ts +3 -0
- package/dist/agents/auto-learner.d.ts.map +1 -0
- package/dist/agents/index.d.ts +12 -9
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/planner.d.ts +1 -0
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +7 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/schema.d.ts +21 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/hooks/approval-hook.d.ts +2 -6
- package/dist/hooks/approval-hook.d.ts.map +1 -1
- package/dist/hooks/auto-learn-hook.d.ts +20 -0
- package/dist/hooks/auto-learn-hook.d.ts.map +1 -0
- package/dist/hooks/decision-trace-hook.d.ts.map +1 -1
- package/dist/hooks/guard-rails.d.ts.map +1 -1
- package/dist/hooks/orchestrator-guard-hook.d.ts +29 -0
- package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -0
- package/dist/hooks/session-events.d.ts.map +1 -1
- package/dist/hooks/session-idle-hook.d.ts.map +1 -1
- package/dist/hooks/telemetry-hook.d.ts +5 -11
- package/dist/hooks/telemetry-hook.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3337 -162
- package/dist/lib/logger.d.ts +20 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/tools/create-skill.d.ts +3 -0
- package/dist/tools/create-skill.d.ts.map +1 -0
- package/dist/tools/reflect.d.ts +3 -0
- package/dist/tools/reflect.d.ts.map +1 -0
- package/docs/agents.md +14 -62
- package/docs/commands.md +1 -1
- package/docs/configuration.md +80 -1
- package/docs/quick-start.md +1 -1
- package/docs/skills.md +1 -1
- package/docs/workflows.md +14 -14
- package/package.json +1 -1
- package/src/commands/fd-learn.md +36 -0
- package/src/commands/fd-reflect.md +30 -0
- package/src/rules/common/agent-orchestration.md +2 -4
- package/src/workflows/execute-phase.md +17 -14
- package/src/workflows/plan-flow.md +2 -2
- package/src/workflows/plan-phase.md +12 -12
- package/dist/agents/flowdeck.d.ts +0 -5
- package/dist/agents/flowdeck.d.ts.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface LogEntry {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
level: "info" | "warn" | "error" | "block";
|
|
4
|
+
source: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Get the log file path for a given directory.
|
|
9
|
+
*/
|
|
10
|
+
export declare function logPath(directory: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Write a log entry to .opencode/flowdeck.log
|
|
13
|
+
* Does NOT write to stdout - avoids overwriting OpenCode input box.
|
|
14
|
+
*/
|
|
15
|
+
export declare function logWrite(directory: string, level: LogEntry["level"], source: string, message: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Read recent log entries from .opencode/flowdeck.log
|
|
18
|
+
*/
|
|
19
|
+
export declare function logRead(directory: string, maxEntries?: number): LogEntry[];
|
|
20
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAWD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,QAAQ,EAAE,CAuBtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-skill.d.ts","sourceRoot":"","sources":["../../src/tools/create-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,eAAO,MAAM,eAAe,EAAE,cAgD5B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/tools/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAY/D,eAAO,MAAM,WAAW,EAAE,cA8DxB,CAAA"}
|
package/docs/agents.md
CHANGED
|
@@ -25,9 +25,8 @@ Agents are installed to `~/.config/opencode/agent/`. OpenCode loads them automat
|
|
|
25
25
|
| [@debug-specialist](#debug-specialist) | Root cause analysis via hypothesis-driven investigation | Deep bugs that require systematic tracing |
|
|
26
26
|
| [@discusser](#discusser) | Structured requirements Q&A, one question at a time | Starting new projects, defining feature scope |
|
|
27
27
|
| [@doc-updater](#doc-updater) | Keeps documentation in sync with code changes | Post-implementation doc maintenance |
|
|
28
|
-
| [@
|
|
29
|
-
| [@
|
|
30
|
-
| [@flowdeck-planner](#flowdeck-planner) | Creates detailed, wave-structured implementation plans | Creating execution-ready PLAN.md files |
|
|
28
|
+
| [@plan-checker](#plan-checker) | Validates plans before execution for completeness and feasibility | Quality gate before running a plan |
|
|
29
|
+
| [@planner](#planner) | Creates detailed, wave-structured implementation plans | Creating execution-ready PLAN.md files |
|
|
31
30
|
| [@mapper](#mapper) | Maps codebase to `.codebase/` structured documentation | Producing STACK.md, ARCHITECTURE.md, CONVENTIONS.md, and more |
|
|
32
31
|
| [@multi-repo-coordinator](#multi-repo-coordinator) | Cross-repo dependency graphs, change propagation, ordered CHANGE PLANs | Features spanning multiple microservices |
|
|
33
32
|
| [@orchestrator](#orchestrator) | Coordinates multi-agent workflows, phase gating, go/no-go decisions | End-to-end feature delivery |
|
|
@@ -64,7 +63,7 @@ The architect designs systems before anyone writes code. It reads existing archi
|
|
|
64
63
|
Read .codebase/ARCHITECTURE.md first. Save the ADR to .planning/adr/.
|
|
65
64
|
```
|
|
66
65
|
|
|
67
|
-
**Works with:** `@coder` (consumes interface contracts), `@
|
|
66
|
+
**Works with:** `@coder` (consumes interface contracts), `@planner` (uses ADRs as planning input), `@multi-repo-coordinator` (defines contract-first change specs)
|
|
68
67
|
|
|
69
68
|
---
|
|
70
69
|
|
|
@@ -158,7 +157,7 @@ The debug specialist finds root causes through systematic investigation — neve
|
|
|
158
157
|
|
|
159
158
|
### @discusser
|
|
160
159
|
|
|
161
|
-
The discusser extracts clear requirements through focused, one-at-a-time questioning. It never asks two questions in a single turn. Every decision is numbered (D-01, D-02, ...) and recorded with its rationale. If a new answer conflicts with a previous decision, it flags the conflict immediately and presents options. All decisions are saved to `.planning/phases/phase-N/DISCUSS.md` in a format that `@
|
|
160
|
+
The discusser extracts clear requirements through focused, one-at-a-time questioning. It never asks two questions in a single turn. Every decision is numbered (D-01, D-02, ...) and recorded with its rationale. If a new answer conflicts with a previous decision, it flags the conflict immediately and presents options. All decisions are saved to `.planning/phases/phase-N/DISCUSS.md` in a format that `@planner` can trace back to individual tasks.
|
|
162
161
|
|
|
163
162
|
**Model:** `anthropic/claude-sonnet-4-5`
|
|
164
163
|
|
|
@@ -174,7 +173,7 @@ The discusser extracts clear requirements through focused, one-at-a-time questio
|
|
|
174
173
|
to nail down the requirements. One question at a time.
|
|
175
174
|
```
|
|
176
175
|
|
|
177
|
-
**Works with:** `@
|
|
176
|
+
**Works with:** `@planner` (uses DISCUSS.md as plan input), `@orchestrator` (manages the discuss phase), `@planner` (alternative for lighter planning workflows)
|
|
178
177
|
|
|
179
178
|
---
|
|
180
179
|
|
|
@@ -200,31 +199,9 @@ The doc updater synchronizes documentation with the current implementation after
|
|
|
200
199
|
|
|
201
200
|
---
|
|
202
201
|
|
|
203
|
-
### @
|
|
202
|
+
### @plan-checker
|
|
204
203
|
|
|
205
|
-
The
|
|
206
|
-
|
|
207
|
-
**Model:** `anthropic/claude-sonnet-4-5`
|
|
208
|
-
|
|
209
|
-
**Best for:**
|
|
210
|
-
- Executing a confirmed phase plan step by step with checkpointed state
|
|
211
|
-
- Ensuring every task in a plan is committed atomically before moving to the next
|
|
212
|
-
- Documenting deviations from the plan without abandoning it
|
|
213
|
-
- Generating a SUMMARY.md that makes the phase reviewable by humans
|
|
214
|
-
|
|
215
|
-
**Example usage:**
|
|
216
|
-
```
|
|
217
|
-
@flowdeck-executor Execute phase 2. Read STATE.md for the active plan path.
|
|
218
|
-
Checkpoint after each task and document any deviations.
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Works with:** `@orchestrator` (gates execution and manages phase state), `@flowdeck-plan-checker` (validates the plan before this agent runs), `@coder` (delegates implementation tasks)
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
### @flowdeck-plan-checker
|
|
226
|
-
|
|
227
|
-
The flowdeck plan checker reviews a PLAN.md before execution and returns a scored PASS or FAIL verdict. It checks three dimensions: completeness (all requirements from DISCUSS.md are covered, every task has a defined scope and success criteria), feasibility (no task exceeds 3 hours, no circular dependencies, no assumed capabilities that don't exist), and testability (each success criterion is observable, edge cases are addressed, verification commands are specified). A score of 8–10 earns PASS, 6–7 earns PASS_WITH_NOTES, and 0–5 earns FAIL.
|
|
204
|
+
The plan checker reviews a PLAN.md before execution and returns a scored PASS or FAIL verdict. It checks three dimensions: completeness (all requirements from DISCUSS.md are covered, every task has a defined scope and success criteria), feasibility (no task exceeds 3 hours, no circular dependencies, no assumed capabilities that don't exist), and testability (each success criterion is observable, edge cases are addressed, verification commands are specified). A score of 8–10 earns PASS, 6–7 earns PASS_WITH_NOTES, and 0–5 earns FAIL.
|
|
228
205
|
|
|
229
206
|
**Model:** `anthropic/claude-sonnet-4-5`
|
|
230
207
|
|
|
@@ -236,36 +213,11 @@ The flowdeck plan checker reviews a PLAN.md before execution and returns a score
|
|
|
236
213
|
|
|
237
214
|
**Example usage:**
|
|
238
215
|
```
|
|
239
|
-
@
|
|
240
|
-
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**Works with:** `@flowdeck-planner` (generates the plan this agent reviews), `@orchestrator` (receives the verdict and decides whether to proceed), `@flowdeck-executor` (runs the plan only after this agent passes it)
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
### @flowdeck-planner
|
|
248
|
-
|
|
249
|
-
The flowdeck planner creates execution-ready PLAN.md files with wave-structured task breakdown. Every task is scoped to specific files, sized to fit within 3 hours, and paired with a verifiable success criterion. Tasks are grouped into waves based on their dependency graph — Wave 1 contains foundation work that can run in parallel, Wave 2 gates on Wave 1, and so on. Every task traces back to a requirement from DISCUSS.md or REQUIREMENTS.md.
|
|
250
|
-
|
|
251
|
-
**Model:** `anthropic/claude-sonnet-4-5`
|
|
252
|
-
|
|
253
|
-
**Best for:**
|
|
254
|
-
- Creating a PLAN.md for a new feature phase from DISCUSS.md decisions
|
|
255
|
-
- Decomposing requirements into file-level tasks with explicit wave ordering
|
|
256
|
-
- Building a dependency graph that maximizes parallel execution
|
|
257
|
-
- Producing a plan that `@flowdeck-plan-checker` will score PASS on the first review
|
|
258
|
-
|
|
259
|
-
**Example usage:**
|
|
260
|
-
```
|
|
261
|
-
@flowdeck-planner Create a PLAN.md for phase 1 using the decisions in
|
|
262
|
-
.planning/phases/phase-1/DISCUSS.md. Group tasks into waves.
|
|
263
|
-
Save to .planning/phases/phase-1/PLAN.md.
|
|
216
|
+
@plan-checker Review .planning/phases/phase-1/PLAN.md. Score it and return
|
|
217
|
+
PASS or FAIL with specific recommendations for any failures.
|
|
264
218
|
```
|
|
265
219
|
|
|
266
|
-
**Works with:** `@
|
|
267
|
-
|
|
268
|
-
---
|
|
220
|
+
**Works with:** `@planner` (generates the plan this agent reviews), `@orchestrator` (receives the verdict and decides whether to proceed)
|
|
269
221
|
|
|
270
222
|
### @mapper
|
|
271
223
|
|
|
@@ -330,7 +282,7 @@ The orchestrator coordinates multi-agent execution for feature delivery. At star
|
|
|
330
282
|
phase. Delegate incomplete steps in order and mark each complete.
|
|
331
283
|
```
|
|
332
284
|
|
|
333
|
-
**Works with:** `@
|
|
285
|
+
**Works with:** `@orchestrator` (executes plan steps), `@plan-checker` (validates plans before execution), `@parallel-coordinator` (delegates parallel waves)
|
|
334
286
|
|
|
335
287
|
---
|
|
336
288
|
|
|
@@ -397,7 +349,7 @@ The planner creates detailed, file-level implementation plans with an explicit u
|
|
|
397
349
|
Pause for my confirmation before we proceed.
|
|
398
350
|
```
|
|
399
351
|
|
|
400
|
-
**Works with:** `@architect` (provides interface contracts and ADRs that feed the plan), `@coder` (executes the confirmed plan), `@
|
|
352
|
+
**Works with:** `@architect` (provides interface contracts and ADRs that feed the plan), `@coder` (executes the confirmed plan), `@planner` (alternative for structured FlowDeck plan format)
|
|
401
353
|
|
|
402
354
|
---
|
|
403
355
|
|
|
@@ -500,7 +452,7 @@ The task splitter decomposes complex tasks into independent parallel workstreams
|
|
|
500
452
|
- Breaking a large feature into parallel workstreams before handing off to `@parallel-coordinator`
|
|
501
453
|
- Identifying which tasks must be serial (dependency gates) versus truly independent
|
|
502
454
|
- Sizing and scoping tasks so each fits within a single agent session
|
|
503
|
-
- Producing a wave plan when `@
|
|
455
|
+
- Producing a wave plan when `@planner` is unavailable or overkill
|
|
504
456
|
|
|
505
457
|
**Example usage:**
|
|
506
458
|
```
|
|
@@ -509,7 +461,7 @@ The task splitter decomposes complex tasks into independent parallel workstreams
|
|
|
509
461
|
Produce a WAVE TABLE with agent assignments.
|
|
510
462
|
```
|
|
511
463
|
|
|
512
|
-
**Works with:** `@parallel-coordinator` (executes the wave plan produced by this agent), `@orchestrator` (uses task breakdown to coordinate execution), `@
|
|
464
|
+
**Works with:** `@parallel-coordinator` (executes the wave plan produced by this agent), `@orchestrator` (uses task breakdown to coordinate execution), `@planner` (complementary — planner creates PLAN.md format, splitter focuses on parallelization)
|
|
513
465
|
|
|
514
466
|
---
|
|
515
467
|
|
package/docs/commands.md
CHANGED
|
@@ -97,7 +97,7 @@ Commands are slash commands registered in OpenCode. Run them by typing `/command
|
|
|
97
97
|
**What it does:**
|
|
98
98
|
1. Reads `.planning/phases/phase-N/DISCUSS.md` for decisions and requirements
|
|
99
99
|
2. Invokes `@planner`, which produces a detailed `PLAN.md` with tasks, dependencies, file paths, and acceptance criteria
|
|
100
|
-
3. Invokes `@
|
|
100
|
+
3. Invokes `@plan-checker` to validate the plan for completeness, contradiction, and missing edge cases
|
|
101
101
|
4. Displays the plan and any checker feedback
|
|
102
102
|
5. Prompts: **type `CONFIRMED` to accept the plan and write it to disk**
|
|
103
103
|
6. On confirmation, saves `.planning/phases/phase-N/PLAN.md` and updates `STATE.md`
|
package/docs/configuration.md
CHANGED
|
@@ -137,7 +137,7 @@ Each FlowDeck project stores its settings in `.planning/config.json`. This file
|
|
|
137
137
|
| `workspace_mode` | `"single"` \| `"multi"` | `"single"` for one repo; `"multi"` enables the multi-repo coordinator |
|
|
138
138
|
| `active_phase` | integer | The current phase number. `@orchestrator` reads this to determine which plan to execute |
|
|
139
139
|
| `plan_confirmed` | boolean | Set to `true` when you type `CONFIRMED` after `/fd-plan`. Guards against unreviewed execution |
|
|
140
|
-
| `enforce_guardrails` | boolean | When `true`, the `@
|
|
140
|
+
| `enforce_guardrails` | boolean | When `true`, the `@plan-checker` must approve a plan before `@orchestrator` runs it |
|
|
141
141
|
| `sub_repos` | array | List of additional repositories involved in this project (multi-repo mode only) |
|
|
142
142
|
| `sub_repos[].name` | string | Short identifier used in cross-repo task delegation |
|
|
143
143
|
| `sub_repos[].path` | string | Relative or absolute path to the repository on disk |
|
|
@@ -147,6 +147,85 @@ Each FlowDeck project stores its settings in `.planning/config.json`. This file
|
|
|
147
147
|
|
|
148
148
|
---
|
|
149
149
|
|
|
150
|
+
## flowdeck.json (Agent Model Overrides)
|
|
151
|
+
|
|
152
|
+
The `flowdeck.json` file lets you assign specific AI models to individual FlowDeck agents. This is useful when you want the `@planner` to use a more capable model while lighter agents like `@tester` use a faster, cheaper one.
|
|
153
|
+
|
|
154
|
+
### Locations
|
|
155
|
+
|
|
156
|
+
| Scope | Path |
|
|
157
|
+
|-------|------|
|
|
158
|
+
| Global | `~/.config/opencode/flowdeck.json` |
|
|
159
|
+
| Project | `<project>/.opencode/flowdeck.json` |
|
|
160
|
+
|
|
161
|
+
Project config takes precedence over global config.
|
|
162
|
+
|
|
163
|
+
### Schema
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"agents": {
|
|
168
|
+
"<agent-name>": {
|
|
169
|
+
"model": "<provider>/<model-id>"
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Supported Agents
|
|
176
|
+
|
|
177
|
+
| Agent | Default Model | Override Example |
|
|
178
|
+
|-------|--------------|-----------------|
|
|
179
|
+
| `@architect` | `claude-opus-4-5` | `anthropic/claude-opus-4-5` |
|
|
180
|
+
| `@build-error-resolver` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
181
|
+
| `@code-explorer` | `claude-haiku-4-5` | `anthropic/claude-haiku-4-5` |
|
|
182
|
+
| `@coder` | `claude-opus-4-5` | `anthropic/claude-opus-4-5` |
|
|
183
|
+
| `@debug-specialist` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
184
|
+
| `@discusser` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
185
|
+
| `@doc-updater` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
186
|
+
| `@orchestrator` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
187
|
+
| `@plan-checker` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
188
|
+
| `@planner` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
189
|
+
| `@mapper` | `gemini-2.5-flash` | `google/gemini-2.5-flash` |
|
|
190
|
+
| `@multi-repo-coordinator` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
191
|
+
| `@orchestrator` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
192
|
+
| `@parallel-coordinator` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
193
|
+
| `@performance-optimizer` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
194
|
+
| `@planner` | `claude-opus-4-5` | `anthropic/claude-opus-4-5` |
|
|
195
|
+
| `@refactor-guide` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
196
|
+
| `@researcher` | `gpt-4o` | `openai/gpt-4o` |
|
|
197
|
+
| `@reviewer` | `gemini-2.5-flash` | `google/gemini-2.5-flash` |
|
|
198
|
+
| `@security-auditor` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
199
|
+
| `@task-splitter` | `claude-sonnet-4-5` | `anthropic/claude-sonnet-4-5` |
|
|
200
|
+
| `@tester` | `claude-haiku-4-5` | `anthropic/claude-haiku-4-5` |
|
|
201
|
+
| `@writer` | `claude-haiku-4-5` | `anthropic/claude-haiku-4-5` |
|
|
202
|
+
|
|
203
|
+
### Example
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"agents": {
|
|
208
|
+
"planner": {
|
|
209
|
+
"model": "anthropic/claude-opus-4-5"
|
|
210
|
+
},
|
|
211
|
+
"orchestrator": {
|
|
212
|
+
"model": "anthropic/claude-sonnet-4-5"
|
|
213
|
+
},
|
|
214
|
+
"tester": {
|
|
215
|
+
"model": "anthropic/claude-haiku-4-5"
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Notes
|
|
222
|
+
|
|
223
|
+
- If an agent is not listed in `agents`, it uses the model currently selected in OpenCode.
|
|
224
|
+
- Only list agents you want to override — omitted agents inherit the session default.
|
|
225
|
+
- Model strings must match the format `provider/model-id` (e.g., `anthropic/claude-sonnet-4-5`).
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
150
229
|
## Settings Command
|
|
151
230
|
|
|
152
231
|
To view or modify project configuration interactively, run inside an OpenCode session:
|
package/docs/quick-start.md
CHANGED
|
@@ -98,7 +98,7 @@ With requirements captured, generate the plan:
|
|
|
98
98
|
/fd-plan 1
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
`@
|
|
101
|
+
`@planner` reads `DISCUSS.md` and produces a wave-structured `PLAN.md` in `.planning/phases/phase-1/`. Then `@plan-checker` reviews it for quality — checking that task sizes are reasonable, success criteria are specific, and wave dependencies are correct.
|
|
102
102
|
|
|
103
103
|
You are shown the plan and prompted for confirmation. **Type `CONFIRMED` to allow execution to proceed.** Review carefully before confirming:
|
|
104
104
|
|
package/docs/skills.md
CHANGED
|
@@ -35,7 +35,7 @@ For example: `@tester use the tdd-workflow skill to add tests for the payments m
|
|
|
35
35
|
| `multi-repo` | Cross-repo dependency graphs, contract-first changes, ordered rollouts | `@multi-repo-coordinator`, `@architect` |
|
|
36
36
|
| `parallel-execute` | Wave-based parallel task coordination and merge protocol | `@parallel-coordinator`, `@task-splitter` |
|
|
37
37
|
| `performance-profiling` | Profiling methodology, bottleneck identification, before/after measurement | `@performance-optimizer` |
|
|
38
|
-
| `plan-task` | Wave-structured task planning with dependency graph and success criteria | `@planner`, `@
|
|
38
|
+
| `plan-task` | Wave-structured task planning with dependency graph and success criteria | `@planner`, `@planner` |
|
|
39
39
|
| `python-patterns` | Python 3.10+: type hints, dataclasses, asyncio, pytest | `@coder`, `@reviewer` |
|
|
40
40
|
| `refactor-guide` | Safe refactoring: tests-first, one transformation per commit | `@refactor-guide`, `@coder` |
|
|
41
41
|
| `rust-patterns` | Ownership, traits, async/Tokio, error handling, smart pointers | `@coder`, `@reviewer` |
|
package/docs/workflows.md
CHANGED
|
@@ -37,10 +37,10 @@ Each step gates the next. `/fd-plan` will not proceed without a confirmed `DISCU
|
|
|
37
37
|
| Workflow file | Triggered by | Agents involved |
|
|
38
38
|
|--------------|-------------|----------------|
|
|
39
39
|
| `discuss-flow.md` | `/fd-discuss` | `@orchestrator`, `@discusser` |
|
|
40
|
-
| `plan-flow.md` | `/fd-plan` | `@orchestrator`, `@
|
|
41
|
-
| `plan-phase.md` | `/fd-plan-phase [N]` | `@
|
|
40
|
+
| `plan-flow.md` | `/fd-plan` | `@orchestrator`, `@planner`, `@plan-checker` |
|
|
41
|
+
| `plan-phase.md` | `/fd-plan-phase [N]` | `@planner`, `@plan-checker`, `@orchestrator` |
|
|
42
42
|
| `execute-flow.md` | `/fd-new-feature` | `@orchestrator`, `@coder`, `@reviewer` |
|
|
43
|
-
| `execute-phase.md` | `/execute-phase [N]` | `@orchestrator`, `@
|
|
43
|
+
| `execute-phase.md` | `/execute-phase [N]` | `@orchestrator`, `@orchestrator` |
|
|
44
44
|
| `fix-bug-flow.md` | `/fd-fix-bug` | `@orchestrator`, `@debug-specialist`, `@researcher`, `@tester`, `@coder`, `@reviewer` |
|
|
45
45
|
| `debug-flow.md` | `/debug` | `@debug-specialist`, `@tester`, `@coder` |
|
|
46
46
|
| `review-code-flow.md` | `/fd-review-code` | `@orchestrator`, `@parallel-coordinator`, `@reviewer`, `@researcher`, `@tester` |
|
|
@@ -111,15 +111,15 @@ steps:
|
|
|
111
111
|
|
|
112
112
|
The plan flow creates an execution-ready `PLAN.md` from the decisions in a confirmed `DISCUSS.md`. It starts with a guard check — if `DISCUSS.md` does not exist or is not confirmed, execution stops and the user is directed to run `/fd-discuss` first.
|
|
113
113
|
|
|
114
|
-
After loading context (`PROJECT.md`, `STATE.md`, `DISCUSS.md`), `@
|
|
114
|
+
After loading context (`PROJECT.md`, `STATE.md`, `DISCUSS.md`), `@planner` creates a wave-structured `PLAN.md` where every task traces back to a `D-XX` decision. The draft plan is then handed to `@plan-checker`, which scores it for completeness, feasibility, and testability.
|
|
115
115
|
|
|
116
|
-
A FAIL verdict from `@
|
|
116
|
+
A FAIL verdict from `@plan-checker` returns the plan to `@planner` for revision. A PASS (or PASS_WITH_NOTES) causes `@orchestrator` to present the plan to the user. Execution **pauses here** — the plan is not saved until the user explicitly confirms it. After confirmation, the plan is saved to `.planning/phases/phase-N/PLAN.md` and `STATE.md` is updated.
|
|
117
117
|
|
|
118
118
|
**Steps:**
|
|
119
119
|
1. `@orchestrator` — Guard check: verify `DISCUSS.md` exists and is confirmed
|
|
120
120
|
2. `@orchestrator` — Load `PROJECT.md`, `STATE.md`, `DISCUSS.md`
|
|
121
|
-
3. `@
|
|
122
|
-
4. `@
|
|
121
|
+
3. `@planner` — Create `PLAN.md` with tasks traced to D-XX decisions
|
|
122
|
+
4. `@plan-checker` — Verify completeness, feasibility, testability; return PASS or FAIL
|
|
123
123
|
5. `@orchestrator` — Present draft plan for user review
|
|
124
124
|
6. `@orchestrator` — **PAUSE** — wait for explicit user CONFIRM before saving
|
|
125
125
|
7. `@orchestrator` — Save confirmed `PLAN.md` to `.planning/phases/phase-N/`
|
|
@@ -133,11 +133,11 @@ A FAIL verdict from `@flowdeck-plan-checker` returns the plan to `@flowdeck-plan
|
|
|
133
133
|
|
|
134
134
|
A focused sub-flow for creating a plan for a specific numbered phase. Unlike `plan-flow`, which drives the full `/fd-plan` command, `plan-phase` is a targeted invocation that takes a phase number as an argument and operates only on that phase's scope.
|
|
135
135
|
|
|
136
|
-
`@
|
|
136
|
+
`@planner` is spawned with the phase's `REQUIREMENTS.md` (or `DISCUSS.md`), `ROADMAP.md`, and `PROJECT.md`. It produces `.planning/phases/phase-N/PLAN.md`. `@plan-checker` then reviews the plan and returns PASS or FAIL with specific recommendations. Results are presented by `@orchestrator`.
|
|
137
137
|
|
|
138
138
|
**Steps:**
|
|
139
|
-
1. `@
|
|
140
|
-
2. `@
|
|
139
|
+
1. `@planner` — Create `PLAN.md` for the specified phase
|
|
140
|
+
2. `@plan-checker` — Score plan: completeness, feasibility, testability
|
|
141
141
|
3. `@orchestrator` — Present PASS/FAIL verdict and recommendations
|
|
142
142
|
|
|
143
143
|
---
|
|
@@ -166,14 +166,14 @@ The execute flow drives full feature delivery. A guard check verifies that `.pla
|
|
|
166
166
|
|
|
167
167
|
A targeted sub-flow for executing a single numbered phase plan. Before delegating, `@orchestrator` verifies that `.planning/`, `.codebase/`, and `.planning/phases/phase-N/PLAN.md` all exist and that the plan has the `confirmed` status flag.
|
|
168
168
|
|
|
169
|
-
`@
|
|
169
|
+
`@orchestrator` is spawned with `STATE.md`, `PLAN.md`, and `PROJECT.md`. It executes tasks in wave order, committing each atomically. After each task it checkpoints state via the planning-state tool. Deviations from the plan are documented in a `## Deviations` section of `PLAN.md`. After all tasks complete, `@orchestrator` writes `SUMMARY.md` and `@orchestrator` marks the phase complete in `STATE.md` and `ROADMAP.md`.
|
|
170
170
|
|
|
171
171
|
**Steps:**
|
|
172
172
|
1. `@orchestrator` — Verify prerequisites: `.planning/`, `.codebase/`, `PLAN.md` confirmed
|
|
173
173
|
2. `@orchestrator` — Load `PLAN.md`, `STATE.md`, `PROJECT.md`
|
|
174
|
-
3. `@
|
|
175
|
-
4. `@
|
|
176
|
-
5. `@
|
|
174
|
+
3. `@orchestrator` — Execute tasks in wave order; atomic commit per task
|
|
175
|
+
4. `@orchestrator` — Checkpoint state after each task
|
|
176
|
+
5. `@orchestrator` — Write `SUMMARY.md`
|
|
177
177
|
6. `@orchestrator` — Mark phase complete in `STATE.md` and `ROADMAP.md`
|
|
178
178
|
|
|
179
179
|
---
|
package/package.json
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
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.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Post-session reflection — analyse artifacts and propose self-improvement actions
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Reflect: Self-Improvement Analysis
|
|
6
|
+
|
|
7
|
+
Analyse session artifacts and propose concrete improvements to FlowDeck's knowledge base.
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Call the `reflect` tool to gather session artifacts and generate the reflection context.
|
|
12
|
+
|
|
13
|
+
2. Read the reflection context carefully:
|
|
14
|
+
- Which tools were called most often? Were any called redundantly?
|
|
15
|
+
- Which decisions were made? Do they reveal a repeatable pattern?
|
|
16
|
+
- Were there any failures? What caused them?
|
|
17
|
+
- What knowledge was absent and had to be worked out from scratch?
|
|
18
|
+
|
|
19
|
+
3. **Produce improvement proposals.** For each pattern or gap found:
|
|
20
|
+
|
|
21
|
+
- **New skill** → call `create-skill` to capture it in `src/skills/`
|
|
22
|
+
- **Policy** → propose a new entry in `.codebase/POLICIES.json` for the user to review
|
|
23
|
+
- **Workflow change** → note it clearly so the user can decide
|
|
24
|
+
|
|
25
|
+
4. Execute any skill creation (step 3) now.
|
|
26
|
+
|
|
27
|
+
5. **Final report** — provide:
|
|
28
|
+
- What was captured (new skills created)
|
|
29
|
+
- What requires human review (policy proposals, workflow changes)
|
|
30
|
+
- 3–5 bullet summary of this session's most impactful learnings
|
|
@@ -14,9 +14,7 @@ FlowDeck provides 23 specialist agents. Each has a specific role. Using the righ
|
|
|
14
14
|
| `@debug-specialist` | Root cause analysis for bugs | When a bug needs deep investigation |
|
|
15
15
|
| `@discusser` | Extract requirements via Q&A | Starting a new feature or phase |
|
|
16
16
|
| `@doc-updater` | Update docs after code changes | After implementation completes |
|
|
17
|
-
| `@
|
|
18
|
-
| `@flowdeck-plan-checker` | Review PLAN.md before execution | Before executing any plan |
|
|
19
|
-
| `@flowdeck-planner` | Create FlowDeck PLAN.md files | When running /plan command |
|
|
17
|
+
| `@plan-checker` | Review PLAN.md before execution | Before executing any plan |
|
|
20
18
|
| `@mapper` | Map codebase to .codebase/ docs | Running /map-codebase |
|
|
21
19
|
| `@orchestrator` | Coordinate multi-agent execution | Managing a full feature delivery |
|
|
22
20
|
| `@parallel-coordinator` | Run parallel agent workstreams | When tasks can run simultaneously |
|
|
@@ -79,7 +77,7 @@ discuss → plan → execute → review
|
|
|
79
77
|
| Phase | Agent | Command |
|
|
80
78
|
|-------|-------|---------|
|
|
81
79
|
| discuss | `@discusser` | `/discuss` |
|
|
82
|
-
| plan | `@
|
|
80
|
+
| plan | `@planner` → `@plan-checker` | `/plan` |
|
|
83
81
|
| execute | `@orchestrator` → `@coder`, `@tester`, etc. | `/new-feature` |
|
|
84
82
|
| review | `@reviewer` + `@security-auditor` | `/review-code` |
|
|
85
83
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: execute-phase
|
|
3
|
-
description: "Orchestrates /execute-phase [N] — delegates to
|
|
3
|
+
description: "Orchestrates /execute-phase [N] — delegates to orchestrator with checkpoint protocol"
|
|
4
4
|
triggers:
|
|
5
5
|
- /execute-phase
|
|
6
6
|
steps:
|
|
@@ -10,11 +10,11 @@ steps:
|
|
|
10
10
|
- name: load_context
|
|
11
11
|
agent: "@orchestrator"
|
|
12
12
|
action: Load PLAN.md, STATE.md, PROJECT.md
|
|
13
|
-
- name:
|
|
14
|
-
agent: "@
|
|
15
|
-
action:
|
|
13
|
+
- name: execute_tasks
|
|
14
|
+
agent: "@orchestrator"
|
|
15
|
+
action: Delegate each task to appropriate specialist (@coder, @tester, etc.)
|
|
16
16
|
- name: checkpoint_protocol
|
|
17
|
-
agent: "@
|
|
17
|
+
agent: "@orchestrator"
|
|
18
18
|
action: After each task, checkpoint state via planning-state tool
|
|
19
19
|
- name: present_results
|
|
20
20
|
agent: "@orchestrator"
|
|
@@ -28,7 +28,7 @@ steps:
|
|
|
28
28
|
|
|
29
29
|
## Purpose
|
|
30
30
|
|
|
31
|
-
Execute `/execute-phase [N]` to implement a phase plan using the
|
|
31
|
+
Execute `/execute-phase [N]` to implement a phase plan using the orchestrator agent.
|
|
32
32
|
|
|
33
33
|
## Prerequisites
|
|
34
34
|
|
|
@@ -58,16 +58,19 @@ Read into execution context:
|
|
|
58
58
|
- `.codebase/ARCHITECTURE.md` (if exists)
|
|
59
59
|
- `.codebase/CONVENTIONS.md` (if exists)
|
|
60
60
|
|
|
61
|
-
### Step 3:
|
|
61
|
+
### Step 3: Execute Tasks
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Orchestrator delegates each task to appropriate specialist agents:
|
|
64
|
+
- @coder for implementation
|
|
65
|
+
- @tester for tests
|
|
66
|
+
- @researcher for research tasks
|
|
67
|
+
- etc.
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
1. Execute
|
|
69
|
+
Each task:
|
|
70
|
+
1. Execute via delegated agent
|
|
67
71
|
2. Run verification tests for each task
|
|
68
72
|
3. Commit atomically with message: `feat(phase-N): task description`
|
|
69
73
|
4. Handle deviations (document, pause for approval if checkpoint)
|
|
70
|
-
5. Create SUMMARY.md after all tasks complete
|
|
71
74
|
|
|
72
75
|
### Step 4: Checkpoint Protocol
|
|
73
76
|
|
|
@@ -78,7 +81,7 @@ After each task:
|
|
|
78
81
|
|
|
79
82
|
If session interrupted:
|
|
80
83
|
- User can resume with `/resume`
|
|
81
|
-
-
|
|
84
|
+
- Orchestrator will pick up from last checkpoint
|
|
82
85
|
|
|
83
86
|
### Step 5: Present Results
|
|
84
87
|
|
|
@@ -118,7 +121,7 @@ Update ROADMAP.md:
|
|
|
118
121
|
|
|
119
122
|
| Agent | Model | Purpose |
|
|
120
123
|
|-------|-------|---------|
|
|
121
|
-
|
|
|
124
|
+
| orchestrator | Sonnet 4.6 | Coordinates plan execution via delegation |
|
|
122
125
|
|
|
123
126
|
## Output Files
|
|
124
127
|
|
|
@@ -139,4 +142,4 @@ If implementation requires deviating from plan:
|
|
|
139
142
|
- If task fails: stop at checkpoint, preserve state
|
|
140
143
|
- User can run `/fix-bug` or manually fix
|
|
141
144
|
- Resume picks up from last successful checkpoint
|
|
142
|
-
- Never leave partial state on error
|
|
145
|
+
- Never leave partial state on error
|
|
@@ -12,10 +12,10 @@ steps:
|
|
|
12
12
|
agent: "@orchestrator"
|
|
13
13
|
action: Load PROJECT.md, STATE.md, DISCUSS.md with D-XX decisions
|
|
14
14
|
- name: draft_plan
|
|
15
|
-
agent: "@
|
|
15
|
+
agent: "@planner"
|
|
16
16
|
action: Create PLAN.md with tasks traced to D-XX decisions from DISCUSS.md
|
|
17
17
|
- name: validate_plan
|
|
18
|
-
agent: "@
|
|
18
|
+
agent: "@plan-checker"
|
|
19
19
|
action: Verify all requirements covered, all D-XX decisions addressed
|
|
20
20
|
- name: review_plan
|
|
21
21
|
agent: "@orchestrator"
|