specpilot 1.1.3 ā 1.2.1
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.
- package/README.md +33 -4
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +8 -9
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +24 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/utils/projectMigrator.d.ts +6 -0
- package/dist/utils/projectMigrator.d.ts.map +1 -1
- package/dist/utils/projectMigrator.js +25 -0
- package/dist/utils/projectMigrator.js.map +1 -1
- package/dist/utils/specGenerator.d.ts +2 -0
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +131 -7
- package/dist/utils/specGenerator.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -171,13 +171,22 @@ specpilot validate --fix
|
|
|
171
171
|
# List available templates
|
|
172
172
|
specpilot list
|
|
173
173
|
|
|
174
|
-
# Migrate legacy structures (
|
|
174
|
+
# Migrate legacy structures (only if you have old .project-spec folder)
|
|
175
|
+
# Note: Only use this if you're upgrading from an older SpecPilot version
|
|
175
176
|
specpilot migrate --from complex --to simple --backup
|
|
176
177
|
|
|
177
178
|
# Generate or update specs from a natural language description
|
|
178
179
|
specpilot specify "A simple REST API for todos" --update
|
|
179
180
|
```
|
|
180
181
|
|
|
182
|
+
#### When to Use Which Command
|
|
183
|
+
|
|
184
|
+
- **`specpilot init <name>`** - Starting a brand new project from scratch
|
|
185
|
+
- **`specpilot add-specs`** - Adding specifications to an existing codebase
|
|
186
|
+
- **`specpilot migrate`** - Upgrading from old .project-spec structure (legacy)
|
|
187
|
+
- **`specpilot validate`** - Checking your specs for errors
|
|
188
|
+
- **`specpilot specify`** - Generating specs from natural language description
|
|
189
|
+
|
|
181
190
|
> Tip: Run `specpilot --help` or `specpilot <command> --help` for full options.
|
|
182
191
|
|
|
183
192
|
## Configuration
|
|
@@ -320,14 +329,34 @@ specpilot validate --fix
|
|
|
320
329
|
|
|
321
330
|
#### Migration Issues
|
|
322
331
|
|
|
332
|
+
**Error: "Source structure 'complex' not found"**
|
|
333
|
+
|
|
334
|
+
This means you're trying to migrate from a structure that doesn't exist in your project.
|
|
335
|
+
|
|
323
336
|
```bash
|
|
324
|
-
#
|
|
325
|
-
|
|
337
|
+
# Check what's in your project directory
|
|
338
|
+
ls -la
|
|
326
339
|
|
|
327
|
-
#
|
|
340
|
+
# For NEW projects, use:
|
|
341
|
+
specpilot init my-project
|
|
342
|
+
|
|
343
|
+
# For EXISTING projects without specs:
|
|
344
|
+
specpilot add-specs
|
|
345
|
+
|
|
346
|
+
# Only use migrate if you have an old .project-spec folder:
|
|
328
347
|
specpilot migrate --from complex --to simple --backup
|
|
329
348
|
```
|
|
330
349
|
|
|
350
|
+
**When to use migrate:**
|
|
351
|
+
- You have an old `.project-spec` folder from a previous SpecPilot version
|
|
352
|
+
- You're upgrading between SpecPilot structure versions
|
|
353
|
+
- You need to convert between specification formats
|
|
354
|
+
|
|
355
|
+
**When NOT to use migrate:**
|
|
356
|
+
- Starting a new project (use `init` instead)
|
|
357
|
+
- Adding specs to existing code (use `add-specs` instead)
|
|
358
|
+
- Your project has no specification folder yet
|
|
359
|
+
|
|
331
360
|
### Debug Mode
|
|
332
361
|
|
|
333
362
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-specs.d.ts","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"add-specs.d.ts","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA8H7D"}
|
|
@@ -107,15 +107,14 @@ async function addSpecsCommand(options) {
|
|
|
107
107
|
logger.success('ā
.specs folder created successfully!');
|
|
108
108
|
logger.info(`š Location: ${specsDir}`);
|
|
109
109
|
// Show next steps
|
|
110
|
-
console.log(chalk_1.default.cyan(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
console.log(` \n specpilot validate ${chalk_1.default.dim('# Validate your specifications')}`);
|
|
110
|
+
console.log(chalk_1.default.cyan(`
|
|
111
|
+
š Next steps to populate your specs with AI:
|
|
112
|
+
1. Open .specs/README.md for full guidance
|
|
113
|
+
2. Copy the onboarding prompt from .specs/development/prompts.md
|
|
114
|
+
3. Paste into your AI agent and run it
|
|
115
|
+
4. Review the generated spec files
|
|
116
|
+
|
|
117
|
+
Your project is now ready for AI-assisted development!`));
|
|
119
118
|
}
|
|
120
119
|
catch (error) {
|
|
121
120
|
logger.error(`ā Failed to add specs: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":";;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBAwInE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -153,11 +153,14 @@ async function initCommand(name, options) {
|
|
|
153
153
|
logger.info(`š Location: ${targetDir}`);
|
|
154
154
|
logger.info(`š Specs: ${(0, path_1.join)(targetDir, options.specsName)}`);
|
|
155
155
|
// Show next steps
|
|
156
|
-
console.log(chalk_1.default.cyan(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
156
|
+
console.log(chalk_1.default.cyan(`
|
|
157
|
+
š Next steps to populate your specs with AI:
|
|
158
|
+
1. Open .specs/README.md for full guidance
|
|
159
|
+
2. Copy the onboarding prompt from .specs/development/prompts.md
|
|
160
|
+
3. Paste into your AI agent and run it
|
|
161
|
+
4. Review the generated spec files
|
|
162
|
+
|
|
163
|
+
Your project is now ready for AI-assisted development!`));
|
|
161
164
|
}
|
|
162
165
|
catch (error) {
|
|
163
166
|
logger.error(`ā Failed to initialize project: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBA8E3D"}
|
package/dist/commands/migrate.js
CHANGED
|
@@ -12,6 +12,30 @@ async function migrateCommand(options) {
|
|
|
12
12
|
try {
|
|
13
13
|
logger.info('š Starting project migration...');
|
|
14
14
|
const migrator = new projectMigrator_1.ProjectMigrator();
|
|
15
|
+
// Check if migration is actually needed
|
|
16
|
+
const migrationNeeded = await migrator.checkMigrationNeeded(options.dir, options.from, options.to);
|
|
17
|
+
if (!migrationNeeded.needed) {
|
|
18
|
+
if (migrationNeeded.reason === 'no_source') {
|
|
19
|
+
logger.error(`ā Source structure "${options.from}" not found in ${options.dir}`);
|
|
20
|
+
console.log(chalk_1.default.yellow('\nš” When to use migrate:'));
|
|
21
|
+
console.log(' ⢠Upgrading from old .project-spec to new .specs structure');
|
|
22
|
+
console.log(' ⢠Converting between different specification formats\n');
|
|
23
|
+
console.log(chalk_1.default.cyan('š For new projects, use:'));
|
|
24
|
+
console.log(chalk_1.default.white(' specpilot init my-project'));
|
|
25
|
+
console.log(chalk_1.default.cyan('\nš¦ For existing codebases without specs:'));
|
|
26
|
+
console.log(chalk_1.default.white(' specpilot add-specs'));
|
|
27
|
+
console.log(chalk_1.default.cyan('\nš For help:'));
|
|
28
|
+
console.log(chalk_1.default.white(' specpilot migrate --help'));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
else if (migrationNeeded.reason === 'already_migrated') {
|
|
32
|
+
logger.info('ā
Project is already using the target structure.');
|
|
33
|
+
console.log(chalk_1.default.yellow(`\nā ļø The "${options.to}" structure already exists.`));
|
|
34
|
+
console.log(chalk_1.default.cyan('\nNext steps:'));
|
|
35
|
+
console.log(' specpilot validate # Validate your specs');
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
15
39
|
// Validate source structure exists
|
|
16
40
|
const sourceExists = await migrator.validateSource(options.dir, options.from);
|
|
17
41
|
if (!sourceExists) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":";;;;;AAcA,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,13 @@ export interface MigrationResult {
|
|
|
8
8
|
filesCreated: number;
|
|
9
9
|
warnings: string[];
|
|
10
10
|
}
|
|
11
|
+
export interface MigrationCheck {
|
|
12
|
+
needed: boolean;
|
|
13
|
+
reason: 'no_source' | 'already_migrated' | 'ready' | string;
|
|
14
|
+
message?: string;
|
|
15
|
+
}
|
|
11
16
|
export declare class ProjectMigrator {
|
|
17
|
+
checkMigrationNeeded(projectDir: string, sourceType: string, targetType: string): Promise<MigrationCheck>;
|
|
12
18
|
validateSource(projectDir: string, sourceType: string): Promise<boolean>;
|
|
13
19
|
createBackup(projectDir: string): Promise<void>;
|
|
14
20
|
migrate(projectDir: string, options: MigrationOptions): Promise<MigrationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectMigrator.d.ts","sourceRoot":"","sources":["../../src/utils/projectMigrator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,eAAe;IACpB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxE,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4BtF,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;YAWV,kBAAkB;YAkClB,iBAAiB;IAkB/B,OAAO,CAAC,sBAAsB;YA4BhB,gBAAgB;YAShB,wBAAwB;YAsBxB,iBAAiB;IA2C/B,OAAO,CAAC,aAAa;CAgBtB"}
|
|
1
|
+
{"version":3,"file":"projectMigrator.d.ts","sourceRoot":"","sources":["../../src/utils/projectMigrator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,kBAAkB,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAe;IACpB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6BzG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxE,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4BtF,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;YAWV,kBAAkB;YAkClB,iBAAiB;IAkB/B,OAAO,CAAC,sBAAsB;YA4BhB,gBAAgB;YAShB,wBAAwB;YAsBxB,iBAAiB;IA2C/B,OAAO,CAAC,aAAa;CAgBtB"}
|
|
@@ -4,6 +4,31 @@ exports.ProjectMigrator = void 0;
|
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
class ProjectMigrator {
|
|
7
|
+
async checkMigrationNeeded(projectDir, sourceType, targetType) {
|
|
8
|
+
const sourceDir = (0, path_1.join)(projectDir, this.getSourceDirName(sourceType));
|
|
9
|
+
const targetDir = (0, path_1.join)(projectDir, this.getTargetDirName(targetType));
|
|
10
|
+
// Check if source exists
|
|
11
|
+
if (!(0, fs_1.existsSync)(sourceDir)) {
|
|
12
|
+
return {
|
|
13
|
+
needed: false,
|
|
14
|
+
reason: 'no_source',
|
|
15
|
+
message: `Source structure "${sourceType}" not found. The directory ${sourceDir} does not exist.`
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Check if target already exists
|
|
19
|
+
if ((0, fs_1.existsSync)(targetDir)) {
|
|
20
|
+
return {
|
|
21
|
+
needed: false,
|
|
22
|
+
reason: 'already_migrated',
|
|
23
|
+
message: `Target structure "${targetType}" already exists at ${targetDir}.`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
needed: true,
|
|
28
|
+
reason: 'ready',
|
|
29
|
+
message: 'Migration can proceed'
|
|
30
|
+
};
|
|
31
|
+
}
|
|
7
32
|
async validateSource(projectDir, sourceType) {
|
|
8
33
|
const sourceDir = (0, path_1.join)(projectDir, this.getSourceDirName(sourceType));
|
|
9
34
|
return (0, fs_1.existsSync)(sourceDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectMigrator.js","sourceRoot":"","sources":["../../src/utils/projectMigrator.ts"],"names":[],"mappings":";;;AAAA,2BAA6G;AAC7G,+BAA4B;
|
|
1
|
+
{"version":3,"file":"projectMigrator.js","sourceRoot":"","sources":["../../src/utils/projectMigrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,8 @@ export interface SpecGeneratorOptions {
|
|
|
32
32
|
export declare class SpecGenerator {
|
|
33
33
|
private templateEngine;
|
|
34
34
|
constructor(templateEngine: TemplateEngine);
|
|
35
|
+
private SPECS_README_TEMPLATE;
|
|
36
|
+
private generateReadmeMd;
|
|
35
37
|
generateSpecs(options: SpecGeneratorOptions): Promise<void>;
|
|
36
38
|
private generateProjectYaml;
|
|
37
39
|
private generateArchitectureMd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzE,KAAK,EAAE;YACL,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,EAAE,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,cAAc,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,YAAY,EAAE;YACZ,UAAU,EAAE,MAAM,EAAE,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,CAAC;KACH,CAAC;CACH;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"specGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzE,KAAK,EAAE;YACL,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,EAAE,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,cAAc,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,YAAY,EAAE;YACZ,UAAU,EAAE,MAAM,EAAE,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,CAAC;KACH,CAAC;CACH;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAGlD,OAAO,CAAC,qBAAqB,CAuCkE;YAEjF,gBAAgB;IAKxB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;YAqCnD,mBAAmB;YAUnB,sBAAsB;YAUtB,sBAAsB;YA8BtB,eAAe;YAcf,eAAe;YA8Bf,iBAAiB;YA6BjB,cAAc;YA4Bd,iBAAiB;YA2BjB,qBAAqB;YA0BrB,iBAAiB;YAqHjB,eAAe;YA0Bf,4BAA4B;CA+C3C"}
|
|
@@ -6,6 +6,51 @@ const fs_1 = require("fs");
|
|
|
6
6
|
class SpecGenerator {
|
|
7
7
|
constructor(templateEngine) {
|
|
8
8
|
this.templateEngine = templateEngine;
|
|
9
|
+
// Consolidated README template - overview + urgent onboarding steps
|
|
10
|
+
this.SPECS_README_TEMPLATE = `# SpecPilot Specifications
|
|
11
|
+
|
|
12
|
+
This folder contains structured documentation for your codebase.
|
|
13
|
+
|
|
14
|
+
## š Quick Start: Populate Your Specs
|
|
15
|
+
|
|
16
|
+
Your specs are generated but empty. Follow these steps to fill them with AI-assisted details:
|
|
17
|
+
|
|
18
|
+
### Step 1: Copy the Onboarding Prompt
|
|
19
|
+
1. Open [\`development/prompts.md\`](development/prompts.md).
|
|
20
|
+
2. Find the "First-Use Onboarding Prompt" section.
|
|
21
|
+
3. Copy the entire fenced code block (\`\`\`...\`\`\`).
|
|
22
|
+
|
|
23
|
+
### Step 2: Paste into Your AI Agent
|
|
24
|
+
1. In your IDE (VS Code, Cursor, etc.), open the AI chat.
|
|
25
|
+
2. Paste the prompt and run it.
|
|
26
|
+
3. The AI will analyze your codebase and populate all spec files.
|
|
27
|
+
|
|
28
|
+
### Step 3: Review & Iterate
|
|
29
|
+
- Check the generated content in each \`.specs\` file.
|
|
30
|
+
- Refine as needed (e.g., add missing details).
|
|
31
|
+
- Run \`specpilot validate\` to ensure consistency.
|
|
32
|
+
|
|
33
|
+
## š File Structure
|
|
34
|
+
- \`project/\`: Metadata and requirements
|
|
35
|
+
- \`architecture/\`: Design and APIs
|
|
36
|
+
- \`planning/\`: Tasks and roadmap
|
|
37
|
+
- \`quality/\`: Testing
|
|
38
|
+
- \`development/\`: Docs and prompts
|
|
39
|
+
|
|
40
|
+
## š ļø Commands
|
|
41
|
+
\\\`\\\`\\\`bash
|
|
42
|
+
# Validate your specs
|
|
43
|
+
specpilot validate
|
|
44
|
+
|
|
45
|
+
# Update specs after code changes
|
|
46
|
+
specpilot add-specs
|
|
47
|
+
\\\`\\\`\\\`
|
|
48
|
+
|
|
49
|
+
For AI guidelines and prompt history, see [\`development/prompts.md\`](development/prompts.md).`;
|
|
50
|
+
}
|
|
51
|
+
async generateReadmeMd(specsDir, context) {
|
|
52
|
+
const rendered = this.templateEngine.renderFromString(this.SPECS_README_TEMPLATE, context);
|
|
53
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(specsDir, 'README.md'), rendered);
|
|
9
54
|
}
|
|
10
55
|
async generateSpecs(options) {
|
|
11
56
|
const specsDir = (0, path_1.join)(options.targetDir, options.specsName);
|
|
@@ -23,6 +68,8 @@ class SpecGenerator {
|
|
|
23
68
|
contributors: [options.author || 'Your Name'],
|
|
24
69
|
architecture: options.analysis?.architecture
|
|
25
70
|
};
|
|
71
|
+
// Generate README.md first
|
|
72
|
+
await this.generateReadmeMd(specsDir, context);
|
|
26
73
|
// Write spec files in correct subfolders
|
|
27
74
|
await this.generateProjectYaml((0, path_1.join)(specsDir, 'project'), context);
|
|
28
75
|
await this.generateRequirementsMd((0, path_1.join)(specsDir, 'project'), context);
|
|
@@ -235,17 +282,94 @@ This file (prompts.md) contains ALL AI interactions for {{projectName}}. Update
|
|
|
235
282
|
**šØ MANDATE**: Update with every AI interaction.
|
|
236
283
|
|
|
237
284
|
## First-Use Onboarding Prompt
|
|
238
|
-
|
|
285
|
+
|
|
286
|
+
After generating the \`.specs\` directory, use this prompt to have your AI agent populate all specification files with project-specific details while following established conventions:
|
|
239
287
|
|
|
240
288
|
~~~
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
289
|
+
You are onboarding as the specification co-pilot for this repository. We just initialized the .specs directory using SpecPilot SDD. Your task is to inspect the codebase and populate all .specs files following these strict conventions:
|
|
290
|
+
|
|
291
|
+
**Conventions & Rules:**
|
|
292
|
+
1. **IDs**: Use semantic prefixes (REQ-, TASK-, ARCH-, TEST-, etc.) with zero-padded numbers (e.g., REQ-001, TASK-042)
|
|
293
|
+
2. **Status values**: Must be one of: not-started, in-progress, completed, blocked, deprecated
|
|
294
|
+
3. **Priority values**: Must be: critical, high, medium, low
|
|
295
|
+
4. **Dates**: Use ISO 8601 format (YYYY-MM-DD)
|
|
296
|
+
5. **YAML**: Use proper indentation (2 spaces), include all required fields
|
|
297
|
+
6. **Markdown**: Use ATX headers (#), fenced code blocks, and consistent formatting
|
|
298
|
+
7. **Traceability**: Link requirements to tasks, tasks to tests, architecture to implementation
|
|
299
|
+
|
|
300
|
+
**File Structure Standards:**
|
|
301
|
+
|
|
302
|
+
- \`project/project.yaml\`: name, version, description, tech_stack[], dependencies[], metadata
|
|
303
|
+
- \`project/requirements.md\`: ## Functional/Non-Functional Requirements with REQ-XXX IDs, priority, status
|
|
304
|
+
- \`architecture/architecture.md\`: ## Overview, Components, Data Flow, Tech Stack, Decisions (ADR format)
|
|
305
|
+
- \`architecture/api.yaml\`: OpenAPI 3.0 spec or endpoints list with methods, paths, descriptions
|
|
306
|
+
- \`planning/tasks.md\`: ## Backlog/In Progress/Completed with TASK-XXX, assignee, priority, dependencies
|
|
307
|
+
- \`planning/roadmap.md\`: ## Milestones with versions, dates, features, status
|
|
308
|
+
- \`quality/tests.md\`: ## Test Strategy, Test Cases (TEST-XXX), Coverage Goals, CI/CD integration
|
|
309
|
+
- \`development/docs.md\`: ## Getting Started, Architecture, API, Deployment, Contributing
|
|
310
|
+
- \`development/context.md\`: ## Project Context, Key Decisions, Known Issues, Future Considerations
|
|
311
|
+
|
|
312
|
+
**Your Process:**
|
|
313
|
+
1. Analyze the codebase: language, framework, structure, existing tests, dependencies
|
|
314
|
+
2. For each .specs file, generate content that:
|
|
315
|
+
- Reflects the actual implementation state
|
|
316
|
+
- Follows the conventions above exactly
|
|
317
|
+
- Maintains internal consistency (cross-references work)
|
|
318
|
+
- Scales appropriately to project size (small projects = concise specs, large = comprehensive)
|
|
319
|
+
3. Identify gaps: missing tests, undocumented APIs, unclear requirements, architectural debt
|
|
320
|
+
4. Propose actionable next steps in planning/tasks.md
|
|
321
|
+
|
|
322
|
+
**Output Format:**
|
|
323
|
+
For each file, provide the complete content in a markdown code block:
|
|
324
|
+
\\\`\\\`\\\`markdown
|
|
325
|
+
// filepath: .specs/project/project.yaml
|
|
326
|
+
[full file content]
|
|
327
|
+
\\\`\\\`\\\`
|
|
328
|
+
|
|
329
|
+
**Constraints:**
|
|
330
|
+
- Maintain the exact file paths and names from the .specs structure
|
|
331
|
+
- Don't invent features that don't exist in the code
|
|
332
|
+
- Flag uncertainties with TODO comments
|
|
333
|
+
- Keep descriptions clear, concise, and technical
|
|
334
|
+
- Ensure all IDs are unique within their domain
|
|
335
|
+
|
|
336
|
+
After populating all files, provide a summary of:
|
|
337
|
+
- What was discovered about the project
|
|
338
|
+
- What's documented vs. what's implemented
|
|
339
|
+
- Critical gaps or risks
|
|
340
|
+
- Recommended immediate actions
|
|
341
|
+
|
|
342
|
+
Begin your analysis now.
|
|
247
343
|
~~~
|
|
248
344
|
|
|
345
|
+
## Prompt History
|
|
346
|
+
|
|
347
|
+
| Date | User | Prompt Summary | Context |
|
|
348
|
+
|------|------|----------------|---------|
|
|
349
|
+
| YYYY-MM-DD | @username | Example prompt | Brief context or outcome |
|
|
350
|
+
|
|
351
|
+
## Common Commands
|
|
352
|
+
|
|
353
|
+
\\\`\\\`\\\`bash
|
|
354
|
+
# Generate specs for new project
|
|
355
|
+
specpilot init
|
|
356
|
+
|
|
357
|
+
# Add specs to existing project
|
|
358
|
+
specpilot add-specs
|
|
359
|
+
|
|
360
|
+
# Validate spec files
|
|
361
|
+
specpilot validate
|
|
362
|
+
\\\`\\\`\\\`
|
|
363
|
+
|
|
364
|
+
## AI Agent Guidelines
|
|
365
|
+
|
|
366
|
+
When working with AI agents on this codebase:
|
|
367
|
+
- Always reference relevant .specs files for context
|
|
368
|
+
- Update specifications before/after significant changes
|
|
369
|
+
- Use the conventions defined in the onboarding prompt
|
|
370
|
+
- Link code changes to tasks (TASK-XXX) and requirements (REQ-XXX)
|
|
371
|
+
- Keep development/context.md current with architectural decisions
|
|
372
|
+
|
|
249
373
|
## Cross-References
|
|
250
374
|
- Context: ./context.md
|
|
251
375
|
- Project config: ../project/project.yaml
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,2BAA8C;AA6B9C,MAAa,aAAa;IACxB,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;
|
|
1
|
+
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED