control-flow-designer
Skill8 starsChanged 14 days agoMITView on GitHub
Design the Flow tab when orchestration, branching, or state transitions matter.
In this repository22 other files it gives its agents.
- development/AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- backbone-designerSkill
- contract-designerSkill
- deployment-designerSkill
- gui-designerSkill
- module-designerSkill
- stack-designerSkill
- storage-contract-designerSkill
- use-case-designerSkill
- tandemSkill
- backbone-designerSkill
- contract-designerSkill
- control-flow-designerSkill
- deployment-designerSkill
- gui-designerSkill
- module-designerSkill
- stack-designerSkill
- storage-contract-designerSkill
- use-case-designerSkill
- brainstorm-whiteboardSkill
- tandemSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Use this method when the design contains meaningful orchestration, branching, asynchronous work, retries, or state transitions.
- Very specific: line 30
Use stable lowercase kebab-case IDs.
- Distinctive: line 47
Write node and edge labels as a plain-language story a non-experienced reviewer can follow from start to outcome.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Control-Flow Designer
Use this method when the design contains meaningful orchestration, branching, asynchronous work,
retries, or state transitions. Omit it for a trivial straight-through interaction and emit
controlFlows: [].
Emit one to four reviewable flows using exactly:
controlFlow
├─ id
├─ title
├─ purpose
├─ useCaseIds[]
├─ nodes[]
│ ├─ id
│ ├─ label
│ ├─ kind: start | action | decision | interaction | storage | outcome | error
│ ├─ contractKind: none | interaction | storage
│ └─ contractId
└─ edges[]: { id, fromNodeId, toNodeId, label }Use stable lowercase kebab-case IDs. A flow has exactly one start and at least one outcome or
error. For nodes without a contract reference, use contractKind: none and contractId: "".
Connect the start node to the first operation. Every node must be reachable from start, every
path must end at an outcome or error, and only outcome/error nodes may omit an outgoing edge.
An intermediate outcome may lead to a final outcome when the flow exposes distinct observable
results, such as producing stdout before returning an exit code.
Otherwise reference an existing contract-set/v1 interaction or storage-contract ID.
interaction nodes must reference the exact interaction they perform, and storage nodes must
reference the exact store they access. Never attach one representative interaction ID to a generic
node that stands for several operations. Split the flows, add explicit operation branches, or use
an action node with no contract reference for genuinely shared behavior.
Describe the main control path and only material alternate paths. Use decisions and labeled edges
for validation failures, missing state, retries, or commit failures. Produce one concise
control-flow aspect summary to make the Flow tab applicable, but keep the graph in
controlFlows. Do not restate every contract interaction.
Write node and edge labels as a plain-language story a non-experienced reviewer can follow from start to outcome. Describe what the product or user observes, not function names, internal services, protocol verbs, or implementation mechanics unless those mechanics are themselves the decision under review. Decision labels should read as understandable questions.
Attach zero to three Attention items directly to the relevant Flow, node, or edge, only for
consequential ambiguity in branching, ordering, failure handling, retries, or state transitions.
Each item has id, impact, question, whyItMatters, and two or three
{ option, implication } alternatives.
Persist { controlFlows } through submit_flow_block. For initial design, an omitted method
submits an empty controlFlows array. On revision, the inherited block, including embedded
Attention, needs no submission unless this perspective changes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

