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