{"record":{"id":"aee1ead774cbeec8","repo":"tobi/qmd","slug":"unknown-skills-subcommand-subcommand","errorCode":null,"errorMessage":"Unknown skills subcommand: ${subcommand}","messagePattern":"Unknown skills subcommand: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"src/cli/qmd.ts","lineNumber":3471,"sourceCode":"        else paths.forEach((path) => console.log(path));\n        return;\n      }\n      const skill = findSkill(name, true);\n      if (!skill) {\n        throw new Error(`Skill not found: ${name}`);\n      }\n      if (jsonMode) outputSkillsJson({ success: true, data: { name: skill.name, path: skill.dir } });\n      else console.log(skill.dir);\n      return;\n    }\n\n    case \"help\": {\n      showSkillsHelp();\n      return;\n    }\n\n    default:\n      throw new Error(`Unknown skills subcommand: ${subcommand}`);\n  }\n}\n\nfunction showSkillsHelp(): void {\n  console.log(\"Usage: qmd skills <list|get|path> [options]\");\n  console.log(\"\");\n  console.log(\"Commands:\");\n  console.log(\"  list                 List bundled runtime skills\");\n  console.log(\"  get <name>           Print a bundled runtime skill\");\n  console.log(\"  get <name> --full    Include references/templates/scripts\");\n  console.log(\"  get --all            Print all bundled runtime skills\");\n  console.log(\"  path [name]          Print runtime skill directory path(s)\");\n  console.log(\"\");\n  console.log(\"Options:\");\n  console.log(\"  --json               Print structured JSON\");\n}\n\nfunction ensureClaudeSymlink(linkPath: string, targetDir: string, force: boolean): boolean {","sourceCodeStart":3453,"sourceCodeEnd":3489,"githubUrl":"https://github.com/tobi/qmd/blob/dbfd0b4736aeaf761d1a16ca8e424f071df8feb9/src/cli/qmd.ts#L3453-L3489","documentation":"Thrown by the `qmd skills` dispatcher when the first subcommand is not one of list|get|path|help. It's a usage error from the CLI argument router.","triggerScenarios":"Running e.g. `qmd skills fetch`, `qmd skills show`, or any unrecognized subcommand token.","commonSituations":"Version drift — using a subcommand that existed in another version or was assumed to exist; typos; copy-pasting docs for a different tool.","solutions":["Run `qmd skills help` to see valid subcommands","Use one of list, get, path, or help"],"exampleFix":"# before\nqmd skills fetch qmd\n# after\nqmd skills get qmd","handlingStrategy":"try-catch","validationCode":"const VALID = new Set([\"list\", \"get\", \"path\", \"help\"]);\nconst sub = process.argv[3];\nif (!VALID.has(sub)) { console.error(`unknown subcommand: ${sub}`); process.exit(1); }","typeGuard":"function isSkillsSubcommand(s: string): s is \"list\" | \"get\" | \"path\" | \"help\" {\n  return [\"list\", \"get\", \"path\", \"help\"].includes(s);\n}","tryCatchPattern":"null","preventionTips":["Pin scripts to documented subcommands (list/get/path/help)","Check `qmd skills help` after upgrading"],"tags":["cli","usage","skills"],"backgroundTag":"invalid-subcommand","analyzedSha":"dbfd0b4736aeaf761d1a16ca8e424f071df8feb9","analyzedAt":"2026-08-28T18:07:46.628Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}