Use when asked for a second opinion from a different, stronger model on a specific decision, question, or stalled judgment call.
Scanned 10/6/2026
npx -y skills add BrennonTWilliams/little-loops --skill advise --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Advise?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/brennontwilliams-advise)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: advise
description: Use when asked for a second opinion from a different, stronger model on a specific decision, question, or stalled judgment call.
disable-model-invocation: false
argument-hint: "--signal SIGNAL --question QUESTION [--context-file PATH] [--host HOST] [--model MODEL]"
allowed-tools:
- Bash(ll-advise:*)
- Read
- Write
arguments:
- name: signal
description: "What prompted this consult (e.g. user_requested, score_stall). Required — there is no unsignalled consult path."
required: true
- name: question
description: "The consult prompt — the specific decision or question to put to the advisor host."
required: true
metadata:
trigger_fixtures:
should_fire:
- "get a second opinion from a different model on whether this design is sound"
- "consult the advisor about this stalled decision before we proceed"
should_not_fire:
- "adversarial review of whether this issue is worth implementing, go or no-go"
- "run a pre-implementation confidence check on this issue"
---
# Advise — Second-Model Consult
Wraps the `ll-advise` CLI: assemble decision context from the current
transcript, call `ll-advise`, and surface the structured verdict back into
the transcript. This is the model-decided invocation path for a
second-model consult — distinct from a hand-typed `ll-advise` shell call
and from FEAT-3038's future gate-wired auto-consult.
**Distinct from `/ll:go-no-go`**: go-no-go is a same-model adversarial
debate via `Agent` subagents; `/ll:advise` is a one-shot consult to a
different (typically stronger) model.
## Process
1. **Assemble context.** Gather the decision context already present in
the current transcript — the question, and any relevant file or diff
excerpts — into a context payload. Write it to a temporary file (e.g.
`.loops/tmp/advise-context.txt`) with `Write` and pass it as
`--context-file`. Never auto-slurp the working tree; only include what
is already part of the conversation.
2. **Require an explicit signal.** If no `--signal` value is supplied or
resolvable from the invocation, do not call `ll-advise` with a
silently-defaulted signal:
```
Error: --signal is required
Usage: /ll:advise --signal SIGNAL --question QUESTION [--context-file PATH]
```
Stop here — do not guess a signal value.
3. **Invoke `ll-advise --json`**, capturing both stdout and stderr and the
exit code:
```bash
ll-advise --signal "$SIGNAL" --question "$QUESTION" --context-file "$CONTEXT_FILE" --json
```
On exit 0, parse stdout's 7-key JSON payload (`recommendation`, `risks`,
`confidence`, `dissent`, `signal`, `host`, `model`) and surface
`recommendation`, `risks`, `confidence`, and `dissent` back into the
transcript.
4. **On a non-zero exit, render the captured stderr line verbatim** — never
a paraphrase, never a raw traceback, never a silent swallow, and never a
parsed JSON `error` field (no such field exists on this path; `--json`
has no effect on failure output). Two distinct cases:
- exit 2 with `could not read --context-file ...` — the payload file was
unwritable/unreadable; the consult never ran and no budget was spent.
- exit 2 with one of the seven fail-soft `skipped_reason` messages,
optionally suffixed `: <error detail>`:
- `disabled` — "advisor is disabled (advisor.enabled: false)"
- `trigger_not_allowed` — "signal not in advisor.triggers allowlist"
- `budget_exhausted` — "advisor consult budget exhausted for this task
(advisor.max_consults_per_task)"
- `not_configured` — "advisor host not configured — set advisor.host
in .ll/ll-config.json or pass --host"
- `floor_violation` — "capability floor violation"
- `failed` — "advisor consult failed"
- `timeout` — "advisor consult timed out"
5. **Budget side effect.** Every invocation spends one unit of
`advisor.max_consults_per_task`, reserved *before* the host call — so a
hung or failed consult still counts against the same per-task budget
that FEAT-3038's gate-wired auto-consult will later draw from. Do not
invoke this skill repeatedly expecting each call to be free.
## Examples
```bash
ll-advise --signal user_requested --question "Is this design sound?" --json
ll-advise --signal score_stall --question "..." --context-file notes.md --json
ll-advise --signal user_requested --question "..." --host codex --model gpt-5.1 --json
```
`--host` takes a registered host name, not a binary name: `claude-code` (not `claude`), `codex`, `gemini`, `kimi-code`, `omp`, `opencode`, `pi`, `qwen`. Anything else is rejected before a consult is spent.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!