@dv.nghiem/flowdeck 0.3.8 → 0.4.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 +13 -122
- package/dist/agents/code-explorer.d.ts.map +1 -1
- package/dist/agents/mapper.d.ts.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/specialist.d.ts.map +1 -1
- package/dist/dashboard/server.mjs +12 -2
- package/dist/hooks/compaction-hook.d.ts.map +1 -1
- package/dist/hooks/file-tracker.d.ts +6 -0
- package/dist/hooks/file-tracker.d.ts.map +1 -1
- package/dist/hooks/notifications.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +752 -785
- package/dist/lib/completion-validator.d.ts +51 -0
- package/dist/lib/completion-validator.d.ts.map +1 -0
- package/dist/lib/recommended-question.d.ts +24 -0
- package/dist/lib/recommended-question.d.ts.map +1 -0
- package/dist/lib/research-gate.d.ts +97 -0
- package/dist/lib/research-gate.d.ts.map +1 -0
- package/dist/lib/research-gate.test.d.ts +2 -0
- package/dist/lib/research-gate.test.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +14 -3
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/services/codegraph.d.ts +36 -0
- package/dist/services/codegraph.d.ts.map +1 -0
- package/dist/services/codegraph.test.d.ts +2 -0
- package/dist/services/codegraph.test.d.ts.map +1 -0
- package/dist/services/command-validator.d.ts +11 -0
- package/dist/services/command-validator.d.ts.map +1 -1
- 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 +96 -0
- package/dist/services/question-guard.d.ts.map +1 -0
- package/dist/services/quick-router.d.ts +40 -1
- package/dist/services/quick-router.d.ts.map +1 -1
- package/dist/services/recommended-question.test.d.ts +2 -0
- package/dist/services/recommended-question.test.d.ts.map +1 -0
- package/dist/services/supervisor-binding.d.ts +3 -1
- package/dist/services/supervisor-binding.d.ts.map +1 -1
- package/dist/tools/codebase-index.d.ts +30 -0
- package/dist/tools/codebase-index.d.ts.map +1 -0
- package/dist/tools/codebase-index.test.d.ts +2 -0
- package/dist/tools/codebase-index.test.d.ts.map +1 -0
- package/dist/tools/codegraph-tool.d.ts +3 -0
- package/dist/tools/codegraph-tool.d.ts.map +1 -0
- package/dist/tools/planning-state-lib.d.ts +23 -0
- package/dist/tools/planning-state-lib.d.ts.map +1 -1
- package/docs/agents/index.md +154 -0
- package/docs/commands/fd-ask.md +71 -39
- package/docs/commands/fd-checkpoint.md +63 -8
- package/docs/commands/fd-deploy-check.md +166 -9
- package/docs/commands/fd-design.md +101 -0
- package/docs/commands/fd-discuss.md +87 -20
- package/docs/commands/fd-doctor.md +100 -13
- package/docs/commands/fd-done.md +215 -0
- package/docs/commands/fd-execute.md +104 -0
- package/docs/commands/fd-fix-bug.md +144 -24
- package/docs/commands/fd-map-codebase.md +85 -21
- package/docs/commands/fd-multi-repo.md +155 -40
- package/docs/commands/fd-new-feature.md +63 -19
- package/docs/commands/fd-plan.md +80 -27
- package/docs/commands/fd-quick.md +143 -29
- package/docs/commands/fd-reflect.md +81 -13
- package/docs/commands/fd-resume.md +65 -8
- package/docs/commands/fd-status.md +80 -12
- package/docs/commands/fd-suggest.md +114 -0
- package/docs/commands/fd-translate-intent.md +69 -9
- package/docs/commands/fd-verify.md +71 -14
- package/docs/commands/fd-write-docs.md +121 -8
- package/docs/concepts/architecture.md +163 -0
- package/docs/concepts/governance.md +242 -0
- package/docs/concepts/intelligence.md +145 -0
- package/docs/concepts/multi-repo.md +227 -0
- package/docs/concepts/workflows.md +205 -0
- package/docs/configuration/index.md +208 -0
- package/docs/configuration/opencode-settings.md +98 -0
- package/docs/getting-started/first-project.md +126 -0
- package/docs/getting-started/installation.md +73 -0
- package/docs/getting-started/quick-start.md +74 -0
- package/docs/index.md +36 -72
- package/docs/reference/hooks.md +176 -0
- package/docs/reference/rules.md +109 -0
- package/docs/skills/code-review.md +47 -0
- package/docs/skills/index.md +148 -0
- package/docs/skills/planning.md +39 -0
- package/package.json +1 -1
- package/src/commands/fd-deploy-check.md +2 -2
- package/src/commands/fd-discuss.md +128 -7
- package/src/commands/fd-done.md +196 -0
- package/src/commands/fd-execute.md +43 -6
- package/src/commands/fd-fix-bug.md +43 -6
- package/src/commands/fd-map-codebase.md +100 -20
- package/src/commands/fd-multi-repo.md +1 -1
- package/src/commands/fd-new-feature.md +14 -5
- package/src/commands/fd-plan.md +38 -1
- package/src/commands/fd-quick.md +77 -14
- package/src/commands/fd-resume.md +1 -1
- package/src/commands/fd-status.md +1 -1
- package/src/commands/fd-verify.md +16 -2
- package/src/commands/fd-write-docs.md +30 -5
- package/src/rules/common/behavioral.md +63 -0
- package/src/skills/codebase-mapping/SKILL.md +1 -1
- package/src/skills/context-load/SKILL.md +1 -1
- package/src/skills/multi-repo/SKILL.md +1 -1
- package/src/skills/repo-memory-graph/SKILL.md +1 -1
- package/dist/hooks/memory-hook.d.ts +0 -28
- package/dist/hooks/memory-hook.d.ts.map +0 -1
- package/dist/services/memory-store.d.ts +0 -73
- package/dist/services/memory-store.d.ts.map +0 -1
- package/dist/services/memory-store.test.d.ts +0 -2
- package/dist/services/memory-store.test.d.ts.map +0 -1
- package/dist/tools/memory-search.d.ts +0 -3
- package/dist/tools/memory-search.d.ts.map +0 -1
- package/dist/tools/memory-status.d.ts +0 -3
- package/dist/tools/memory-status.d.ts.map +0 -1
- package/docs/USER_GUIDE.md +0 -20
- package/docs/agents.md +0 -544
- package/docs/best-practices.md +0 -47
- package/docs/commands/fd-new-project.md +0 -24
- package/docs/commands.md +0 -557
- package/docs/configuration.md +0 -325
- package/docs/design-first-workflow.md +0 -94
- package/docs/feature-integration-architecture.md +0 -227
- package/docs/installation.md +0 -123
- package/docs/intelligence.md +0 -370
- package/docs/memory.md +0 -69
- package/docs/multi-repo.md +0 -201
- package/docs/notifications.md +0 -170
- package/docs/optimization-baseline.md +0 -21
- package/docs/quick-start.md +0 -197
- package/docs/rules.md +0 -432
- package/docs/skills.md +0 -417
- package/docs/workflows.md +0 -134
- package/src/commands/fd-new-project.md +0 -114
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-router.d.ts","sourceRoot":"","sources":["../../src/services/quick-router.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"quick-router.d.ts","sourceRoot":"","sources":["../../src/services/quick-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommended-question.test.d.ts","sourceRoot":"","sources":["../../src/services/recommended-question.test.ts"],"names":[],"mappings":""}
|
|
@@ -51,6 +51,8 @@ export interface SupervisorDecision {
|
|
|
51
51
|
confidenceScore: number;
|
|
52
52
|
/** Whether this was a preflight or post-stage review */
|
|
53
53
|
reviewPhase: SupervisorReviewPhase;
|
|
54
|
+
/** Present when decision is 'escalate' — a recommended question for the human */
|
|
55
|
+
clarificationQuestion?: string;
|
|
54
56
|
/** ISO timestamp */
|
|
55
57
|
timestamp: string;
|
|
56
58
|
}
|
|
@@ -104,7 +106,7 @@ export declare function isRegisteredTarget(name: string): {
|
|
|
104
106
|
* not exist, it returns decision="block" with exists=false and explains that
|
|
105
107
|
* the requested target is not registered.
|
|
106
108
|
*/
|
|
107
|
-
export declare function runSupervisorReview(directory: string, targetName: string, ctx?: SupervisorContext): SupervisorDecision;
|
|
109
|
+
export declare function runSupervisorReview(directory: string, targetName: string, ctx?: SupervisorContext, clarificationQuestion?: string): SupervisorDecision;
|
|
108
110
|
/**
|
|
109
111
|
* Shorthand: should execution proceed given a decision and the current config mode?
|
|
110
112
|
* In "advisory" mode, only "block" with a missing-existence check is hard-stopped.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface FileSnapshot {
|
|
2
|
+
lastModifiedAt: string;
|
|
3
|
+
lastModifiedBy: string;
|
|
4
|
+
changeType: "added" | "modified" | "deleted";
|
|
5
|
+
sourceStage: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ExplorationEntry {
|
|
8
|
+
stage: string;
|
|
9
|
+
timestamp: string;
|
|
10
|
+
filesExplored: string[];
|
|
11
|
+
reason: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CodebaseIndex {
|
|
14
|
+
exists: boolean;
|
|
15
|
+
lastUpdatedAt: string;
|
|
16
|
+
lastUpdatedBy: string;
|
|
17
|
+
sourceStage: string;
|
|
18
|
+
changedFiles: string[];
|
|
19
|
+
fileSnapshots: Record<string, FileSnapshot>;
|
|
20
|
+
explorationHistory: ExplorationEntry[];
|
|
21
|
+
summaryVersion: number;
|
|
22
|
+
freshnessStatus: "fresh" | "stale" | "unknown";
|
|
23
|
+
}
|
|
24
|
+
export declare function readCodebaseIndex(dir: string): CodebaseIndex;
|
|
25
|
+
export declare function isCodebaseIndexFresh(dir: string, maxAgeMs?: number): boolean;
|
|
26
|
+
export declare function writeCodebaseIndex(dir: string, index: Omit<CodebaseIndex, "exists">): void;
|
|
27
|
+
export declare function appendChangedFiles(dir: string, agent: string, stage: string, files: string[]): void;
|
|
28
|
+
export declare function recordExploration(dir: string, stage: string, filesExplored: string[], reason: string): void;
|
|
29
|
+
export declare function getFileSnapshot(dir: string, filePath: string): FileSnapshot | null;
|
|
30
|
+
//# sourceMappingURL=codebase-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-index.d.ts","sourceRoot":"","sources":["../../src/tools/codebase-index.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAA;IAC5C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC3C,kBAAkB,EAAE,gBAAgB,EAAE,CAAA;IACtC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;CAC/C;AAMD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CA+B5D;AAkED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAgB,GAAG,OAAO,CAOnF;AAOD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,IAAI,CAyB1F;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EAAE,GACd,IAAI,CAgCN;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,GACb,IAAI,CAuBN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGlF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-index.test.d.ts","sourceRoot":"","sources":["../../src/tools/codebase-index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegraph-tool.d.ts","sourceRoot":"","sources":["../../src/tools/codegraph-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAa/D,eAAO,MAAM,aAAa,EAAE,cA6G1B,CAAA"}
|
|
@@ -49,6 +49,16 @@ export interface PlanningState {
|
|
|
49
49
|
blockers: string[];
|
|
50
50
|
/** TDD workflow state (undefined when TDD not active) */
|
|
51
51
|
tdd: TDDState | undefined;
|
|
52
|
+
/** When this state was last updated */
|
|
53
|
+
lastUpdatedAt: string;
|
|
54
|
+
/** Which agent last updated the state */
|
|
55
|
+
lastUpdatedBy: string;
|
|
56
|
+
/** Phase when state was last updated */
|
|
57
|
+
lastUpdatedPhase: number;
|
|
58
|
+
/** Monotonically increasing version number */
|
|
59
|
+
summaryVersion: number;
|
|
60
|
+
/** Whether the state is still considered fresh enough to use */
|
|
61
|
+
freshnessStatus: "fresh" | "stale" | "unknown";
|
|
52
62
|
}
|
|
53
63
|
/** Extended PlanningState with TDD state for internal use */
|
|
54
64
|
export type PlanningStateWithTDD = PlanningState & {
|
|
@@ -57,6 +67,19 @@ export type PlanningStateWithTDD = PlanningState & {
|
|
|
57
67
|
export declare function getTDDState(state: PlanningState): TDDState | undefined;
|
|
58
68
|
export declare function parseState(content: string): Record<string, unknown>;
|
|
59
69
|
export declare function timestamp(): string;
|
|
70
|
+
/**
|
|
71
|
+
* Returns true if state was updated within maxAgeMs milliseconds.
|
|
72
|
+
* Defaults to 5 minutes.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isStateFresh(state: PlanningState, maxAgeMs?: number): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Mark the state as stale by updating freshnessStatus and appending to history.
|
|
77
|
+
*/
|
|
78
|
+
export declare function markStateStale(dir: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Publish a state update with fresh metadata. Called after any significant change.
|
|
81
|
+
*/
|
|
82
|
+
export declare function publishStateUpdate(dir: string, agent: string, phase: number): void;
|
|
60
83
|
export declare function appendHistory(stateContent: string, action: string): string;
|
|
61
84
|
export declare function readPlanningState(dir: string): PlanningState;
|
|
62
85
|
export declare function hasDesignGateSatisfied(state: PlanningState): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning-state-lib.d.ts","sourceRoot":"","sources":["../../src/tools/planning-state-lib.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,MAAM,WAAW,QAAQ;IACvB,4EAA4E;IAC5E,KAAK,EAAE,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;IAC7D,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,EAAE,WAAW,EAAE,CAAA;IACxB,gDAAgD;IAChD,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,sCAAsC;IACtC,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,kBAAkB,GAAG,0BAA0B,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;IAChJ,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,yDAAyD;IACzD,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"planning-state-lib.d.ts","sourceRoot":"","sources":["../../src/tools/planning-state-lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Agents
|
|
2
|
+
|
|
3
|
+
FlowDeck runs a 27-agent system coordinated by an orchestrator. Each agent has a specific capability contract and specialized model configuration. The orchestrator selects specialists based on context and delegates work through the `delegate` tool.
|
|
4
|
+
|
|
5
|
+
## Delegation Model
|
|
6
|
+
|
|
7
|
+
The orchestrator holds the user session, decomposes requests, and dispatches to specialist agents via the `delegate` tool. Each specialist operates in its own context window and reports results back to the orchestrator. Agents are classified by mode:
|
|
8
|
+
|
|
9
|
+
- **primary**: visible and selectable from the user interface
|
|
10
|
+
- **subagent**: internal only, invoked programmatically by other agents
|
|
11
|
+
- **all**: works in both primary and subagent contexts
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
user → @orchestrator → @planner
|
|
15
|
+
→ @backend-coder
|
|
16
|
+
→ @frontend-coder
|
|
17
|
+
→ @reviewer
|
|
18
|
+
→ @security-auditor
|
|
19
|
+
→ ...
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
All agent configurations are in `src/agents/`. Agent definitions use YAML frontmatter (description, mode, model, temperature, steps, permission).
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Orchestration
|
|
27
|
+
|
|
28
|
+
### @orchestrator
|
|
29
|
+
|
|
30
|
+
The central coordinator. Delegates to specialist agents, coordinates wave-structured task execution, and routes tool calls through the supervisor guard for pre-flight and post-execution review. The orchestrator holds the user session context and is the only agent visible as the default agent.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Planning
|
|
35
|
+
|
|
36
|
+
### @architect
|
|
37
|
+
|
|
38
|
+
System design and boundary decisions. Produces architecture diagrams, evaluates technical choices, and enforces architectural constraints. Works upstream of implementation to establish clear boundaries before coding starts.
|
|
39
|
+
|
|
40
|
+
### @planner
|
|
41
|
+
|
|
42
|
+
Wave-structured task planning. Takes feature requests and produces phased implementation plans with dependency graphs, file-level scope assignments, and observable success criteria per step. The output of `@planner` feeds directly into `@backend-coder` and `@frontend-coder`.
|
|
43
|
+
|
|
44
|
+
### @discusser
|
|
45
|
+
|
|
46
|
+
Structured pre-planning Q&A. Asks clarifying questions in a systematic order to surface ambiguities before `@planner` produces a plan. Prevents the wrong plan from being built by ensuring the problem is fully understood first.
|
|
47
|
+
|
|
48
|
+
### @plan-checker
|
|
49
|
+
|
|
50
|
+
Reviews PLAN.md files for quality before execution. Checks completeness, feasibility, and testability. Returns PASS or FAIL with specific recommendations.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Implementation
|
|
55
|
+
|
|
56
|
+
### @backend-coder
|
|
57
|
+
|
|
58
|
+
Implements server-side logic using TDD. Specializes in TypeScript/Node.js services, database integrations, API route handlers, and background workers. Uses `tdd-workflow` skill by default — writes failing tests first, then minimum implementation.
|
|
59
|
+
|
|
60
|
+
### @frontend-coder
|
|
61
|
+
|
|
62
|
+
Implements UI and client-side interactions using TDD. Specializes in React/Vue components, state management, API client calls, and responsive styling. Uses the same TDD discipline as `@backend-coder` but adapted for the frontend context.
|
|
63
|
+
|
|
64
|
+
### @devops
|
|
65
|
+
|
|
66
|
+
Infrastructure and deployment automation. Handles Docker, Kubernetes, CI/CD pipelines, cloud provisioning, and environment configuration. Ensures the system is deployable and monitorable before any feature is considered complete.
|
|
67
|
+
|
|
68
|
+
### @tester
|
|
69
|
+
|
|
70
|
+
Test strategy and gap detection. Analyzes modified files, identifies coverage gaps, and suggests the minimum viable test set to close them. Uses `test-gap-detector` and `test-coverage` skills to drive coverage enforcement.
|
|
71
|
+
|
|
72
|
+
### @debug-specialist
|
|
73
|
+
|
|
74
|
+
Systematic bug diagnosis and repair. Follows a structured root-cause analysis workflow: isolate the failure mode, confirm the reproduction case, identify the root cause, apply a targeted fix, then verify with a regression test.
|
|
75
|
+
|
|
76
|
+
### @build-error-resolver
|
|
77
|
+
|
|
78
|
+
Diagnoses and fixes build errors, compilation failures, and dependency issues. Use immediately when a build fails, types error out, or dependencies are broken.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Review
|
|
83
|
+
|
|
84
|
+
### @reviewer
|
|
85
|
+
|
|
86
|
+
Post-commit code review. Reviews only changed code, applies the security checklist first, then quality checks. Reports findings severity-ranked with specific remediation steps and a clear pass/fail verdict.
|
|
87
|
+
|
|
88
|
+
### @security-auditor
|
|
89
|
+
|
|
90
|
+
Security vulnerability detection. Scans for OWASP Top 10 issues: SQL injection, XSS, authentication bypass, path traversal, hardcoded credentials, and insecure deserialization. Requires a separate review pass before merging any security-sensitive change.
|
|
91
|
+
|
|
92
|
+
### @risk-analyst
|
|
93
|
+
|
|
94
|
+
Failure mode analysis. Identifies what can break from a given change, estimates blast radius, and ranks risks by likelihood and impact. Produces a risk register with specific mitigations for each identified failure mode.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Governance
|
|
99
|
+
|
|
100
|
+
### @policy-enforcer
|
|
101
|
+
|
|
102
|
+
Governance rule enforcement. Validates that agent actions comply with configured policies: guard rails, permission scopes, architectural constraints, and coding standards. Escalates violations with a specific policy citation.
|
|
103
|
+
|
|
104
|
+
### @supervisor
|
|
105
|
+
|
|
106
|
+
Pre-flight and post-execution review of tool calls. Intercepts and validates agent actions against configured policies before execution, and audits decisions after completion for compliance tracking.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Utility
|
|
111
|
+
|
|
112
|
+
### @writer
|
|
113
|
+
|
|
114
|
+
Documentation generation. Reads code structure and produces documentation: API docs from route definitions, component docs from props, README from package manifest. Follows the project conventions in `docs/`.
|
|
115
|
+
|
|
116
|
+
### @doc-updater
|
|
117
|
+
|
|
118
|
+
Updates existing documentation to reflect code changes. Tracks which docs need updating when files are modified and keeps documentation in sync with implementation.
|
|
119
|
+
|
|
120
|
+
### @mapper
|
|
121
|
+
|
|
122
|
+
Codebase indexing. Builds and maintains a searchable index of the codebase: file purposes, dependency graph, API surface, and ownership. Used by `@planner` and `@discusser` for context before planning.
|
|
123
|
+
|
|
124
|
+
### @code-explorer
|
|
125
|
+
|
|
126
|
+
Explores unfamiliar code quickly. Analyzes file structure, traces dependencies, and produces summaries that help other agents understand a new module or codebase area without reading every line.
|
|
127
|
+
|
|
128
|
+
### @researcher
|
|
129
|
+
|
|
130
|
+
API docs and library research. Reads documentation, extracts relevant patterns, and answers questions about libraries, frameworks, and tools used in the project.
|
|
131
|
+
|
|
132
|
+
### @performance-optimizer
|
|
133
|
+
|
|
134
|
+
Identifies and fixes performance bottlenecks using data. Profiles code, detects N+1 queries, analyzes bundle size, and optimizes React render performance. Measures before and after to verify improvements.
|
|
135
|
+
|
|
136
|
+
### @refactor-guide
|
|
137
|
+
|
|
138
|
+
Guides safe refactoring of existing code without changing behavior. Provides step-by-step transformation guidance, ensures tests stay green, and helps extract functions or restructure modules.
|
|
139
|
+
|
|
140
|
+
### @auto-learner
|
|
141
|
+
|
|
142
|
+
Continuously learns from project patterns and agent decisions. Improves future recommendations by analyzing what worked well in similar past tasks.
|
|
143
|
+
|
|
144
|
+
### @design
|
|
145
|
+
|
|
146
|
+
Design-first workflow coordinator. Produces wireframes, component specs, and design token decisions. Runs before `@frontend-coder` starts implementation to ensure UI consistency and user experience quality.
|
|
147
|
+
|
|
148
|
+
### @task-splitter
|
|
149
|
+
|
|
150
|
+
Decomposes complex tasks into parallel workstreams. Analyzes dependencies, groups independent work into waves, and produces a plan for multi-agent execution.
|
|
151
|
+
|
|
152
|
+
### @architect (already listed in Planning)
|
|
153
|
+
|
|
154
|
+
System design and boundary decisions. See Planning section above.
|
package/docs/commands/fd-ask.md
CHANGED
|
@@ -1,51 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
description: Smart dispatch — routes a free-form task to the appropriate specialized agent without requiring a workflow
|
|
3
|
-
argument-hint: "--task '<description>'"
|
|
4
|
-
---
|
|
1
|
+
# /fd-ask
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
**Purpose:** Smart agent dispatch — routes a focused question to the appropriate specialist.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
1. Parses your task description using keyword scoring
|
|
10
|
-
2. Picks the best-fit agent from 12 specialists
|
|
11
|
-
3. Runs the Impact Radar if the task involves change analysis
|
|
12
|
-
4. Dispatches the task directly — no workflow, no STATE.md required
|
|
5
|
+
## Usage
|
|
13
6
|
|
|
14
|
-
|
|
7
|
+
/fd-ask [question]
|
|
15
8
|
|
|
16
|
-
|
|
17
|
-
|---|---|
|
|
18
|
-
| design, architecture, component | `@architect` |
|
|
19
|
-
| impact, blast radius, affected | `@researcher` + radar |
|
|
20
|
-
| security, vulnerability, CVE | `@security-auditor` |
|
|
21
|
-
| performance, bottleneck, slow | `@performance-optimizer` |
|
|
22
|
-
| debug, error, crash, exception | `@debug-specialist` |
|
|
23
|
-
| test, coverage, spec, TDD | `@tester` |
|
|
24
|
-
| refactor, cleanup, simplify | `@backend-coder` / `@frontend-coder` / `@devops` |
|
|
25
|
-
| document, docs, README | `@writer` |
|
|
26
|
-
| explain, query, find, explore | `@code-explorer` |
|
|
27
|
-
| deploy, release, migration | `@devops` |
|
|
28
|
-
| plan, roadmap, breakdown | `@planner` |
|
|
29
|
-
| (anything else) | `@orchestrator` |
|
|
9
|
+
## Arguments
|
|
30
10
|
|
|
31
|
-
|
|
11
|
+
- `question` — the question to route to a specialist agent
|
|
32
12
|
|
|
13
|
+
## What Happens
|
|
14
|
+
|
|
15
|
+
Analyze the question to determine the best specialist from this routing table:
|
|
16
|
+
|
|
17
|
+
| Keywords / Topic | Agent |
|
|
18
|
+
|-----------------|-------|
|
|
19
|
+
| ui, ux, wireframe, landing page, dashboard, admin panel, app screen, design system | **@design** |
|
|
20
|
+
| design, architecture, structure, system, component, API | **@architect** |
|
|
21
|
+
| security, auth, vulnerability, token, permission, injection | **@security-auditor** |
|
|
22
|
+
| performance, speed, slow, optimize, latency, cache, memory | **@performance** |
|
|
23
|
+
| impact, change, affect, downstream, dependency, blast | **@researcher** (impact mode) |
|
|
24
|
+
| test, coverage, regression, tdd, gap | **@tester** |
|
|
25
|
+
| bug, error, crash, debug, trace | **@debug-specialist** |
|
|
26
|
+
| general / unclear | **@orchestrator** |
|
|
27
|
+
|
|
28
|
+
Once the specialist is identified:
|
|
29
|
+
1. Delegate the question to that specialist with full context
|
|
30
|
+
2. Include `.codebase/ARCHITECTURE.md` if available and relevant
|
|
31
|
+
3. Include `.planning/STATE.md` phase context if relevant
|
|
32
|
+
4. Return the specialist's answer directly
|
|
33
|
+
|
|
34
|
+
## Output / State
|
|
35
|
+
|
|
36
|
+
Present the answer clearly with:
|
|
37
|
+
- Which specialist answered
|
|
38
|
+
- The answer (no padding, no ceremony)
|
|
39
|
+
- Any follow-up suggestions if the question opens further threads
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
**Ask an architecture question:**
|
|
44
|
+
```
|
|
45
|
+
/fd-ask "What is the best way to structure a new API endpoint?"
|
|
46
|
+
```
|
|
47
|
+
Routes to: @architect
|
|
48
|
+
|
|
49
|
+
**Ask a security question:**
|
|
33
50
|
```
|
|
34
|
-
/fd-ask
|
|
35
|
-
/fd-ask --task "explain how the payment flow works"
|
|
36
|
-
/fd-ask --task "is there a security issue with the rate limiter"
|
|
37
|
-
/fd-ask --task "why is the login endpoint slow"
|
|
38
|
-
/fd-ask --task "what files are affected if I change the auth module"
|
|
39
|
-
/fd-ask --task "write tests for the checkout service"
|
|
40
|
-
/fd-ask --agent security-auditor --task "review the JWT implementation"
|
|
51
|
+
/fd-ask "How should we handle token expiration securely?"
|
|
41
52
|
```
|
|
53
|
+
Routes to: @security-auditor
|
|
42
54
|
|
|
43
|
-
**
|
|
55
|
+
**Ask about performance:**
|
|
56
|
+
```
|
|
57
|
+
/fd-ask "Why is the login page slow on mobile?"
|
|
58
|
+
```
|
|
59
|
+
Routes to: @performance
|
|
60
|
+
|
|
61
|
+
**Ask about a bug:**
|
|
62
|
+
```
|
|
63
|
+
/fd-ask "Why does the session timeout error appear randomly?"
|
|
64
|
+
```
|
|
65
|
+
Routes to: @debug-specialist
|
|
44
66
|
|
|
45
|
-
|
|
67
|
+
**Ask about test coverage:**
|
|
68
|
+
```
|
|
69
|
+
/fd-ask "What parts of the auth module are not tested?"
|
|
70
|
+
```
|
|
71
|
+
Routes to: @tester
|
|
72
|
+
|
|
73
|
+
**Ask about UI design:**
|
|
74
|
+
```
|
|
75
|
+
/fd-ask "Should the dashboard use tabs or a sidebar for navigation?"
|
|
76
|
+
```
|
|
77
|
+
Routes to: @design
|
|
46
78
|
|
|
47
|
-
|
|
79
|
+
## Related Commands
|
|
48
80
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
81
|
+
- `/fd-discuss` — structured exploration of a topic with multiple questions
|
|
82
|
+
- `/fd-suggest` — get feature recommendations
|
|
83
|
+
- `/fd-translate-intent` — convert a vague request into concrete options
|
|
@@ -1,10 +1,65 @@
|
|
|
1
|
-
|
|
2
|
-
description: Save current state to STATE.md — safe to close session after this
|
|
3
|
-
---
|
|
4
|
-
Run the FlowDeck checkpoint command to save the current project state.
|
|
1
|
+
# /fd-checkpoint
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
**Purpose:** Force-save mid-session checkpoint to STATE.md and write a CHECKPOINT.md summary — safe to close the session and resume later with `/fd-resume`.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
/fd-checkpoint
|
|
8
|
+
|
|
9
|
+
## What Happens
|
|
10
|
+
|
|
11
|
+
1. **Pre-flight check.**
|
|
12
|
+
- Verify `.planning/STATE.md` exists — error if not found ("No active project to checkpoint.")
|
|
13
|
+
|
|
14
|
+
2. **Read current STATE.md.** Parse phase, status, steps_complete, and other tracked fields.
|
|
15
|
+
|
|
16
|
+
3. **Update STATE.md.**
|
|
17
|
+
- Set `last_updated` to current timestamp
|
|
18
|
+
- Ensure `status` reflects current state accurately
|
|
19
|
+
- Scan `.planning/phases/phase-<N>/PLAN.md` for completed steps and update `steps_complete` if tracked
|
|
20
|
+
|
|
21
|
+
4. **Write CHECKPOINT.md.** Creates `.planning/phases/phase-<N>/CHECKPOINT.md`:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# Checkpoint
|
|
25
|
+
|
|
26
|
+
**Saved:** <timestamp>
|
|
27
|
+
**Phase:** <N>
|
|
28
|
+
**Status:** <status>
|
|
29
|
+
**Plan confirmed:** <yes/no>
|
|
30
|
+
|
|
31
|
+
## What was done
|
|
32
|
+
|
|
33
|
+
<brief summary of recent changes in this session>
|
|
34
|
+
|
|
35
|
+
## What's next
|
|
36
|
+
|
|
37
|
+
<next uncompleted step from PLAN.md, or "No plan active">
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
5. **Report.** Present checkpoint summary including phase, status, file path, and the `/fd-resume` command.
|
|
41
|
+
|
|
42
|
+
## Output / State
|
|
43
|
+
|
|
44
|
+
Files created:
|
|
45
|
+
- `.planning/phases/phase-<N>/CHECKPOINT.md`
|
|
46
|
+
|
|
47
|
+
STATE.md updates:
|
|
48
|
+
```yaml
|
|
49
|
+
last_updated: "<timestamp>"
|
|
50
|
+
status: <current status>
|
|
51
|
+
steps_complete: [1, 2, ...] # if tracked in PLAN.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
/fd-checkpoint
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Save a checkpoint for the current session. Safe to close afterward.
|
|
61
|
+
|
|
62
|
+
## Related Commands
|
|
63
|
+
|
|
64
|
+
- `/fd-resume` — reload the checkpointed state and continue
|
|
65
|
+
- `/fd-map-codebase` — map the codebase (required before starting a feature)
|