generate-cli-commandlisted
Install: claude install-skill PersonalJarvis/PersonalJarvis
# Generate a CLI Command for a New Feature
The Jarvis CLI (`jarvis/cli_ctl/`, the `jarvis`/`jarvisctl`/`jctl` binaries) is a
thin HTTP client over the REST API. Its dynamic `jarvis api <tag> <op>` layer turns
**every mounted REST route into a command automatically** — so a new feature is
CLI-reachable the moment its route is mounted with clean OpenAPI metadata. This
skill is the checklist that guarantees that, and adds an ergonomic curated command
for high-traffic routes.
Run this when you have finished a feature whose work added or changed a route in
`jarvis/ui/web/*_routes.py` (or `conductor/api`), before your final commit.
## Steps
### 1. Find the new/changed routes
```bash
git diff main...HEAD --name-only -- 'jarvis/ui/web/*_routes.py' 'conductor/api/*.py'
```
For each changed file, list the added route decorators:
```bash
git diff main...HEAD -- jarvis/ui/web/<file>_routes.py | grep -E '^\+\s*@router\.(get|post|put|patch|delete)'
```
Note each new `(METHOD, path)` and whether it is destructive (DELETE, or it
deletes / charges money / places a call / spawns work / writes arbitrary config).
### 2. Confirm the router is MOUNTED (the hard gate)
A route that exists in a file but is never `app.include_router(...)`'d is
unreachable from both the WebUI and the CLI (this has happened — see the frontier
/ antigravity / self-mod fixes). Run the coverage gate:
```bash
python scripts/ci/check_cli_coverage.py
```
If it reports your new module as unmounted, add the mount in