Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

devctl

Your personal dev toolkit for Claude Code — zero telemetry, zero registry.

Scaffold typed API CLIs in seconds and manage your Claude Code skills directly from the terminal.

devctl skills add Hotfirenet/my-skill # install a skill from GitHub
devctl cli create stripe \ # scaffold a full API CLI
--base-url https://api.stripe.com/v1 \
--auth-type bearer
devctl cli rebuild stripe # build + link in one step

Why devctl?

Most CLI scaffolding tools send telemetry on every command, rely on a centralized registry, and inject user input into generated code without sanitization.

devctl does the same job — skills management + CLI scaffolding — with none of that:

Other toolsdevctl
TelemetrySent on every installNone
RegistryCentralizedNone (GitHub raw)
Template injectionUnsanitizedEscaped
Skills targetsMultiple agentsClaude + Cursor
SourceClosed registryYour GitHub

Install

Requirements:Bun ≥ 1.0, macOS or Linux.

git clone git@github.com:Hotfirenet/devctl.git ~/.cli/devctl
cd~/.cli/devctl && bun install
bun build src/index.ts --outfile dist/index.js --target bun
ln -sf ~/.cli/devctl/dist/index.js ~/.local/bin/devctl
echo'export PATH="$HOME/.local/bin:$PATH"'>>~/.zshrc &&source~/.zshrc

Skills

Install Claude Code skills from any GitHub repo that has a SKILL.md at its root.

devctl skills add Hotfirenet/my-skill # from GitHub
devctl skills add owner/repo # any public repo with a SKILL.md
devctl skills add ./path/to/SKILL.md # from local file
devctl skills add-local ./SKILL.md --name my-skill
devctl skills list # list installed skills with descriptions
devctl skills show my-skill # print SKILL.md content
devctl skills remove my-skill # uninstall

Skills are installed to ~/.claude/skills/ (and ~/.cursor/skills/ if present). A skill is just a SKILL.md file — see the Claude Code skill format.


CLI scaffold

Generate a fully typed, Commander.js + Bun API CLI in one command.

devctl cli create stripe \
--base-url https://api.stripe.com/v1 \
--auth-type bearer
devctl cli bundle stripe # build with bun
devctl cli link stripe # symlink to ~/.local/bin/stripe-cli
devctl cli rebuild stripe # bundle + link in one step
devctl cli list # list all CLIs and their status

The scaffold generates ~/.cli/stripe-cli/ with a production-ready structure:

stripe-cli/
├── src/
│ ├── index.ts # entry point
│ ├── lib/
│ │ ├── client.ts # HTTP client with retry + auth
│ │ ├── config.ts # token storage, base URL, global flags
│ │ ├── errors.ts # typed error handling
│ │ └── output.ts # JSON / text output
│ ├── commands/
│ │ └── auth.ts # auth set / show / remove / test
│ └── resources/
│ └── example.ts # starter resource to copy from
├── package.json
└── tsconfig.json

Add a resource, rebuild, done:

# 1. create src/resources/customers.ts# 2. register it in src/index.ts
devctl cli rebuild stripe
stripe-cli customers list --json

Auth options

FlagValuesDescription
--auth-typeapikey (default), bearerHow the token is sent
--auth-headerapi-key (default)Header name for apikey auth

Token storage: ~/.config/tokens/{name}-cli (mode 600).

stripe-cli auth set sk_live_xxx
stripe-cli auth show
stripe-cli auth remove
stripe-cli auth test# makes a live API call to verify

Update

cd~/.cli/devctl && git pull
bun build src/index.ts --outfile dist/index.js --target bun

License

MIT

About

Personal dev toolkit — scaffold typed API CLIs and manage Claude Code skills. Zero telemetry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages