{"record":{"id":"b50141a615f42930","repo":"yamadashy/repomix","slug":"skill-project-name-can-only-be-used-with-skill","errorCode":null,"errorMessage":"--skill-project-name can only be used with --skill-generate","messagePattern":"--skill-project-name can only be used with --skill-generate","errorType":"exception","errorClass":"RepomixError","httpStatus":null,"severity":"error","filePath":"src/cli/actions/defaultAction.ts","lineNumber":101,"sourceCode":"  progressCallback?: RepomixProgressCallback,\n): Promise<DefaultActionRunnerResult> => {\n  logger.trace('Loaded CLI options:', redactOptionsForLog(cliOptions));\n\n  // Build the merged config (migration + file config + CLI options)\n  const config = await buildMergedConfig(cwd, cliOptions);\n\n  // Validate conflicting options\n  validateConflictingOptions(config);\n\n  // Validate --skill-output and --force require --skill-generate\n  if (cliOptions.skillOutput && config.skillGenerate === undefined) {\n    throw new RepomixError('--skill-output can only be used with --skill-generate');\n  }\n  if (cliOptions.force && config.skillGenerate === undefined) {\n    throw new RepomixError('--force can only be used with --skill-generate');\n  }\n  if (cliOptions.skillProjectName !== undefined && config.skillGenerate === undefined) {\n    throw new RepomixError('--skill-project-name can only be used with --skill-generate');\n  }\n\n  // Validate --skill-output is not empty or whitespace only\n  if (cliOptions.skillOutput !== undefined && !cliOptions.skillOutput.trim()) {\n    throw new RepomixError('--skill-output path cannot be empty');\n  }\n  if (cliOptions.skillProjectName !== undefined && !cliOptions.skillProjectName.trim()) {\n    throw new RepomixError('--skill-project-name cannot be empty');\n  }\n\n  // Validate skill generation options and prompt for location\n  if (config.skillGenerate !== undefined) {\n    // Resolve skill name: use pre-computed name (from remoteAction) or generate from directory\n    cliOptions.skillName ??=\n      typeof config.skillGenerate === 'string'\n        ? config.skillGenerate\n        : generateDefaultSkillName(directories.map((d) => path.resolve(cwd, d)));\n","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/yamadashy/repomix/blob/f465ad909315a22120636baf03fa5e28701a50cb/src/cli/actions/defaultAction.ts#L83-L119","documentation":"--skill-project-name sets the project name inside a generated skill, so it is only valid when a skill is actually being generated. runDefaultAction throws this whenever the flag is present but config.skillGenerate is undefined (src/cli/actions/defaultAction.ts:101), failing fast before packing or prompting.","triggerScenarios":"Running `repomix --skill-project-name <name>` without --skill-generate; any code path where cliOptions.skillProjectName !== undefined while config.skillGenerate stays undefined.","commonSituations":"Combining flags from two different example commands; automation that always passes --skill-project-name but conditionally passes --skill-generate; typo in --skill-generate leaving it unparsed.","solutions":["Add --skill-generate: `repomix --skill-generate --skill-project-name my-project`.","Remove --skill-project-name if you are doing a normal pack without skill generation.","Verify with `repomix --help` that --skill-generate is actually spelled correctly and parsed."],"exampleFix":"// before\nrepomix --skill-project-name myproj\n// after\nrepomix --skill-generate --skill-project-name myproj","handlingStrategy":"validation","validationCode":"if (args.includes('--skill-project-name') && !args.includes('--skill-generate')) {\n  throw new Error('--skill-project-name requires --skill-generate');\n}","typeGuard":"const skillProjectNameAllowed = (argv: string[]): boolean =>\n  !argv.some(a => a === '--skill-project-name') || argv.includes('--skill-generate');","tryCatchPattern":"try {\n  await repomixRun(args);\n} catch (e) {\n  if (String(e.message).includes('--skill-project-name can only be used with --skill-generate')) {\n    throw new Error('Add --skill-generate or remove --skill-project-name');\n  }\n  throw e;\n}","preventionTips":["Group all skill flags (--skill-generate, --skill-output, --skill-project-name) together in command templates.","Never pass skill flags conditionally without the same condition guarding --skill-generate.","Verify flag parsing with repomix --help when upgrading versions."],"tags":["cli","argument-validation","repomix"],"backgroundTag":"incompatible-cli-flags","analyzedSha":"f465ad909315a22120636baf03fa5e28701a50cb","analyzedAt":"2026-08-29T01:27:42.024Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}