Found during PR #812 review.
The vendored urfave/cli/v2 parser stops parsing flags after the first non-flag (positional) token, so the natural invocation:
holodeck skill add using-holodeck --claude
is rejected with:
❌ must specify at least one of --claude/--cursor/--codex/--gemini/--all-agents
using-holodeck is consumed as the positional, after which --claude is treated as a second positional and never sets the flag.
PR #812 worked around this by rewriting all in-binary --help examples and README.md to flag-first ordering (holodeck skill add --claude using-holodeck) and locked the docs with a regression test (TestBuildAddCommand_DescriptionUsesFlagFirstExamples).
The proper fix is to allow the natural ordering. Two paths:
- Migrate to urfave/cli/v3, which interleaves flags and positional args by default. Likely affects every subcommand wiring.
- Manual arg pre-parse in v2 — reorder
os.Args so flags precede positional args before urfave gets them. Less invasive, but a hand-rolled shim.
Affects every subcommand that takes both flags and a positional. Worth fixing before the surface grows.
Posted via Team Lead workflow after PE review of PR #812.
Found during PR #812 review.
The vendored urfave/cli/v2 parser stops parsing flags after the first non-flag (positional) token, so the natural invocation:
is rejected with:
using-holodeckis consumed as the positional, after which--claudeis treated as a second positional and never sets the flag.PR #812 worked around this by rewriting all in-binary
--helpexamples andREADME.mdto flag-first ordering (holodeck skill add --claude using-holodeck) and locked the docs with a regression test (TestBuildAddCommand_DescriptionUsesFlagFirstExamples).The proper fix is to allow the natural ordering. Two paths:
os.Argsso flags precede positional args before urfave gets them. Less invasive, but a hand-rolled shim.Affects every subcommand that takes both flags and a positional. Worth fixing before the surface grows.
Posted via Team Lead workflow after PE review of PR #812.