diff --git a/packages/prdy/package.json b/packages/prdy/package.json index e0c9a7d..7280f81 100644 --- a/packages/prdy/package.json +++ b/packages/prdy/package.json @@ -15,7 +15,15 @@ "typecheck": "tsc --noEmit", "test": "vitest run --passWithNoTests" }, + "dependencies": { + "@clack/prompts": "^0.9.0", + "commander": "^12.0.0", + "js-yaml": "^4.1.0", + "zod": "^3.22.0" + }, "devDependencies": { + "@types/js-yaml": "^4.0.9", + "@types/node": "^22.0.0", "typescript": "^5.8.0", "vitest": "^2.0.0" } diff --git a/packages/prdy/src/cli.ts b/packages/prdy/src/cli.ts new file mode 100644 index 0000000..1850e39 --- /dev/null +++ b/packages/prdy/src/cli.ts @@ -0,0 +1,100 @@ +import { Command } from 'commander'; + +import { createPrd, listPrds, loadPrd } from './prd.js'; +import { runPrdWizard } from './wizard.js'; + +interface InitCommandOptions { + readonly name: string; + readonly project: string; + readonly template?: 'software' | 'feature' | 'spike'; +} + +interface ListCommandOptions { + readonly project: string; +} + +interface ShowCommandOptions { + readonly project: string; + readonly id?: string; +} + +export function buildPrdyCli(): Command { + const program = new Command(); + program.name('mosaic').description('Mosaic CLI').exitOverride(); + + const prdy = program.command('prdy').description('PRD wizard commands'); + + prdy + .command('init') + .description('Create a PRD document') + .requiredOption('--name ', 'PRD name') + .requiredOption('--project ', 'Project path') + .option('--template