Each command is a different Elephant↔Goldfish dance. Same primitives, different choreography.
/cf-question
a fast, cited answer — read-only
You have a question, not a task. ClaudeFlows splits it into 2–3 narrow lanes, runs a
Goldfish on each in parallel, and synthesizes the answer into under 250 words with sources.
No clarifying prompts. Nothing on disk changes.
flowchart LR
Q(["your question"]) --> E["Elephant
classifies"]
E --> G1["Goldfish · Lane 1"]
E --> G2["Goldfish · Lane 2"]
E -.optional.-> G3["Goldfish · Lane 3"]
G1 --> S["synthesize"]
G2 --> S
G3 -.-> S
S --> A(["≤250-word cited answer"])
/cf-brainstorm
divergent ideas → ranked picks
You have a rough thought and want options. Multiple Goldfish run in parallel, each through
a different lens — technical, business, UX, contrarian. Their lack of shared context is the
feature: it's what makes them disagree. The Elephant clusters the output into a brief.
flowchart LR
I(["rough idea"]) --> SEED["Elephant
frames the seed"]
SEED --> T["Goldfish · Technical"]
SEED --> B["Goldfish · Business"]
SEED --> U["Goldfish · UX"]
SEED --> C["Goldfish · Contrarian"]
T --> X["cluster & rank"]
B --> X
U --> X
C --> X
X --> O(["concepts brief"])
/cf-prd
idea → grounded PRD
You have a direction and need real requirements. Wave 1 grounds the idea in your existing
codebase. You answer a few targeted gap questions. Wave 2 sends Goldfish out across market,
technical, and UX/compliance lenses. The Elephant writes the PRD, with anything you deferred
spelled out as Open Questions.
flowchart LR
I(["idea or #issue"]) --> W1["Wave 1
codebase grounding"]
W1 --> GAPS["gap Q&A
with you"]
GAPS --> W2["Wave 2
research lenses"]
W2 --> P(["PRD
+ Open Questions"])
/cf-feature
design doc → reviewed code
You know what to build. The Elephant drafts a design doc — no code yet. Three Goldfish
read it cold: one for comprehension, one to find gaps, one to check it could ship in a
single pass. The implementation gate stays closed until critic and readiness both sign off.
Then the diff goes through review.
flowchart LR
F(["feature / #issue"]) --> D["design doc"]
D --> P1["Goldfish · Comprehension"]
D --> P2["Goldfish · Critic"]
D --> P3["Goldfish · Readiness"]
P1 --> G{"gate"}
P2 --> G
P3 --> G
G -- gaps --> D
G -- ready --> IMPL["implement"]
IMPL --> PR["/cf-precommit-review"]
PR --> OUT(["reviewed code"])
/cf-bug
symptom → failing test → fix
A Goldfish diagnoses the bug from only the symptom and repro — never your hypothesis. If
it lands on the same root cause, that's confidence. If it lands somewhere else, that's
signal worth chasing. Either way, the bug becomes a failing test before any fix is written.
flowchart LR
B(["bug / #issue"]) --> H["Elephant
hidden hypothesis"]
B --> GD["Goldfish · Diagnose
(symptom only)"]
H --> CMP{"compare"}
GD --> CMP
CMP --> T["write failing test"]
T --> FIX["smallest fix → green"]
FIX --> PR["/cf-precommit-review"]
PR --> OUT(["reviewed fix"])
/cf-precommit-review
a blind reviewer on your diff
The reviewer is itself a Goldfish — it sees the diff, not the conversation, not what you
were trying to do. Findings get fixed or rebutted verbatim, never silently dismissed. The
loop runs until clean, with a hard cap of five rounds before it asks you what to do.
flowchart LR
D(["your diff"]) --> PF["pre-flight
lint · types · tests"]
PF --> R["Goldfish · Reviewer
(blind)"]
R --> F{"findings?"}
F -- yes --> TR["fix or rebut verbatim"]
TR --> R
F -- no --> OUT(["cleared diff"])