SIGN IN SIGN UP

fix(config): accept any string in disabled_skills and disabled_commands (#53)

* fix(config): accept any string in disabled_skills and disabled_commands

Before: disabled_skills required one of 7 hardcoded builtin names;
disabled_commands required one of 9 hardcoded builtin names. Users with
150+ community/user-installed skills could not disable any of them
because the Zod schema rejected unknown names at parse time.

After: both fields accept any non-empty string. Unknown names are a
silent no-op at the loader layer, which already handles arbitrary
skill/command names via Set lookups. The downstream
loadBuiltinCommands() signature widens from BuiltinCommandName[] to
readonly string[] so the inferred config type flows through cleanly.

The type widening is strictly permissive: every value that parsed
before still parses after, so existing configs with
disabled_skills: ['review-work'] continue to work unchanged.

* test(config): cover user-installed names in disabled_skills and disabled_commands

Adds four cases across the two widened fields:

- disabled_skills accepts non-builtin skill names like qs-anti-patterns
  and names containing slashes like frontend/nextjs
- disabled_commands accepts user-defined command names
- both fields still reject empty strings (z.string().min(1))

Keeps the original review-work / ai-slop-remover regression test so we
catch accidental re-narrowing of the schema.
V
Vacbo committed
bc3e389c7ef1e02eba342a7213b6ab7b105162ea
Parent: a484775
Committed by GitHub <noreply@github.com> on 4/21/2026, 10:33:45 PM