Skip to content
Back to skills

Create Cli

ASecurity

Design and build command-line tools, both the interface spec (args, flags, subcommands, help, output modes, errors, exit codes, config) per clig.dev and the implementation using Magnus's agent-ready Rust house style (clap derive, global --json, keychain/op/file secret backends, in-repo agent skills, AGENTS.md) modeled on sparebank1-cli and skatteetaten-cli. Use when the user wants to create a new CLI, design a CLI interface, scaffold a command-line tool, or make an existing CLI agent-friendly.

  • 2 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 2, 2026
ai-agentsrustgoapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add magnusrodseth/dotfiles --skill create-cli --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Cli?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Create Cli
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/magnusrodseth-create-cli/badge)](https://www.skillsdirectory.com/skills/magnusrodseth-create-cli)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: create-cli
description: Design and build command-line tools, both the interface spec (args, flags, subcommands, help, output modes, errors, exit codes, config) per clig.dev and the implementation using Magnus's agent-ready Rust house style (clap derive, global --json, keychain/op/file secret backends, in-repo agent skills, AGENTS.md) modeled on sparebank1-cli and skatteetaten-cli. Use when the user wants to create a new CLI, design a CLI interface, scaffold a command-line tool, or make an existing CLI agent-friendly.
---

# Create CLI

Two modes. Pick from what the user asked for:

- **Design**: produce an interface spec the user (or a later session) can
  implement. Language-agnostic.
- **Build**: scaffold and implement, defaulting to the house style (Rust +
  clap) unless the user names another stack.

## Do This First

- Read `references/cli-guidelines.md` (condensed clig.dev; the baseline
  rubric for any CLI).
- Read `references/house-style.md` (Magnus's agent-ready skeleton, with
  `~/dev/personal/sparebank1-cli` and `~/dev/personal/skatteetaten-cli` as
  living exemplars to copy from).

## Clarify (fast, then proceed with defaults)

- Name + one-sentence purpose. Short 2-3 char binary name?
- Primary consumers: humans, scripts, AI agents, or all three. (Default
  here: agents are first-class consumers.)
- Read-only or mutating? Mutating means confirm-prompts, `-y`, and scope
  restrictions from day one. Read-only as a design invariant is worth
  stating explicitly.
- Auth/secrets involved? Which backend story (keychain/op/file)?
- Distribution: personal (`install.sh` + cargo) or public (crates.io,
  release matrix)?

## Design mode: deliverables

Produce a compact spec:

- Command tree + USAGE synopsis (noun-verb grouping; the `--help` tree is
  how agents discover capabilities, so make it a deterministic search tree).
- Args/flags table: types, defaults, required/optional, examples.
- Output contract: stdout vs stderr, `--json` (table stakes for agents),
  TTY detection, `--quiet`/`--verbose`, color rules (`NO_COLOR`).
- Error + exit-code map for the top failure modes, with messages that state
  the fix.
- Safety rules: confirmations, `-y`/`--force`, `--no-input`, dry-run story.
- Config/env precedence: flags > env > project config > user config.
- 5-10 example invocations, including piped/stdin and agent (`--json`) use.

## Build mode: house style

Follow `references/house-style.md`. The short version: clap derive with
global `--json` and `--mask`, stdout-is-data discipline, three-backend
secret store defaulting to keychain, thiserror + anyhow two-layer errors,
confirm-before-mutation, polite API etiquette (honest User-Agent, no retry
loops), co-located tests for pure logic, fmt/clippy/test CI, and the
`install.sh` + tag-driven release pipeline. Copy `secrets.rs`, `install.sh`,
`error.rs`, and the workflows from an exemplar repo and rename.

Every CLI ships its agent surface in the same repo:

- `AGENTS.md` at root with explicit operating rules for agents.
- `skills/<tool>-shared/SKILL.md` as the runtime contract (command map,
  storage table, output contract, etiquette), plus per-area skills when the
  command surface grows.

## Notes

- Full upstream guidelines: https://clig.dev/
- Check current library docs (clap etc.) via find-docs/ctx7 before coding;
  do not trust memorized API details.
- If the request is design-only, do not drift into implementation.

Files in this skill

  • SKILL.md3.4 KB
  • references/cli-guidelines.md8.9 KB
  • references/house-style.md5.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.