agent-config
Create, update, or audit AGENTS.md (default) or CLAUDE.md agent instructions: set up, prune, add a rule, or merge CLAUDE.md or…
Build production-quality CLIs with language detection and a five-step approval-gated workflow. Use when wrapping an existing module or app. Don't use for GUI/TUI apps, web APIs, or one-off shell scripts.
$ npx -y skills add luongnv89/skills --skill cli-builder --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cli-builderContext preview
The summary Claude sees to decide when to auto-load this skill.
Build production-quality CLIs with language detection and a five-step approval-gated workflow. Use when wrapping an existing module or app. Don't use for GUI/TUI apps, web APIs, or one-off shell scripts.
name: cli-builder description: "Build production-quality CLIs with language detection and a five-step approval-gated workflow. Use when wrapping an existing module or app. Don't use for GUI/TUI apps, web APIs, or one-off shell scripts." license: MIT effort: high metadata: version: 1.3.0 author: "Luong NGUYEN <luongnv89@gmail.com>"
Build production-quality CLI tools for any module or application, in any language.
Reference files (read each one on demand, not upfront, to keep the agent's context budget small):
Run this section once, before Step 1, so the analysis reads the current code. If `git rev-parse --git-dir` fails, the directory is not a git repository: skip this section, the Branch-First Safety Rule, and the Step 4 commits, and list `no git repository: no branch or commits` under `Uncertainty:` in the final report.
In a git repository, sync the current branch with remote:
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:
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.
Run this rule at the start of Step 4, before the first file write, with `CLI_NAME` set to the tool name approved in Step 2. 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):
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**Explicit approval** is a user reply that accepts the presented item as it stands, such as "approved" or "looks good, go ahead". A question, a change request, or no reply is not approval. Steps 1-3 write no files.
Understand the project before proposing anything.
**Auto-detect language** by checking for manifest files:
**Identify existing CLI/entry points**: check for `bin` fields, `__main__.py`, `main.go`, `fn main()`, existing arg parsing code, or `scripts` in package.json.
**Record the module structure**: list the public functions or classes the CLI will expose, their inputs and outputs, the core data types, and runtime dependencies.
**Ask clarifying questions** (only what cannot be inferred):
Present the findings: detected language, entry points, the list of exposed functions, and the open questions. Wait for explicit approval before Step 2.
---
Present a structured CLI design document:
Approval loop: 1. Present the design document. 2. Ask for feedback. 3. If the reply is not explicit approval, revise the design and return to 1.
**No implementation before design approval.** If the user ends the run without approving the design, stop; the final status is `BLOCKED`.
---
Break implementation into three phases, each with granular tasks.
**Phase 1 — Foundation** (get a working CLI skeleton):
**Phase 2 — Complete** (full feature set):
**Phase 3 — Polish** (optional; include it only when the user confirms it):
Each task includes:
One command drops a tested, versioned skill into your agent. No more ad-hoc prompts. The same rigorous steps run every time. Skills are independent files.
Create, update, or audit AGENTS.md (default) or CLAUDE.md agent instructions: set up, prune, add a rule, or merge CLAUDE.md or…
Find open AI engineering jobs that fit a candidate, verify location and apply links, and assess each employer's product. Use for…
Generate App Store screenshots and header/search images for iPhone, iPad and Mac from a codebase or landing page, or re-render a…
Audit iOS/macOS apps against App Store Review Guidelines before submission, with evidence-backed verdicts and fixes. Don't use…
Optimize App Store and Google Play listings via a 7-phase, plan-approval-gated ASO workflow (keyword strategy, metadata,…
Generate a commit message, stage all changes, and push to remote after scanning for secrets, large files, and protected-branch…