@specforge/mcp 2.2.0 → 2.4.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 (44) hide show
  1. package/dist/cli/commands/blueprints.d.ts +6 -0
  2. package/dist/cli/commands/blueprints.d.ts.map +1 -0
  3. package/dist/cli/commands/blueprints.js +257 -0
  4. package/dist/cli/commands/blueprints.js.map +1 -0
  5. package/dist/cli/commands/blueprints.types.d.ts +55 -0
  6. package/dist/cli/commands/blueprints.types.d.ts.map +1 -0
  7. package/dist/cli/commands/blueprints.types.js +3 -0
  8. package/dist/cli/commands/blueprints.types.js.map +1 -0
  9. package/dist/cli/commands/index.d.ts +1 -0
  10. package/dist/cli/commands/index.d.ts.map +1 -1
  11. package/dist/cli/commands/index.js +1 -0
  12. package/dist/cli/commands/index.js.map +1 -1
  13. package/dist/cli/index.d.ts.map +1 -1
  14. package/dist/cli/index.js +3 -1
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/templates/content/sf-create-epics.d.ts +1 -1
  17. package/dist/cli/templates/content/sf-create-epics.d.ts.map +1 -1
  18. package/dist/cli/templates/content/sf-create-epics.js +72 -13
  19. package/dist/cli/templates/content/sf-create-epics.js.map +1 -1
  20. package/dist/cli/templates/content/sf-create-spec.d.ts +1 -1
  21. package/dist/cli/templates/content/sf-create-spec.d.ts.map +1 -1
  22. package/dist/cli/templates/content/sf-create-spec.js +91 -22
  23. package/dist/cli/templates/content/sf-create-spec.js.map +1 -1
  24. package/dist/cli/templates/content/sf-create-tickets.d.ts +1 -1
  25. package/dist/cli/templates/content/sf-create-tickets.d.ts.map +1 -1
  26. package/dist/cli/templates/content/sf-create-tickets.js +90 -18
  27. package/dist/cli/templates/content/sf-create-tickets.js.map +1 -1
  28. package/dist/tools/core/blueprint.d.ts +7 -0
  29. package/dist/tools/core/blueprint.d.ts.map +1 -0
  30. package/dist/tools/core/blueprint.js +210 -0
  31. package/dist/tools/core/blueprint.js.map +1 -0
  32. package/dist/tools/core/epic.d.ts.map +1 -1
  33. package/dist/tools/core/epic.js +95 -11
  34. package/dist/tools/core/epic.js.map +1 -1
  35. package/dist/tools/core/specification.d.ts.map +1 -1
  36. package/dist/tools/core/specification.js +98 -9
  37. package/dist/tools/core/specification.js.map +1 -1
  38. package/dist/tools/core/ticket.d.ts.map +1 -1
  39. package/dist/tools/core/ticket.js +48 -11
  40. package/dist/tools/core/ticket.js.map +1 -1
  41. package/dist/tools/index.d.ts.map +1 -1
  42. package/dist/tools/index.js +15 -0
  43. package/dist/tools/index.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register the blueprints command
4
+ */
5
+ export declare function registerBlueprintsCommand(program: Command): void;
6
+ //# sourceMappingURL=blueprints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprints.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/blueprints.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2GpC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgMhE"}
@@ -0,0 +1,257 @@
1
+ // mcp/src/cli/commands/blueprints.ts
2
+ import ora from 'ora';
3
+ import Table from 'cli-table3';
4
+ import chalk from 'chalk';
5
+ import { resolveConfig } from '../config/index.js';
6
+ import { withErrorHandler, CliError } from '../middleware/error-handler.js';
7
+ import { ApiClient } from '../../client/api-client.js';
8
+ /**
9
+ * Category display colors
10
+ */
11
+ const CATEGORY_COLORS = {
12
+ flowchart: chalk.cyan,
13
+ architecture: chalk.blue,
14
+ state: chalk.magenta,
15
+ sequence: chalk.yellow,
16
+ erd: chalk.green,
17
+ mockup: chalk.rgb(255, 165, 0), // orange
18
+ adr: chalk.gray,
19
+ component: chalk.blueBright,
20
+ deployment: chalk.red,
21
+ api: chalk.greenBright,
22
+ };
23
+ /**
24
+ * Status display colors
25
+ */
26
+ const STATUS_COLORS = {
27
+ draft: chalk.gray,
28
+ review: chalk.yellow,
29
+ approved: chalk.green,
30
+ deprecated: chalk.red,
31
+ };
32
+ /**
33
+ * Format category for display
34
+ */
35
+ function formatCategory(category) {
36
+ if (!category)
37
+ return chalk.gray('-');
38
+ const colorFn = CATEGORY_COLORS[category] || chalk.white;
39
+ return colorFn(category);
40
+ }
41
+ /**
42
+ * Format status for display
43
+ */
44
+ function formatStatus(status) {
45
+ if (!status)
46
+ return chalk.gray('-');
47
+ const colorFn = STATUS_COLORS[status] || chalk.white;
48
+ return colorFn(status);
49
+ }
50
+ /**
51
+ * Format format type for display
52
+ */
53
+ function formatFormatType(format) {
54
+ if (!format)
55
+ return chalk.gray('-');
56
+ switch (format) {
57
+ case 'mermaid':
58
+ return chalk.cyan('mermaid');
59
+ case 'markdown':
60
+ return chalk.blue('markdown');
61
+ case 'ascii':
62
+ return chalk.gray('ascii');
63
+ case 'mixed':
64
+ return chalk.magenta('mixed');
65
+ default:
66
+ return format;
67
+ }
68
+ }
69
+ /**
70
+ * Truncate text to max length
71
+ */
72
+ function truncate(text, maxLength) {
73
+ if (!text)
74
+ return '';
75
+ if (text.length <= maxLength)
76
+ return text;
77
+ return text.substring(0, maxLength - 3) + '...';
78
+ }
79
+ /**
80
+ * Create authenticated API client
81
+ */
82
+ function createApiClient() {
83
+ const config = resolveConfig();
84
+ if (!config.apiKey) {
85
+ throw new CliError('Not authenticated', 1, 'Run `specforge-mcp login` to authenticate first');
86
+ }
87
+ return new ApiClient({
88
+ apiKey: config.apiKey,
89
+ apiUrl: config.apiUrl,
90
+ debug: config.debug,
91
+ });
92
+ }
93
+ /**
94
+ * Register the blueprints command
95
+ */
96
+ export function registerBlueprintsCommand(program) {
97
+ const blueprintsCmd = program
98
+ .command('blueprints')
99
+ .description('List and view specification blueprints (diagrams, flowcharts, ADRs)')
100
+ .option('-s, --spec <id>', 'Specification ID (required)')
101
+ .option('-c, --category <category>', 'Filter by category (flowchart, architecture, state, sequence, erd, mockup, adr, component, deployment, api)')
102
+ .option('--status <status>', 'Filter by status (draft, review, approved, deprecated)')
103
+ .option('--json', 'Output as JSON')
104
+ .option('--toon', 'Output as TOON format')
105
+ .action(withErrorHandler(async (options) => {
106
+ if (!options.spec) {
107
+ console.error(chalk.red('Error: --spec <id> is required'));
108
+ process.exit(1);
109
+ }
110
+ const spinner = ora('Fetching blueprints...').start();
111
+ try {
112
+ const apiClient = createApiClient();
113
+ const result = (await apiClient.call('list_blueprints', {
114
+ specificationId: options.spec,
115
+ category: options.category,
116
+ status: options.status,
117
+ }));
118
+ spinner.stop();
119
+ const blueprints = result.items || [];
120
+ if (options.json) {
121
+ console.log(JSON.stringify(result, null, 2));
122
+ return;
123
+ }
124
+ if (blueprints.length === 0) {
125
+ console.log(chalk.yellow('No blueprints found for this specification.'));
126
+ return;
127
+ }
128
+ // Display as table
129
+ const table = new Table({
130
+ head: [
131
+ chalk.bold('Title'),
132
+ chalk.bold('Category'),
133
+ chalk.bold('Format'),
134
+ chalk.bold('Status'),
135
+ chalk.bold('Version'),
136
+ chalk.bold('ID'),
137
+ ],
138
+ colWidths: [30, 14, 10, 12, 10, 24],
139
+ wordWrap: true,
140
+ });
141
+ for (const bp of blueprints) {
142
+ table.push([
143
+ truncate(bp.title, 28),
144
+ formatCategory(bp.category),
145
+ formatFormatType(bp.format),
146
+ formatStatus(bp.status),
147
+ bp.version || '-',
148
+ chalk.gray(bp.id.substring(0, 22) + '...'),
149
+ ]);
150
+ }
151
+ console.log(table.toString());
152
+ console.log(chalk.gray(`\nTotal: ${blueprints.length} blueprint(s)`));
153
+ }
154
+ catch (error) {
155
+ spinner.fail('Failed to fetch blueprints');
156
+ throw error;
157
+ }
158
+ }));
159
+ // Subcommand: blueprints get <id>
160
+ blueprintsCmd
161
+ .command('get <id>')
162
+ .description('Get a specific blueprint with full content')
163
+ .option('--json', 'Output as JSON')
164
+ .option('--content', 'Show full content (default: true)', true)
165
+ .action(withErrorHandler(async (id, options) => {
166
+ const spinner = ora('Fetching blueprint...').start();
167
+ try {
168
+ const apiClient = createApiClient();
169
+ const blueprint = (await apiClient.call('get_blueprint', {
170
+ blueprintId: id,
171
+ }));
172
+ spinner.stop();
173
+ if (!blueprint) {
174
+ console.log(chalk.red('Blueprint not found.'));
175
+ process.exit(1);
176
+ }
177
+ if (options.json) {
178
+ console.log(JSON.stringify(blueprint, null, 2));
179
+ return;
180
+ }
181
+ // Display formatted output
182
+ console.log(chalk.bold.white(`\n${blueprint.title}`));
183
+ console.log(chalk.gray('═'.repeat(60)));
184
+ console.log();
185
+ // Metadata
186
+ console.log(chalk.bold('Category:'), formatCategory(blueprint.category));
187
+ console.log(chalk.bold('Status:'), formatStatus(blueprint.status));
188
+ console.log(chalk.bold('Format:'), formatFormatType(blueprint.format));
189
+ console.log(chalk.bold('Version:'), blueprint.version || '-');
190
+ console.log(chalk.bold('ID:'), chalk.gray(blueprint.id));
191
+ if (blueprint.tags && blueprint.tags.length > 0) {
192
+ console.log(chalk.bold('Tags:'), blueprint.tags.map(t => chalk.cyan(t)).join(', '));
193
+ }
194
+ if (blueprint.description) {
195
+ console.log();
196
+ console.log(chalk.bold('Description:'));
197
+ console.log(chalk.gray(blueprint.description));
198
+ }
199
+ if (blueprint.content && options.content !== false) {
200
+ console.log();
201
+ console.log(chalk.bold('Content:'));
202
+ console.log(chalk.gray('─'.repeat(60)));
203
+ console.log(blueprint.content);
204
+ }
205
+ console.log();
206
+ }
207
+ catch (error) {
208
+ spinner.fail('Failed to fetch blueprint');
209
+ throw error;
210
+ }
211
+ }));
212
+ // Subcommand: blueprints for-ticket <ticketId>
213
+ blueprintsCmd
214
+ .command('for-ticket <ticketId>')
215
+ .description('Get blueprints linked to a ticket')
216
+ .option('--json', 'Output as JSON')
217
+ .action(withErrorHandler(async (ticketId, options) => {
218
+ const spinner = ora('Fetching ticket blueprints...').start();
219
+ try {
220
+ const apiClient = createApiClient();
221
+ const result = (await apiClient.call('get_ticket_blueprints', {
222
+ ticketId,
223
+ }));
224
+ spinner.stop();
225
+ const references = result.references || [];
226
+ if (options.json) {
227
+ console.log(JSON.stringify(result, null, 2));
228
+ return;
229
+ }
230
+ if (references.length === 0) {
231
+ console.log(chalk.yellow('No blueprints linked to this ticket.'));
232
+ return;
233
+ }
234
+ console.log(chalk.bold(`\nBlueprints linked to ticket ${ticketId}:\n`));
235
+ for (const ref of references) {
236
+ const bp = ref.blueprint;
237
+ console.log(chalk.bold.cyan(` ${bp.title}`));
238
+ console.log(` Category: ${formatCategory(bp.category)}`);
239
+ console.log(` Format: ${formatFormatType(bp.format)}`);
240
+ if (ref.context) {
241
+ console.log(` Context: ${chalk.gray(ref.context)}`);
242
+ }
243
+ if (ref.section) {
244
+ console.log(` Section: ${chalk.gray(ref.section)}`);
245
+ }
246
+ console.log(` ID: ${chalk.gray(bp.id)}`);
247
+ console.log();
248
+ }
249
+ console.log(chalk.gray(`Total: ${references.length} blueprint(s)`));
250
+ }
251
+ catch (error) {
252
+ spinner.fail('Failed to fetch ticket blueprints');
253
+ throw error;
254
+ }
255
+ }));
256
+ }
257
+ //# sourceMappingURL=blueprints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprints.js","sourceRoot":"","sources":["../../../src/cli/commands/blueprints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Type definitions for blueprints CLI command
3
+ */
4
+ export type BlueprintCategory = 'flowchart' | 'architecture' | 'state' | 'sequence' | 'erd' | 'mockup' | 'adr' | 'component' | 'deployment' | 'api';
5
+ export type BlueprintStatus = 'draft' | 'review' | 'approved' | 'deprecated';
6
+ export type BlueprintFormat = 'markdown' | 'mermaid' | 'ascii' | 'mixed';
7
+ export interface Blueprint {
8
+ id: string;
9
+ specificationId: string;
10
+ title: string;
11
+ description?: string;
12
+ slug?: string;
13
+ category?: BlueprintCategory;
14
+ tags?: string[];
15
+ content?: string;
16
+ contentS3Key?: string;
17
+ format?: BlueprintFormat;
18
+ order?: number;
19
+ status?: BlueprintStatus;
20
+ version?: string;
21
+ createdAt?: string;
22
+ updatedAt?: string;
23
+ }
24
+ export interface TicketBlueprintReference {
25
+ id: string;
26
+ ticketId: string;
27
+ blueprintId: string;
28
+ context?: string;
29
+ section?: string;
30
+ createdAt?: string;
31
+ blueprint?: Blueprint;
32
+ }
33
+ export interface BlueprintsListOptions {
34
+ spec?: string;
35
+ category?: BlueprintCategory;
36
+ status?: BlueprintStatus;
37
+ json?: boolean;
38
+ toon?: boolean;
39
+ }
40
+ export interface BlueprintGetOptions {
41
+ id: string;
42
+ json?: boolean;
43
+ toon?: boolean;
44
+ content?: boolean;
45
+ }
46
+ export interface ListBlueprintsResult {
47
+ items: Blueprint[];
48
+ pagination?: {
49
+ limit: number;
50
+ offset: number;
51
+ total?: number;
52
+ hasMore?: boolean;
53
+ };
54
+ }
55
+ //# sourceMappingURL=blueprints.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprints.types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/blueprints.types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,cAAc,GACd,OAAO,GACP,UAAU,GACV,KAAK,GACL,QAAQ,GACR,KAAK,GACL,WAAW,GACX,YAAY,GACZ,KAAK,CAAC;AAEV,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAE7E,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ // mcp/src/cli/commands/blueprints.types.ts
2
+ export {};
3
+ //# sourceMappingURL=blueprints.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprints.types.js","sourceRoot":"","sources":["../../../src/cli/commands/blueprints.types.ts"],"names":[],"mappings":"AAAA,2CAA2C"}
@@ -16,4 +16,5 @@ export { registerNextCommand } from './next.js';
16
16
  export { registerBlockedCommand } from './blocked.js';
17
17
  export { registerReviewCommand } from './review/index.js';
18
18
  export { registerFeedbackCommand } from './feedback.js';
19
+ export { registerBlueprintsCommand } from './blueprints.js';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -16,4 +16,5 @@ export { registerNextCommand } from './next.js';
16
16
  export { registerBlockedCommand } from './blocked.js';
17
17
  export { registerReviewCommand } from './review/index.js';
18
18
  export { registerFeedbackCommand } from './feedback.js';
19
+ export { registerBlueprintsCommand } from './blueprints.js';
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC;;GAEG;AACH,QAAA,MAAM,WAAW,UAAU,CAAC;AAuK5B;;GAEG;AACH,QAAA,MAAM,OAAO,SAAkB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAQ1D;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC;;GAEG;AACH,QAAA,MAAM,WAAW,UAAU,CAAC;AA0K5B;;GAEG;AACH,QAAA,MAAM,OAAO,SAAkB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAQ1D;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/cli/index.js CHANGED
@@ -9,7 +9,7 @@ import { authGuardHook } from './middleware/auth-guard.js';
9
9
  import { withErrorHandler, debugLog } from './middleware/error-handler.js';
10
10
  import { resolveConfig } from './config/loader.js';
11
11
  import { colors } from './ui/index.js';
12
- import { registerLoginCommand, registerInitCommand, registerConfigureCommand, registerDoctorCommand, registerStatusCommand, registerProjectsCommand, registerSpecsCommand, registerSwitchCommand, registerTicketsCommand, registerNextCommand, registerBlockedCommand, registerFeedbackCommand, } from './commands/index.js';
12
+ import { registerLoginCommand, registerInitCommand, registerConfigureCommand, registerDoctorCommand, registerStatusCommand, registerProjectsCommand, registerSpecsCommand, registerSwitchCommand, registerTicketsCommand, registerNextCommand, registerBlockedCommand, registerFeedbackCommand, registerBlueprintsCommand, } from './commands/index.js';
13
13
  import { registerTicketCommand } from './commands/ticket/index.js';
14
14
  import { registerSessionCommands } from './commands/session/index.js';
15
15
  import { registerDebugCommands } from './commands/debug/index.js';
@@ -98,6 +98,8 @@ function registerCommands(program) {
98
98
  registerProjectsCommand(program);
99
99
  // E07 - Specs Command (implemented)
100
100
  registerSpecsCommand(program);
101
+ // Blueprints Command (implemented)
102
+ registerBlueprintsCommand(program);
101
103
  // E08 - Switch Command (implemented)
102
104
  registerSwitchCommand(program);
103
105
  // E09 - Tickets Command (implemented)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Template for creating epics with epic-level patterns from plan phases.
5
5
  */
6
- export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with patterns extracted from plan phases.\n\n## Arguments\n- `$ARGUMENTS` - Required: Specification ID\n\n## Task\n\n### 1. Get Specification\n\n**MCP Calls:**\n```typescript\nget_specification($ARGUMENTS)\n```\n\n### 2. Read Original Plan\n\n**Logic:**\n- Locate original plan file from specification metadata\n- Parse plan phases/sections\n- Extract epic-level descriptions\n- Identify patterns per epic\n\n### 3. Create Epics\n\n**MCP Calls:**\n```typescript\n// For each phase/section in plan\nfor (const phase of phases) {\n await create_epic({\n specificationId: $ARGUMENTS,\n title: phase.title,\n description: phase.description,\n patterns: phase.patterns,\n order: phase.order\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEPICS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSpecification: {title}\n\nCREATED EPICS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE1 \u2502 {title} \u2502 {description}\nE2 \u2502 {title} \u2502 {description}\nE3 \u2502 {title} \u2502 {description}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-tickets <epic-id> for each epic\n```\n\n## Notes\n- Creates epic structure from plan phases\n- Preserves patterns for ticket creation\n- Use /sf-create-tickets for each epic\n";
6
+ export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with objectives extracted from plan phases.\n\n## Arguments\n- `$ARGUMENTS` - Required: Specification ID\n\n## Task\n\n### 1. Get Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'get',\n specificationId: $ARGUMENTS,\n include: ['epics', 'patterns'] // Get existing epics and inherited patterns\n})\n```\n\n### 2. Read Original Plan\n\n**Logic:**\n- Locate original plan file from specification metadata\n- Parse plan phases/sections\n- Extract epic-level titles, descriptions, and objectives\n- Identify epic-specific technical details\n\n### 3. Create Epics\n\n**MCP Calls:**\n```typescript\n// For each phase/section in plan\nfor (const phase of phases) {\n await epic({\n operation: 'create',\n\n // === REQUIRED ===\n specificationId: $ARGUMENTS,\n title: phase.title,\n description: phase.description,\n objective: phase.objective, // Clear goal statement\n\n // === CORE (recommended) ===\n content: phase.fullContent, // Full markdown content\n scope: phase.scope, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['phase1', 'backend'],\n estimatedHours: 40,\n\n // === PLANNING ===\n goals: ['Implement X', 'Enable Y'],\n acceptanceCriteria: ['Feature X works', 'Tests pass'],\n guardrails: ['Do NOT break existing API'],\n constraints: ['Must be backward compatible'],\n assumptions: ['Database schema is stable'],\n risks: ['May require migration'],\n\n // === TECHNICAL ===\n architecture: 'Service layer with repository pattern',\n fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',\n techStack: ['typescript', 'prisma'],\n dependencies: ['zod', '@prisma/client'],\n apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },\n\n // === PATTERN OVERRIDES (override spec-level patterns) ===\n sharedPatterns: {\n errorHandling: 'Custom error handling for this epic',\n validation: 'Use zod schemas'\n },\n additionalImports: [\n \"import { z } from 'zod'\",\n \"import { PrismaClient } from '@prisma/client'\"\n ],\n commonFiles: {\n 'types.ts': 'Shared types for this epic',\n 'utils.ts': 'Epic-specific utilities'\n }\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEPICS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSpecification: {title}\n\nCREATED EPICS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE1 \u2502 {title} \u2502 {objective}\nE2 \u2502 {title} \u2502 {objective}\nE3 \u2502 {title} \u2502 {objective}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-tickets <epic-id> for each epic\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| specificationId | \u2705 | Parent specification |\n| title | \u2705 | Epic title |\n| description | \u2705 | Epic description |\n| objective | \u2705 | Clear goal statement |\n| content | | Full markdown content |\n| scope | | In/out of scope |\n| goals | | Epic-specific goals |\n| guardrails | | What NOT to do |\n| architecture | | Epic-level design |\n| sharedPatterns | | Override spec patterns |\n| additionalImports | | Extra imports for tickets |\n\n## Notes\n- specificationId, title, description, and objective are required\n- sharedPatterns override specification-level patterns\n- additionalImports are added to spec-level commonImports\n- Use /sf-create-tickets for each epic after creation\n";
7
7
  //# sourceMappingURL=sf-create-epics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,m9EA+DnC,CAAC"}
1
+ {"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,upJA0HnC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export const SF_CREATE_EPICS_CONTENT = `# Create Epics (SpecForge)
7
7
 
8
- Create epics for a specification with patterns extracted from plan phases.
8
+ Create epics for a specification with objectives extracted from plan phases.
9
9
 
10
10
  ## Arguments
11
11
  - \`$ARGUMENTS\` - Required: Specification ID
@@ -16,7 +16,11 @@ Create epics for a specification with patterns extracted from plan phases.
16
16
 
17
17
  **MCP Calls:**
18
18
  \`\`\`typescript
19
- get_specification($ARGUMENTS)
19
+ specification({
20
+ operation: 'get',
21
+ specificationId: $ARGUMENTS,
22
+ include: ['epics', 'patterns'] // Get existing epics and inherited patterns
23
+ })
20
24
  \`\`\`
21
25
 
22
26
  ### 2. Read Original Plan
@@ -24,8 +28,8 @@ get_specification($ARGUMENTS)
24
28
  **Logic:**
25
29
  - Locate original plan file from specification metadata
26
30
  - Parse plan phases/sections
27
- - Extract epic-level descriptions
28
- - Identify patterns per epic
31
+ - Extract epic-level titles, descriptions, and objectives
32
+ - Identify epic-specific technical details
29
33
 
30
34
  ### 3. Create Epics
31
35
 
@@ -33,12 +37,50 @@ get_specification($ARGUMENTS)
33
37
  \`\`\`typescript
34
38
  // For each phase/section in plan
35
39
  for (const phase of phases) {
36
- await create_epic({
40
+ await epic({
41
+ operation: 'create',
42
+
43
+ // === REQUIRED ===
37
44
  specificationId: $ARGUMENTS,
38
45
  title: phase.title,
39
46
  description: phase.description,
40
- patterns: phase.patterns,
41
- order: phase.order
47
+ objective: phase.objective, // Clear goal statement
48
+
49
+ // === CORE (recommended) ===
50
+ content: phase.fullContent, // Full markdown content
51
+ scope: phase.scope, // What's in/out of scope
52
+ priority: 'high', // high | medium | low
53
+ tags: ['phase1', 'backend'],
54
+ estimatedHours: 40,
55
+
56
+ // === PLANNING ===
57
+ goals: ['Implement X', 'Enable Y'],
58
+ acceptanceCriteria: ['Feature X works', 'Tests pass'],
59
+ guardrails: ['Do NOT break existing API'],
60
+ constraints: ['Must be backward compatible'],
61
+ assumptions: ['Database schema is stable'],
62
+ risks: ['May require migration'],
63
+
64
+ // === TECHNICAL ===
65
+ architecture: 'Service layer with repository pattern',
66
+ fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',
67
+ techStack: ['typescript', 'prisma'],
68
+ dependencies: ['zod', '@prisma/client'],
69
+ apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },
70
+
71
+ // === PATTERN OVERRIDES (override spec-level patterns) ===
72
+ sharedPatterns: {
73
+ errorHandling: 'Custom error handling for this epic',
74
+ validation: 'Use zod schemas'
75
+ },
76
+ additionalImports: [
77
+ "import { z } from 'zod'",
78
+ "import { PrismaClient } from '@prisma/client'"
79
+ ],
80
+ commonFiles: {
81
+ 'types.ts': 'Shared types for this epic',
82
+ 'utils.ts': 'Epic-specific utilities'
83
+ }
42
84
  })
43
85
  }
44
86
  \`\`\`
@@ -54,17 +96,34 @@ Specification: {title}
54
96
 
55
97
  CREATED EPICS
56
98
  ─────────────────────────────────────────────────────────────────
57
- E1 │ {title} │ {description}
58
- E2 │ {title} │ {description}
59
- E3 │ {title} │ {description}
99
+ E1 │ {title} │ {objective}
100
+ E2 │ {title} │ {objective}
101
+ E3 │ {title} │ {objective}
60
102
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
103
 
62
104
  Next: Run /sf-create-tickets <epic-id> for each epic
63
105
  \`\`\`
64
106
 
107
+ ## Field Reference
108
+
109
+ | Field | Required | Description |
110
+ |-------|----------|-------------|
111
+ | specificationId | ✅ | Parent specification |
112
+ | title | ✅ | Epic title |
113
+ | description | ✅ | Epic description |
114
+ | objective | ✅ | Clear goal statement |
115
+ | content | | Full markdown content |
116
+ | scope | | In/out of scope |
117
+ | goals | | Epic-specific goals |
118
+ | guardrails | | What NOT to do |
119
+ | architecture | | Epic-level design |
120
+ | sharedPatterns | | Override spec patterns |
121
+ | additionalImports | | Extra imports for tickets |
122
+
65
123
  ## Notes
66
- - Creates epic structure from plan phases
67
- - Preserves patterns for ticket creation
68
- - Use /sf-create-tickets for each epic
124
+ - specificationId, title, description, and objective are required
125
+ - sharedPatterns override specification-level patterns
126
+ - additionalImports are added to spec-level commonImports
127
+ - Use /sf-create-tickets for each epic after creation
69
128
  `;
70
129
  //# sourceMappingURL=sf-create-epics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DtC,CAAC"}
1
+ {"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HtC,CAAC"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Template for creating a SpecForge specification with patterns from a plan.
5
5
  */
6
- export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with patterns extracted from a plan document.\n\n## Arguments\n- `$ARGUMENTS` - Required: Path to plan markdown file\n\n## Task\n\n### 1. Read and Analyze Plan\n\n**Logic:**\n- Read file at $ARGUMENTS\n- Extract specification metadata\n- Identify patterns and guardrails\n- Parse high-level structure\n- Extract success criteria\n\n### 2. Create Specification\n\n**MCP Calls:**\n```typescript\ncreate_specification({\n title: extractedTitle,\n description: extractedDescription,\n patterns: extractedPatterns,\n guardrails: extractedGuardrails,\n successCriteria: extractedCriteria\n})\n```\n\n### 3. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSPECIFICATION CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTitle: {title}\nID: {specificationId}\n\nEXTRACTED PATTERNS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2022 {pattern1}\n\u2022 {pattern2}\n\u2022 {pattern3}\n\nGUARDRAILS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2022 {guardrail1}\n\u2022 {guardrail2}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-epics {specificationId} to create epics\n```\n\n## Notes\n- Creates specification structure only\n- Extracts patterns for epic/ticket creation\n- Use /sf-create-epics to add epics\n";
6
+ export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with metadata extracted from a plan document.\n\n## Arguments\n- `$ARGUMENTS` - Required: Path to plan markdown file\n\n## Task\n\n### 1. Read and Analyze Plan\n\n**Logic:**\n- Read file at $ARGUMENTS\n- Extract specification title and description\n- Identify priority level (high/medium/low)\n- Parse tags from plan categories/themes\n- Extract goals, requirements, and constraints\n\n### 2. Create Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'create',\n\n // === REQUIRED ===\n projectId: currentProjectId,\n title: extractedTitle,\n\n // === CORE (recommended) ===\n description: shortSummary, // 2-3 sentence summary\n content: fullMarkdownContent, // Full markdown content\n background: problemContext, // Why this exists\n scope: scopeDefinition, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['feature', 'api'],\n estimatedHours: 40,\n targetAudience: 'developers',\n\n // === GOALS & REQUIREMENTS ===\n goals: ['Enable X', 'Improve Y'],\n requirements: ['Must do A', 'Must support B'],\n nonFunctionalRequirements: ['< 100ms latency', '99.9% uptime'],\n acceptanceCriteria: ['Users can X', 'System handles Y'],\n successMetrics: ['50% reduction in Z'],\n\n // === GUARDRAILS & RISKS ===\n guardrails: ['Do NOT modify X', 'Avoid pattern Y'],\n constraints: ['Must use existing auth', 'Budget limit'],\n assumptions: ['Users have Node 18+'],\n risks: ['Third-party API may change'],\n\n // === TECHNICAL ===\n architecture: 'Microservices with event-driven communication',\n fileStructure: 'src/\\n components/\\n services/\\n utils/',\n techStack: ['typescript', 'react', 'node'],\n dependencies: ['@aws-sdk/client-s3', 'zod'],\n apiContracts: { endpoints: [{ path: '/api/v1/users', method: 'GET' }] },\n\n // === PATTERN INHERITANCE (for epics/tickets) ===\n codeStandards: {\n errorHandling: 'Use Result<T, E> pattern',\n naming: 'camelCase for functions, PascalCase for types'\n },\n commonImports: [\n \"import { logger } from '@/lib/logger'\",\n \"import { db } from '@/lib/db'\"\n ],\n returnTypes: {\n success: '{ success: true, data: T }',\n error: '{ success: false, error: string }'\n },\n\n // === VALIDATION (for CI/CD) ===\n validationCommands: {\n test: 'npm test',\n lint: 'npm run lint',\n build: 'npm run build',\n typeCheck: 'npm run typecheck'\n },\n workingDirectory: './src',\n outputDirectory: './dist'\n})\n```\n\n### 3. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSPECIFICATION CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTitle: {title}\nID: {specificationId}\nPriority: {priority}\n\nDESCRIPTION\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{description}\n\nTAGS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{tags}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-epics {specificationId} to create epics\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| projectId | \u2705 | Project to create spec in |\n| title | \u2705 | Specification title |\n| description | | Short summary |\n| content | | Full markdown content |\n| background | | Problem context |\n| scope | | In/out of scope |\n| goals | | Business objectives |\n| requirements | | Functional requirements |\n| guardrails | | What NOT to do |\n| architecture | | System design |\n| techStack | | Technologies used |\n| codeStandards | | Inherited by epics/tickets |\n\n## Notes\n- Only projectId and title are required\n- codeStandards, commonImports, returnTypes are inherited by child epics/tickets\n- Use /sf-create-epics to add epics after creation\n";
7
7
  //# sourceMappingURL=sf-create-spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,gxFA4DlC,CAAC"}
1
+ {"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,wsKAiIlC,CAAC"}