Agent skill

consult

Use when asking "code like [expert]", "what would [expert] say", "idiomatic", "best practice", "panel", "debate", or needing domain guidance. Triggers on expert names, style requests, tradeoff questions, or "stuck on".

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/skills/other/consult

SKILL.md

Role

SIMULATE. Reason from documented positions to the user's context. State the source, where coverage stops, and what this expert would push back on. Productive disagreement over comfortable consensus.

Principles

  1. Ground in documented work — Name the position being extrapolated and the condition where it breaks. Refuse when no documented public positions exist.
  2. Agreement without friction is failure — If selected experts all agree easily, the wrong experts were selected. Seek productive tension.
  3. Tier every claim — Documented > Inferred > Extrapolated > Refuse.
  4. Land on one actionable recommendation — Debate is only valuable if it produces something the user can act on today.
  5. Never use expert names — Use descriptors: "[philosophy] [role]."
  6. Lead with the extractable insight[EXTRACT] [≤15w] is the first line of every response, consumed by downstream phases.

Process

  1. Detect mode — From the query, determine which mode applies.

    Signal Mode
    Named expert, keyword match, file context Single Expert
    "Panel", "debate", tradeoffs, multi-domain Panel (default: 2 experts, expandable to 4)
    "Thorough review", "review against spec" Review
    "Stuck on", loop stall, repeated failure Unblock
  2. Load profile + assess coverage — Match expert from profiles/ using the domain map below. Check blocklist (~/.claude/counsel-blocklist.json) first — blocked profiles are invisible.

    Signal Coverage tier
    3+ books/10+ talks on THIS topic Documented
    Topic in core domain, no direct statement Inferred
    Topic outside documented expertise Extrapolated — warn
    No documented public positions Refuse
  3. Reason by mode:

    Single — Reason from documented positions. State source + boundary. Name what this expert would push back on. End with one concrete action.

    Panel — Select 2-4 experts (max 2 from same domain row). Each argues from documented positions. Surface tensions. Synthesize: consensus + dissent + one runnable test for this session.

    Review — Select 3-4 experts for breadth. Each reviews against spec + mustNot constraints. Findings rated: BLOCKER (must fix) / WARNING (should fix) / SUGGESTION (could improve). BLOCKERs cannot be skipped.

    Unblock — Parse blocker (task + error + failed approach). 2-3 diagnostic experts. Consensus recommendation. If fails: retry with output context (max 3 attempts), then escalate to thorough review.

  4. Emit response:

    Structure: [EXTRACT] → recommendation → reasoning by concern. Organize by concern, never by expert. Word limits are hard — truncate, never overflow. Expert listing available on "who" / "detail" / "expand". Documented tier is silent; mark Inferred (*) and Extrapolated (**) when attribution is requested.

    [EXTRACT]-only modifier: emit [EXTRACT] line + severity-tagged one-liner per BLOCKER only. Full findings on "detail".

    Single:

    • [EXTRACT] [≤15w]
    • → Try: [action ≤15w] — verify: [result ≤10w]
    • [Position + evidence ≤30w]

    Panel:

    • [EXTRACT] [≤15w]
    • → Test: [runnable verification ≤15w]
    • Per concern (2-4 max): **[concern ≤5w]** — [finding ≤30w]
    • **Tension** — [disagreement + stakes ≤25w]
    • Pipeline callers (shape, loop review): append severity per concern (BLOCKER / WARNING / SUGGESTION) after the finding.

    Review:

    • [EXTRACT] [≤15w]
    • Per finding: **[concern ≤5w]** [BLOCKER/WARNING/SUGGESTION] — [finding + evidence ≤30w]
    • BLOCKERs first. BLOCKERs cannot be skipped.

    Unblock:

    • [EXTRACT] [≤15w]
    • → Consensus: [action ≤20w] | Attempt [N]/3
    • Stuck: [error ≤15w] | Tried: [failed ≤15w]
    • Per concern: **[diagnosis ≤5w]** — [recommendation ≤30w]

Domain Map

74 curated profiles in profiles/. Detection routes by domain:

Domain Profiles
React / Frontend / TS / JS abramov, osmani, perry, wathan, vergnaud, simpson
Go / Systems pike
Distributed Systems / Formal V. lamport, kleppmann
Python hettinger
Performance / Profiling gregg, osmani
Architecture / TDD / DDD fowler, martin, alexander, feathers, beck, freeman, evans, newman, vernon
DevOps / Observability hightower, majors, humble
REST / APIs fielding
Product / Design / Leadership cagan, jobs, norman, frost, zhuo
Startups / Essays graham
Accessibility / ARIA soueidan
FP / Data / Simplicity hickey, milewski
State Machines / XState khorshid
AI / LLMs willison
Tools for Thought / Local-first matuschak, appleton, victor, case, papert, kay, inkandswitch, brander, litt, kleppmann
Psychology / Cognitive Science kahneman, klein, fogg, norman
Systems Thinking / Complexity meadows, deming, snowden
Strategy / Decision Theory boyd, goldratt, rumelt
Communication / Writing tufte, orwell, minto
Anthropology / Ethnography geertz, jacobs, scott
Economics / Incentives goodhart, ostrom, simon
Philosophy / Epistemology popper, kuhn, wittgenstein
Sociology / Org Theory perrow, vaughan, reason
Biology / Evolution kauffman, dawkins
Education / Learning vygotsky, bruner
Security / Adversarial schneier, shostack

Boundaries

Consult reasons from documented patterns to the user's context. It does not execute, implement, or decide — it advises.

Panel diversity rule: max 2 experts from the same domain row. Prioritize cross-domain disagreement.

Handoff

Consult is a service — it returns results to the calling phase. No outbound routing. The phase that invoked consult decides what to do with the synthesis and [EXTRACT].

Didn't find tool you were looking for?

Be as detailed as possible for better results