agentleFS
MicrosoftKnown publishermicrosoft/Tandem/development/tandem/skills/control-flow-designer/SKILL.md

control-flow-designer

Skill8 starsChanged 14 days agoMITView on GitHub

Design the Flow tab when orchestration, branching, or state transitions matter.

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
  1. Very specific:

    Use this method when the design contains meaningful orchestration, branching, asynchronous work, retries, or state transitions.

    line 9
  2. Very specific:

    Use stable lowercase kebab-case IDs.

    line 30
  3. Distinctive:

    Write node and edge labels as a plain-language story a non-experienced reviewer can follow from start to outcome.

    line 47

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.