Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add SteveGJones/ai-first-sdlc-practices/plugin install sdlc-model-councilWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/stevegjones/ai-first-sdlc-practices/council-assess)<a href="https://agentmods.dev/commands/stevegjones/ai-first-sdlc-practices/council-assess"><img src="https://agentmods.dev/badge/commands/stevegjones/ai-first-sdlc-practices/council-assess/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/stevegjones/ai-first-sdlc-practices/council-assess"><img src="https://agentmods.dev/badge/commands/stevegjones/ai-first-sdlc-practices/council-assess.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00028 | $0.01307 |
| Opus 5.5 | $0.00011 | $0.00523 |
| Sonnet 5.5 | $0.00006 | $0.00261 |
| Haiku 4.5 | $0.00003 | $0.00131 |
Grade A, and why
council-assess scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Run (or resume) a council assessment: the shipped problem stack goes to each
named model, scored, and turned into a roster card + diversity map. This
wraps assess.sh — the choreography, not a new engine.
This is the shallow, broad instrument — one of two. The v1 item stack run
here is cheap and ranks models quickly, which makes it right for auditioning a
newly-released model or taking a first cut. It does not tell you where a
model breaks on sustained multi-stage work. For that, the second instrument is
the poker-capstone capability ladder (research/poker-capstone/): P1-P10
in difficulty order over one substantial engineering problem, run fail-fast so
a model's assessment stops at its first genuine failure. Use this command to
narrow the field; use the ladder before granting a model a seat that matters.
Results to date, and what each phase measures, are tabulated in that
directory's README.
Arguments: $ARGUMENTS — parse models= (comma-separated model addresses,
required), dims= (comma-separated dimensions, required), optional
budget-usd= (a dollar cap — see step 2), --estimate (stop after the
estimate, spend nothing), --resume run-dir=DIR (continue an earlier run,
re-running only missing/skipped:budget pairs).
Do this:
-
It always estimates first, token-free. Run:
${CLAUDE_PLUGIN_ROOT}/scripts/council/assess.sh \ --stack ${CLAUDE_PLUGIN_ROOT}/assessment/stack/v1/stack.json \ --priors-dir ${CLAUDE_PLUGIN_ROOT}/scripts/council/priors \ --pricing ${CLAUDE_PLUGIN_ROOT}/scripts/council/pricing.json \ --models <models> --dims <dims> \ [--budget-usd <budget-usd>] [--estimate] \ [--resume --run-dir <run-dir>]assess.shprints the per-model estimate table before touching any adapter. Echo that table to the user before anything paid happens — this is the never-surprise-spend contract, not optional politeness. -
--estimatestops there. If the caller passed--estimate, the script exits after the estimate table with no tokens spent — report the table and total, and stop; do not proceed to the steps below. -
A live run over any paid model requires
budget-usd=. If the fleet named inmodels=includes anything outside the free family (opencode-free-tier) and nobudget-usd=was given,assess.shitself refuses (fleet contains paid models; a live run requires --budget-usd) — don't try to work around that by inventing a number; tell the user the command needsbudget-usd=and stop. Free-only fleets run at $0 with no budget flag needed. -
Free calibration runs first, automatically. Wave-0 dispatches only free models over the full item set (cost $0) to validate items/scorers and refine the paid-wave estimate before any paid token is spent — this is inside
assess.sh, nothing to do here except let it run. -
Paid waves run at ≤5 concurrent handles, hard-stopping the instant spend reaches
budget-usd; anything still pending at that point is markedskipped:budgetand is safe to pick up later with--resume. -
On completion,
assess.shprints[assess] Council spend: $X (est $Y) across N modelsas its last log line, followed by the run directory path. The run dir now containsresults.jsonl,roster.json,roster.md,diversity.json, andassessment-log.jsonl. -
Promote the run's roster to the project roster. Copy the three artifacts from the run dir into
.sdlc/model-council/(create the directory if it doesn't exist):mkdir -p .sdlc/model-council cp <run-dir>/roster.json .sdlc/model-council/roster.json cp <run-dir>/roster.md .sdlc/model-council/roster.md cp <run-dir>/diversity.json .sdlc/model-council/diversity.jsonAlso append the run dir's
assessment-log.jsonlline(s) onto.sdlc/model-council/assessment-log.jsonl(create if absent) — this is the greppable spend history, not just the latest snapshot.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 95 lines · 28 tokens per session scan A bfa4b485b29a
council-assess is a command published in the GitHub repository SteveGJones/ai-first-sdlc-practices (42 stars, last pushed 1mo ago), licensed MIT. It adds 28 tokens to every session and 1,307 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
council-assess compared with commands from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| council-assessSteveGJones/ai-first-sdlc-practices | Command | 42 | 1mo ago | MIT | A | 28 | Claude Code |
| checklistgithub/spec-kit | Command | 149k | 2d ago | MIT | A | 13 | Claude Code |
| clarifygithub/spec-kit | Command | 149k | 2d ago | MIT | A | 27 | Claude Code |
| specifygithub/spec-kit | Command | 149k | 2d ago | MIT | A | 13 | Claude Code |
| analyzegithub/spec-kit | Command | 149k | 2d ago | MIT | A | 26 | Claude Code |
| convergegithub/spec-kit | Command | 149k | 2d ago | MIT | A | 35 | Claude Code |
| implementgithub/spec-kit | Command | 149k | 2d ago | MIT | A | 14 | Claude Code |