From flo
Use when creating beads during feature work on an epic. Triggers on "add a bead", "create a task for", "track this as a bead", or /flo:add.
How this skill is triggered — by the user, by Claude, or both
Slash command
/flo:addThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create beads that are always parented to the active epic. Prevents orphaned beads by resolving the epic first and refusing to create without a parent. Enforces bead quality so future agents can pick up the work without rebuilding context.
Create beads that are always parented to the active epic. Prevents orphaned beads by resolving the epic first and refusing to create without a parent. Enforces bead quality so future agents can pick up the work without rebuilding context.
Not for: Offloading tangent ideas (use beads:offload). For standalone beads with no epic, use bd create directly.
Every bead must complete within a single agent session (~165k token window) with no compaction. Turns compound cost, context length degrades quality, and compaction destroys the context you spent tokens acquiring. Size beads to finish well before the window fills. (See references/design.md for the full economic model.)
Ask: can a fresh agent read the bead, explore the relevant code, implement, and verify — all within ~120k tokens of working budget? (~45k reserved for system prompt, skill loading, project context, and bead description itself.)
| Signal | Likely fits | Decompose |
|---|---|---|
| Files touched | 1-4 | 5+ |
| Modules involved | 1-2 | 3+ |
| Concepts to understand | Narrow, well-defined | Requires understanding multiple subsystems |
| Implementation steps | Linear, sequential | Branching, requires backtracking |
| Test surface | Focused unit/integration | Broad E2E across layers |
| Exploration needed | Knows where to look (paths in description) | Needs to discover structure |
When a bead is too large, split it:
--deps. This makes ordering explicit and lets bd ready manage flow.Anti-pattern: "Part 1 / Part 2" beads. If the split produces beads that can't be verified in isolation, the decomposition is wrong. Find a different seam.
Every bead must be self-contained: a fresh agent with no prior context should start working without asking questions or exploring to understand what's needed. Context is cheap to write now, ruinously expensive to reconstruct later. (See references/design.md.)
Every bead MUST include all of these in its --description:
| Element | Why |
|---|---|
| What — concrete deliverable | Future agent needs to know what "done" looks like |
| Why — motivation/context | Without this, agents make wrong trade-offs |
| Where — file paths, symbols, modules | Eliminates exploration cost; you know this now, they won't |
| How (if non-obvious) — approach, patterns to follow | Prevents agents from reinventing or deviating from established patterns |
| Siblings — related beads in the epic | "See also Heartbeat-xxx which handles the API side" |
| Contracts — inputs/outputs this bead depends on or produces | What does this bead consume? What must it expose for downstream beads? |
Before running bd create, verify:
apps/api/src/services/migration/execute.ts.validateSubscriptionRow() in apps/api/src/services/migration/validate.ts.bd list --parent <epic> --limit 0 — if another bead touches the same area, mention it.--deps <id> at creation time.<What this bead delivers — 1-2 sentences>
## Context
<Why this work exists. What problem it solves. What user story or spec requirement it addresses.>
## Location
- <repo-root-relative file paths>
- Key symbols: <function/class/type names>
- Related module: <path>
## Approach
<How to implement. Patterns to follow. Existing code to mirror. Decisions already made.>
## Dependencies & Relations
- Depends on: <bead-id> (<why>)
- Related: <bead-id> (<what it handles>)
- Produces: <what downstream beads expect from this>
## Acceptance
- <Concrete, testable criterion>
- <Another criterion>
Scale sections to the bead — a trivial bug fix needs What + Location + Acceptance. Always err toward more context.
/flo:add --title="Fix Step 7 retry button" --type=bug --priority=1
/flo:add --title="Add CSV column mapping" --type=feature --description="..."
Use the provided args as a starting point. Still apply context harvesting (below) — the user's args are the seed, the conversation is the soil.
/flo:add the validation logic doesn't handle negative amounts
/flo:add we need a retry mechanism for the PAN copy step
Parse the free text to derive title, type, priority, and description seed. Use conversation context to fill in the rest.
/flo:add
The user is mid-conversation and wants to capture what they're looking at as a bead. The conversation already contains the trigger. Scan recent messages for:
If the intent is clear from context: Propose a title and type. Confirm with the user only if ambiguous.
If the context is ambiguous or sparse: Ask the user to clarify. Don't guess blindly — but also don't ask what's already obvious from the last few messages.
When the agent itself triggers this skill (not from /flo:add), it already has full context. Skip confirmation unless scope is unclear — just harvest, draft, and present the proposed bead for user approval before creating.
Harvest from the current conversation before doing anything else:
This harvested context feeds directly into the description (step 4). Don't ask the user to re-explain what's already in the conversation.
bash $CLAUDE_PLUGIN_ROOT/scripts/resolve.sh
Reads .flo/state.yml if it exists, otherwise auto-bootstraps (tries branch-key detection, then single-epic detection, then prompts). Pass --epic <id> to override.
If resolution fails: STOP. Do not create the bead. Report the failure and suggest --epic <id>.
bd list --parent <epic-id> --limit 0
Check for beads that touch the same area. Note any that should be:
--deps <id>)bd dep add <new-id> <depends-on-id> after creation)Before writing the description, apply the sizing heuristic. Mentally walk through what an agent would need to do:
If it's too large: Decompose into sub-beads using the decomposition rules. Each sub-bead goes through this entire skill workflow independently (steps 3-7). Wire dependencies between them.
If it fits: Proceed to draft the description.
Start from the harvested context (see Context Harvesting above). The conversation already contains the trigger, the file paths, the user's intent, and adjacent decisions — weave all of that into the description using the template. Apply the quality checklist.
If the user provided a terse title/description (e.g. "track that as a bug"), expand it using what you already know from the session. You have the context — the user shouldn't need to repeat themselves. Ask the user to confirm if you're unsure about scope, but never create a thin bead just because the input was thin.
flo/interactive label (if warranted)Before creation, check whether this bead needs human-in-the-loop. Auto-apply --labels "flo/interactive" if any of these heuristics match:
When in doubt, don't apply. False autonomous is caught during execution (agent realizes it can't proceed). False interactive just means a human picks up work that could have been automated (lower cost failure mode).
If the bead already has other labels, merge: --labels "flo/interactive,backend".
See $CLAUDE_PLUGIN_ROOT/references/labels.md for the full flo/ label namespace convention.
bash $CLAUDE_PLUGIN_ROOT/scripts/create-child.sh <epic-id> --title="..." --type=... --priority=... --description="..." [--deps <id>] [--labels "flo/interactive,..."]
The script wraps bd create and automatically appends --parent <epic-id>. Accepts all bd create flags.
If the new bead blocks or is blocked by siblings that you identified in step 2 but couldn't set with --deps at creation:
bd dep add <new-bead-id> <depends-on-id>
Report to user:
Created <bead-id> as child of epic <epic-id>
Title: <title>
Type: <type> | Priority: P<n>
Dependencies: <ids or "none">
Related: <sibling ids mentioned in description>
When creating multiple beads, resolve the epic once (step 1), survey siblings once (step 2), then run steps 3-6 for each bead. Set inter-batch dependencies after all beads exist. Report all results together:
Created 3 beads as children of epic Heartbeat-2az:
1. Heartbeat-xxx: Fix Step 7 retry button (bug, P1)
deps: Heartbeat-yyy
2. Heartbeat-yyy: Add migration history view (feature, P2)
3. Heartbeat-zzz: Write CSV parsing tests (task, P2)
related: Heartbeat-xxx, Heartbeat-yyy
/flo:add arguments map directly to bd create flags:
| Argument | Maps to |
|---|---|
--title="..." | bd create --title="..." |
--type=bug | bd create --type=bug |
--priority=1 | bd create --priority=1 |
--description="..." | bd create --description="..." |
--deps <id> | bd create --deps <id> |
--epic <id> | Epic override (re-bootstraps .flo/state.yml, not passed to bd) |
Everything else passes through to bd create unchanged.
If --description is missing or terse (under ~50 words), the agent MUST expand it using the template before creation. A title is not a description.
| Mistake | Fix |
|---|---|
| Creating bead then attaching after | Use this skill — parent is set at creation |
Using bd dep add for parenting | Dependencies ≠ parenting. --parent is hierarchical ownership |
| Creating without resolving epic first | Script refuses — resolution is mandatory |
Passing --parent manually | Script rejects double-parenting to prevent confusion |
| Thin descriptions ("Fix the button") | Apply quality checklist — include what, why, where, how |
| Missing sibling references | Survey siblings first — related beads must cross-reference |
| Skipping dependency wiring | If order matters, set --deps — don't leave it implicit |
| "I'll add context later" | You won't. Your session will end. Write it now. |
| Mega-bead that spans layers | Decompose — split by layer, concern, or data flow |
| "Part 1 / Part 2" split | Each bead must be independently verifiable. Find a better seam |
| No size check before creation | Always run the sizing heuristic at step 3 |
| Skipping flo/interactive check | Always run step 5 heuristics — design/brainstorm beads dispatched autonomously produce unilateral decisions |
| Applying flo/interactive when unsure | When in doubt, don't apply — false autonomous is cheaper than false interactive |
npx claudepluginhub jasonkuhrt/claude-marketplace --plugin floCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.