Agent skill

Generate CLI Command

by PersonalJarvis in PersonalJarvis/PersonalJarvis

Use after building a feature that adds or changes a REST route in jarvis/ui/web/routes.py, as the "definition of done" before committing.

Apache-2.0Auto-check passedBackend & APIs

Install Generate CLI Command

skills CLI
$ npx skills add PersonalJarvis/PersonalJarvis --skill generate-cli-command -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PersonalJarvis/PersonalJarvis generate-cli-command --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PersonalJarvis/PersonalJarvis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/generate-cli-command .claude/skills/generate-cli-command && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
generate-cli-command
GitHub stars
141
Token cost
~1.2k tokens
SKILL.md length
518 words
Files
1
Skills in repo
12
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use after building a feature that adds or changes a REST route in jarvis/ui/web/routes.py, as the "definition of done" before committing.

  • Works in 6 steps: Find the new/changed routes → Confirm the router is MOUNTED (the hard… → Check the OpenAPI metadata is clean → …
  • Phrases: generate a CLI command
  • SKILL.md covers Steps and Hard rules
  • Calls python, git and ruff

What it does

Generate CLI Command is an agent skill from PersonalJarvis/PersonalJarvis. Use after building a feature that adds or changes a REST route in jarvis/ui/web/routes.py, as the "definition of done" before committing. Ensures the new endpoint is reachable from the Jarvis CLI: confirms the router is mounted, checks its OpenAPI metadata is clean, and (for high-value routes) scaffolds a curated jarvis <group <command plus a test and a docs entry. Trigger phrases: "generate a CLI command", "/generate-cli-command", "wire this feature into the CLI", "make this endpoint CLI-reachable".

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering OpenAPI specifications and Project scaffolding. It works with OpenAPI. The repository describes itself as: Your AI assistant, built for the agentic era. Open source and local: talk to it, and it runs your agents, your coding CLIs, your browser and your apps. Windows, macOS, Linux. The licence is Apache-2.0.

When your agent uses it

  • Phrases: generate a CLI command
  • /generate-cli-command
  • Wire this feature into the CLI
  • Make this endpoint CLI-reachable

Example prompts

  • “definition of done”
  • “generate a CLI command”
  • “/generate-cli-command”
  • “/generate-cli-command”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Find the new/changed routes
  2. Confirm the router is MOUNTED (the hard gate)
  3. Check the OpenAPI metadata is clean
  4. (High-value routes) Scaffold a curated command
  5. Regenerate the reference doc + run the checks
  6. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit d3c7b70. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • git
    • ruff

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Generate CLI Command loads about 1.2k tokens when it runs. Until then it costs about 133 tokens; SKILL.md has 518 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~133
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from PersonalJarvis/PersonalJarvis at commit d3c7b70, republished under its Apache-2.0 licence (© PersonalJarvis). 518 words, ~1,229 tokens.

Download SKILL.mdSave it as .claude/skills/generate-cli-command/SKILL.md (or your agent's skills folder).
name
generate-cli-command
description
Use after building a feature that adds or changes a REST route in jarvis/ui/web/*_routes.py, as the "definition of done" before committing. Ensures the new endpoint is reachable from the Jarvis CLI: confirms the router is mounted, checks its OpenAPI metadata is clean, and (for high-value routes) scaffolds a curated `jarvis <group> <command>` plus a test and a docs entry. Trigger phrases: "generate a CLI command", "/generate-cli-command", "wire this feature into the CLI", "make this endpoint CLI-reachable".

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 jarvis/ui/web/server.py next to the other app.include_router(...) calls (and the matching from .<module> import router as <name> import). Re-run the gate until it prints OK.

3. Check the OpenAPI metadata is clean

For the dynamic command to read well, each new route needs:

  • a router tag (APIRouter(prefix=..., tags=["<group>"])) — becomes the jarvis api <tag> group;
  • a sensible function name — FastAPI derives the operationId (→ command name) from it, so name it like the command you'd want (list_widgets, not handler);
  • a one-line summary or docstring — becomes the command's --help.

Fix the route if any are missing. (You can eyeball the generated command after booting the server: jarvis api <tag> --help.)

Show full SKILL.md (223 more words)Show less
4. (High-value routes) Scaffold a curated command

If the route belongs to a domain users will drive often, add an ergonomic curated command. Copy the pattern from an existing module (e.g. jarvis/cli_ctl/commands/missions.py):

  • Put the command in jarvis/cli_ctl/commands/<domain>.py (create the module + register it in jarvis/cli_ctl/__main__.py with app.add_typer(...), and add <domain> to RESERVED_CONTROL_NAMES in jarvis/cli_ctl/reserved.py if new).
  • Call invoke.run(method, path, ...). For a destructive route pass dangerous=True so it requires --yes; reversible mutations proceed without it. Reads (GET) need nothing. Reuse options.yes_opt() / options.dry_opt() / options.persist_opt().
  • Never accept a secret as an inline argument — read it from a hidden prompt or stdin (prompt=..., hide_input=True), as auth login / marketplace connect-pat do (AP-12 / spec §7.2).

Add a test in tests/unit/cli_ctl/test_commands_<domain>.py using the capture_api fixture: assert the command hits the right (method, path, body) and that a destructive command refuses without --yes.

5. Regenerate the reference doc + run the checks
bash
python scripts/ci/gen_cli_reference.py          # refresh docs/jarvis-cli-reference.md
python -m pytest tests/unit/cli_ctl/ -q         # all green
ruff check jarvis/cli_ctl/ scripts/ci/
python scripts/ci/check_cli_coverage.py         # OK
6. Commit

Commit the route, the mount (if added), the curated command + test, and the regenerated reference together. Suggested message:

feat(<area>): <feature> + CLI command `jarvis <group> <command>`

Hard rules

  • The dynamic layer is the guarantee; a curated command is sugar. Never ship a curated command whose path is not a real, mounted route (the coverage gate and an adversarial path-vs-route check catch this).
  • English only for all artifacts (code, help text, docs) — the language-policy CI gate blocks newly-added German.
  • Destructive commands require --yes; secrets never go through argv.

© PersonalJarvis, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/generate-cli-command of PersonalJarvis/PersonalJarvis.

Open the folder on GitHubat commit d3c7b70

Compare with similar skills

Generate CLI Command next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Generate CLI Command compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Generate CLI Command this skillPersonalJarvis/PersonalJarvis141—~1.2kAutomated safety check: PassApache-2.0
ToolJet Marketplace Plugin BuilderToolJet/ToolJet41k—~2.1kAutomated safety check: PassAGPL-3.0
Archestra Dev Backendarchestra-ai/archestra4.4k—~1.5kAutomated safety check: PassCustom licence
SpikardGoldziher/spikard123—~799Automated safety check: PassMIT
Cabloy Contract Loopcabloy/cabloy982—~5.1kAutomated safety check: PassMIT
NestJS ExpertJeffallan/claude-skills12k—~2kAutomated safety check: PassMIT

Similar skills

  • Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.

    41k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Archestra Dev Backend

    archestra-ai/archestra

    A skill your agent uses when adding or changing Archestra backend routes, models, services, API request/response schemas, endpoint permissions, or OpenAPI/codegen for the generated API client.

    4.4k GitHub stars~1.5k tokensUpdated today
    Backend & APIsAuto-check passed
  • Spikard

    Goldziher/spikard

    Scaffold Spikard projects and generate code from OpenAPI, AsyncAPI, OpenRPC, GraphQL, and Protobuf schemas using the Spikard CLI or its MCP server.

    123 GitHub stars~799 tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • A skill your agent uses whenever a Cabloy task crosses the Vona-to-Zova contract boundary: backend DTO, controller, validation, entity, inferred DTO, or OpenAPI changes that should drive SDK…

    982 GitHub stars~5.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • NestJS Expert

    Jeffallan/claude-skills

    Scaffolds NestJS modules, controllers, services, DTOs and guards for TypeScript backends, with validation, JWT and Passport auth, Swagger docs and unit and E2E tests.

    12k GitHub stars~2k tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • Add API Resource

    wso2/agent-manager

    Add or change a REST API resource in agent-manager-service (the Go control plane).

    105 GitHub stars~1.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed

More from PersonalJarvis/PersonalJarvis

All 12 skills in this repo
  • Skill Creator

    PersonalJarvis/PersonalJarvis

    Creates a new Jarvis skill from the user's description — the assistant writes the whole skill (name, trigger phrase, schedule, steps, spoken answer format) and files it as a draft.

    141 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Jarvis Doc Author

    PersonalJarvis/PersonalJarvis

    Authoritative skill for writing internal Personal-Jarvis docs under docs/ and sibling directories.

    141 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Drive Jarvis CLI

    PersonalJarvis/PersonalJarvis

    A skill your agent uses when you (a Claude Code / Codex session, or any terminal agent) need to control a running Personal Jarvis instance — switch the brain provider, dispatch or inspect missions…

    141 GitHub stars~945 tokensUpdated today
    Auto-check passed
  • Phase6 Adr Update

    PersonalJarvis/PersonalJarvis

    A skill your agent uses when a Phase-6 architecture decision needs to be amended or a new Phase-6 ADR needs to be written (e.g.

    141 GitHub stars~893 tokensUpdated today
    Auto-check passed
  • Phase6 Smoke Test

    PersonalJarvis/PersonalJarvis

    A skill your agent uses to run a quick end-to-end smoke test against the Phase-6 Mission-Manager + Critic-Loop.

    141 GitHub stars~725 tokensUpdated today
    Auto-check passed
  • Control API

    PersonalJarvis/PersonalJarvis

    Change Jarvis's own configuration through the local Control API instead of clicking the desktop UI or driving Computer-Use.

    141 GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Generate CLI Command

What does Generate CLI Command do?

Use after building a feature that adds or changes a REST route in jarvis/ui/web/routes.py, as the "definition of done" before committing. Generate CLI Command is an agent skill from PersonalJarvis/PersonalJarvis.py, as the "definition of done" before committing.

When should I use Generate CLI Command?

Generate CLI Command fits situations like: phrases: generate a CLI command; /generate-cli-command; wire this feature into the CLI; make this endpoint CLI-reachable.

How do I install Generate CLI Command in Claude Code?

Run `npx skills add PersonalJarvis/PersonalJarvis --skill generate-cli-command -a claude-code`. Or copy the skill folder (.agents/skills/generate-cli-command in PersonalJarvis/PersonalJarvis) into .claude/skills/generate-cli-command in your project. Claude Code loads it when a task matches its description.

How do I install Generate CLI Command in Codex?

Run `npx skills add PersonalJarvis/PersonalJarvis --skill generate-cli-command -a codex`. Or copy the skill folder (.agents/skills/generate-cli-command in PersonalJarvis/PersonalJarvis) into .agents/skills/generate-cli-command in your project. Codex loads it when a task matches its description.

Can I use Generate CLI Command in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PersonalJarvis/PersonalJarvis --skill generate-cli-command -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-cli-command, .gemini/skills/generate-cli-command, .github/skills/generate-cli-command and .opencode/skills/generate-cli-command in your project.

What does Generate CLI Command need to run?

Going by SKILL.md and its folder, Generate CLI Command needs the command-line tools its instructions call (python, git and ruff). Our summary lists: Python 3.

Does Generate CLI Command access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Generate CLI Command safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Generate CLI Command use?

Generate CLI Command is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Generate CLI Command use?

About 1.2k tokens (SKILL.md is roughly 4.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Generate CLI Command?

Skills that share tags, products or a category with Generate CLI Command: ToolJet Marketplace Plugin Builder (ToolJet/ToolJet, 41k stars), Archestra Dev Backend (archestra-ai/archestra, 4.4k stars), Spikard (Goldziher/spikard, 123 stars) and Cabloy Contract Loop (cabloy/cabloy, 982 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Generate CLI Command?

PersonalJarvis (a GitHub organization) maintains it in PersonalJarvis/PersonalJarvis, which has 141 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 8, 2026.

Source: PersonalJarvis/PersonalJarvis on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.