design-cli-output

design-cli-output is a skill for Claude Code from pjt222/agent-almanac. It costs 96 tokens per session (3,558 once invoked), scanned A, original, MIT.

A guide to designing the messages printed by a command-line tool. It covers colours, symbols, verbosity levels, human-readable and JSON output, and handling terminals without colour support.

In plain words
What is it for?
Use it when building or standardising a reporter module, defining output for multiple commands, choosing verbosity modes, or adding a narrative presentation alongside normal command results.
Why use it?
It helps CLI output stay consistent and useful to both people and scripts. Clear status messages and predictable machine-readable output make tools easier to operate and integrate.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is node cli/index.js list --domains.

Part of the agent-almanac plugin — 122 skills, 76 agents shipped together

Good fit Use it when building or standardising a reporter module, defining output for multiple commands, choosing verbosity modes, or adding a narrative presentation alongside normal command results.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/pjt222/agent-almanac
agentmods
npx agentmods add skills/pjt222/agent-almanac/design-cli-output

Made for: Claude Code.

Or install agent-almanac, the plugin that ships this one along with the rest of its 122 skills, 76 agents.

Wrote 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.

agentmods badge for design-cli-output

README.md
[![agentmods](https://agentmods.dev/badge/skills/pjt222/agent-almanac/design-cli-output.svg)](https://agentmods.dev/skills/pjt222/agent-almanac/design-cli-output)
Your own site
<a href="https://agentmods.dev/skills/pjt222/agent-almanac/design-cli-output"><img src="https://agentmods.dev/badge/skills/pjt222/agent-almanac/design-cli-output.svg" alt="Measured on agentmods" height="20"></a>
Per session 96 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,558 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high System Prompt Leakage · line 226
    Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
    Fix: Remove any instructions that reveal, print, or output system prompts or internal rules. System instructions should never be exposed to end users.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00096 $0.03558
Opus 5 $0.00048 $0.01779
Sonnet 5 $0.00019 $0.00712
Haiku 4.5 $0.00010 $0.00356

Measured 4d ago against content hash aef3695a79bb, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

design-cli-output 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.

i18n/caveman-lite/skills/design-cli-output/SKILL.md · 367 lines

How it starts

The opening of the file, as written. The whole thing — 367 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Design CLI Output

Design consistent, multi-level terminal output for a command-line tool.

When to Use

  • Building a new reporter module for a CLI tool
  • Adding warm or narrative output alongside standard transactional output
  • Standardizing output format across multiple commands
  • Designing JSON machine output parallel to human-readable output
  • Choosing colors, glyphs, and verbosity levels for a new terminal tool

Inputs

  • Required: CLI tool name and primary audience (developers, operators, end users)
  • Required: Commands that need output formatting
  • Optional: Whether a "ceremony" or narrative output variant is desired
  • Optional: Branding constraints (color palette, tone)

Procedure

Step 1: Define the Color Palette

Use chalk to create a named palette object.

Load chalk behind a no-color fallback. The fallback has to stand in for every call shape the palette uses, which is more than passing strings through:

// A factory returns a *function*; a direct style returns a string. Enumerate
// this list against the installed chalk, not from memory — chalk 6 added the
// three underline* variants, and a list that omits them is wrong for those names.
const FACTORIES = new Set(['ansi256', 'bgAnsi256', 'bgHex', 'bgRgb', 'hex',
  'rgb', 'underlineAnsi256', 'underlineHex', 'underlineRgb']);

function makeChalkStub() {
  return new Proxy((text) => text, {
    get(target, prop) {
      if (prop === 'then') return undefined;   // must not be a thenable
      if (prop === 'level') return 0;          // no color support, truthfully
      if (typeof prop === 'symbol') return Reflect.get(target, prop);
      return FACTORIES.has(prop) ? () => makeChalkStub() : makeChalkStub();
    },
  });
}

let chalk;
try { chalk = (await import('chalk')).default; }
catch { chalk = makeChalkStub(); }

Four invariants, each of which a shorter stub gets wrong:

  1. The proxy target is callable(text) => text, not {}. Chaining (chalk.bold.cyan('x')) needs every hop to be both indexable and callable.
  2. Factories return a function. new Proxy({}, { get: () => (s) => s }) satisfies the direct styles and breaks the factories: chalk.hex('#FF6B35') is then the string '#FF6B35', and calling it throws TypeError: ... is not a function. Palettes are built at module load, so that fallback takes the tool down at import time — in precisely the situation where degrading to plain text was the point.
  3. then is undefined. A stub that answers every property with a function makes await chalk hang forever: the runtime calls .then and waits for a callback nobody invokes. Node reports Detected unsettled top-level await and exits 13.
  4. level is a number. Capability gates read chalk.level >= 1; a truthy stub opens them with no color support behind them.

Read the full file on GitHub · 367 lines

Changes

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.

  1. 4d ago First seen · 367 lines · 96 tokens per session scan A aef3695a79bb

Subscribe to this mod's changes

design-cli-output is a skill published in the GitHub repository pjt222/agent-almanac (32 stars, last pushed 3d ago), licensed MIT. It adds 96 tokens to every session and 3,558 once invoked, about $0.0005 per session on Opus 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.

Related

Other skills, from other repositories

design-feature

Turn a raw idea or existing feature into a designed product SPEC by completing entity, integration, role, and expectation closure. Upserts never destroy recorded decisions. Triggers: "design-feature", "design this feature", "define product scope".

gtrabanco/agentic-workflow · 51 tokens

review-a11y

Internal accessibility review pass of the agentic-workflow review pack — composed in-turn by review-change and product-audit; not a menu entry. Checks the changed user-facing surface for accessibility: semantics, keyboard, focus, contrast, and ARIA correctness — applies only to user-facing surfaces. Findings only…

gtrabanco/agentic-workflow · 70 tokens

review-design

Internal UI/UX design review pass of the agentic-workflow review pack — composed in-turn by review-change and product-audit; not a menu entry. Checks the changed UI against the project's design doc: consistency, states, responsiveness, and reuse — applies only when the project has a UI and the change touches it.…

gtrabanco/agentic-workflow · 75 tokens

cocosketch

Generate visual draw.io diagrams from CocoPlus artifacts via a deterministic seven-step pipeline.

Snowflake-Labs/cocoplus · 20 tokens

eval-graphics

Turn an eval study's numbers into on-brand, publish-ready figures using the Newsjack chart room (the eval design system), then validate them with Playwright. For producing the charts in a published eval/data study.

elvisun/newsjack · 47 tokens

analytics

Queries local analytics across OrchestKit projects for agent usage, skill frequency, hook timing, team activity, session replay, cost estimation, and model delegation trends. Privacy-safe with hashed project IDs. Supports time-range filtering and comparative analysis. Use when reviewing performance, estimating costs…

yonatangross/orchestkit · 62 tokens