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.
Files changed (60) hide show
  1. package/README.md +126 -378
  2. package/dist/cli.js +13 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add-specs.d.ts.map +1 -1
  5. package/dist/commands/add-specs.js +6 -18
  6. package/dist/commands/add-specs.js.map +1 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +123 -48
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/list.d.ts.map +1 -1
  11. package/dist/commands/list.js +26 -34
  12. package/dist/commands/list.js.map +1 -1
  13. package/dist/commands/migrate.d.ts.map +1 -1
  14. package/dist/commands/migrate.js +16 -11
  15. package/dist/commands/migrate.js.map +1 -1
  16. package/dist/commands/specify.d.ts.map +1 -1
  17. package/dist/commands/specify.js +112 -20
  18. package/dist/commands/specify.js.map +1 -1
  19. package/dist/commands/validate.d.ts.map +1 -1
  20. package/dist/commands/validate.js +35 -19
  21. package/dist/commands/validate.js.map +1 -1
  22. package/dist/utils/agentConfigGenerator.d.ts +15 -0
  23. package/dist/utils/agentConfigGenerator.d.ts.map +1 -0
  24. package/dist/utils/agentConfigGenerator.js +234 -0
  25. package/dist/utils/agentConfigGenerator.js.map +1 -0
  26. package/dist/utils/codeAnalyzer.js +10 -10
  27. package/dist/utils/codeAnalyzer.js.map +1 -1
  28. package/dist/utils/frameworks.d.ts +2 -0
  29. package/dist/utils/frameworks.d.ts.map +1 -0
  30. package/dist/utils/frameworks.js +11 -0
  31. package/dist/utils/frameworks.js.map +1 -0
  32. package/dist/utils/ideConfigGenerator.d.ts +20 -0
  33. package/dist/utils/ideConfigGenerator.d.ts.map +1 -0
  34. package/dist/utils/ideConfigGenerator.js +176 -0
  35. package/dist/utils/ideConfigGenerator.js.map +1 -0
  36. package/dist/utils/logger.d.ts +19 -0
  37. package/dist/utils/logger.d.ts.map +1 -1
  38. package/dist/utils/logger.js +145 -0
  39. package/dist/utils/logger.js.map +1 -1
  40. package/dist/utils/projectDetector.d.ts.map +1 -1
  41. package/dist/utils/projectDetector.js.map +1 -1
  42. package/dist/utils/projectMigrator.d.ts.map +1 -1
  43. package/dist/utils/projectMigrator.js +36 -33
  44. package/dist/utils/projectMigrator.js.map +1 -1
  45. package/dist/utils/specFileGenerator.d.ts +25 -0
  46. package/dist/utils/specFileGenerator.d.ts.map +1 -0
  47. package/dist/utils/specFileGenerator.js +677 -0
  48. package/dist/utils/specFileGenerator.js.map +1 -0
  49. package/dist/utils/specGenerator.d.ts +11 -14
  50. package/dist/utils/specGenerator.d.ts.map +1 -1
  51. package/dist/utils/specGenerator.js +24 -430
  52. package/dist/utils/specGenerator.js.map +1 -1
  53. package/dist/utils/specValidator.d.ts.map +1 -1
  54. package/dist/utils/specValidator.js +4 -6
  55. package/dist/utils/specValidator.js.map +1 -1
  56. package/dist/utils/templateEngine.d.ts +9 -3
  57. package/dist/utils/templateEngine.d.ts.map +1 -1
  58. package/dist/utils/templateEngine.js +36 -36
  59. package/dist/utils/templateEngine.js.map +1 -1
  60. 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":"AAIA,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,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;IACzB,OAAO,CAAC,SAAS,CAAsD;;IAMvE,OAAO,CAAC,eAAe;IAcvB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUtD,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM;IAS9D,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;IA8C9B,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,uBAAuB;CAiFhC"}
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.slice(1));
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
- - "Follow ${language} best practices and coding standards"
121
- - "Write comprehensive tests for all functionality"
122
- - "Document all public APIs and interfaces"
123
- - "MANDATE: Update .specs/ folder files with every development milestone and code change"
124
- - "MANDATE: Maintain .specs/ as single source of truth for all project specifications"
125
- - "MANDATE: Review and update relevant .specs/ files before each commit"
126
- - "MANDATE: Document decisions, lessons learned, and context in .specs/context.md"
127
- - "MANDATE: Update .specs/prompts.md with ALL AI interactions and development prompts by default"
128
- - "MANDATE: Maintain chronological prompt history for complete development traceability"
129
- - "MANDATE: Keep file metadata and footer sections current (dates, counts, status summaries)"
130
- - "Use semantic versioning for releases"
131
- - "Keep dependencies up to date"
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":"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"}
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.2.2",
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": "echo 'Add linting here'",
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",