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 skills add adbertram/cli-tools --skill garrul-cligit clone --depth 1 https://github.com/adbertram/cli-toolsWrote 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/skills/adbertram/cli-tools/garrul-cli)<a href="https://agentmods.dev/skills/adbertram/cli-tools/garrul-cli"><img src="https://agentmods.dev/badge/skills/adbertram/cli-tools/garrul-cli/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/skills/adbertram/cli-tools/garrul-cli"><img src="https://agentmods.dev/badge/skills/adbertram/cli-tools/garrul-cli.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.00088 | $0.02235 |
| Opus 5.5 | $0.00035 | $0.00894 |
| Sonnet 5.5 | $0.00018 | $0.00447 |
| Haiku 4.5 | $0.00009 | $0.00224 |
Grade A, and why
garrul-cli 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 today.
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 — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<quick_start>
The garrul CLI follows this pattern:
garrul <command-group> <action> [arguments] [options]
| Task | Command |
|---|---|
| List audit rows, newest first | garrul audit list |
| Configure authentication credentials | garrul auth login |
| Clear stored credentials and browser sessions | garrul auth logout |
| Create a new profile from .env.example template | garrul auth profiles create <NAME> |
| Delete a profile and its data | garrul auth profiles delete <NAME> |
| Get details for a specific profile | garrul auth profiles get <NAME> |
| List all profiles and show their auth types and active state | garrul auth profiles list |
| Delete a profile and its data | garrul auth profiles remove <NAME> |
| Rename a profile, re-keying its secrets to the new profile name | garrul auth profiles rename <OLD> <NEW> |
| Activate a profile within its auth type | garrul auth profiles select <NAME> |
| Check authentication status across profiles | garrul auth status |
| Test authentication by verifying credentials work across profiles | garrul auth test |
| Remove all cached responses | garrul cache clear |
| Approve a comment so it is published | garrul comments approve <COMMENT_ID> |
| Apply one moderation action to up to 100 comments in a single request | garrul comments bulk <ACTION> <COMMENT_IDS> |
| Get approved-comment counts for one or more post slugs | garrul comments counts <SLUGS> |
| Delete a comment | garrul comments delete <COMMENT_ID> |
| Print the Atom feed of a post's latest approved comments | garrul comments feed <SLUG> |
| Get one comment with its markdown source, parent, replies, reports and audit history | garrul comments get <COMMENT_ID> |
| List the moderation queue, newest first | garrul comments list |
| Resolve a published comment's permalink to the page URL it lives on | garrul comments permalink <COMMENT_ID> |
| Render markdown exactly as Garrul would store it | garrul comments preview |
| Post a public reply as the signed-in moderator | garrul comments reply <COMMENT_ID> |
| Dismiss every open reader report on a comment | garrul comments resolve-reports <COMMENT_ID> |
| Restore a deleted or spam comment to approved | garrul comments restore <COMMENT_ID> |
| Mark a comment as spam | garrul comments spam <COMMENT_ID> |
| Read a post's public comment tree, as the widget sees it (approved comments only) | garrul comments thread <SLUG> |
| Show the public widget configuration the instance serves to embedding pages | garrul instance config |
| Check that the instance is up | garrul instance health |
| Show dashboard totals: comments, pending, spam, users, and per-domain counts | garrul instance statistics |
| Show the running Garrul version and the releases the instance knows about | garrul instance status |
| Show which Garrul user this CLI is signed in as | garrul instance whoami |
| Attach a note to a comment or a user | garrul notes create <TARGET_KIND> <TARGET_ID> |
| Permanently delete a note | garrul notes delete <NOTE_ID> |
| Irreversibly delete one batch of audit rows older than the configured window | garrul ops audit-retention |
| Import comments from another comment system | garrul ops import <SOURCE> <FILE> |
| Irreversibly clear one batch of stored IP hashes older than the configured window | garrul ops ip-retention |
| Re-render one batch of comments stored under an older markdown renderer | garrul ops rerender |
Insert the demo welcome thread |
garrul ops seed-demo |
| Show rerender backlog and the state of both retention sweeps | garrul ops status |
| Stop a post from accepting new comments | garrul posts close <SLUG> |
| Let a closed post accept comments again | garrul posts open <SLUG> |
| Create a saved reply | garrul saved-replies create |
| Permanently delete a saved reply you own | garrul saved-replies delete <REPLY_ID> |
| Get one saved reply | garrul saved-replies get <REPLY_ID> |
| List your saved replies plus every shared one | garrul saved-replies list |
| Replace a saved reply you own | garrul saved-replies update <REPLY_ID> |
| Get one runtime setting | garrul settings get <KEY> |
| List every runtime setting with its resolved value | garrul settings list |
| Clear every settings override so all values return to the instance defaults | garrul settings reset |
| Override runtime settings | garrul settings update |
| Get one active subscription | garrul subscriptions get <SUBSCRIPTION_ID> |
| List subscriptions, newest first | garrul subscriptions list |
| Email a fresh confirmation link to a subscriber who has not confirmed yet | garrul subscriptions resend <SUBSCRIPTION_ID> |
| Stop emailing a subscriber about a thread | garrul subscriptions unsubscribe <SUBSCRIPTION_ID> |
| Turn the daily operator digest on or off for your linked account | garrul telegram digest <STATE> |
| Issue a one-time link code | garrul telegram link |
| Show bot configuration and whether your account is linked | garrul telegram status |
| Unlink your Telegram account | garrul telegram unlink |
| Ban a user | garrul users ban <USER_ID> |
| Irreversibly erase a user's personal data (GDPR erasure request) | garrul users erase <USER_ID> |
| Print everything the instance holds about a user (GDPR access request) | garrul users export <USER_ID> |
| Get one user with role, ban state, notes, audit history and their latest 50 comments | garrul users get <USER_ID> |
| List users, newest first | garrul users list |
| Sign a user out everywhere | garrul users revoke-sessions <USER_ID> |
| Change a user's role | garrul users role <USER_ID> <ROLE> |
| Lift a ban | garrul users unban <USER_ID> |
| Create a webhook endpoint | garrul webhooks create |
| Permanently delete a webhook endpoint | garrul webhooks delete <WEBHOOK_ID> |
| Get one webhook endpoint | garrul webhooks get <WEBHOOK_ID> |
| List webhook endpoints | garrul webhooks list |
| Replace a webhook endpoint's url, adapter, events and enabled state | garrul webhooks update <WEBHOOK_ID> |
| </quick_start> |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- today First seen · 131 lines · 88 tokens per session scan A 0d0b4d5ce4b0
garrul-cli is a skill published in the GitHub repository adbertram/cli-tools (6 stars, last pushed today), licensed MIT. It adds 88 tokens to every session and 2,235 once invoked, about $0.0004 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-11-07.
garrul-cli compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| garrul-cliadbertram/cli-tools | Skill | 6 | today | MIT | A | 88 | Claude Code, Codex |
| opencli-autofixjackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 61 | Claude Code |
| surfnicobailon/surf-cli | Skill | 684 | yesterday | MIT | A | 53 | Claude Code, Codex |
| rdc-cliBANANASJIM/rdc-cli | Skill | 193 | 14d ago | MIT | A | 82 | Claude Code, Codex |
| pixiv-cli-ciFlanChanXwO/pixiv-cli | Skill | 132 | yesterday | MIT | A | 61 | Codex |
| acrawl-mcpMingye-Lu/AgenticCrawler | Skill | 15 | yesterday | MIT | A | 200 | Claude Code, Codex |
| debug-hubrexleimo/aios | Skill | 62 | yesterday | MIT | B | 66 | Claude Code, Codex |