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/aadivar/shiplog/statusgit clone --depth 1 https://github.com/aadivar/shiplogWrote 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/aadivar/shiplog/status)<a href="https://agentmods.dev/commands/aadivar/shiplog/status"><img src="https://agentmods.dev/badge/commands/aadivar/shiplog/status.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.00000 | $0.00668 |
| Opus 5 | $0.00000 | $0.00334 |
| Sonnet 5 | $0.00000 | $0.00134 |
| Haiku 4.5 | $0.00000 | $0.00067 |
Grade A, and why
status 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 4d 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 — 74 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/shiplog status
Display project status dashboard.
Trigger
User runs /shiplog status
Behavior
Step 1: Validate setup
Check that .shiplog/config.json exists. If not:
"Shiplog is not initialized. Run
/shiplog initfirst."
Step 2: Read project files
Read these files:
docs/PROGRESS.md— Current sprint, active feature, session logdocs/PRD.md— Feature table with statusesdocs/SECURITY.md— Last security review entry
Step 3: Read config
Read .shiplog/config.json and handle both config formats:
- Nested (template):
{ "project": { "name": "..." }, "agents": { "model": "haiku", "specs": { "enabled": true } }, "orchestration": { ... } } - Flat (legacy):
{ "projectName": "...", "agentModel": "haiku", "agents": { "specs": true } }
Extract: project name, agent model, which agents are enabled.
Step 4: Calculate metrics
From the PRD feature table:
- Count total features (rows matching
| F\d+ |) - Count features by status (not-started, in-progress, done, blocked)
- Calculate completion percentage
- If the table has no Status column (no
not-started,in-progress,done, orblockedvalues found), report: "Status tracking not set up — features will be tracked after the next commit triggers the PRD agent."
From PROGRESS.md:
- Current sprint number
- Active feature ID and name
- Last session date
From SECURITY.md:
- Last review date and severity
Step 5: Display dashboard
Shiplog Status — {Project Name}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Sprint: {N}
Active Feature: {ID} — {name} ({status})
Last Session: {date}
Features: {done}/{total} done ({percentage}%)
Phase 1 (Foundation): {progress_bar} {phase_pct}%
Phase 2 (Core): {progress_bar} {phase_pct}%
Phase 3 (Advanced): {progress_bar} {phase_pct}%
not-started: {count} | in-progress: {count} | done: {count} | blocked: {count}
Security: Last review {date} — {severity}
Config: .shiplog/config.json
Agent model: {model}
Agents: {enabled_list}
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.
- 4d ago First seen · 74 lines · 0 tokens per session scan A 2adb22962020
status is a command published in the GitHub repository aadivar/shiplog (3 stars, last pushed 6mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 668 tokens. 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-08-31.
Other commands, from other repositories
sm-sail
Command "sm-sail" from ScienceIsNeato/slop-mop, covering /sm-sail — drive a pr to green, autonomously, the loop, when sail parks on review threads, when to stop before "pr ready" — only two reasons and expect convergence, not one pass.
sm-buff
You usually don't run buff directly — run sm sail. sm sail drives the whole PR to green and calls buff watch / triage for you, stopping only when it needs you to act (see /sm-sail). Reach for sm buff here only for surgical work: inspecting a specific failure, or resolving a single review thread when sail has parked on…
review
Cold re-quiz on code that already shipped — your own session commits, not the change in front of you.
sm-wake-angry-drunk-captain
The last-resort verb. Use it ONLY when the loop is genuinely exhausted: barnacles filed, gates green or truly unfixable, and the single remaining move is a human judgment call no sm verb can make for you.
sm-barnacle
Use when sm itself gives invalid guidance, blocks valid work, produces confusing output, or breaks install/upgrade/refit flow. Do not use this for real target-repo failures; fix those through the normal rail.
sm-init
Run when you find a repo with sm installed but no .sbconfig.json — or after upgrading slopmop to pick up new gates.