# Review a flow

> Review a Signalbox flow for dead ends, missing branches and leads that fall through. Use when someone asks whether a flow is right, safe to publish, or why it has warnings.

An agent reads this skill with `get_skill` and the name `review-a-flow`. It is also the MCP prompt `review-a-flow`, and part of the [Claude Code plugin](/agents/connect-other-clients/).

What follows is the skill as the agent reads it.

You are looking for leads that would be handled badly. Change nothing unless asked.

## 1. Read it

Call `get_flow`. Read the `outline` first, then the `issues`, then the document where you need detail. `get_node_type` explains any step you are unsure of.

## 2. What the checker found

List every `error` (it blocks publishing) and every `warning`, each with its step and its `fix`.

## 3. What the checker cannot see

Go through these. Report only the ones that apply.

- **Blank fields.** Every condition on a `sopro.*` or `hs.*` field: what happens to a lead where it is blank? A company Sopro Data does not know fails every positive test and falls to the last exit. Is that exit a sensible place for an unknown company?
- **Free-mail and throwaway addresses.** Does the flow test `clean.freemail` or `clean.disposable` before it gives a rep's time away?
- **Existing customers and open deals.** Does a lead from a company with an owner or an open deal go to that owner, or into the queue with everyone else? (`hs.deals.customer`, `hs.deals.open`, the Owner step.)
- **Nobody free.** A queue step where every rep is away or has no calendar: `list_queues` shows each queue's rule for that and who is eligible now.
- **The calendar's other exits.** Not booked and Cancelled should each do something useful: a task, a message to the team, or at least an end. A lead who does not book is still a lead.
- **Order of slow steps.** AI classify and Send webhook after the last thing the visitor sees.
- **HubSpot writes.** One Create deal on each path, not two. An Update record that sets a property the form also sets may be overwritten.
- **Dead weight.** Steps that do nothing: a Set value nobody reads, a Score nobody tests, a branch whose conditions can never hold.
- **Draft against live.** If `hasUnpublishedChanges` is true, the draft differs from what leads run now. Say so.

## 4. Test the edges

If you have the Build level, call `dry_run_flow` with a few awkward leads: a free-mail address, a company with no match, a small company, an existing customer's domain if the person gives one. Report the path each took.

## 5. Report

Lead with the verdict: safe to publish, or not, and why in one line. Then the findings, worst first, each with the step, what would happen to which leads, and the change you suggest. Give the `link` to the flow.

Offer to make the changes. If they say yes, follow the `build-a-flow` skill.
