/insight-angles
A lens-based, multi-pass discovery engine. Where /insight-explore asks "what are the ways to build this?" and /insight-adversarial attacks for flaws via personas, insight-angles asks "what frames, connections, assumptions, and second-order effects are not yet visible?" — and finds them by pointing the right lenses at the subject. It can run each lens as a cold sub-agent (fresh context, no anchoring) — independence is what makes discovery work, the same reason /cold-review outperforms inline /verify at finding things — and picks cold vs inline per subject, asking only when it isn't sure. Read-only and advisory — it surfaces, never decides or changes anything.
Structured execution spec: protocol.yon. Read it for the canonical rules and step sequence; this file is explanation. The two must stay in sync — if you edit one, update the other and refresh the @STAMP date.
The lens roster (seed, not ceiling)
17 families, grouped by what they perturb. Core = candidate for most subjects; Specialist = domain-triggered. Always also derive dynamic, subject-specific lenses (see below) — the roster is a seed.
| Family |
Tier |
Operators |
Best for |
| Reframe |
Core |
inversion · via-negativa ("what guarantees failure?") · pre/pro-mortem · meta-frame ("right question?") · first-principles · counterfactual |
stuck / ambiguous / strategic |
| Analogy |
Core |
cross-domain · structural isomorphism · biological/evolutionary · historical parallel |
novel problems, naming, design |
| Temporal |
Core |
precedent · path-dependency · future-back · cyclicality · "why now?" · lifecycle stage |
timing, strategy, forecasts |
| Perspective |
Core |
absent stakeholder · adversary/competitor · payer vs beneficiary · future maintainer/user · novice vs expert |
product, org, strategy |
| Systems |
Core |
feedback loops · incentives · externalities · 2nd/3rd-order · stocks/flows · bottlenecks |
policy, platform, ecosystem |
| Constraint |
Core |
relax · tighten 10× · swap · the binding constraint · fixed vs assumed-fixed |
design, optimization, planning |
| Epistemic |
Core |
load-bearing assumption · weakest evidence · what-would-change-our-mind · unknown-unknowns · information asymmetry · observability |
research, forecasts, high-stakes |
| Zoom |
Specialist |
in · out · across · boundary/interface |
architecture, scope, scale |
| Formal/Structural |
Specialist |
invariants · symmetries · limits & edge cases · conservation · the formal model |
technical, math |
| Cartography/Representation |
Specialist |
viewpoint/view/model separation · level-of-detail · epistemic legend · one-fact-one-home · cross-map anchors · ratification status |
architecture, portfolios, complex operating systems |
| Power & Politics |
Specialist |
who holds/gains/loses power · gatekeepers · coalitions · feasible vs optimal |
org, strategy, governance |
| Human/Behavioral |
Specialist |
cognitive biases · status/identity/fear/desire · friction & defaults · rewarded behavior |
product, UX, change mgmt |
| Economic/Value |
Specialist |
cost structure · value capture · opportunity cost · marginal vs fixed · who pays |
product, business |
| Aesthetic/Elegance |
Core |
simplicity · conceptual integrity · symmetry · the elegant version · what to remove |
design, UX, DX, ergonomics, writing, code |
| Values/Ethical |
Specialist |
harm-bearer · value tradeoffs · whose values are encoded · rights vs utility · intergenerational |
values-laden / policy decisions |
| Narrative |
Specialist |
story told · hero/villain · the spin · meta-narrative · positioning |
comms, positioning, naming |
| Activation/Engagement |
Specialist |
first-win · time-to-first-value (TTFV) · the hook / aha-moment · activation arc · drop-off & friction-to-activation · juice (satisfying feedback) |
onboarding, first-run, tutorials, adoption funnels, growth/UX |
8 core (Aesthetic/Elegance included — it's good practice across UX, DX, design, ergonomics) + 9 specialist. A run still fires only 4–6 — the roster's job is to make the picking rich.
Dynamic-lens derivation (the roster is a seed)
For every run, also derive subject-specific lenses from three named sources, then validate:
- Domain-native — what would an expert in the subject's home discipline always ask here?
- Foreign-transplant — what does a deliberately distant discipline ask that nobody here is?
- Live-trend — from Classify's current-trends read, what recent shift / live debate reframes the space?
- Validate — keep a candidate only if it generates a question the 17 families don't. Otherwise drop it as redundant.
Typed connections
Each carries type · the link · why it matters · what it enables: analogical · causal · structural · tension (productive paradox) · emergent (A+B→C) · dependency · resource · temporal.
Scoring — novelty × relevance
Every angle/connection is tagged: novelty (obvious / fresh / surprising, relative to current trends) · relevance (decision-relevant & actionable?) · so-what (what changes if true). Rank by novelty × relevance; the strongest unseen angle is the highest combined; flag high-novelty / low-relevance as "interesting but not actionable" rather than dropping it.
Steps
- Frame — state the subject and the dominant framing to escape. Light context only.
- Classify — domain · subject-type · maturity · current trends (calibrates novelty, drives selection).
- Pick lenses — select roster families for the subject-type, plus derive dynamic lenses (above). Log picked + skipped (+ why).
- Layered passes — run the picked lenses (see venue below):
- Layer 1 — each lens → angles + typed connections, each scored.
- Layer 2+ — add 2–4 lenses, informed by the prior layer (re-read prior angles through new lenses; link findings; revise scores). Deeper than default depth is HIL-gated.
- Connect — consolidate typed connections across layers, especially cross-layer links.
- Score & Synthesize — finalize scoring; emit the angle map + synthesis (strongest angle · key connection · most-fragile assumption). If nothing non-obvious surfaced, say so — never manufacture insight.
Venue & depth — context-adaptive
Cold fan-out is the discovery powerhouse (independence = the cold-review effect), but not every subject needs it. Select the venue case-by-case from context / corpus / task; proceed when certainty is near-max, ask the handler only when it isn't. Explicit overrides: "use agents" / "cold" forces fan-out; "inline" / "quick" forces inline.
- Cold (fan-out) when: high ambiguity, high stakes, novel subject, many lenses (anchoring risk), or independence clearly matters.
- Inline when: well-bounded, low stakes, few lenses, cost-constrained — or forced under a
*-RESOLVED marker.
The three modes (selected adaptively, not by a fixed default):
- standard — cold fan-out: one fresh leaf sub-agent per picked lens. No shared context = no anchoring (the cold-review effect). Orchestrator collects + synthesizes. State the fan-out size up front; HIL-gate if it exceeds ~6 agents.
- quick — inline single pass (cheap). Forced when orchestrated under a
*-RESOLVED marker (a lens-agent is a leaf — runs one lens, returns findings, spawns nothing — which keeps the depth guard intact).
- deep — cold fan-out across 2–3 layers; the orchestrator threads each completed layer's findings into the next layer's briefs (compounding at the orchestrator, independence in the agents). HIL-gated (cost).
Cold lens-agents are leaf workers: each gets a primed brief (subject + its one lens [+ prior-layer findings in deep mode]), runs cold, returns its angles/connections, and orchestrates nothing further.
Runtime: detect capabilities, not product names. When the active runtime exposes isolated workers (for example, Claude's Agent or Codex collaboration agents when available), cold fan-out may be used. Without isolated workers, all modes fall back to inline — the adaptive selector degrades gracefully since inline is always available.
The angle map (output)
Selected lenses (+ dynamic ones + skipped & why) → angles grouped by lens, each scored → typed connections (each with why-it-matters) → hidden assumptions (most-fragile flagged) → candidate-expansions → second-order effects → synthesis → layer trail.
Rules
- MUST surface ≥1 genuine connection or unseen angle, or explicitly state none found — never an empty map, never manufactured insight.
- MUST derive dynamic subject-specific lenses (3 sources + validate), not only pick from the roster.
- MUST keep each layer informed by the prior layer's findings (layers compound; not independent re-runs).
- MUST select venue (cold vs inline) per subject from context/corpus/task; proceed when certainty is near-max, ask the handler only when it isn't; honor explicit overrides ("use agents" → cold, "inline" → inline).
- Cold lens-agents MUST be leaves — run one lens, return findings, spawn nothing.
- MUST stay in perspective/connection space: a frame is not a flaw (
/insight-adversarial) and not an option (/insight-explore).
- MUST make each connection assessable (type + why), and judge novelty relative to current trends.
- MUST log lens selection (picked + skipped + why).
- MUST NOT exceed default depth (extra layers, or fan-out > ~6 agents) without explicit handler consent — state the cost and offer.
- MUST NOT make changes, write code, or execute — ideation only.
- Under a
*-RESOLVED marker: run quick (inline) — never spawn further sub-skills.
- SHOULD prefer the non-obvious; flag high-novelty / low-relevance rather than dropping it.
Self-improvement → roster discovery
This skill's SIP is specialized: usage grows the roster. When a dynamic lens this run produced a high novelty × relevance angle the roster lacked, SIP proposes a diff adding it to the lens roster + selection map (gated via /ask-gate, never auto-applied). When a roster lens consistently yields nothing for a subject-type, SIP proposes pruning/remapping it. The 17 families are the seed; real subjects reveal the rest.
Boundary
/insight-explore — generates solution options. insight-angles surfaces frames & connections; its candidate-expansions are seeds, not finished options.
/insight-adversarial — attacks from personas for flaws. insight-angles widens via lenses (same multi-pass shape; personas attack, lenses reveal).
/insight-critique — reviews a concrete output. insight-angles explores a subject's representation.
/insight-cross-examine — the deliberation engine that orchestrates insight-angles (in quick mode), then assesses and recommends. Use cross-examine for a decision; insight-angles to just see more.
/cold-review — outside review of work artifacts against objectives. insight-angles borrows its cold-agent independence, but for angle discovery on a subject, not artifact review.
Human output. This skill's handler-facing output obeys the human-output
contract (human-output/SKILL.md).
Next skills. On completion, run the Next Skills protocol (next-skills/SKILL.md): surface the next-skills recommendations from front-matter for the caller to pick. Offer only — never auto-invoke.
Self-improvement. On completion, run the Self-Improvement Protocol (self-improve/SKILL.md): if this run surfaced a concrete, blocking-or-recurring weakness in this skill — including a dynamic lens worth promoting into the roster — propose a specific fix for the handler to approve. Conservative — silent otherwise. Never auto-apply.
1---2name: insight-angles3description: Angle & connection discovery engine. Classifies a subject (domain, type, current trends), picks lenses from a 17-family roster AND derives dynamic subject-specific ones, then runs layered passes via a context-adaptive venue (cold fan-out for independence — the cold-review effect — or inline) to surface frames, typed connections, hidden assumptions, candidate-expansions, and second-order effects, scored by novelty × relevance. Trigger on /insight-angles, "find unseen angles", "what connections am I missing", "what are we not seeing", "surface hidden assumptions", "reframe this". Not insight-explore (generates solution options — angles surfaces frames & connections) or insight-adversarial (attacks for flaws via personas — angles widens via lenses). Not insight-critique (reviews an output) or insight-cross-examine (the deliberation engine that orchestrates this one).4---56# /insight-angles78A lens-based, multi-pass discovery engine. Where `/insight-explore` asks "what are the ways to build this?" and `/insight-adversarial` attacks for flaws via personas, **insight-angles asks "what frames, connections, assumptions, and second-order effects are not yet visible?"** — and finds them by pointing the right *lenses* at the subject. It can run each lens as a **cold sub-agent** (fresh context, no anchoring) — independence is what makes discovery work, the same reason `/cold-review` outperforms inline `/verify` at *finding* things — and **picks cold vs inline per subject**, asking only when it isn't sure. Read-only and advisory — it surfaces, never decides or changes anything.910> **Structured execution spec:** [`protocol.yon`](protocol.yon). Read it for the canonical rules and step sequence; this file is explanation. The two must stay in sync — if you edit one, update the other and refresh the `@STAMP` date.1112## The lens roster (seed, not ceiling)131417 families, grouped by what they perturb. **Core** = candidate for most subjects; **Specialist** = domain-triggered. **Always also derive dynamic, subject-specific lenses** (see below) — the roster is a seed.1516| Family | Tier | Operators | Best for |17|---|---|---|---|18| **Reframe** | Core | inversion · via-negativa ("what guarantees failure?") · pre/pro-mortem · meta-frame ("right question?") · first-principles · counterfactual | stuck / ambiguous / strategic |19| **Analogy** | Core | cross-domain · structural isomorphism · biological/evolutionary · historical parallel | novel problems, naming, design |20| **Temporal** | Core | precedent · path-dependency · future-back · cyclicality · "why now?" · lifecycle stage | timing, strategy, forecasts |21| **Perspective** | Core | absent stakeholder · adversary/competitor · payer vs beneficiary · future maintainer/user · novice vs expert | product, org, strategy |22| **Systems** | Core | feedback loops · incentives · externalities · 2nd/3rd-order · stocks/flows · bottlenecks | policy, platform, ecosystem |23| **Constraint** | Core | relax · tighten 10× · swap · the binding constraint · fixed vs *assumed*-fixed | design, optimization, planning |24| **Epistemic** | Core | load-bearing assumption · weakest evidence · what-would-change-our-mind · unknown-unknowns · information asymmetry · observability | research, forecasts, high-stakes |25| **Zoom** | Specialist | in · out · across · boundary/interface | architecture, scope, scale |26| **Formal/Structural** | Specialist | invariants · symmetries · limits & edge cases · conservation · the formal model | technical, math |27| **Cartography/Representation** | Specialist | viewpoint/view/model separation · level-of-detail · epistemic legend · one-fact-one-home · cross-map anchors · ratification status | architecture, portfolios, complex operating systems |28| **Power & Politics** | Specialist | who holds/gains/loses power · gatekeepers · coalitions · feasible vs optimal | org, strategy, governance |29| **Human/Behavioral** | Specialist | cognitive biases · status/identity/fear/desire · friction & defaults · rewarded behavior | product, UX, change mgmt |30| **Economic/Value** | Specialist | cost structure · value capture · opportunity cost · marginal vs fixed · who pays | product, business |31| **Aesthetic/Elegance** | Core | simplicity · conceptual integrity · symmetry · the elegant version · what to remove | design, UX, DX, ergonomics, writing, code |32| **Values/Ethical** | Specialist | harm-bearer · value tradeoffs · whose values are encoded · rights vs utility · intergenerational | values-laden / policy decisions |33| **Narrative** | Specialist | story told · hero/villain · the spin · meta-narrative · positioning | comms, positioning, naming |34| **Activation/Engagement** | Specialist | first-win · time-to-first-value (TTFV) · the hook / aha-moment · activation arc · drop-off & friction-to-activation · juice (satisfying feedback) | onboarding, first-run, tutorials, adoption funnels, growth/UX |35368 core (Aesthetic/Elegance included — it's good practice across UX, DX, design, ergonomics) + 9 specialist. A run still fires only 4–6 — the roster's job is to make the *picking* rich.3738## Dynamic-lens derivation (the roster is a seed)3940For every run, also derive subject-specific lenses from three named sources, then validate:41421. **Domain-native** — what would an expert *in the subject's home discipline* always ask here?432. **Foreign-transplant** — what does a deliberately *distant* discipline ask that nobody here is?443. **Live-trend** — from Classify's current-trends read, what recent shift / live debate reframes the space?454. **Validate** — keep a candidate only if it generates a question the 17 families don't. Otherwise drop it as redundant.4647## Typed connections4849Each carries *type · the link · why it matters · what it enables*: **analogical** · **causal** · **structural** · **tension** (productive paradox) · **emergent** (A+B→C) · **dependency** · **resource** · **temporal**.5051## Scoring — novelty × relevance5253Every angle/connection is tagged: **novelty** (obvious / fresh / surprising, *relative to current trends*) · **relevance** (decision-relevant & actionable?) · **so-what** (what changes if true). Rank by novelty × relevance; the **strongest unseen angle** is the highest combined; flag high-novelty / low-relevance as "interesting but not actionable" rather than dropping it.5455## Steps56571. **Frame** — state the subject and the dominant framing to escape. Light context only.582. **Classify** — domain · subject-type · maturity · **current trends** (calibrates novelty, drives selection).593. **Pick lenses** — select roster families for the subject-type, **plus derive dynamic lenses** (above). Log picked + skipped (+ why).604. **Layered passes** — run the picked lenses (see venue below):61 - **Layer 1** — each lens → angles + typed connections, each scored.62 - **Layer 2+** — add 2–4 lenses, **informed by the prior layer** (re-read prior angles through new lenses; link findings; revise scores). Deeper than default depth is **HIL-gated**.635. **Connect** — consolidate typed connections across layers, especially cross-layer links.646. **Score & Synthesize** — finalize scoring; emit the angle map + synthesis (strongest angle · key connection · most-fragile assumption). If nothing non-obvious surfaced, **say so** — never manufacture insight.6566## Venue & depth — context-adaptive6768Cold fan-out is the discovery powerhouse (independence = the cold-review effect), but not every subject needs it. **Select the venue case-by-case from context / corpus / task; proceed when certainty is near-max, ask the handler only when it isn't.** Explicit overrides: "use agents" / "cold" forces fan-out; "inline" / "quick" forces inline.6970- **Cold (fan-out)** when: high ambiguity, high stakes, novel subject, many lenses (anchoring risk), or independence clearly matters.71- **Inline** when: well-bounded, low stakes, few lenses, cost-constrained — or forced under a `*-RESOLVED` marker.7273The three modes (selected adaptively, not by a fixed default):7475- **standard** — cold fan-out: one fresh leaf sub-agent per picked lens. No shared context = no anchoring (the cold-review effect). Orchestrator collects + synthesizes. State the fan-out size up front; HIL-gate if it exceeds ~6 agents.76- **quick** — inline single pass (cheap). **Forced when orchestrated under a `*-RESOLVED` marker** (a lens-agent is a *leaf* — runs one lens, returns findings, spawns nothing — which keeps the depth guard intact).77- **deep** — cold fan-out across 2–3 layers; the orchestrator threads each completed layer's findings into the next layer's briefs (compounding at the orchestrator, independence in the agents). **HIL-gated** (cost).7879Cold lens-agents are **leaf workers**: each gets a primed brief (subject + its one lens [+ prior-layer findings in deep mode]), runs cold, returns its angles/connections, and orchestrates nothing further.8081**Runtime:** detect capabilities, not product names. When the active runtime exposes isolated workers (for example, Claude's `Agent` or Codex collaboration agents when available), cold fan-out may be used. Without isolated workers, all modes fall back to inline — the adaptive selector degrades gracefully since inline is always available.8283## The angle map (output)8485Selected lenses (+ dynamic ones + skipped & why) → angles grouped by lens, each scored → typed connections (each with why-it-matters) → hidden assumptions (most-fragile flagged) → candidate-expansions → second-order effects → **synthesis** → layer trail.8687## Rules8889- MUST surface ≥1 genuine connection or unseen angle, or explicitly state none found — never an empty map, never manufactured insight.90- MUST derive dynamic subject-specific lenses (3 sources + validate), not only pick from the roster.91- MUST keep each layer informed by the prior layer's findings (layers compound; not independent re-runs).92- MUST select venue (cold vs inline) per subject from context/corpus/task; proceed when certainty is near-max, ask the handler only when it isn't; honor explicit overrides ("use agents" → cold, "inline" → inline).93- Cold lens-agents MUST be leaves — run one lens, return findings, spawn nothing.94- MUST stay in perspective/connection space: a **frame is not a flaw** (`/insight-adversarial`) and **not an option** (`/insight-explore`).95- MUST make each connection assessable (type + why), and judge novelty relative to current trends.96- MUST log lens selection (picked + skipped + why).97- MUST NOT exceed default depth (extra layers, or fan-out > ~6 agents) without explicit handler consent — state the cost and offer.98- MUST NOT make changes, write code, or execute — ideation only.99- Under a `*-RESOLVED` marker: run **quick (inline)** — never spawn further sub-skills.100- SHOULD prefer the non-obvious; flag high-novelty / low-relevance rather than dropping it.101102## Self-improvement → roster discovery103104This skill's SIP is specialized: **usage grows the roster.** When a *dynamic* lens this run produced a high novelty × relevance angle the roster lacked, SIP proposes a diff adding it to the lens roster + selection map (gated via `/ask-gate`, never auto-applied). When a roster lens consistently yields nothing for a subject-type, SIP proposes pruning/remapping it. The 17 families are the seed; real subjects reveal the rest.105106## Boundary107108- `/insight-explore` — generates **solution options**. insight-angles surfaces **frames & connections**; its candidate-expansions are seeds, not finished options.109- `/insight-adversarial` — **attacks** from personas for flaws. insight-angles **widens** via lenses (same multi-pass shape; personas attack, lenses reveal).110- `/insight-critique` — reviews a concrete **output**. insight-angles explores a **subject's representation**.111- `/insight-cross-examine` — the deliberation engine that **orchestrates** insight-angles (in quick mode), then assesses and recommends. Use cross-examine for a decision; insight-angles to just see more.112- `/cold-review` — outside review of *work artifacts* against objectives. insight-angles borrows its cold-agent *independence*, but for *angle discovery on a subject*, not artifact review.113114> **Human output.** This skill's handler-facing output obeys the human-output115> contract (`human-output/SKILL.md`).116117> **Next skills.** On completion, run the Next Skills protocol (`next-skills/SKILL.md`): surface the `next-skills` recommendations from front-matter for the caller to pick. Offer only — never auto-invoke.118119> **Self-improvement.** On completion, run the Self-Improvement Protocol (`self-improve/SKILL.md`): if this run surfaced a concrete, blocking-or-recurring weakness in this skill — *including a dynamic lens worth promoting into the roster* — propose a specific fix for the handler to approve. Conservative — silent otherwise. Never auto-apply.