cli-builder
Build a production-quality CLI tool for any module or application. Auto-detects language, recommends CLI libraries, and follows a 5-step approval-gated workflow: Analyze, Design, Plan, Execute, Summarize. Don't use for building GUI/TUI apps, web APIs, or authoring one-off shell scripts.
What this skill does
# CLI Builder
Build production-quality CLI tools for any module or application, in any language.
Reference files (read on demand, not upfront):
- `references/cli-libraries.md` — read during Step 2 (Design) to recommend libraries and during Step 4 (Execute) for starter scaffolds
- `references/testing-patterns.md` — read during Step 4 (Execute) when writing tests
## Repo Sync Before Edits (mandatory)
Before creating/updating/deleting files in an existing repository, sync the current branch with remote:
```bash
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin
git pull --rebase origin "$branch"
```
If the working tree is not clean, stash first, sync, then restore:
```bash
git stash push -u -m "pre-sync"
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin && git pull --rebase origin "$branch"
git stash pop
```
If `origin` is missing, pull is unavailable, or rebase/stash conflicts occur, stop and ask the user before continuing.
## Branch-First Safety Rule
Before changing any file, check the current branch. Only create a new branch if on `main` or `master` — otherwise continue on the existing branch (the user likely set it up already or is resuming work):
```bash
current_branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$current_branch" = "main" ] || [ "$current_branch" = "master" ]; then
slug="$(echo "${CLI_NAME:-cli}" | tr '[:upper:] ' '[:lower:]-' | tr -cd 'a-z0-9-')"
ts="$(date +%Y%m%d-%H%M%S)"
git checkout -b "feat/cli-${slug}-${ts}"
fi
```
## Mandatory 5-Step Workflow (approval-gated)
### Step 1: Analyze
Understand the project before proposing anything.
**Auto-detect language** by checking for manifest files:
- `package.json` / `tsconfig.json` -> JavaScript/TypeScript
- `pyproject.toml` / `setup.py` / `setup.cfg` / `requirements.txt` -> Python
- `go.mod` -> Go
- `Cargo.toml` -> Rust
- `pom.xml` / `build.gradle` / `build.gradle.kts` -> Java/Kotlin
- `Gemfile` / `*.gemspec` -> Ruby
**Identify existing CLI/entry points**: check for `bin` fields, `__main__.py`, `main.go`, `fn main()`, existing arg parsing code, or `scripts` in package.json.
**Understand module structure**: public API, core functions, data types, dependencies.
**Ask clarifying questions** (only what cannot be inferred):
- Primary use case (automation, developer tool, data processing, admin)
- Target audience (developers, ops, end users)
- Single command or multi-command (subcommand tree)
- Output formats needed (text, JSON, table, CSV)
- Distribution method (pip/npm/go install, standalone binary, source)
Present findings and wait for approval before proceeding.
---
### Step 2: Design
Present a structured CLI design document:
- **Tool name** and binary/entry point name
- **Command tree** (visual hierarchy for multi-command tools)
- **Arguments and options per command** (name, type, required/optional, default, help text)
- **Global options** (verbose, quiet, output format, config file, no-color)
- **I/O behavior** (stdin support, stdout/stderr separation, piping)
- **Config strategy** (CLI args > env vars > config file > defaults)
- **Example invocations** (at least 3 realistic examples showing common use cases)
Iterate until user approves:
- Ask for feedback
- Adjust design
- Repeat until explicit approval
**No implementation before design approval.**
---
### Step 3: Plan
Break implementation into three phases, each with granular tasks.
**Phase 1 — Foundation** (get a working CLI skeleton):
- Entry point and arg parsing setup
- One core command (the most important one)
- Help text and version flag
- Basic tests (help output, version, one command)
**Phase 2 — Complete** (full feature set):
- All remaining commands
- Input validation and error handling
- Output formatting (text, JSON, table as designed)
- Comprehensive tests
**Phase 3 — Polish** (optional, confirm with user):
- Config file support
- Environment variable overrides
- Shell completions (bash, zsh, fish)
- Distribution/packaging setup (setup.py, package.json bin, goreleaser, etc.)
Each task includes:
- **Goal**: one sentence
- **Files**: create or modify
- **Expected behavior**: what the user can do after this task
- **Test**: how to verify
- **Effort**: S / M / L
Iterate the plan with user until approved.
**No execution before plan approval.**
---
### Step 4: Execute
Implement the approved plan task by task:
1. Implement one task
2. Run tests after each task
3. Demo between phases (show example commands and output)
4. Commit per phase with descriptive message
If tests fail, fix before moving to the next task. If a design issue is discovered during implementation, pause and discuss with user.
---
### Step 5: Summarize
Deliver a final summary:
- **Design summary**: tool name, command tree, key options
- **Implementation summary**: files created/modified, libraries used, patterns applied
- **Test results**: pass/fail counts, coverage if available
- **Usage quick-start**: install command, 3-5 example invocations
- **Next steps**: suggested improvements, missing features, distribution TODO
## Expected Output
After running this skill on a Python module called `mylib`, the final deliverable looks like:
```
feat/cli-mylib-20260419-143200 branch created
Files created:
cli/main.py — entry point with argparse/click/typer wiring
cli/commands/run.py — "mylib run" subcommand
cli/commands/info.py — "mylib info" subcommand
tests/test_cli.py — CLI smoke tests (help, version, run)
pyproject.toml — updated with [project.scripts] entry point
Usage quick-start:
pip install -e .
mylib --help
mylib run --input data.csv --output results.json
mylib info --format json
```
Step Completion Report (Steps 4-5):
```
◆ Execute + Summarize (step 4-5 of 5 — mylib CLI)
··································································
Implementation: √ pass (3 commands, 2 files)
Test coverage: √ pass (8/8 tests passing)
Phase demos completed: √ pass (help, version, run verified)
Summary delivered: √ pass
Criteria: √ 4/4 met
____________________________
Result: PASS
```
## Edge Cases
- **No clear module to wrap**: Ask the user what functions/features the CLI should expose before proceeding with analysis.
- **Multiple languages detected**: Present a choice; recommend the language with the most existing CLI-related code.
- **Existing CLI found**: Offer to extend or refactor rather than rebuild; audit what already exists first.
- **Monorepo with many packages**: Ask which package/service should get the CLI; scope the analysis to that subtree.
- **No test framework present**: Add a minimal test setup (pytest, jest, go test) as part of Phase 1 foundation tasks.
- **Binary output required (standalone .exe / compiled)**: Note distribution method during Design phase and add build step (PyInstaller, pkg, goreleaser) to Phase 3 polish.
- **User approves design but rejects implementation**: Return to Design phase; do not silently proceed with the rejected approach.
## Acceptance Criteria
- [ ] Language is auto-detected from manifest files before asking clarifying questions
- [ ] CLI design document is presented and explicitly approved before any implementation begins
- [ ] Implementation plan is presented and explicitly approved before execution starts
- [ ] `--help` works at every command level and `--version` is implemented
- [ ] Exit codes follow POSIX convention (0 = success, 1 = runtime error, 2 = usage error)
- [ ] Error messages go to stderr; clean output goes to stdout (pipeable)
- [ ] `NO_COLOR` env var or `--no-color` flag is respected
- [ ] Tests are written and pass before moving to the next phase
- [ ] Final summary includes install command and at least 3 usage examples
## Step Completion Reports
After completing each major step, output a status report in this format:
```
◆ [Step Name] ([step N of M] — [context])
··································································
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.