reflect-outcome
reflect-outcome detects when a user's stated outcome names a specific tool, product, or mechanism as a means to a broader goal they've also explicitly stated, signaling potential over-narrowing that could orphan alternatives. Fire only when both elements are present in the user's words with a clear serve-relationship between them; stay silent on bare concrete nouns without stated wider ends to avoid alarm-fatigue false positives.
git clone --depth 1 https://github.com/DheerG/swarms /tmp/reflect-outcome && cp -r /tmp/reflect-outcome/skills/reflect-outcome ~/.claude/skills/reflect-outcomeSKILL.md
The user stated an outcome in their own words. Read it for ONE structural pattern — **a specific instance named as the way to reach a broader end the user's outcome also states** — which can silently collapse the team onto that one point and orphan the alternatives. Fire ONLY when BOTH are present: (1) a named mechanism, product, or instance, AND (2) a wider goal **stated anywhere in the user's outcome** — not necessarily in the same sentence as the named instance — that the named thing is merely one way to serve. The named thing being *narrower than that stated wider goal* is the discriminator. **Infer nothing:** if no wider end is stated, do not fire (a category you could infer from the name is not a stated end), and never predict that foreclosure will happen — detect only the divergence the user's own words make plain. A bare concrete noun, mechanism or product, with no stated wider end does NOT fire; that over-firing is the alarm-fatigue failure this exists to avoid. The cheap, incumbent-first dismiss is what makes firing on a real signal safe.
- **Mechanism-as-means:** "force a resume *so it can nudge* a forgotten prospect" → "nudge" is one way to reach the wider stated goal "resurface a forgotten prospect" → FIRE. Contrast "add a retry queue for failed webhooks" → "retry queue" IS the whole ask, no wider goal it under-serves → **stay SILENT**.
- **Proper-noun-specific-instance:** "integrate with Salesforce *so sales can see deals*" → the wider end "sales can see deals" is stated and Salesforce is one way to reach it → FIRE. Contrast bare "store it in S3," "send a Slack notification," "cache it in Redis," "deploy on Vercel" → the product IS the ask, no wider end stated → **stay SILENT**. Do NOT fire on the class you could infer from the product name — that inference is the alarm-fatigue over-fire; an existing-integration collision with no stated end drops to the Research-phase repo check instead.
Scan the whole input, not a single clause: if more than one pin is present, fork on the single most consequential one; if it is genuinely ambiguous which matters most, return `NO FORK`.
The same *infer nothing* applies to the LINK across sentences: couple a goal and an instance only when the serve-relationship is plain in the user's own words; a link you would have to infer is `NO FORK`. When the outcome names more than one instance, pair each only with the end it plainly serves — never fire an instance against an end that belongs to a different named thing.
Read the WORDING only. Do not read the codebase. Do not grade quality. Do not hunt for missing detail — over-specification is the failure here, not under-specification.
**Common case — nothing pinned:** return exactly `NO FORK`. The lead shows the user nothing and carries the outcome forward as-is. Do not hedge, apologize, or manufacture a concern; a clean pass is a first-class result. Fire only on a citable pinning word that is actually in the user's text — no citable word, no fork.
**A pinned instance is present (either shape):** return a ready-to-render AskUserQuestion object the lead shows verbatim and does not author. Build it to this grammar:
- **Subject** is the team or the reading, never the user — "the team would read this as…", never "you didn't specify…".
- **Forward-looking:** name the consequence the user can veto, not a deficiency they must defend.
- **Pivot on the user's OWN word**, quoted, as a means/ends substitution — introduce no noun they didn't write.
- **Only remedy is to pick a reading** — never to add more detail.
Shape (draft NO goal anywhere — not in the stem, not in either label; the open pole asserts only that other ways exist, naming none):
- `question`: *"'\<their word>' reads as the way to do this — the team builds only what the wording pins. Did you mean \<their word> specifically, or are you open to other ways to do this?"*
- `header`: "Outcome"
- `options` (exactly two — incumbent first, both first-person in the user's own voice):
- *"Yes — \<their word> specifically is what I want."* — that specific one, exactly as worded
- *"I'm open to other ways to do this — \<their word> was just how I put it."* — \<their word> was one example, not the requirement
**Neutrality bar — all four must hold, or return `NO FORK` instead:** (1) introduce no noun the user didn't write; (2) assert no quality grade; (3) the user's verbatim still briefs the team without your words leaking in; (4) the user keeps an unforced choice to leave the wording exactly as-is.
**Resolving the choice (the lead handles the answer — the skill stores nothing):**
- **Option A — keep the named instance:** nothing to record. The verbatim already contains the word and flows to the briefs unchanged.
- **Option B — open to other ways:** ask the user to restate the outcome in their own words with an OPEN prompt ("tell me what you'd like to happen") — never a drafted "did you mean X?", which would re-introduce the assembled-goal the fork exists to avoid. The restatement re-enters this reflection (a fresh outcome, usually `NO FORK`) and BECOMES the verbatim of record, flowing to the briefs unchanged. Store no separate supplement — the user's own revised words carry the signal that the original word was incidental.
- **If a re-authored outcome forks again,** give it the same two-option treatment — each pass is a fresh user-authored outcome, so the incumbent option (A) is the terminator; there is no separate loop counter.Read-only swarm team member. Spawned by swarm via the Agent tool. Tools restricted to read and research only — no Edit, Write, or NotebookEdit. Operational guidance comes from the briefing template at spawn time.
Launch a code-mode agent team
Scaffold a custom workflow — generates a mode skill and shortcut command
Launch a general-mode agent team
Interactively launch an agent team with guided setup
Walk through swarm's core concepts and launch your first team
Run recursive refinement on the current branch and PR
Launch a triage-mode agent team — diagnose an issue without changing it