superspec 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +328 -0
  3. package/dist/cli/commands/archive.d.ts +7 -0
  4. package/dist/cli/commands/archive.d.ts.map +1 -0
  5. package/dist/cli/commands/archive.js +322 -0
  6. package/dist/cli/commands/archive.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +6 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +306 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/list.d.ts +9 -0
  12. package/dist/cli/commands/list.d.ts.map +1 -0
  13. package/dist/cli/commands/list.js +268 -0
  14. package/dist/cli/commands/list.js.map +1 -0
  15. package/dist/cli/commands/show.d.ts +6 -0
  16. package/dist/cli/commands/show.d.ts.map +1 -0
  17. package/dist/cli/commands/show.js +273 -0
  18. package/dist/cli/commands/show.js.map +1 -0
  19. package/dist/cli/commands/validate.d.ts +8 -0
  20. package/dist/cli/commands/validate.d.ts.map +1 -0
  21. package/dist/cli/commands/validate.js +209 -0
  22. package/dist/cli/commands/validate.js.map +1 -0
  23. package/dist/cli/commands/verify.d.ts +7 -0
  24. package/dist/cli/commands/verify.d.ts.map +1 -0
  25. package/dist/cli/commands/verify.js +328 -0
  26. package/dist/cli/commands/verify.js.map +1 -0
  27. package/dist/cli/commands/view.d.ts +6 -0
  28. package/dist/cli/commands/view.d.ts.map +1 -0
  29. package/dist/cli/commands/view.js +290 -0
  30. package/dist/cli/commands/view.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +87 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/ui/display.d.ts +189 -0
  36. package/dist/cli/ui/display.d.ts.map +1 -0
  37. package/dist/cli/ui/display.js +449 -0
  38. package/dist/cli/ui/display.js.map +1 -0
  39. package/dist/cli/ui/index.d.ts +12 -0
  40. package/dist/cli/ui/index.d.ts.map +1 -0
  41. package/dist/cli/ui/index.js +71 -0
  42. package/dist/cli/ui/index.js.map +1 -0
  43. package/dist/cli/ui/interactive.d.ts +21 -0
  44. package/dist/cli/ui/interactive.d.ts.map +1 -0
  45. package/dist/cli/ui/interactive.js +60 -0
  46. package/dist/cli/ui/interactive.js.map +1 -0
  47. package/dist/cli/ui/palette.d.ts +301 -0
  48. package/dist/cli/ui/palette.d.ts.map +1 -0
  49. package/dist/cli/ui/palette.js +673 -0
  50. package/dist/cli/ui/palette.js.map +1 -0
  51. package/dist/cli/ui/prompts.d.ts +62 -0
  52. package/dist/cli/ui/prompts.d.ts.map +1 -0
  53. package/dist/cli/ui/prompts.js +119 -0
  54. package/dist/cli/ui/prompts.js.map +1 -0
  55. package/dist/cli/ui/spinner.d.ts +38 -0
  56. package/dist/cli/ui/spinner.d.ts.map +1 -0
  57. package/dist/cli/ui/spinner.js +72 -0
  58. package/dist/cli/ui/spinner.js.map +1 -0
  59. package/dist/core/config/project-config.d.ts +100 -0
  60. package/dist/core/config/project-config.d.ts.map +1 -0
  61. package/dist/core/config/project-config.js +87 -0
  62. package/dist/core/config/project-config.js.map +1 -0
  63. package/dist/core/parsers/spec-parser.d.ts +48 -0
  64. package/dist/core/parsers/spec-parser.d.ts.map +1 -0
  65. package/dist/core/parsers/spec-parser.js +322 -0
  66. package/dist/core/parsers/spec-parser.js.map +1 -0
  67. package/dist/core/validation/spec-validator.d.ts +32 -0
  68. package/dist/core/validation/spec-validator.d.ts.map +1 -0
  69. package/dist/core/validation/spec-validator.js +242 -0
  70. package/dist/core/validation/spec-validator.js.map +1 -0
  71. package/dist/index.d.ts +35 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +44 -0
  74. package/dist/index.js.map +1 -0
  75. package/package.json +66 -0
  76. package/schemas/superspec-workflow/schema.yaml +166 -0
  77. package/templates/design.md +71 -0
  78. package/templates/plan.md +78 -0
  79. package/templates/proposal.md +36 -0
  80. package/templates/spec.md +57 -0
  81. package/templates/tasks.md +29 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface InitOptions {
2
+ force?: boolean;
3
+ }
4
+ export declare function initCommand(path: string, options: InitOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAiDA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA6ID,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKnF"}
@@ -0,0 +1,306 @@
1
+ import { existsSync, mkdirSync, writeFileSync, symlinkSync, readlinkSync, readFileSync } from 'fs';
2
+ import { join, resolve, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { homedir } from 'os';
5
+ import { PALETTE, BANNER, ICONS, startSpinner, spinnerSuccess, spinnerFail, confirmPrompt, sectionHeader, displayTree, displayCommand, } from '../ui/index.js';
6
+ // Get the SuperSpec package root directory
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ const SUPERSPEC_ROOT = resolve(__dirname, '..', '..', '..');
10
+ const SKILLS_SOURCE = join(SUPERSPEC_ROOT, 'skills');
11
+ // Skill mappings: global name -> source directory
12
+ const SKILL_MAPPINGS = {
13
+ // Core SuperSpec workflow
14
+ 'superspec:brainstorm': 'brainstorm',
15
+ 'superspec:kickoff': 'kickoff',
16
+ 'superspec:plan': 'plan-writing',
17
+ 'superspec:execute': 'subagent-development',
18
+ 'superspec:verify': 'verify',
19
+ 'superspec:archive': 'archive',
20
+ 'superspec:finish-branch': 'finish-branch',
21
+ // Development skills
22
+ 'tdd': 'tdd',
23
+ 'git-worktree': 'git-worktree',
24
+ 'systematic-debugging': 'systematic-debugging',
25
+ 'code-review': 'code-review',
26
+ // Quality & discipline skills
27
+ 'verification-before-completion': 'verification-before-completion',
28
+ 'receiving-code-review': 'receiving-code-review',
29
+ // Execution skills
30
+ 'dispatching-parallel-agents': 'dispatching-parallel-agents',
31
+ 'executing-plans': 'executing-plans',
32
+ // Other skills
33
+ 'spec-validation': 'spec-validation',
34
+ 'using-superspec': 'using-superspec',
35
+ };
36
+ // CLAUDE.md managed block markers
37
+ const CLAUDE_MD_START = '<!-- SUPERSPEC:START -->';
38
+ const CLAUDE_MD_END = '<!-- SUPERSPEC:END -->';
39
+ // CLAUDE.md managed content
40
+ const CLAUDE_MD_CONTENT = `${CLAUDE_MD_START}
41
+ # SuperSpec Instructions
42
+
43
+ This project uses SuperSpec for spec-driven development with TDD discipline.
44
+
45
+ ## Quick Reference
46
+
47
+ | Command | Description |
48
+ |---------|-------------|
49
+ | \`/superspec:kickoff\` | **Fast track**: brainstorm + validate + plan in one session |
50
+ | \`/superspec:brainstorm\` | **Full workflow**: progressive design (Explore → Propose → Spec) |
51
+ | \`superspec validate [id]\` | Validate specifications (CLI) |
52
+ | \`/superspec:plan\` | Create TDD implementation plan (after brainstorm) |
53
+ | \`/superspec:execute\` | Execute with subagent-driven TDD |
54
+ | \`/superspec:verify\` | Verify implementation matches specs |
55
+ | \`/superspec:finish-branch\` | Complete branch (merge/PR) |
56
+ | \`/superspec:archive\` | Archive changes |
57
+
58
+ ## Four Iron Rules
59
+
60
+ 1. **TDD Rule**: No production code without a failing test first
61
+ 2. **Spec Rule**: Specs are truth. Changes are proposals.
62
+ 3. **SuperSpec Rule**: Every Scenario becomes a test. Every test traces to a Scenario.
63
+ 4. **Verification Rule**: No completion claims without fresh verification evidence
64
+
65
+ ## Workflow
66
+
67
+ \`\`\`
68
+ Fast track: /superspec:kickoff → execute → verify → finish-branch → archive
69
+ Full workflow: brainstorm → validate → plan → execute → verify → finish-branch → archive
70
+ \`\`\`
71
+
72
+ Use \`/superspec:kickoff\` for quick features or \`/superspec:brainstorm\` for larger changes.
73
+
74
+ Keep this managed block so \`superspec init\` can refresh the instructions.
75
+ ${CLAUDE_MD_END}`;
76
+ /**
77
+ * Update CLAUDE.md with SuperSpec managed block
78
+ * - If no CLAUDE.md exists, create it
79
+ * - If CLAUDE.md exists without markers, prepend the block
80
+ * - If CLAUDE.md exists with markers, replace only the marked section
81
+ */
82
+ function updateClaudeMd(projectPath) {
83
+ const claudeMdPath = join(projectPath, 'CLAUDE.md');
84
+ if (!existsSync(claudeMdPath)) {
85
+ // Create new CLAUDE.md
86
+ writeFileSync(claudeMdPath, CLAUDE_MD_CONTENT + '\n');
87
+ return { action: 'created' };
88
+ }
89
+ const existingContent = readFileSync(claudeMdPath, 'utf-8');
90
+ // Check if markers exist
91
+ const startIndex = existingContent.indexOf(CLAUDE_MD_START);
92
+ const endIndex = existingContent.indexOf(CLAUDE_MD_END);
93
+ if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) {
94
+ // Replace existing managed block
95
+ const before = existingContent.substring(0, startIndex);
96
+ const after = existingContent.substring(endIndex + CLAUDE_MD_END.length);
97
+ const newContent = before + CLAUDE_MD_CONTENT + after;
98
+ if (newContent === existingContent) {
99
+ return { action: 'unchanged' };
100
+ }
101
+ writeFileSync(claudeMdPath, newContent);
102
+ return { action: 'updated' };
103
+ }
104
+ // No markers found, prepend the block
105
+ const newContent = CLAUDE_MD_CONTENT + '\n\n' + existingContent;
106
+ writeFileSync(claudeMdPath, newContent);
107
+ return { action: 'updated' };
108
+ }
109
+ /**
110
+ * Install SuperSpec skills to global Claude Code skills directory
111
+ */
112
+ async function installGlobalSkills() {
113
+ const globalSkillsDir = join(homedir(), '.claude', 'skills');
114
+ const result = { installed: [], skipped: [], failed: [] };
115
+ // Create global skills directory if it doesn't exist
116
+ if (!existsSync(globalSkillsDir)) {
117
+ mkdirSync(globalSkillsDir, { recursive: true });
118
+ }
119
+ // Check if skills source exists
120
+ if (!existsSync(SKILLS_SOURCE)) {
121
+ console.log(` ${ICONS.warning} ${PALETTE.warning('Skills directory not found at ' + SKILLS_SOURCE)}`);
122
+ return result;
123
+ }
124
+ // Install each skill
125
+ for (const [globalName, sourceName] of Object.entries(SKILL_MAPPINGS)) {
126
+ const sourcePath = join(SKILLS_SOURCE, sourceName);
127
+ const targetPath = join(globalSkillsDir, globalName);
128
+ try {
129
+ // Skip if source doesn't exist
130
+ if (!existsSync(sourcePath)) {
131
+ result.skipped.push(globalName);
132
+ continue;
133
+ }
134
+ // Check if already linked correctly
135
+ if (existsSync(targetPath)) {
136
+ try {
137
+ const existingLink = readlinkSync(targetPath);
138
+ if (existingLink === sourcePath) {
139
+ result.skipped.push(globalName);
140
+ continue;
141
+ }
142
+ }
143
+ catch {
144
+ // Not a symlink, skip
145
+ result.skipped.push(globalName);
146
+ continue;
147
+ }
148
+ }
149
+ // Create symlink
150
+ symlinkSync(sourcePath, targetPath);
151
+ result.installed.push(globalName);
152
+ }
153
+ catch {
154
+ result.failed.push(globalName);
155
+ }
156
+ }
157
+ return result;
158
+ }
159
+ export async function initCommand(path, options) {
160
+ const projectPath = resolve(path);
161
+ const superspecPath = join(projectPath, 'superspec');
162
+ // Display banner
163
+ console.log(BANNER);
164
+ // Check if already initialized
165
+ if (existsSync(superspecPath) && !options.force) {
166
+ console.log(` ${ICONS.warning} ${PALETTE.warning('SuperSpec already initialized in this directory.')}`);
167
+ console.log();
168
+ const proceed = await confirmPrompt({
169
+ message: 'Reinitialize? This will overwrite existing configuration.',
170
+ default: false,
171
+ });
172
+ if (!proceed) {
173
+ console.log(` ${PALETTE.dim('Initialization cancelled.')}`);
174
+ return;
175
+ }
176
+ }
177
+ // Start initialization
178
+ console.log();
179
+ const spinner = startSpinner('Creating SuperSpec structure...');
180
+ try {
181
+ // Create directory structure
182
+ const directories = [
183
+ 'superspec',
184
+ 'superspec/specs',
185
+ 'superspec/changes',
186
+ 'superspec/changes/archive',
187
+ ];
188
+ for (const dir of directories) {
189
+ const dirPath = join(projectPath, dir);
190
+ if (!existsSync(dirPath)) {
191
+ mkdirSync(dirPath, { recursive: true });
192
+ }
193
+ }
194
+ // Create .gitkeep files
195
+ const gitkeeps = [
196
+ 'superspec/specs/.gitkeep',
197
+ 'superspec/changes/.gitkeep',
198
+ 'superspec/changes/archive/.gitkeep',
199
+ ];
200
+ for (const gitkeep of gitkeeps) {
201
+ const gitkeepPath = join(projectPath, gitkeep);
202
+ if (!existsSync(gitkeepPath)) {
203
+ writeFileSync(gitkeepPath, '');
204
+ }
205
+ }
206
+ // Create project config
207
+ const configPath = join(superspecPath, 'project.yaml');
208
+ const projectName = path === '.' ? 'my-project' : path;
209
+ const config = `# SuperSpec Project Configuration
210
+ version: 1
211
+
212
+ # Project settings
213
+ project:
214
+ name: ${projectName}
215
+
216
+ # Workflow settings
217
+ workflow:
218
+ require_design: true
219
+ require_validation: true
220
+ strict_mode: false
221
+
222
+ # Git settings
223
+ git:
224
+ worktree_dir: .worktrees
225
+ branch_prefix: feature/
226
+
227
+ # Test settings
228
+ test:
229
+ command: npm test
230
+ coverage: false
231
+ `;
232
+ writeFileSync(configPath, config);
233
+ spinnerSuccess(spinner, 'SuperSpec structure created');
234
+ // Install global skills for Claude Code
235
+ const skillsInstalled = await installGlobalSkills();
236
+ // Update CLAUDE.md
237
+ const claudeMdResult = updateClaudeMd(projectPath);
238
+ // ═══════════════════════════════════════════════════════════════════════════
239
+ // SUCCESS OUTPUT
240
+ // ═══════════════════════════════════════════════════════════════════════════
241
+ console.log();
242
+ console.log(` ${ICONS.success} ${PALETTE.bold(PALETTE.success('Initialization complete!'))}`);
243
+ // Directory Structure Section
244
+ console.log(sectionHeader('Directory Structure', '📁'));
245
+ console.log();
246
+ displayTree([
247
+ {
248
+ name: PALETTE.primaryBright('superspec/'),
249
+ icon: PALETTE.primary('◆'),
250
+ children: [
251
+ { name: `${PALETTE.primary('specs/')} ${PALETTE.dim('Main specifications')}`, icon: PALETTE.dim('○') },
252
+ { name: `${PALETTE.primary('changes/')} ${PALETTE.dim('Active changes')}`, icon: PALETTE.dim('○') },
253
+ { name: `${PALETTE.dim(' └─ archive/')} ${PALETTE.dim('Completed changes')}`, icon: ' ' },
254
+ { name: `${PALETTE.white('project.yaml')} ${PALETTE.dim('Configuration')}`, icon: PALETTE.dim('○') },
255
+ ]
256
+ }
257
+ ]);
258
+ // Skills Section
259
+ console.log(sectionHeader('Claude Code Skills', '🔧'));
260
+ console.log();
261
+ if (skillsInstalled.installed.length > 0) {
262
+ const installedList = skillsInstalled.installed.slice(0, 5).join(', ');
263
+ const more = skillsInstalled.installed.length > 5
264
+ ? PALETTE.dim(` +${skillsInstalled.installed.length - 5} more`)
265
+ : '';
266
+ console.log(` ${ICONS.success} ${PALETTE.success('Installed:')} ${installedList}${more}`);
267
+ }
268
+ if (skillsInstalled.skipped.length > 0) {
269
+ console.log(` ${ICONS.info} ${PALETTE.info('Already installed:')} ${skillsInstalled.skipped.length} skills`);
270
+ }
271
+ if (skillsInstalled.failed.length > 0) {
272
+ console.log(` ${ICONS.warning} ${PALETTE.warning('Failed:')} ${skillsInstalled.failed.join(', ')}`);
273
+ }
274
+ console.log();
275
+ console.log(` ${PALETTE.dim('Location:')} ${PALETTE.muted('~/.claude/skills/')}`);
276
+ // CLAUDE.md Section
277
+ console.log(sectionHeader('CLAUDE.md', '📄'));
278
+ console.log();
279
+ if (claudeMdResult.action === 'created') {
280
+ console.log(` ${ICONS.success} ${PALETTE.success('Created')} CLAUDE.md with SuperSpec instructions`);
281
+ }
282
+ else if (claudeMdResult.action === 'updated') {
283
+ console.log(` ${ICONS.success} ${PALETTE.success('Updated')} SuperSpec block in CLAUDE.md`);
284
+ }
285
+ else {
286
+ console.log(` ${ICONS.info} ${PALETTE.info('Already up to date')}`);
287
+ }
288
+ console.log();
289
+ console.log(` ${PALETTE.dim('Managed block preserved between:')}`);
290
+ console.log(` ${PALETTE.dark('<!-- SUPERSPEC:START --> ... <!-- SUPERSPEC:END -->')}`);
291
+ // Next Steps Section
292
+ console.log(sectionHeader('Next Steps', '🚀'));
293
+ console.log();
294
+ displayCommand('/superspec:kickoff', 'Fast-track a new feature');
295
+ displayCommand('/superspec:brainstorm', 'Progressive design for larger changes');
296
+ displayCommand('superspec view', 'View the project dashboard');
297
+ console.log();
298
+ console.log(` ${PALETTE.accent('💡')} ${PALETTE.dim('Use Claude Code skills to brainstorm and design your changes!')}`);
299
+ console.log();
300
+ }
301
+ catch (error) {
302
+ spinnerFail(spinner, 'Failed to initialize SuperSpec');
303
+ throw error;
304
+ }
305
+ }
306
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface ListOptions {
2
+ specs?: boolean;
3
+ archived?: boolean;
4
+ json?: boolean;
5
+ interactive?: boolean;
6
+ }
7
+ export declare function listCommand(options: ListOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAeA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrE"}
@@ -0,0 +1,268 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import matter from 'gray-matter';
4
+ import { PALETTE, ICONS, commandHeader, sectionHeader, createProgressBar, isInteractive, selectPrompt, displayStats, displayCommand, } from '../ui/index.js';
5
+ export async function listCommand(options) {
6
+ const superspecPath = join(process.cwd(), 'superspec');
7
+ if (!existsSync(superspecPath)) {
8
+ console.log(` ${ICONS.error} ${PALETTE.error('SuperSpec not initialized.')}`);
9
+ console.log(` ${PALETTE.dim('Run:')} ${PALETTE.accent('superspec init')}`);
10
+ process.exit(1);
11
+ }
12
+ if (options.specs) {
13
+ await listSpecs(superspecPath, options);
14
+ }
15
+ else {
16
+ await listChanges(superspecPath, options);
17
+ }
18
+ }
19
+ async function listChanges(superspecPath, options) {
20
+ const changesPath = join(superspecPath, 'changes');
21
+ const archivePath = join(changesPath, 'archive');
22
+ const changes = [];
23
+ // List active changes
24
+ if (existsSync(changesPath)) {
25
+ const entries = readdirSync(changesPath, { withFileTypes: true });
26
+ for (const entry of entries) {
27
+ if (entry.isDirectory() && entry.name !== 'archive') {
28
+ const changePath = join(changesPath, entry.name);
29
+ changes.push(getChangeInfo(entry.name, changePath, 'active'));
30
+ }
31
+ }
32
+ }
33
+ // List archived changes if requested
34
+ if (options.archived && existsSync(archivePath)) {
35
+ const entries = readdirSync(archivePath, { withFileTypes: true });
36
+ for (const entry of entries) {
37
+ if (entry.isDirectory()) {
38
+ const changePath = join(archivePath, entry.name);
39
+ changes.push(getChangeInfo(entry.name, changePath, 'archived'));
40
+ }
41
+ }
42
+ }
43
+ if (options.json) {
44
+ console.log(JSON.stringify(changes, null, 2));
45
+ return;
46
+ }
47
+ // Header
48
+ console.log(commandHeader('list', 'View all changes and their status'));
49
+ // Group by status
50
+ const active = changes.filter(c => c.status === 'active');
51
+ const archived = changes.filter(c => c.status === 'archived');
52
+ if (changes.length === 0) {
53
+ console.log();
54
+ console.log(` ${PALETTE.dim('No changes found.')}`);
55
+ console.log();
56
+ displayCommand('/superspec:brainstorm', 'Start a new change');
57
+ console.log();
58
+ return;
59
+ }
60
+ // Stats summary
61
+ console.log();
62
+ displayStats([
63
+ { label: 'Active', value: active.length, icon: PALETTE.success('●') },
64
+ { label: 'Archived', value: archived.length, icon: PALETTE.dim('○') },
65
+ ]);
66
+ // Active Changes
67
+ if (active.length > 0) {
68
+ console.log(sectionHeader('Active Changes', '●'));
69
+ console.log();
70
+ for (const change of active) {
71
+ printChangeCard(change);
72
+ }
73
+ }
74
+ // Archived Changes
75
+ if (archived.length > 0 && options.archived) {
76
+ console.log(sectionHeader('Archived Changes', '○'));
77
+ console.log();
78
+ for (const change of archived) {
79
+ printChangeCard(change);
80
+ }
81
+ }
82
+ // Interactive mode - offer to select
83
+ if (isInteractive(options) && active.length > 0) {
84
+ console.log(` ${PALETTE.subtle('─'.repeat(55))}`);
85
+ console.log();
86
+ const viewChange = await selectPrompt({
87
+ message: 'Select a change to view details:',
88
+ choices: [
89
+ ...active.map(c => ({
90
+ name: `${PALETTE.primary('›')} ${c.id}${c.title ? ` - ${c.title}` : ''}`,
91
+ value: c.id,
92
+ })),
93
+ { name: PALETTE.dim(' (Cancel)'), value: '' },
94
+ ],
95
+ });
96
+ if (viewChange) {
97
+ // Import and run show command
98
+ const { showCommand } = await import('./show.js');
99
+ await showCommand(viewChange, {});
100
+ }
101
+ }
102
+ console.log();
103
+ }
104
+ function getChangeInfo(id, path, status) {
105
+ const info = {
106
+ id,
107
+ status,
108
+ hasProposal: existsSync(join(path, 'proposal.md')),
109
+ hasDesign: existsSync(join(path, 'design.md')),
110
+ hasSpecs: existsSync(join(path, 'specs')),
111
+ hasPlan: existsSync(join(path, 'plan.md')),
112
+ path,
113
+ };
114
+ // Try to get title from proposal
115
+ if (info.hasProposal) {
116
+ try {
117
+ const content = readFileSync(join(path, 'proposal.md'), 'utf-8');
118
+ const { data } = matter(content);
119
+ if (data['title']) {
120
+ info.title = data['title'];
121
+ }
122
+ }
123
+ catch {
124
+ // Ignore parsing errors
125
+ }
126
+ }
127
+ // Get task progress
128
+ const tasksPath = join(path, 'tasks.md');
129
+ if (existsSync(tasksPath)) {
130
+ try {
131
+ const content = readFileSync(tasksPath, 'utf-8');
132
+ const total = (content.match(/^- \[[ x]\]/gm) ?? []).length;
133
+ const completed = (content.match(/^- \[x\]/gm) ?? []).length;
134
+ info.taskProgress = { completed, total };
135
+ }
136
+ catch {
137
+ // Ignore
138
+ }
139
+ }
140
+ return info;
141
+ }
142
+ function printChangeCard(change) {
143
+ // Status icon
144
+ const statusIcon = change.status === 'archived'
145
+ ? PALETTE.dim('○')
146
+ : PALETTE.success('●');
147
+ // Document indicators
148
+ const docs = [
149
+ change.hasProposal ? PALETTE.success('P') : PALETTE.dark('P'),
150
+ change.hasDesign ? PALETTE.success('D') : PALETTE.dark('D'),
151
+ change.hasSpecs ? PALETTE.success('S') : PALETTE.dark('S'),
152
+ change.hasPlan ? PALETTE.success('L') : PALETTE.dark('L'),
153
+ ].join('');
154
+ // Title
155
+ const title = change.title
156
+ ? PALETTE.dim(change.title.length > 40 ? change.title.slice(0, 37) + '…' : change.title)
157
+ : '';
158
+ // Card layout
159
+ console.log(` ${PALETTE.subtle('┌─')} ${statusIcon} ${PALETTE.bold(PALETTE.white(change.id))}`);
160
+ if (title) {
161
+ console.log(` ${PALETTE.subtle('│')} ${title}`);
162
+ }
163
+ console.log(` ${PALETTE.subtle('│')} ${PALETTE.dim('Docs:')} [${docs}] ${PALETTE.dark('P=Proposal D=Design S=Specs L=Plan')}`);
164
+ // Progress bar if has tasks
165
+ if (change.taskProgress && change.taskProgress.total > 0) {
166
+ const { completed, total } = change.taskProgress;
167
+ const bar = createProgressBar(completed, total, { width: 15 });
168
+ console.log(` ${PALETTE.subtle('│')} ${PALETTE.dim('Progress:')} ${bar}`);
169
+ }
170
+ console.log(` ${PALETTE.subtle('└─')}`);
171
+ console.log();
172
+ }
173
+ async function listSpecs(superspecPath, options) {
174
+ const specsPath = join(superspecPath, 'specs');
175
+ const specs = [];
176
+ if (existsSync(specsPath)) {
177
+ const entries = readdirSync(specsPath, { withFileTypes: true });
178
+ for (const entry of entries) {
179
+ if (entry.isDirectory()) {
180
+ const specPath = join(specsPath, entry.name, 'spec.md');
181
+ if (existsSync(specPath)) {
182
+ specs.push(getSpecInfo(entry.name, specPath));
183
+ }
184
+ }
185
+ }
186
+ }
187
+ if (options.json) {
188
+ console.log(JSON.stringify(specs, null, 2));
189
+ return;
190
+ }
191
+ // Header
192
+ console.log(commandHeader('list --specs', 'View all main specifications'));
193
+ if (specs.length === 0) {
194
+ console.log();
195
+ console.log(` ${PALETTE.dim('No specs found.')}`);
196
+ console.log();
197
+ console.log(` ${PALETTE.accent('💡')} ${PALETTE.dim('Archive a change to create main specs.')}`);
198
+ console.log();
199
+ return;
200
+ }
201
+ // Stats
202
+ const totalReqs = specs.reduce((sum, s) => sum + s.requirementCount, 0);
203
+ const totalScenarios = specs.reduce((sum, s) => sum + s.scenarioCount, 0);
204
+ console.log();
205
+ displayStats([
206
+ { label: 'Specs', value: specs.length, icon: ICONS.spec },
207
+ { label: 'Requirements', value: totalReqs, icon: PALETTE.primary('◆') },
208
+ { label: 'Scenarios', value: totalScenarios, icon: PALETTE.accent('◆') },
209
+ ]);
210
+ console.log(sectionHeader('Specifications'));
211
+ console.log();
212
+ for (const spec of specs) {
213
+ const purpose = spec.purpose
214
+ ? PALETTE.dim(spec.purpose.length > 50 ? spec.purpose.slice(0, 47) + '…' : spec.purpose)
215
+ : '';
216
+ console.log(` ${PALETTE.subtle('┌─')} ${ICONS.spec} ${PALETTE.bold(PALETTE.primaryBright(spec.name))}`);
217
+ if (purpose) {
218
+ console.log(` ${PALETTE.subtle('│')} ${purpose}`);
219
+ }
220
+ console.log(` ${PALETTE.subtle('│')} ${PALETTE.success(String(spec.requirementCount))} requirements ${PALETTE.dim('·')} ${PALETTE.info(String(spec.scenarioCount))} scenarios`);
221
+ console.log(` ${PALETTE.subtle('└─')}`);
222
+ console.log();
223
+ }
224
+ // Interactive selection
225
+ if (isInteractive(options) && specs.length > 0) {
226
+ console.log(` ${PALETTE.subtle('─'.repeat(55))}`);
227
+ console.log();
228
+ const viewSpec = await selectPrompt({
229
+ message: 'Select a spec to view details:',
230
+ choices: [
231
+ ...specs.map(s => ({
232
+ name: `${PALETTE.primary('›')} ${s.name} (${s.requirementCount} req)`,
233
+ value: s.name,
234
+ })),
235
+ { name: PALETTE.dim(' (Cancel)'), value: '' },
236
+ ],
237
+ });
238
+ if (viewSpec) {
239
+ const { showCommand } = await import('./show.js');
240
+ await showCommand(viewSpec, {});
241
+ }
242
+ }
243
+ console.log();
244
+ }
245
+ function getSpecInfo(name, path) {
246
+ const info = {
247
+ name,
248
+ requirementCount: 0,
249
+ scenarioCount: 0,
250
+ path,
251
+ };
252
+ try {
253
+ const content = readFileSync(path, 'utf-8');
254
+ // Count requirements and scenarios
255
+ info.requirementCount = (content.match(/^### Requirement:/gm) ?? []).length;
256
+ info.scenarioCount = (content.match(/^#### Scenario:/gm) ?? []).length;
257
+ // Get purpose
258
+ const purposeMatch = content.match(/## Purpose\s*\n\s*(.+)/);
259
+ if (purposeMatch?.[1]) {
260
+ info.purpose = purposeMatch[1].trim();
261
+ }
262
+ }
263
+ catch {
264
+ // Ignore parsing errors
265
+ }
266
+ return info;
267
+ }
268
+ //# sourceMappingURL=list.js.map