Skip to content

/reflect-outcome

Detects when a stated outcome names a specific instance — a mechanism-as-means or a single named product — where a category was meant, and returns a neutral fork for the lead to show the user, or nothing. Invoked by launch commands at outcome capture, in place of the verbatim

From plugin
8413 skills2 agents10 commands2 hooks
shell
$ npx -y skills add DheerG/swarms --skill reflect-outcome --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/reflect-outcome
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Detects when a stated outcome names a specific instance — a mechanism-as-means or a single named product — where a category was meant, and returns a neutral fork for the lead to show the user, or nothing. Invoked by launch commands at outcome capture, in place of the verbatim

SKILL.md

reflect-outcome.SKILL.md
name: reflect-outcome
user-invocable: false
description: |
  Detects when a stated outcome names a specific instance — a mechanism-as-means or a single named product — where a category was meant, and returns a neutral fork for the lead to show the user, or nothing. Invoked by launch commands at outcome capture, in place of the verbatim echo.

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 more
Read it on GitHub ↗
Ships withswarm

Describe what you want. Get a reviewed, ship-ready PR — without babysitting the agent.

Get the whole plugin, auto-invoked
Stats
84
Stars
0
Views
7
Forks
Active
Maintenance
Shell
Language
MIT
License
11d ago
Last commit
4mo ago
Created

Repo: DheerG/swarms

Other skills on swarm.