Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/wessamfathi/suhail/nextgit clone --depth 1 https://github.com/wessamfathi/suhailWrote 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/wessamfathi/suhail/next)<a href="https://agentmods.dev/commands/wessamfathi/suhail/next"><img src="https://agentmods.dev/badge/commands/wessamfathi/suhail/next.svg" alt="Measured on agentmods" 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 | $0.00014 | $0.01996 |
| Opus 5 | $0.00007 | $0.00998 |
| Sonnet 5 | $0.00003 | $0.00399 |
| Haiku 4.5 | $0.00001 | $0.00200 |
Grade C, and why
next scanned grade C with 1 finding 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 3d 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.
Tells the agent never to refusehighAnti-refusal
Suppressing the ability to decline removes a core safety control; a later harmful request then succeeds.
4. **Run complete.** If `run_phase == "finished"`, end with: "All Parts are complete — nothing left to advance." (When every Part is terminal but `run_phase` is NOT yet `finished`, do not refuse — the run still owes the How it starts
The opening of the file, as written. The whole thing — 85 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/su:next — Suhail auto-stepper
You are advancing the current Suhail run by exactly one logical step. This command takes no arguments. It is a non-interactive shortcut for the user who wants to hit "next" without typing /su:go continue or answering the inter-Part "Continue?" prompt.
/su:next does NOT initialize a run, does NOT loop (even in run-to mode), and does NOT resolve blockers. It only advances one tick of the orchestrator's state machine, with two sanctioned special cases where it injects an implicit approval so the run progresses without re-prompting the user: when a Part in the current batch is gated at status == "awaiting_plan_approval" (per-Part), and when run_phase == "master_plan_approval" (batch checkpoint).
On every invocation
Run the following guards in order, short-circuiting on the first match. Each refusal is exactly one sentence and performs no file mutations.
- No active run. Attempt to Read
.suhail/state.json. If it does not exist, end with: "No active Suhail run found — run/su:discoverto draft a plan or/su:go <plan-path>to initialize one." - Aborted run. Parse
state.json. If top-levelaborted == true, end with: "This Suhail run has been aborted — no further steps are possible." - Unresolved blocker. If any Part's
status == "needs_user"OR.suhail/parts/<current_part_id>/blocker.mdexists without aresolution:line, end with: "A blocker is waiting at.suhail/parts/<part-id>/blocker.md— resolve it via/su:gobefore using/su:next."- Check filesystem presence of
blocker.mdvia Read or Bash[ -f path ](POSIX) /Test-Path path(PowerShell). Both conditions are checked (OR) — the filesystem check is the authoritative safety net in case a status was not updated.
- Check filesystem presence of
- Run complete. If
run_phase == "finished", end with: "All Parts are complete — nothing left to advance." (When every Part is terminal butrun_phaseis NOT yetfinished, do not refuse — the run still owes thecompletehandler's finish transition (end-of-run card,run_phase = "finished"); fall through to the dispatch below and take the "All other eligible states" branch so one tick can perform it.)
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.
- 3d ago First seen · 85 lines · 14 tokens per session scan C b44a32edacf9
next is a command published in the GitHub repository wessamfathi/suhail (2 stars, last pushed 1mo ago), licensed MIT. It adds 14 tokens to every session and 1,996 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it C with 1 finding (tells the agent never to refuse). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
better-auth:add-plugin
Add a better-auth plugin to an existing project. Configures server and client plugins with proper imports.
skill-inbox
Unified entry point for managing skill suggestions and browsing all installed skills. Provides two views: suggestions (default) and all skills.
eval-merge
Use the Read tool to load .skill-compass/{skill-name}/manifest.json. Verify.
cti-report
Render case deliverables — relationship graph (PNG/SVG/Mermaid) and a polished PDF/DOCX assessment. Usage: /cti-report [--graph|--pdf].
cti-status
Health check — backend tier, case store, MCP tools, API credit balances. Run this when something behaves oddly. Usage: /cti-status.
send
Send a message to a peer session.