Observed since 20 Oct, 22:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Let writing CLI like writing document.
Let writing CLI like writing a document.
pnpm i @0x-jerry/silver
import { silver } from "@0x-jerry/silver";
const cli = silver`
v1.0.0 @autocomplete
my-cli [file], A CLI that writes like a document. ${mainAction}
-t --test @type:defaultValue, Test autocomplete.
-o --output @string, Output file path.
up/upgrade <dir> [...extra] #stopEarly, Upgrade something. ${upgradeAction}
-f --force @bool, Force upgrade.
`;
// Register custom completion types
cli.type("type", () => ["value1", "value2", "value3"]);
function mainAction([file], options) {
console.log("file:", file, "options:", options);
}
function upgradeAction([dir, ...extra], options) {
console.log("dir:", dir, "extra:", extra, "options:", options);
}
Silver uses a template literal to define your CLI. Here's the full syntax:
v1.0.0 @autocomplete @manual
| Token | Description |
|---|---|
v1.0.0 | Version declaration (must be at the top) |
@autocomplete | Enables complete subcommand for shell autocomplete |
@manual | Prevents auto-execution; call cli.execute(argv) manually |
commandName/alias [param] <reqParam> [...restParam] #stopEarly, Description text. ${actionFn}
| Part | Example | Description |
|---|---|---|
| Name | install | Command name (alphanumeric + _) |
| Alias | install/i | Shorthand alias via / |
| Optional param | [name] | Optional positional parameter |
| Required param | <name> | Required positional parameter |
| Rest param | [...items] | Collects remaining arguments as array |
| Flag | #stopEarly | Command flag (see below) |
| Description | , Install packages. | Text after comma is the description |
| Action | ${myFn} | Function to call when command is executed |
Command flags:
| Flag | Description |
|---|---|
#stopEarly | Stop parsing options after the first non-option argument |
-s --string @type, Description.
| Part | Example | Description |
|---|---|---|
| Short name | -s | Single-letter alias |
| Long name | --string | Full option name |
| Type | @string | Option type (see below) |
| Description | , Description. | Text after comma |
[@type:name] // typed optional parameter
<@type:name> // typed required parameter
[...@type|_files:name] // typed rest param with file completion
Types are registered via cli.type(name, getValues). Built-in types include bool, boolean, number, string. Special completion types _files and _dirs enable shell-native file/directory completion.
Set @autocomplete at the program level to enable shell completion.
| Shell | Command |
|---|---|
| zsh | source <(your-cli complete zsh) |
| PowerShell | Invoke-Expression (your-cli complete powershell | Out-String) |
For persistent setup, add the output to your shell's config file (.zshrc or PowerShell profile).
cli.type("env", () => ["development", "production", "staging"]);
// Async types
cli.type("remote-branch", async () => {
const res = await fetch("https://api.example.com/branches");
return res.json();
});
// With descriptions (displayed in some shells)
cli.type("format", () => [
{ label: "json", desc: "JSON output" },
{ label: "yaml", desc: "YAML output" },
]);
| Type | Description |
|---|---|
_files | File path completion (shell-native) |
_dirs | Directory path completion (shell-native) |
These can be combined with custom types: @custom|_files.
silver (default export)function silver(template: TemplateStringsArray, ...tokens: any[]): Silver;
Parses the template and optionally auto-executes with process.argv.
Silver class| Method | Description |
|---|---|
type(name, getValues) | Register a completion type (sync or async) |
execute(argv) | Execute the CLI with the given arguments |
parse(raw, ...tokens) | Parse a template literal programmatically |
import {
silver,
BuiltinType, // enum: File = '_files', Dir = '_dirs'
type CompletionGroup, // { name: string, values: string[] }
type CompletionOutput, // { groups: CompletionGroup[] }
type Command,
type CmdOption,
type CmdParameter,
type Program,
type CmdAction,
type ActionParsedArgs,
ProgramFlag,
CommandFlag,
} from "@0x-jerry/silver";
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.1.0Registry latest | 17 Jul 2026 | 15 | |
| 2.0.1 | 16 Jul 2026 | 13 | |
| 1.2.4 | 10 Sept 2025 | 13 | |
| 1.2.3 | 9 Sept 2025 | 13 | |
| 1.2.2 | 9 Sept 2025 | 13 | |
| 1.2.1 | 9 Sept 2025 | 13 | |
| 1.2.0 | 9 Sept 2025 | 13 | |
| 1.1.1 | 14 Sept 2024 | 12 | |
| 1.1.0 | 14 Sept 2024 | 12 | |
| 1.0.3 | 20 Jul 2024 | 12 | |
| 1.0.2 | 20 Jul 2024 | 12 | |
| 1.0.1 | 19 Jul 2024 | 12 | |
| 1.0.0 | 19 Jul 2024 | 12 | |
| 0.1.9 | 18 Jul 2024 | 9 | |
| 0.1.8 | 18 May 2024 | 9 | |
| 0.1.7 | 18 May 2024 | 9 | |
| 0.1.6 | 14 May 2024 | 9 | |
| 0.1.5 | 2 Nov 2023 | 11 | |
| 0.1.4 | 20 Sept 2023 | 11 | |
| 0.1.3 | 14 Aug 2023 | 9 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:65757df9f06fa61dae84bc219fc88ba93414f61f84b4648d88edd0731648df69