salesforce-flow

Router for the 63 SfSkills `flow` skill packages. Flow Builder: record-triggered, screen, scheduled and orchestration flows, bulkification, fault handling, limits, testing. "My flow" belongs here even

SKILL.md

GitHub

Salesforce flow — SfSkills domain router

Flow Builder: record-triggered, screen, scheduled and orchestration flows, bulkification, fault handling, limits, testing. "My flow" belongs here even when salesforce-apex also names the limit. Nightly scheduling without naming code defaults here; apex takes it when code/class/Apex is named. Flow-vs-Apex choice before anything is built: admin/process-automation-selection.

63 skill packages live under ${CLAUDE_PLUGIN_ROOT}/skills/flow/<slug>/SKILL.md. They are not loaded — reach them by path, on demand.

Generated by scripts/build_plugin.py. Do not hand-edit.

How to find the right skill

Three mechanisms, listed in order of reliability on a fresh install. Use the first one that is available; do not stop at a guess.

1. The shipped roster (always works, no setup). Read references/skill-index.md next to this file. It lists every flow skill package with a one-line gloss, generated from registry/skills.json. Scan it and pick by name.

2. The MCP server (fast, needs the sfskills-mcp server connected). Call the search_skill tool with the user's phrasing and domain: "flow". It returns ranked skill ids. get_skill then returns the package contents.

3. The search CLI (fast, needs a locally built index).

python3 "${CLAUDE_PLUGIN_ROOT}/scripts/search_knowledge.py" "<the user's question>" --domain flow --json

This needs vector_index/, which is not shipped — it is gitignored and must be built once per clone:

cd "${CLAUDE_PLUGIN_ROOT}" && python3 -m pip install -r requirements.txt && python3 scripts/build_index.py

If the command errors or reports Coverage: NONE, fall back to mechanism 1 rather than telling the user the topic is uncovered.

Then read the package. Open the exact ${CLAUDE_PLUGIN_ROOT}/skills/<domain>/<slug>/SKILL.md the lookup returned, plus its references/gotchas.md and references/llm-anti-patterns.md. Do not answer from this router: it is a map, not the territory.

Featured entry points

Curated starting points when the request is broad or the lookup is ambiguous. This is a shortlist, not the catalogue — the roster at references/skill-index.md has all 63.

  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/record-triggered-flow-patterns/SKILL.md — before-save vs after-save, entry criteria, and re-entry
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/flow-bulkification/SKILL.md — the Flow equivalent of queries-in-loops, and how to see it in the debug log
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/fault-handling/SKILL.md — fault paths as a design requirement, not an afterthought
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/screen-flows/SKILL.md — screen composition, validation, and reactive components
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/scheduled-flows/SKILL.md — schedule-triggered flows, batch limits, and the scheduled-path alternative
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/subflows-and-reusability/SKILL.md — decomposing a flow before it becomes unmaintainable
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/flow-testing/SKILL.md — Flow tests, coverage expectations, and what they cannot assert
  • ${CLAUDE_PLUGIN_ROOT}/skills/flow/flow-performance-optimization/SKILL.md — Get Records tuning, loop cost, and CPU time inside a flow

Decision trees

Read the tree before activating a skill when the request could be solved more than one way, and cite the branch that decided it.

  • ${CLAUDE_PLUGIN_ROOT}/standards/decision-trees/automation-selection.md — read FIRST — it decides whether Flow is the right tool at all
  • ${CLAUDE_PLUGIN_ROOT}/standards/decision-trees/flow-pattern-selector.md — read SECOND — which kind of Flow to build
  • ${CLAUDE_PLUGIN_ROOT}/standards/decision-trees/async-selection.md — read when the work should leave the transaction

Canonical templates

Do not hand-roll an idiom that already exists. Copy from ${CLAUDE_PLUGIN_ROOT}/templates/flow/ and rename in the consuming project; never edit the template in place.

  • ${CLAUDE_PLUGIN_ROOT}/templates/flow/RecordTriggered_Skeleton.flow-meta.xml
  • ${CLAUDE_PLUGIN_ROOT}/templates/flow/FaultPath_Template.md
  • ${CLAUDE_PLUGIN_ROOT}/templates/flow/Subflow_Pattern.md
  • ${CLAUDE_PLUGIN_ROOT}/templates/flow/README.md — the full list

Run-time agents for this domain

Invoke one of these subagents when the ask is a whole workflow rather than a single question:

  • flow-analyzer — Flow vs Apex routing + bulkification review
  • flow-builder — Design a Flow (any type) from a business requirement
  • flow-orchestrator-designer — Design or audit a Flow Orchestration

Rules

  1. Answer from the opened flow package, never from this router.
  2. Cite the skill id and, where one applied, the decision-tree branch.
  3. Never claim a topic is uncovered without pasting lookup output.
  4. Never deploy to an org.