createcli
- Repo stars 0
- Author repo skills-registry
CreateCLI
Role: quick CLI authoring for ~/.claude/scripts/.
Stack choice
| Task | Stack | Reason |
|---|---|---|
| Files, glob, regex, JSON piping | bash | Fastest if < 50 lines |
| Anything complex, types, JSON handling | TypeScript (bun) | Default |
| Data-heavy operations, ML libraries | Python (uv) | Library access |
Anatomy (TypeScript default)
#!/usr/bin/env bun
/**
* [scriptname] — [short description]
*
* Usage: [scriptname] [args] [flags]
*
* Created: 2026-MM-DD via createcli skill
*/
import { parseArgs } from 'util';
const { values, positionals } = parseArgs({
args: process.argv.slice(2),
options: {
'dry-run': { type: 'boolean', default: true }, // destructive: default ON
'verbose': { type: 'boolean', short: 'v' },
'help': { type: 'boolean', short: 'h' },
},
allowPositionals: true,
});
if (values.help) {
console.log(`[scriptname] — [description]
Usage:
[scriptname] [args]
Flags:
--dry-run Show what would happen without doing it (default: ON for destructive)
--verbose More detailed output
--help This text
`);
process.exit(0);
}
// ... core logic
Anatomy (bash)
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<EOF
[scriptname] — [description]
Usage: [scriptname] [args]
Flags:
-n, --dry-run Show what would happen
-v, --verbose More detailed output
-h, --help This text
EOF
}
DRY_RUN=true # destructive default
while [[ $# -gt 0 ]]; do
case "$1" in
-n|--dry-run) DRY_RUN=true; shift ;;
--no-dry-run) DRY_RUN=false; shift ;;
-v|--verbose) VERBOSE=true; shift ;;
-h|--help) usage; exit 0 ;;
*) ARGS+=("$1"); shift ;;
esac
done
# core logic
Rules
- Destructive = dry-run default ON. Must use explicit
--no-dry-runto execute. - Log to
~/.claude/logs/[scriptname].jsonlfor an audit trail when relevant (file-modifying, network-fetching, API calls). chmod +xafter Write — exec bit must be set.--helpis mandatory — show it even when no args.- Never hardcode credentials — read from
~/.claude/.env. - Output in markdown if the script produces a text report (not tabular).
Workflow
1. The user describes: "I need a script that [X]"
2. Choose stack (bash/TS/Python) per the table above
3. Create the anatomy template
4. Implement core logic
5. chmod +x ~/.claude/scripts/[scriptname]
6. Test: ./scripts/[scriptname] --help
7. Test: ./scripts/[scriptname] --dry-run [args]
8. Report to user: what the script does + examples
Version history
- v3.0 (2026-05-02): initial public release.
<!-- tomevault:4.0:skill_md:2026-05-22 -->Source: carlheath/ogmios — distributed by TomeVault.
- Fluxly category
- Other
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @tomevault-io · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- No requirement detected
- Detected OS requirements
- macOS · Linux · Windows
- Runtime requirements
- Python
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Env read
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. Task · Stack · Reason Files, glob, regex, JSON piping · bash · Fastest if < 50 lines Anything complex, types, JSON handling · TypeScript (bun) · Default
Anatomy (TypeScript default)
Anatomy (bash)
Destructive = dry-run default ON. Must use explicit --no-dry-run to execute. Log to ~/.claude/logs/[scriptname].jsonl for an audit trail when relevant (file-modifying, network-fetching, API calls). chmod +x after Write — exec bit must be set.
Workflow
v3.0 (2026-05-02): initial public release. Source: carlheath/ogmios — distributed by TomeVault. <!-- tomevault:4.0:skillmd:2026-05-22 -->
# CreateCLI
**Role:** quick CLI authoring for `~/.claude/scripts/`.
## Stack choice
| Task | Stack | Reason |
|------|-------|--------|
| Files, glob, regex, JSON piping | bash | Fastest if < 50 lines |
| Anything complex, types, JSON handling | TypeScript (bun) | Default |
| Data-heavy operations, ML libraries | Python (uv) | Library access |
## Anatomy (TypeScript default)
```typescript
#!/usr/bin/env bun
/**
* [scriptname] — [short description]
*
* Usage: [scriptname] [args] [flags]
*
* Created: 2026-MM-DD via createcli skill
*/
import { parseArgs } from 'util';
const { values, positionals } = parseArgs({
args: process.argv.slice(2),
options: {
'dry-run': { type: 'boolean', default: true }, // destructive: default ON
'verbose': { type: 'boolean', short: 'v' },
'help': { type: 'boolean', short: 'h' },
},
allowPositionals: true,
});
if (values.help) {
console.log(`[scriptname] — [description]
Usage:
[scriptname] [args]
Flags:
--dry-run Show what would happen without doing it (default: ON for destructive)
--verbose More detailed output
--help This text
`);
process.exit(0);
}
// ... core logic
```
## Anatomy (bash)
```bash
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<EOF
[scriptname] — [description]
Usage: [scriptname] [args]
Flags:
-n, --dry-run Show what would happen
-v, --verbose More detailed output
-h, --help This text
EOF
}
DRY_RUN=true # destructive default
while [[ $# -gt 0 ]]; do
case "$1" in
-n|--dry-run) DRY_RUN=true; shift ;;
--no-dry-run) DRY_RUN=false; shift ;;
-v|--verbose) VERBOSE=true; shift ;;
-h|--help) usage; exit 0 ;;
*) ARGS+=("$1"); shift ;;
esac
done
# core logic
```
## Rules
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Stack choice → Anatomy (TypeScript default) → Anatomy (bash) → Rules → Workflow → Version history
terms -> Role · Destructive = dry-run default ON. · Log to ~/.claude/logs/[scriptname].jsonl · chmod +x · --help is mandatory · Never hardcode credentials · Output in markdown
files/cmd -> ~/.claude/scripts/ · --no-dry-run · ~/.claude/logs/[scriptname].jsonl · chmod +x · --help · ~/.claude/.env
body sha256 -> 2ca416a45bf7
Decide Fit First
Design Intent
How To Use It
Boundaries And Review