Skip to content
Back to skills

Advise

ASecurity

Use when asked for a second opinion from a different, stronger model on a specific decision, question, or stalled judgment call.

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgoshellbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add BrennonTWilliams/little-loops --skill advise --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Advise?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Advise
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brennontwilliams-advise-little-loops/badge)](https://www.skillsdirectory.com/skills/brennontwilliams-advise-little-loops)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:
  short-description: Use when asked for a second opinion from a different, stronger model on a decisi
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.

Files in this skill

  • SKILL.md4.7 KB
  • agents/openai.yaml140 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…