specpilot 1.2.2 → 1.5.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.
- package/README.md +126 -378
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +6 -18
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +123 -48
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +26 -34
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +16 -11
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/specify.d.ts.map +1 -1
- package/dist/commands/specify.js +112 -20
- package/dist/commands/specify.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +35 -19
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/agentConfigGenerator.d.ts +15 -0
- package/dist/utils/agentConfigGenerator.d.ts.map +1 -0
- package/dist/utils/agentConfigGenerator.js +234 -0
- package/dist/utils/agentConfigGenerator.js.map +1 -0
- package/dist/utils/codeAnalyzer.js +10 -10
- package/dist/utils/codeAnalyzer.js.map +1 -1
- package/dist/utils/frameworks.d.ts +2 -0
- package/dist/utils/frameworks.d.ts.map +1 -0
- package/dist/utils/frameworks.js +11 -0
- package/dist/utils/frameworks.js.map +1 -0
- package/dist/utils/ideConfigGenerator.d.ts +20 -0
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -0
- package/dist/utils/ideConfigGenerator.js +176 -0
- package/dist/utils/ideConfigGenerator.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +145 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/projectDetector.d.ts.map +1 -1
- package/dist/utils/projectDetector.js.map +1 -1
- package/dist/utils/projectMigrator.d.ts.map +1 -1
- package/dist/utils/projectMigrator.js +36 -33
- package/dist/utils/projectMigrator.js.map +1 -1
- package/dist/utils/specFileGenerator.d.ts +25 -0
- package/dist/utils/specFileGenerator.d.ts.map +1 -0
- package/dist/utils/specFileGenerator.js +677 -0
- package/dist/utils/specFileGenerator.js.map +1 -0
- package/dist/utils/specGenerator.d.ts +11 -14
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +24 -430
- package/dist/utils/specGenerator.js.map +1 -1
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +4 -6
- package/dist/utils/specValidator.js.map +1 -1
- package/dist/utils/templateEngine.d.ts +9 -3
- package/dist/utils/templateEngine.d.ts.map +1 -1
- package/dist/utils/templateEngine.js +36 -36
- package/dist/utils/templateEngine.js.map +1 -1
- package/package.json +8 -3
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
export interface ProjectContext {
|
|
2
|
+
whatItDoes: string;
|
|
3
|
+
targetUsers: string;
|
|
4
|
+
expectedScale: string;
|
|
5
|
+
constraints: string;
|
|
6
|
+
}
|
|
1
7
|
export interface TemplateContext {
|
|
2
8
|
projectName: string;
|
|
3
9
|
language: string;
|
|
4
10
|
framework?: string;
|
|
5
11
|
author?: string;
|
|
6
12
|
description?: string;
|
|
13
|
+
ide?: string;
|
|
14
|
+
mode?: 'new' | 'existing';
|
|
15
|
+
projectContext?: ProjectContext;
|
|
7
16
|
architecture?: {
|
|
8
17
|
components: string[];
|
|
9
18
|
directories: string;
|
|
@@ -12,11 +21,8 @@ export interface TemplateContext {
|
|
|
12
21
|
[key: string]: any;
|
|
13
22
|
}
|
|
14
23
|
export declare class TemplateEngine {
|
|
15
|
-
private templates;
|
|
16
24
|
constructor();
|
|
17
25
|
private registerHelpers;
|
|
18
|
-
loadTemplate(templatePath: string, name: string): void;
|
|
19
|
-
render(templateName: string, context: TemplateContext): string;
|
|
20
26
|
renderFromString(templateString: string, context: TemplateContext): string;
|
|
21
27
|
getBuiltinTemplate(language: string, framework: string | undefined, fileName: string): string;
|
|
22
28
|
private getBuiltinTemplateContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateEngine.d.ts","sourceRoot":"","sources":["../../src/utils/templateEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templateEngine.d.ts","sourceRoot":"","sources":["../../src/utils/templateEngine.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,cAAc;;IAKzB,OAAO,CAAC,eAAe;IAcvB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM;IAK1E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK7F,OAAO,CAAC,yBAAyB;IAsCjC,OAAO,CAAC,sBAAsB;IAiE9B,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,uBAAuB;CAiFhC"}
|
|
@@ -35,38 +35,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.TemplateEngine = void 0;
|
|
37
37
|
const Handlebars = __importStar(require("handlebars"));
|
|
38
|
-
const fs_1 = require("fs");
|
|
39
38
|
class TemplateEngine {
|
|
40
39
|
constructor() {
|
|
41
|
-
this.templates = new Map();
|
|
42
40
|
this.registerHelpers();
|
|
43
41
|
}
|
|
44
42
|
registerHelpers() {
|
|
45
43
|
// Register custom Handlebars helpers
|
|
46
44
|
Handlebars.registerHelper('uppercase', (str) => str.toUpperCase());
|
|
47
|
-
Handlebars.registerHelper('lowercase', (str) => str.
|
|
45
|
+
Handlebars.registerHelper('lowercase', (str) => str.toLowerCase());
|
|
48
46
|
Handlebars.registerHelper('capitalize', (str) => str.charAt(0).toUpperCase() + str.slice(1));
|
|
49
47
|
Handlebars.registerHelper('currentDate', () => new Date().toISOString().split('T')[0]);
|
|
50
48
|
Handlebars.registerHelper('currentYear', () => new Date().getFullYear());
|
|
51
49
|
Handlebars.registerHelper('join', (array, separator) => Array.isArray(array) ? array.join(separator) : '');
|
|
52
50
|
}
|
|
53
|
-
loadTemplate(templatePath, name) {
|
|
54
|
-
try {
|
|
55
|
-
const content = (0, fs_1.readFileSync)(templatePath, 'utf-8');
|
|
56
|
-
const compiled = Handlebars.compile(content);
|
|
57
|
-
this.templates.set(name, compiled);
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
throw new Error(`Failed to load template ${name}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
render(templateName, context) {
|
|
64
|
-
const template = this.templates.get(templateName);
|
|
65
|
-
if (!template) {
|
|
66
|
-
throw new Error(`Template ${templateName} not found`);
|
|
67
|
-
}
|
|
68
|
-
return template(context);
|
|
69
|
-
}
|
|
70
51
|
renderFromString(templateString, context) {
|
|
71
52
|
const template = Handlebars.compile(templateString);
|
|
72
53
|
return template(context);
|
|
@@ -117,25 +98,44 @@ description: {{description}}
|
|
|
117
98
|
|
|
118
99
|
# Project Rules and AI Context
|
|
119
100
|
rules:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
101
|
+
# ============================================================
|
|
102
|
+
# 🔴 CRITICAL — Never violate. No exceptions.
|
|
103
|
+
# ============================================================
|
|
104
|
+
critical:
|
|
105
|
+
- "MANDATE: Never commit code to git unless prompted by the developer. Always ask first."
|
|
106
|
+
- "MANDATE: Never push to git unless prompted by the developer. Always ask first."
|
|
107
|
+
- "MANDATE: Never deploy, publish, or release the project unless prompted by the developer. Always ask first."
|
|
108
|
+
- "MANDATE: Never modify the .specs/ folder structure, subfolder names, or file names. Only update file contents."
|
|
109
|
+
- "MANDATE: After every code change, addition, or removal — proactively update all affected .specs/ files without being asked: architecture.md for structural changes, requirements.md for feature changes, tests.md for test changes, tasks.md for task status, and CHANGELOG.md for completed work."
|
|
110
|
+
- "MANDATE: Never describe, quote, or reference file contents without first reading the file via a tool call in this session. If the file has not been read, say so explicitly before answering."
|
|
111
|
+
- "MANDATE: Never implement, write code, or make file changes unless the developer explicitly asks. If the next step seems obvious, ask first — do not assume."
|
|
112
|
+
|
|
113
|
+
# ============================================================
|
|
114
|
+
# 🟡 PROCESS — Important workflow guides. Follow consistently.
|
|
115
|
+
# ============================================================
|
|
116
|
+
process:
|
|
117
|
+
- "MANDATE: Spec-First Development — all changes start with specification updates before code changes."
|
|
118
|
+
- "MANDATE: Context Preservation — document all important decisions and learnings in .specs/context.md."
|
|
119
|
+
- "MANDATE: Progress Tracking — keep tasks.md current with actual development status."
|
|
120
|
+
- "MANDATE: Track ALL AI Prompts — log every AI interaction in .specs/prompts.md with timestamps and context."
|
|
121
|
+
- "Follow specification-driven development principles throughout the project lifecycle."
|
|
122
|
+
|
|
123
|
+
# ============================================================
|
|
124
|
+
# 🟢 PREFERENCES — Good practice. Apply where appropriate.
|
|
125
|
+
# ============================================================
|
|
126
|
+
preferences:
|
|
127
|
+
- "Follow ${language} best practices and coding standards."
|
|
128
|
+
- "Test-Driven — write tests before implementation."
|
|
129
|
+
- "Incremental — small, focused commits."
|
|
130
|
+
- "Self-review before pushing changes."
|
|
131
|
+
- "Use semantic versioning for releases."
|
|
132
132
|
|
|
133
133
|
# Development Context for AI
|
|
134
134
|
ai_context:
|
|
135
|
-
- "This is a specification-driven development project"
|
|
136
|
-
- "All changes should be documented in appropriate .specs/ files"
|
|
137
|
-
- "Follow the established architecture patterns"
|
|
138
|
-
- "Maintain backwards compatibility when possible"
|
|
135
|
+
- "This is a specification-driven development project."
|
|
136
|
+
- "All changes should be documented in appropriate .specs/ files."
|
|
137
|
+
- "Follow the established architecture patterns."
|
|
138
|
+
- "Maintain backwards compatibility when possible."
|
|
139
139
|
|
|
140
140
|
# Team Guidelines
|
|
141
141
|
team:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateEngine.js","sourceRoot":"","sources":["../../src/utils/templateEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;
|
|
1
|
+
{"version":3,"file":"templateEngine.js","sourceRoot":"","sources":["../../src/utils/templateEngine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specpilot",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "A CLI tool for initializing specification-driven development projects with flexible, production-ready structures.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"test": "jest",
|
|
14
14
|
"test:watch": "jest --watch",
|
|
15
15
|
"test:coverage": "jest --coverage",
|
|
16
|
-
"lint": "
|
|
16
|
+
"lint": "eslint src/ --ext .ts",
|
|
17
|
+
"lint:fix": "eslint src/ --ext .ts --fix",
|
|
17
18
|
"clean": "rm -rf dist",
|
|
18
19
|
"prepare": "npm run build",
|
|
19
20
|
"prepublishOnly": "npm run test && npm run build"
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
"homepage": "https://github.com/girishr/SpecPilot#readme",
|
|
34
35
|
"repository": {
|
|
35
36
|
"type": "git",
|
|
36
|
-
"url": "https://github.com/girishr/SpecPilot.git"
|
|
37
|
+
"url": "git+https://github.com/girishr/SpecPilot.git"
|
|
37
38
|
},
|
|
38
39
|
"bugs": {
|
|
39
40
|
"url": "https://github.com/girishr/SpecPilot/issues"
|
|
@@ -58,11 +59,15 @@
|
|
|
58
59
|
"js-yaml": "^4.1.0"
|
|
59
60
|
},
|
|
60
61
|
"devDependencies": {
|
|
62
|
+
"@eslint/js": "^10.0.1",
|
|
61
63
|
"@types/fs-extra": "^11.0.4",
|
|
62
64
|
"@types/inquirer": "^9.0.9",
|
|
63
65
|
"@types/jest": "^30.0.0",
|
|
64
66
|
"@types/js-yaml": "^4.0.9",
|
|
65
67
|
"@types/node": "^24.5.2",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
69
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
70
|
+
"eslint": "^10.0.2",
|
|
66
71
|
"jest": "^30.1.3",
|
|
67
72
|
"nodemon": "^3.1.10",
|
|
68
73
|
"ts-jest": "^29.4.4",
|