Flag add
Skill zakelfassi/skills-driven-development/examples/cli-tool/skills/flag-add
Add a CLI flag to shipctl end-to-end — argument parser definition, help text, shell completion scripts, documentation, and tests. Use when adding a new option or flag, when extending an existing subcommand, or when asked to "add a --flag-name option".From its SKILL.md
npx -y skills add zakelfassi/skills-driven-development --skill flag-addAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `cargo check` and 7 more.
SKILL.md
3.5 KB, 785 tokens by cl100k_base, as published. Nobody here has run it
Flag Add
Add a new CLI flag to a shipctl command end-to-end.
Inputs
- Command path (e.g.,
release,build cross,config set) - Flag name (long form, e.g.,
--output-dir) - Short alias (optional, e.g.,
-o) - Type (string, bool, integer, path)
- Default value (or
requiredif mandatory) - Description (one-line, used in help text and docs)
Steps
-
Define the flag in the parser
For Rust +
clap:// In the relevant Args struct (src/cmd/{command}.rs) #[arg(long, short = '{alias}', default_value = "{default}", help = "{description}")] pub {flag_name}: {type},For Go +
cobra:// In the relevant command file (cmd/{command}.go) cmd.Flags().{TypeVar}(&opts.{FlagName}, "{flag-name}", {default}, "{description}") -
Wire the value into the command logic Pass the flag value through to whatever downstream call needs it. Verify the happy path compiles:
cargo check/go build ./.... -
Update the help text Run
shipctl {command} --helpand confirm the flag appears with the correct description and default. -
Add shell completions Regenerate completions (invoke
manpage-syncskill, or manually):shipctl completions bash > completions/shipctl.bash shipctl completions zsh > completions/_shipctl shipctl completions fish > completions/shipctl.fishCommit the updated completion files.
-
Update documentation Edit
docs/reference/{command}.md:- Add a row to the Flags table:
| --{flag-name} | {type} | {default} | {description} | - Add an Examples entry if the flag has a non-obvious use
- Add a row to the Flags table:
-
Write or extend a test
// tests/cmd_{command}.rs #[test] fn test_{flag_name}_flag() { let output = Command::cargo_bin("shipctl").unwrap() .arg("{command}") .arg("--{flag-name}").arg("{test-value}") .assert().success(); // assert output contains expected value } -
Verify the full suite passes
cargo test --workspace
Conventions
- Long flags are kebab-case (
--output-dir, not--outputDir) - Boolean flags use
--flag/--no-flagpair when toggling a default-on behavior - Flags that accept file paths validate existence (return error with
ENOENTmessage) - Help text: imperative mood, no trailing period, max 72 chars
- Short aliases: only for the top 10 most-used flags; don't add new ones without team sign-off
Edge Cases
- Conflicting short alias: Run
shipctl --helpon the parent command to audit existing aliases; pick a different letter or omit the alias. - Required flag without a default: Add a clear error message with the flag name and an example invocation.
- Flag affects multiple subcommands: Define it at the parent command level with
PersistentFlags()(cobra) orArgsflattening (clap). - Boolean flag default is
true: Document this prominently; many users expect flags to be opt-in.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.