@dv.nghiem/flowdeck 0.3.7 → 0.3.9
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 +0 -101
- package/dist/dashboard/server.mjs +789 -868
- package/dist/hooks/command-ref-guard.d.ts +21 -0
- package/dist/hooks/command-ref-guard.d.ts.map +1 -0
- package/dist/hooks/compaction-hook.d.ts +2 -1
- package/dist/hooks/compaction-hook.d.ts.map +1 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/index.js +33 -14
- package/dist/lib/impact-radar.d.ts +2 -2
- package/dist/mcp/index.d.ts +3 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/services/command-validator.d.ts +61 -0
- package/dist/services/command-validator.d.ts.map +1 -0
- package/dist/services/command-validator.test.d.ts +2 -0
- package/dist/services/command-validator.test.d.ts.map +1 -0
- package/dist/services/preflight-explorer.d.ts +130 -0
- package/dist/services/preflight-explorer.d.ts.map +1 -0
- package/dist/services/preflight-explorer.test.d.ts +25 -0
- package/dist/services/preflight-explorer.test.d.ts.map +1 -0
- package/dist/services/question-guard.d.ts +92 -0
- package/dist/services/question-guard.d.ts.map +1 -0
- package/dist/services/quick-router.d.ts +157 -0
- package/dist/services/quick-router.d.ts.map +1 -0
- package/dist/services/quick-router.test.d.ts +13 -0
- package/dist/services/quick-router.test.d.ts.map +1 -0
- package/docs/commands.md +43 -23
- package/docs/quick-start.md +2 -0
- package/docs/workflows.md +1 -1
- package/package.json +8 -8
- package/src/commands/fd-deploy-check.md +2 -2
- package/src/commands/fd-discuss.md +61 -4
- package/src/commands/fd-map-codebase.md +1 -1
- package/src/commands/fd-multi-repo.md +3 -3
- package/src/commands/fd-plan.md +1 -1
- package/src/commands/fd-quick.md +303 -55
- package/src/rules/common/behavioral.md +63 -0
- package/src/skills/blast-radius-preview/SKILL.md +1 -1
- package/src/skills/change-impact-radar/SKILL.md +2 -2
- package/src/skills/codebase-mapping/SKILL.md +1 -1
- package/src/skills/confidence-aware-planning/SKILL.md +1 -1
- package/src/skills/context-load/SKILL.md +1 -1
- package/src/skills/human-review-routing/SKILL.md +3 -3
- package/src/skills/intent-translator/SKILL.md +2 -2
- package/src/skills/multi-repo/SKILL.md +1 -1
- package/src/skills/regression-prediction/SKILL.md +1 -1
- package/src/skills/repo-memory-graph/SKILL.md +1 -1
- package/src/skills/test-gap-detector/SKILL.md +1 -1
- package/src/skills/volatility-map/SKILL.md +1 -1
package/src/commands/fd-quick.md
CHANGED
|
@@ -1,63 +1,311 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Autonomous workflow launcher — classifies the task, selects the correct existing workflow, and runs the full stage sequence (discuss → plan → execute → verify and variants) end-to-end with minimal user input
|
|
3
3
|
argument-hint: [task description]
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Quick
|
|
6
|
+
# Quick — Autonomous Workflow Launcher
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Run the correct FlowDeck workflow automatically for any task. This command:
|
|
9
|
+
- Explores the codebase first before asking any questions
|
|
10
|
+
- Classifies the task type using both text signals and repo evidence
|
|
11
|
+
- Selects the appropriate existing workflow and stage sequence
|
|
12
|
+
- Routes all clarifying questions through `@supervisor` (only when evidence cannot answer)
|
|
13
|
+
- Executes each stage in order using the existing registered commands
|
|
14
|
+
- Stops only when blocked, awaiting approval, or fully verified
|
|
9
15
|
|
|
10
16
|
**Input:** $ARGUMENTS — what you need done
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Step 0: Autonomous Preflight Exploration
|
|
21
|
+
|
|
22
|
+
**Before asking the human anything**, explore the repository to build evidence.
|
|
23
|
+
|
|
24
|
+
Invoke `@code-explorer` to inspect the following in parallel:
|
|
25
|
+
|
|
26
|
+
1. **Repository structure** — `.planning/STATE.md`, `.planning/PROJECT.md`, `AGENTS.md`
|
|
27
|
+
2. **Available commands** — enumerate `src/commands/*.md` filenames
|
|
28
|
+
3. **Available agents** — enumerate `src/agents/*.ts` filenames
|
|
29
|
+
4. **Available skills** — enumerate `src/skills/` directory names
|
|
30
|
+
5. **Workflow config** — read `flowdeck.json` if present (governance, models)
|
|
31
|
+
6. **Tech stack** — read `package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`
|
|
32
|
+
7. **Implementation patterns** — inspect `src/` top-level directories
|
|
33
|
+
8. **Prior decisions** — check `.planning/phases/*/DISCUSS.md` files
|
|
34
|
+
9. **Relevant files** — find source files matching keywords in `$ARGUMENTS`
|
|
35
|
+
|
|
36
|
+
Store the exploration snapshot in STATE.md under `quick_run.preflightExploration`:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
quick_run:
|
|
40
|
+
preflightExploration:
|
|
41
|
+
exploredAt: <ISO timestamp>
|
|
42
|
+
techStack: [...]
|
|
43
|
+
availableCommands: [...]
|
|
44
|
+
availableSkills: [...]
|
|
45
|
+
implementationPatterns: [...]
|
|
46
|
+
evidenceCount: <N>
|
|
47
|
+
clarificationResolvedByEvidence: false
|
|
48
|
+
suppressedQuestions: []
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**This step is mandatory. Do not proceed to Step 1 until exploration is complete.**
|
|
52
|
+
|
|
53
|
+
### Question suppression rule
|
|
54
|
+
|
|
55
|
+
After exploration, invoke the question guard before emitting any question:
|
|
56
|
+
|
|
57
|
+
> A question may only be forwarded to `@supervisor` if:
|
|
58
|
+
> 1. It cannot be answered by the exploration evidence
|
|
59
|
+
> 2. It has not already been asked in the current session
|
|
60
|
+
> 3. It is required to safely select the correct workflow
|
|
61
|
+
|
|
62
|
+
If the question can be answered from repo evidence, suppress it and log it in
|
|
63
|
+
`quick_run.suppressedQuestions`. Do not present it to the user.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 1: Pre-flight State Check
|
|
68
|
+
|
|
69
|
+
1. Check `.planning/STATE.md` exists — if not, error: "Run /fd-new-project first."
|
|
70
|
+
2. Read `.planning/STATE.md` to determine if a `quick_run` entry already exists for this session.
|
|
71
|
+
- If `quick_run.outcome` is `running` or `blocked`: **resume from the last completed stage** (skip to Step 5).
|
|
72
|
+
- If `quick_run.preflightExploration` exists and `exploredAt` is recent (< 5 min): reuse it, skip Step 0.
|
|
73
|
+
- Otherwise: proceed to Step 0 then Step 2.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Step 2: Classify the Task
|
|
78
|
+
|
|
79
|
+
Use **both** text-signal matching and preflight exploration evidence:
|
|
80
|
+
|
|
81
|
+
Call `classifyTaskWithContext(description, explorationResult)` from `quick-router.ts`.
|
|
82
|
+
|
|
83
|
+
This resolves ambiguous descriptions using repo evidence before flagging
|
|
84
|
+
`clarificationNeeded`. Most short descriptions that would normally prompt a
|
|
85
|
+
question are resolved by evidence (e.g., tech stack, existing patterns, prior decisions).
|
|
86
|
+
|
|
87
|
+
### Signal Classification Table
|
|
88
|
+
|
|
89
|
+
| Task Type | Strong Signal Keywords | Stage Sequence |
|
|
90
|
+
|-----------|------------------------|----------------|
|
|
91
|
+
| **bugfix** | fix, bug, broken, not working, error, crash, regression, debug, exception, failing, root cause, why is, stack trace | `discuss → fix-bug → verify` |
|
|
92
|
+
| **ui-feature** | landing page, dashboard, admin panel, app screen, onboarding, wireframe, design system, ux flow, web app, website, responsive layout, navbar, modal, sidebar, frontend page | `discuss → design → plan → execute → verify` |
|
|
93
|
+
| **docs** | docs, documentation, readme, api docs, usage guide, write docs, document, changelog, tutorial, docstring | `discuss → write-docs → verify` |
|
|
94
|
+
| **simple** | rename, move file, minor, typo, update constant, update config, bump version, one-liner | `execute → verify` |
|
|
95
|
+
| **feature** | (substantive description, 8+ words, no above signals) | `discuss → plan → execute → verify` |
|
|
96
|
+
| **ambiguous** | (short, vague, or unclear — only after exploration cannot resolve) | *(clarify via supervisor — see Step 3)* |
|
|
97
|
+
|
|
98
|
+
### Classification Rules
|
|
99
|
+
|
|
100
|
+
1. **Bug signals dominate**: if the description contains "fix", "bug", "error", "crash", "exception", "broken", or "regression", classify as `bugfix` even if it also mentions UI elements.
|
|
101
|
+
2. **UI signals for design-first**: if 1+ UI-heavy signal is present and no dominant bug signal, classify as `ui-feature`.
|
|
102
|
+
3. **Docs signals**: if "docs", "documentation", "readme", or "write docs" is present without implementation signals, classify as `docs`.
|
|
103
|
+
4. **Simple**: if "rename", "typo", "minor", or "move file" is present and description is a single, scoped operation.
|
|
104
|
+
5. **Feature**: substantive description (8+ words) with no specific signal type.
|
|
105
|
+
6. **Ambiguous** (only when exploration cannot resolve): description is too short (<5 words) or matches a bare imperative with no object (e.g., "improve", "add", "make it better") AND repo evidence does not clarify scope or type.
|
|
106
|
+
|
|
107
|
+
Record the classification result:
|
|
108
|
+
```yaml
|
|
109
|
+
quick_run:
|
|
110
|
+
taskDescription: "$ARGUMENTS"
|
|
111
|
+
taskType: <feature|ui-feature|bugfix|docs|simple|ambiguous>
|
|
112
|
+
requiresDesign: <true|false>
|
|
113
|
+
requiresTDD: <true|false>
|
|
114
|
+
stageSequence: [<ordered stage names>]
|
|
115
|
+
completedStages: []
|
|
116
|
+
currentStage: <first stage name>
|
|
117
|
+
supervisorDecisions: {}
|
|
118
|
+
startedAt: <ISO timestamp>
|
|
119
|
+
outcome: running
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Step 3: Supervisor-Gated Clarification (only when exploration cannot resolve)
|
|
125
|
+
|
|
126
|
+
**Only proceed to Step 4 when classification confidence is sufficient.**
|
|
127
|
+
|
|
128
|
+
If classification is `ambiguous` AND exploration evidence did not resolve it:
|
|
129
|
+
|
|
130
|
+
1. Invoke `@supervisor` (preflight review of `fd-quick` command) with:
|
|
131
|
+
- The partial task description
|
|
132
|
+
- The preflight exploration snapshot (tech stack, patterns, prior decisions)
|
|
133
|
+
- The `clarificationPrompt` from the classification (already enriched with context)
|
|
134
|
+
2. `@supervisor` presents the single clarifying question to the user. **Ask ONE question only.**
|
|
135
|
+
3. Wait for the user's answer.
|
|
136
|
+
4. Re-classify using the combined original description + the user's answer.
|
|
137
|
+
5. If confidence is still low after one clarification round, route to `feature` with a note in STATE.md.
|
|
138
|
+
|
|
139
|
+
**All clarification goes through `@supervisor`. Do not have specialist agents ask questions directly.**
|
|
140
|
+
**Do not ask questions that can be answered from the exploration evidence.**
|
|
141
|
+
|
|
142
|
+
Example supervisor clarification questions (only when evidence is absent):
|
|
143
|
+
- "Is this a new feature, a bug fix, or a documentation task?"
|
|
144
|
+
- "Does this involve building or changing a user-facing UI (page, dashboard, component)?"
|
|
145
|
+
- "Can you describe the specific bug — what is the expected vs actual behavior?"
|
|
146
|
+
- "Is the scope a single file change, or does it span multiple modules?"
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Step 4: Confirm Stage Sequence
|
|
151
|
+
|
|
152
|
+
Present the classification and planned stage sequence to the user before proceeding:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
Task classified as: <task type>
|
|
156
|
+
Stage sequence: <stage-1> → <stage-2> → ... → <stage-N>
|
|
157
|
+
Requires design: <yes / no>
|
|
158
|
+
Requires TDD: <yes / no>
|
|
159
|
+
Evidence used: <N> items from preflight exploration
|
|
160
|
+
|
|
161
|
+
Running /fd-quick autonomously. I will proceed through each stage and pause only
|
|
162
|
+
if I need approval, encounter a blocker, or complete the full sequence.
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Proceed automatically — do not wait for additional input unless approval is explicitly required by a stage.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Step 5: Execute Stage Sequence Autonomously
|
|
170
|
+
|
|
171
|
+
For **each stage** in the sequence (in order), execute the following loop:
|
|
172
|
+
|
|
173
|
+
### 5a. Announce Stage Start
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
177
|
+
Stage: <stage-name> Command: /<command>
|
|
178
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 5b. Supervisor Preflight Review
|
|
182
|
+
|
|
183
|
+
Before executing the stage, invoke `@supervisor` (preflight) on the stage's command:
|
|
184
|
+
- Pass: `taskDescription`, `currentPhase` (= current stage name), `prerequisitesMet`, `designApprovalPresent`, `regressionTestPresent` as known from STATE.md.
|
|
185
|
+
|
|
186
|
+
**Handle supervisor decision:**
|
|
187
|
+
|
|
188
|
+
| Decision | Action |
|
|
189
|
+
|----------|--------|
|
|
190
|
+
| `approve` | Proceed to 5c immediately |
|
|
191
|
+
| `revise` | Resolve the listed `requiredChanges` (e.g., confirm PLAN.md, run preceding step) then re-run the stage |
|
|
192
|
+
| `block` | Stop. Report why. Show what is blocked. Ask user for the specific missing input or approval. Update `quick_run.outcome = blocked` in STATE.md. |
|
|
193
|
+
| `escalate` | Pause. Present the escalation reason to the user. Request explicit approval. On approval: continue. On denial: stop and summarize. |
|
|
194
|
+
|
|
195
|
+
### 5c. Execute the Stage
|
|
196
|
+
|
|
197
|
+
Execute the stage using its existing command with full context from the preflight
|
|
198
|
+
exploration snapshot (available in `quick_run.preflightExploration`). Pass it to
|
|
199
|
+
each stage so worker agents can use evidence directly.
|
|
200
|
+
|
|
201
|
+
**Stage → Command Mapping:**
|
|
202
|
+
|
|
203
|
+
| Stage | Command | Key Behavior |
|
|
204
|
+
|-------|---------|--------------|
|
|
205
|
+
| `discuss` | `/fd-discuss` | Runs `@discusser` structured Q&A. Passes preflight exploration so questions already answered by evidence are skipped. Saves `DISCUSS.md`. One question at a time. |
|
|
206
|
+
| `design` | `/fd-design --mode=draft` | Runs design-first pipeline. Required for `ui-feature` tasks. Produces design artifact + approval. |
|
|
207
|
+
| `plan` | `/fd-plan` | Creates `PLAN.md` from `DISCUSS.md` decisions. **Pauses for user CONFIRM before saving.** |
|
|
208
|
+
| `execute` | `/fd-execute` | TDD pipeline: BEHAVIOR → RED → GREEN → REFACTOR per step. Delegates to appropriate coder agents. |
|
|
209
|
+
| `fix-bug` | `/fd-fix-bug` | TDD bugfix: explore → RED regression test → GREEN fix → REFACTOR → record in FAILURES.json. |
|
|
210
|
+
| `write-docs` | `/fd-write-docs` | Explore APIs → `@writer` drafts → `@reviewer` accuracy check → finalize. |
|
|
211
|
+
| `verify` | `/fd-verify` | Full verification: tests + code review + security scan + deploy check. Reports verdict. |
|
|
212
|
+
|
|
213
|
+
### 5d. Stage Completion Check
|
|
214
|
+
|
|
215
|
+
After the stage command completes:
|
|
216
|
+
1. Invoke `@supervisor` (post-stage) to confirm the stage output is valid.
|
|
217
|
+
2. If supervisor returns `approve` or `revise` with fixable issues: mark the stage complete.
|
|
218
|
+
3. If supervisor returns `block`: halt, report, update state.
|
|
219
|
+
4. Update STATE.md:
|
|
220
|
+
```yaml
|
|
221
|
+
quick_run:
|
|
222
|
+
completedStages: [<all completed stage names>]
|
|
223
|
+
currentStage: <next stage name or null>
|
|
224
|
+
supervisorDecisions:
|
|
225
|
+
<stage-name>:
|
|
226
|
+
decision: <decision>
|
|
227
|
+
reasons: [...]
|
|
228
|
+
timestamp: <ISO>
|
|
229
|
+
```
|
|
230
|
+
5. Proceed to next stage.
|
|
231
|
+
|
|
232
|
+
### 5e. Approval Gate (plan stage only)
|
|
233
|
+
|
|
234
|
+
The `plan` stage requires explicit user CONFIRM per the `/fd-plan` command's D-06 rule.
|
|
235
|
+
`/fd-quick` does NOT bypass this gate. Present the plan to the user and wait for CONFIRM.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Step 6: Completion
|
|
240
|
+
|
|
241
|
+
When all stages complete:
|
|
242
|
+
|
|
243
|
+
1. Update STATE.md:
|
|
244
|
+
```yaml
|
|
245
|
+
quick_run:
|
|
246
|
+
completedStages: [<all stages>]
|
|
247
|
+
currentStage: null
|
|
248
|
+
outcome: complete
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
2. Present final summary:
|
|
252
|
+
```
|
|
253
|
+
════════════════════════════════════════════════
|
|
254
|
+
/fd-quick Complete — <task type>
|
|
255
|
+
════════════════════════════════════════════════
|
|
256
|
+
Task: $ARGUMENTS
|
|
257
|
+
Workflow: <stage-1> → ... → <stage-N>
|
|
258
|
+
Outcome: ✅ COMPLETE
|
|
259
|
+
Evidence: <N> preflight items used (0 human questions asked before exploration)
|
|
260
|
+
────────────────────────────────────────────────
|
|
261
|
+
Verify result: /fd-verify
|
|
262
|
+
Save state: /fd-checkpoint
|
|
263
|
+
════════════════════════════════════════════════
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Step 7: Block / Failure Handling
|
|
269
|
+
|
|
270
|
+
If execution cannot continue at any stage:
|
|
271
|
+
|
|
272
|
+
1. Update STATE.md: `quick_run.outcome = blocked`
|
|
273
|
+
2. Report:
|
|
274
|
+
```
|
|
275
|
+
════════════════════════════════════════════════
|
|
276
|
+
/fd-quick Blocked
|
|
277
|
+
════════════════════════════════════════════════
|
|
278
|
+
Stage reached: <stage-name>
|
|
279
|
+
Why stopped: <clear reason>
|
|
280
|
+
Blocked at: <command name>
|
|
281
|
+
What is needed: <exact missing input or approval>
|
|
282
|
+
────────────────────────────────────────────────
|
|
283
|
+
To resume: /fd-quick $ARGUMENTS
|
|
284
|
+
(will continue from <next-stage-name>)
|
|
285
|
+
To fix manually: /<blocked-command> [args]
|
|
286
|
+
════════════════════════════════════════════════
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Workflow Discipline (Non-Negotiable)
|
|
292
|
+
|
|
293
|
+
These gates from the existing workflow system are **never bypassed by /fd-quick**:
|
|
294
|
+
|
|
295
|
+
- **Design-first**: `ui-feature` tasks MUST complete the `design` stage (with `@design` approval and handoff) before `execute` can begin. No `--override` unless user explicitly requests it.
|
|
296
|
+
- **TDD**: `execute` and `fix-bug` stages enforce RED → GREEN → REFACTOR. `/fd-quick` does not skip tests.
|
|
297
|
+
- **Plan CONFIRM**: The `plan` stage requires explicit user CONFIRM. `/fd-quick` presents the plan and waits.
|
|
298
|
+
- **Regression test**: `fix-bug` requires a failing regression test before implementation (per `/fd-fix-bug`).
|
|
299
|
+
- **Verify**: All workflows end with `/fd-verify` to confirm all checks pass before marking complete.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Existing Commands Remain Independent
|
|
304
|
+
|
|
305
|
+
`/fd-quick` is a workflow launcher. The commands it invokes (`/fd-discuss`, `/fd-plan`, etc.) remain fully operational as standalone commands. Running `/fd-quick` does not lock out any other command.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## State Visibility
|
|
310
|
+
|
|
311
|
+
All routing and execution progress is recorded in `.planning/STATE.md` under the `quick_run` key. Use `/fd-status` to inspect current state. Use `/fd-resume` to reload context after a session break.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Behavioral guidelines to reduce common LLM coding mistakes. Merge with project-specific instructions as needed.
|
|
2
|
+
|
|
3
|
+
**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
|
|
4
|
+
|
|
5
|
+
## 1. Think Before Coding
|
|
6
|
+
|
|
7
|
+
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
|
8
|
+
|
|
9
|
+
Before implementing:
|
|
10
|
+
- State your assumptions explicitly. If uncertain, ask.
|
|
11
|
+
- If multiple interpretations exist, present them - don't pick silently.
|
|
12
|
+
- If a simpler approach exists, say so. Push back when warranted.
|
|
13
|
+
- If something is unclear, stop. Name what's confusing. Ask.
|
|
14
|
+
|
|
15
|
+
## 2. Simplicity First
|
|
16
|
+
|
|
17
|
+
**Minimum code that solves the problem. Nothing speculative.**
|
|
18
|
+
|
|
19
|
+
- No features beyond what was asked.
|
|
20
|
+
- No abstractions for single-use code.
|
|
21
|
+
- No "flexibility" or "configurability" that wasn't requested.
|
|
22
|
+
- No error handling for impossible scenarios.
|
|
23
|
+
- If you write 200 lines and it could be 50, rewrite it.
|
|
24
|
+
|
|
25
|
+
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
|
|
26
|
+
|
|
27
|
+
## 3. Surgical Changes
|
|
28
|
+
|
|
29
|
+
**Touch only what you must. Clean up only your own mess.**
|
|
30
|
+
|
|
31
|
+
When editing existing code:
|
|
32
|
+
- Don't "improve" adjacent code, comments, or formatting.
|
|
33
|
+
- Don't refactor things that aren't broken.
|
|
34
|
+
- Match existing style, even if you'd do it differently.
|
|
35
|
+
- If you notice unrelated dead code, mention it - don't delete it.
|
|
36
|
+
|
|
37
|
+
When your changes create orphans:
|
|
38
|
+
- Remove imports/variables/functions that YOUR changes made unused.
|
|
39
|
+
- Don't remove pre-existing dead code unless asked.
|
|
40
|
+
|
|
41
|
+
The test: Every changed line should trace directly to the user's request.
|
|
42
|
+
|
|
43
|
+
## 4. Goal-Driven Execution
|
|
44
|
+
|
|
45
|
+
**Define success criteria. Loop until verified.**
|
|
46
|
+
|
|
47
|
+
Transform tasks into verifiable goals:
|
|
48
|
+
- "Add validation" → "Write tests for invalid inputs, then make them pass"
|
|
49
|
+
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
|
|
50
|
+
- "Refactor X" → "Ensure tests pass before and after"
|
|
51
|
+
|
|
52
|
+
For multi-step tasks, state a brief plan:
|
|
53
|
+
```
|
|
54
|
+
1. [Step] → verify: [check]
|
|
55
|
+
2. [Step] → verify: [check]
|
|
56
|
+
3. [Step] → verify: [check]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
**These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes.
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Blast Radius Preview
|
|
8
8
|
|
|
9
|
-
Before committing to a change, map every system that could break.
|
|
9
|
+
Before committing to a change, map every system that could break. Activate this skill by providing a change description to the agent.
|
|
10
10
|
|
|
11
11
|
## When to Activate
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Change Impact Radar
|
|
8
8
|
|
|
9
|
-
Predicts blast surface before the AI touches a single file.
|
|
9
|
+
Predicts blast surface before the AI touches a single file. Activate this skill by providing the intended change description to the agent.
|
|
10
10
|
|
|
11
11
|
## When to Activate
|
|
12
12
|
|
|
@@ -58,6 +58,6 @@ Activate before:
|
|
|
58
58
|
|
|
59
59
|
## Guidance
|
|
60
60
|
|
|
61
|
-
- If MEMORY.json does not exist, run `/map-codebase` first to build the graph.
|
|
61
|
+
- If MEMORY.json does not exist, run `/fd-map-codebase` first to build the graph.
|
|
62
62
|
- If a file has no test coverage and is indirectly impacted, flag it as "coverage gap".
|
|
63
63
|
- Never proceed with a HIGH impact change without human confirmation.
|
|
@@ -12,7 +12,7 @@ Produces structured documentation of a codebase that agents can read to answer "
|
|
|
12
12
|
|
|
13
13
|
- Starting work on an unfamiliar codebase
|
|
14
14
|
- Before a major feature that spans multiple modules
|
|
15
|
-
- When `/map-codebase` command is invoked
|
|
15
|
+
- When `/fd-map-codebase` command is invoked
|
|
16
16
|
- When `.codebase/` is missing or stale
|
|
17
17
|
|
|
18
18
|
## Output Files
|
|
@@ -33,7 +33,7 @@ Before planning ANY task:
|
|
|
33
33
|
2. Scan affected files for context
|
|
34
34
|
3. Estimate confidence level
|
|
35
35
|
4. Act based on level:
|
|
36
|
-
- HIGH: proceed to `/plan`
|
|
36
|
+
- HIGH: proceed to `/fd-plan`
|
|
37
37
|
- MEDIUM: write explicit assumptions at the top of PLAN.md, flag 3 highest risks
|
|
38
38
|
- LOW: stop, ask clarifying questions, do not write PLAN.md until answered
|
|
39
39
|
|
|
@@ -60,4 +60,4 @@ After loading context, produce this briefing:
|
|
|
60
60
|
**Key Conventions**: [2-3 most important patterns]
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
If any file is missing, note it: "STATE.md not found — run `/new-project` to initialize."
|
|
63
|
+
If any file is missing, note it: "STATE.md not found — run `/fd-new-project` to initialize."
|
|
@@ -30,11 +30,11 @@ When a patch is flagged as `review-required` or `high-risk` by the Patch Trust S
|
|
|
30
30
|
|
|
31
31
|
## Workflow
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Provide the files and change description to the agent to get the routing decision.
|
|
34
34
|
|
|
35
|
-
Example:
|
|
35
|
+
Example input:
|
|
36
36
|
```
|
|
37
|
-
|
|
37
|
+
Review route for: files=src/services/auth.ts,src/api/payment.ts change=refactor JWT validation
|
|
38
38
|
```
|
|
39
39
|
Output:
|
|
40
40
|
```
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Intent-to-Change Translator
|
|
8
8
|
|
|
9
|
-
Run `/translate-intent` with a plain-language description of what you want. Get back a ranked menu of concrete implementation options with tradeoffs — before writing a single line of code.
|
|
9
|
+
Run `/fd-translate-intent` with a plain-language description of what you want. Get back a ranked menu of concrete implementation options with tradeoffs — before writing a single line of code.
|
|
10
10
|
|
|
11
11
|
## When to Activate
|
|
12
12
|
|
|
@@ -49,7 +49,7 @@ Run `/translate-intent` with a plain-language description of what you want. Get
|
|
|
49
49
|
|
|
50
50
|
### Recommendation
|
|
51
51
|
Proceed with **Option 1** because [reason].
|
|
52
|
-
To start: run `/plan` after confirming your choice.
|
|
52
|
+
To start: run `/fd-plan` after confirming your choice.
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
## Confidence Rule
|
|
@@ -180,7 +180,7 @@ Conflicts must be resolved before any CHANGE PLAN is executed. The `@multi-repo-
|
|
|
180
180
|
|
|
181
181
|
## Independence Check Before Executing
|
|
182
182
|
|
|
183
|
-
Before running `/multi-repo`:
|
|
183
|
+
Before running `/fd-multi-repo`:
|
|
184
184
|
- [ ] `.planning/config.json` has a `sub_repos` array with at least two entries
|
|
185
185
|
- [ ] All `path` values resolve to actual directories on disk
|
|
186
186
|
- [ ] Each repo has its own `.git` directory (they are separate repos, not subtrees)
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Regression Prediction
|
|
8
8
|
|
|
9
|
-
Before merging, predict what is most likely to break.
|
|
9
|
+
Before merging, predict what is most likely to break. Activate this skill by providing the change description and affected files to the agent.
|
|
10
10
|
|
|
11
11
|
## Regression Categories
|
|
12
12
|
|
|
@@ -19,7 +19,7 @@ The Repo Memory Graph is FlowDeck's long-term knowledge store about this specifi
|
|
|
19
19
|
## When to Update
|
|
20
20
|
|
|
21
21
|
Update the graph:
|
|
22
|
-
- After running `/map-codebase`
|
|
22
|
+
- After running `/fd-map-codebase`
|
|
23
23
|
- When onboarding a new module
|
|
24
24
|
- When a bug fix reveals a recurring pattern (add to `bug_history`)
|
|
25
25
|
- When a refactor changes module ownership
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Test Gap Detector
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Activate this skill before implementing a feature or fix. Get back a ranked list of coverage gaps and the minimum viable tests to close them.
|
|
10
10
|
|
|
11
11
|
## Gap Categories
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@ origin: FlowDeck
|
|
|
6
6
|
|
|
7
7
|
# Codebase Volatility Map
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Activate this skill to generate a heatmap of the most unstable parts of the codebase. Results are stored in `.codebase/VOLATILITY.json` for use by other FlowDeck features.
|
|
10
10
|
|
|
11
11
|
## Stability Levels
|
|
12
12
|
|