ai-devkit 0.4.1 → 0.4.2
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/CHANGELOG.md +6 -0
- package/README.md +10 -10
- package/dist/__tests__/lib/EnvironmentSelector.test.js +3 -3
- package/dist/__tests__/lib/EnvironmentSelector.test.js.map +1 -1
- package/dist/__tests__/lib/PhaseSelector.test.js +3 -3
- package/dist/__tests__/lib/PhaseSelector.test.js.map +1 -1
- package/dist/__tests__/lib/TemplateManager.test.d.ts +2 -0
- package/dist/__tests__/lib/TemplateManager.test.d.ts.map +1 -0
- package/dist/__tests__/lib/TemplateManager.test.js +351 -0
- package/dist/__tests__/lib/TemplateManager.test.js.map +1 -0
- package/dist/lib/EnvironmentSelector.js +1 -1
- package/dist/lib/EnvironmentSelector.js.map +1 -1
- package/dist/lib/PhaseSelector.js +1 -1
- package/dist/lib/PhaseSelector.js.map +1 -1
- package/dist/lib/TemplateManager.d.ts +3 -1
- package/dist/lib/TemplateManager.d.ts.map +1 -1
- package/dist/lib/TemplateManager.js +50 -23
- package/dist/lib/TemplateManager.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util/env.d.ts.map +1 -1
- package/dist/util/env.js +3 -1
- package/dist/util/env.js.map +1 -1
- package/package.json +1 -1
- package/templates/commands/capture-knowledge.toml +49 -0
- package/templates/commands/check-implementation.toml +21 -0
- package/templates/commands/code-review.toml +83 -0
- package/templates/commands/debug.toml +48 -0
- package/templates/commands/execute-plan.toml +74 -0
- package/templates/commands/new-requirement.toml +129 -0
- package/templates/commands/review-design.toml +13 -0
- package/templates/commands/review-requirements.toml +11 -0
- package/templates/commands/update-planning.toml +63 -0
- package/templates/commands/writing-test.toml +46 -0
- package/web/content/pages/vision.md +2 -0
|
@@ -39,19 +39,19 @@ const path = __importStar(require("path"));
|
|
|
39
39
|
const env_1 = require("../util/env");
|
|
40
40
|
class TemplateManager {
|
|
41
41
|
constructor(targetDir = process.cwd()) {
|
|
42
|
-
this.templatesDir = path.join(__dirname,
|
|
42
|
+
this.templatesDir = path.join(__dirname, "../../templates");
|
|
43
43
|
this.targetDir = targetDir;
|
|
44
44
|
}
|
|
45
45
|
async copyPhaseTemplate(phase) {
|
|
46
|
-
const sourceFile = path.join(this.templatesDir,
|
|
47
|
-
const targetDir = path.join(this.targetDir,
|
|
48
|
-
const targetFile = path.join(targetDir,
|
|
46
|
+
const sourceFile = path.join(this.templatesDir, "phases", `${phase}.md`);
|
|
47
|
+
const targetDir = path.join(this.targetDir, "docs", "ai", phase);
|
|
48
|
+
const targetFile = path.join(targetDir, "README.md");
|
|
49
49
|
await fs.ensureDir(targetDir);
|
|
50
50
|
await fs.copy(sourceFile, targetFile);
|
|
51
51
|
return targetFile;
|
|
52
52
|
}
|
|
53
53
|
async fileExists(phase) {
|
|
54
|
-
const targetFile = path.join(this.targetDir,
|
|
54
|
+
const targetFile = path.join(this.targetDir, "docs", "ai", phase, "README.md");
|
|
55
55
|
return fs.pathExists(targetFile);
|
|
56
56
|
}
|
|
57
57
|
async setupMultipleEnvironments(environmentIds) {
|
|
@@ -87,7 +87,7 @@ class TemplateManager {
|
|
|
87
87
|
async setupSingleEnvironment(env) {
|
|
88
88
|
const copiedFiles = [];
|
|
89
89
|
try {
|
|
90
|
-
const contextSource = path.join(this.templatesDir,
|
|
90
|
+
const contextSource = path.join(this.templatesDir, "env", "base.md");
|
|
91
91
|
const contextTarget = path.join(this.targetDir, env.contextFileName);
|
|
92
92
|
if (await fs.pathExists(contextSource)) {
|
|
93
93
|
await fs.copy(contextSource, contextTarget);
|
|
@@ -96,21 +96,18 @@ class TemplateManager {
|
|
|
96
96
|
else {
|
|
97
97
|
console.warn(`Warning: Context file not found: ${contextSource}`);
|
|
98
98
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (await fs.pathExists(commandsSourceDir)) {
|
|
102
|
-
await fs.ensureDir(commandsTargetDir);
|
|
103
|
-
await fs.copy(commandsSourceDir, commandsTargetDir);
|
|
104
|
-
const commandFiles = await fs.readdir(commandsTargetDir);
|
|
105
|
-
commandFiles.forEach(file => {
|
|
106
|
-
copiedFiles.push(path.join(commandsTargetDir, file));
|
|
107
|
-
});
|
|
99
|
+
if (!env.isCustomCommandPath) {
|
|
100
|
+
await this.copyCommands(env, copiedFiles);
|
|
108
101
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
102
|
+
switch (env.code) {
|
|
103
|
+
case "cursor":
|
|
104
|
+
await this.copyCursorSpecificFiles(copiedFiles);
|
|
105
|
+
break;
|
|
106
|
+
case "gemini":
|
|
107
|
+
await this.copyGeminiSpecificFiles(copiedFiles);
|
|
108
|
+
break;
|
|
109
|
+
default:
|
|
110
|
+
break;
|
|
114
111
|
}
|
|
115
112
|
}
|
|
116
113
|
catch (error) {
|
|
@@ -119,18 +116,48 @@ class TemplateManager {
|
|
|
119
116
|
}
|
|
120
117
|
return copiedFiles;
|
|
121
118
|
}
|
|
119
|
+
async copyCommands(env, copiedFiles) {
|
|
120
|
+
const commandsSourceDir = path.join(this.templatesDir, "commands");
|
|
121
|
+
const commandExtension = env.customCommandExtension || ".md";
|
|
122
|
+
const commandsTargetDir = path.join(this.targetDir, env.commandPath);
|
|
123
|
+
if (await fs.pathExists(commandsSourceDir)) {
|
|
124
|
+
await fs.ensureDir(commandsTargetDir);
|
|
125
|
+
const commandFiles = await fs.readdir(commandsSourceDir);
|
|
126
|
+
await Promise.all(commandFiles
|
|
127
|
+
.filter((file) => file.endsWith(".md"))
|
|
128
|
+
.map(async (file) => {
|
|
129
|
+
const targetFile = file.replace('.md', commandExtension);
|
|
130
|
+
await fs.copy(path.join(commandsSourceDir, file), path.join(commandsTargetDir, targetFile));
|
|
131
|
+
copiedFiles.push(path.join(commandsTargetDir, targetFile));
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
console.warn(`Warning: Commands directory not found: ${commandsSourceDir}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
122
138
|
async copyCursorSpecificFiles(copiedFiles) {
|
|
123
|
-
const rulesSourceDir = path.join(this.templatesDir,
|
|
124
|
-
const rulesTargetDir = path.join(this.targetDir,
|
|
139
|
+
const rulesSourceDir = path.join(this.templatesDir, "env", "cursor", "rules");
|
|
140
|
+
const rulesTargetDir = path.join(this.targetDir, ".cursor", "rules");
|
|
125
141
|
if (await fs.pathExists(rulesSourceDir)) {
|
|
126
142
|
await fs.ensureDir(rulesTargetDir);
|
|
127
143
|
await fs.copy(rulesSourceDir, rulesTargetDir);
|
|
128
144
|
const ruleFiles = await fs.readdir(rulesSourceDir);
|
|
129
|
-
ruleFiles.forEach(file => {
|
|
145
|
+
ruleFiles.forEach((file) => {
|
|
130
146
|
copiedFiles.push(path.join(rulesTargetDir, file));
|
|
131
147
|
});
|
|
132
148
|
}
|
|
133
149
|
}
|
|
150
|
+
async copyGeminiSpecificFiles(copiedFiles) {
|
|
151
|
+
const commandFiles = await fs.readdir(path.join(this.templatesDir, "commands"));
|
|
152
|
+
const commandTargetDir = path.join(this.targetDir, ".gemini", "commands");
|
|
153
|
+
await fs.ensureDir(commandTargetDir);
|
|
154
|
+
await Promise.all(commandFiles
|
|
155
|
+
.filter((file) => file.endsWith(".toml"))
|
|
156
|
+
.map(async (file) => {
|
|
157
|
+
await fs.copy(path.join(this.templatesDir, "commands", file), path.join(commandTargetDir, file));
|
|
158
|
+
copiedFiles.push(path.join(commandTargetDir, file));
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
134
161
|
}
|
|
135
162
|
exports.TemplateManager = TemplateManager;
|
|
136
163
|
//# sourceMappingURL=TemplateManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAE7B,qCAA6C;AAE7C,MAAa,eAAe;IAI1B,YAAY,YAAoB,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAY;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAErD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface EnvironmentDefinition {
|
|
|
5
5
|
contextFileName: string;
|
|
6
6
|
commandPath: string;
|
|
7
7
|
description?: string;
|
|
8
|
+
isCustomCommandPath?: boolean;
|
|
9
|
+
customCommandExtension?: string;
|
|
8
10
|
}
|
|
9
11
|
export type EnvironmentCode = 'cursor' | 'claude' | 'github' | 'gemini' | 'codex' | 'windsurf' | 'kilocode' | 'amp' | 'opencode' | 'roo';
|
|
10
12
|
export interface DevKitConfig {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzI,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAQnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAQrD,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAmCa,QAAA,gBAAgB,GAAY;IACvC,cAAc;IACd,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAEW,QAAA,mBAAmB,GAA0B;IACxD,YAAY,EAAE,sCAAsC;IACpD,MAAM,EAAE,8BAA8B;IACtC,QAAQ,EAAE,mCAAmC;IAC7C,cAAc,EAAE,sBAAsB;IACtC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,4BAA4B;CACzC,CAAC"}
|
package/dist/util/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CA+DlF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAA8D,CAAC;AAElH,wBAAgB,kBAAkB,IAAI,qBAAqB,EAAE,CAE5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS,CAE1F;AAED,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAExF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG1E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAiB9E"}
|
package/dist/util/env.js
CHANGED
|
@@ -25,13 +25,15 @@ exports.ENVIRONMENT_DEFINITIONS = {
|
|
|
25
25
|
code: 'github',
|
|
26
26
|
name: 'GitHub Copilot',
|
|
27
27
|
contextFileName: 'AGENTS.md',
|
|
28
|
-
commandPath: '.github/
|
|
28
|
+
commandPath: '.github/prompts',
|
|
29
|
+
customCommandExtension: '.prompt.md',
|
|
29
30
|
},
|
|
30
31
|
gemini: {
|
|
31
32
|
code: 'gemini',
|
|
32
33
|
name: 'Google Gemini',
|
|
33
34
|
contextFileName: 'AGENTS.md',
|
|
34
35
|
commandPath: '.gemini/commands',
|
|
36
|
+
isCustomCommandPath: true,
|
|
35
37
|
},
|
|
36
38
|
codex: {
|
|
37
39
|
code: 'codex',
|
package/dist/util/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
description='''Capture structured knowledge about a code entry point and save it
|
|
2
|
+
to the knowledge docs.'''
|
|
3
|
+
prompt='''# Knowledge Capture Assistant
|
|
4
|
+
|
|
5
|
+
Guide me through creating a structured understanding of a code entry point and saving it to the knowledge docs.
|
|
6
|
+
|
|
7
|
+
## Step 1: Gather Context
|
|
8
|
+
- Entry point (file, folder, function, API)
|
|
9
|
+
- Why this entry point matters (feature, bug, investigation)
|
|
10
|
+
- Relevant requirements/design docs (if any)
|
|
11
|
+
- Desired depth or focus areas (logic, dependencies, data flow)
|
|
12
|
+
|
|
13
|
+
## Step 2: Validate Entry Point
|
|
14
|
+
- Determine entry point type and confirm it exists
|
|
15
|
+
- Surface ambiguity (multiple matches) and ask for clarification
|
|
16
|
+
- If not found, suggest likely alternatives or spelling fixes
|
|
17
|
+
|
|
18
|
+
## Step 3: Collect Source Context
|
|
19
|
+
- Read the primary file/module and summarize purpose, exports, key patterns
|
|
20
|
+
- For folders: list structure, highlight key modules
|
|
21
|
+
- For functions/APIs: capture signature, parameters, return values, error handling
|
|
22
|
+
- Extract essential snippets (avoid large dumps)
|
|
23
|
+
|
|
24
|
+
## Step 4: Analyze Dependencies
|
|
25
|
+
- Build a dependency view up to depth 3
|
|
26
|
+
- Track visited nodes to avoid loops
|
|
27
|
+
- Categorize dependencies (imports, function calls, services, external packages)
|
|
28
|
+
- Note important external systems or generated code that should be excluded
|
|
29
|
+
|
|
30
|
+
## Step 5: Synthesize Explanation
|
|
31
|
+
- Draft an overview (purpose, language, high-level behavior)
|
|
32
|
+
- Detail core logic, key components, execution flow, patterns
|
|
33
|
+
- Highlight error handling, performance, security considerations
|
|
34
|
+
- Identify potential improvements or risks discovered during analysis
|
|
35
|
+
|
|
36
|
+
## Step 6: Create Documentation
|
|
37
|
+
- Normalize entry point name to kebab-case (`calculateTotalPrice` → `calculate-total-price`)
|
|
38
|
+
- Create `docs/ai/implementation/knowledge-{name}.md` using the headings implied in Step 5 (Overview, Implementation Details, Dependencies, Visual Diagrams, Additional Insights, Metadata, Next Steps)
|
|
39
|
+
- Populate sections with findings, diagrams, and metadata (analysis date, depth, files touched)
|
|
40
|
+
- Include mermaid diagrams when they clarify flows or relationships
|
|
41
|
+
|
|
42
|
+
## Step 7: Review & Next Actions
|
|
43
|
+
- Summarize key insights and open questions for follow-up
|
|
44
|
+
- Suggest related areas for deeper dives or refactors
|
|
45
|
+
- Confirm the knowledge file path and remind to commit it
|
|
46
|
+
- Encourage running `/capture-knowledge` again for related entry points if needed
|
|
47
|
+
|
|
48
|
+
Let me know the entry point and goals when you’re ready to begin the knowledge capture.
|
|
49
|
+
'''
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Compare the current implementation with the design in docs/ai/design/ and requirements in docs/ai/requirements/. Please follow this structured review:
|
|
2
|
+
|
|
3
|
+
1. Ask me for:
|
|
4
|
+
- Feature/branch description
|
|
5
|
+
- List of modified files
|
|
6
|
+
- Relevant design doc(s) (feature-specific and/or project-level)
|
|
7
|
+
- Any known constraints or assumptions
|
|
8
|
+
|
|
9
|
+
2. For each design doc:
|
|
10
|
+
- Summarize key architectural decisions and constraints
|
|
11
|
+
- Highlight components, interfaces, and data flows that must be respected
|
|
12
|
+
|
|
13
|
+
3. File-by-file comparison:
|
|
14
|
+
- Confirm implementation matches design intent
|
|
15
|
+
- Note deviations or missing pieces
|
|
16
|
+
- Flag logic gaps, edge cases, or security issues
|
|
17
|
+
- Suggest simplifications or refactors
|
|
18
|
+
- Identify missing tests or documentation updates
|
|
19
|
+
|
|
20
|
+
4. Summarize findings with recommended next steps.
|
|
21
|
+
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
description='''Perform a local code review before pushing changes, ensuring
|
|
2
|
+
alignment with design docs and best practices.'''
|
|
3
|
+
prompt='''# Local Code Review Assistant
|
|
4
|
+
|
|
5
|
+
You are helping me perform a local code review **before** I push changes. Please follow this structured workflow.
|
|
6
|
+
|
|
7
|
+
## Step 1: Gather Context
|
|
8
|
+
Ask me for:
|
|
9
|
+
- Brief feature/branch description
|
|
10
|
+
- List of modified files (with optional summaries)
|
|
11
|
+
- Relevant design doc(s) (e.g., `docs/ai/design/feature-{name}.md` or project-level design)
|
|
12
|
+
- Any known constraints or risky areas
|
|
13
|
+
- Any open bugs or TODOs linked to this work
|
|
14
|
+
- Which tests have already been run
|
|
15
|
+
|
|
16
|
+
If possible, request the latest diff:
|
|
17
|
+
```bash
|
|
18
|
+
git status -sb
|
|
19
|
+
git diff --stat
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Step 2: Understand Design Alignment
|
|
23
|
+
For each provided design doc:
|
|
24
|
+
- Summarize the architectural intent
|
|
25
|
+
- Note critical requirements, patterns, or constraints the design mandates
|
|
26
|
+
|
|
27
|
+
## Step 3: File-by-File Review
|
|
28
|
+
For every modified file:
|
|
29
|
+
1. Highlight deviations from the referenced design or requirements
|
|
30
|
+
2. Spot potential logic or flow issues and edge cases
|
|
31
|
+
3. Identify redundant or duplicate code
|
|
32
|
+
4. Suggest simplifications or refactors (prefer clarity over cleverness)
|
|
33
|
+
5. Flag security concerns (input validation, secrets, auth, data handling)
|
|
34
|
+
6. Check for performance pitfalls or scalability risks
|
|
35
|
+
7. Ensure error handling, logging, and observability are appropriate
|
|
36
|
+
8. Note any missing comments or docs
|
|
37
|
+
9. Flag missing or outdated tests related to this file
|
|
38
|
+
|
|
39
|
+
## Step 4: Cross-Cutting Concerns
|
|
40
|
+
- Verify naming consistency and adherence to project conventions
|
|
41
|
+
- Confirm documentation/comments are updated where the behavior changed
|
|
42
|
+
- Identify missing tests (unit, integration, E2E) needed to cover the changes
|
|
43
|
+
- Ensure configuration/migration updates are captured if applicable
|
|
44
|
+
|
|
45
|
+
## Step 5: Summarize Findings
|
|
46
|
+
Provide results in this structure:
|
|
47
|
+
```
|
|
48
|
+
### Summary
|
|
49
|
+
- Blocking issues: [count]
|
|
50
|
+
- Important follow-ups: [count]
|
|
51
|
+
- Nice-to-have improvements: [count]
|
|
52
|
+
|
|
53
|
+
### Detailed Notes
|
|
54
|
+
1. **[File or Component]**
|
|
55
|
+
- Issue/Observation: ...
|
|
56
|
+
- Impact: (e.g., blocking / important / nice-to-have)
|
|
57
|
+
- Recommendation: ...
|
|
58
|
+
- Design reference: [...]
|
|
59
|
+
|
|
60
|
+
2. ... (repeat per finding)
|
|
61
|
+
|
|
62
|
+
### Recommended Next Steps
|
|
63
|
+
- [ ] Address blocking issues
|
|
64
|
+
- [ ] Update design/implementation docs if needed
|
|
65
|
+
- [ ] Add/adjust tests:
|
|
66
|
+
- Unit:
|
|
67
|
+
- Integration:
|
|
68
|
+
- E2E:
|
|
69
|
+
- [ ] Rerun local test suite
|
|
70
|
+
- [ ] Re-run code review command after fixes
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Step 6: Final Checklist
|
|
74
|
+
Confirm whether each item is complete (yes/no/needs follow-up):
|
|
75
|
+
- Implementation matches design & requirements
|
|
76
|
+
- No obvious logic or edge-case gaps remain
|
|
77
|
+
- Redundant code removed or justified
|
|
78
|
+
- Security considerations addressed
|
|
79
|
+
- Tests cover new/changed behavior
|
|
80
|
+
- Documentation/design notes updated
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
Let me know when you're ready to begin the review.'''
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
description='''Guide me through debugging a code issue by clarifying
|
|
2
|
+
expectations, identifying gaps, and agreeing on a fix plan before changing
|
|
3
|
+
code.'''
|
|
4
|
+
prompt='''# Local Debugging Assistant
|
|
5
|
+
|
|
6
|
+
Help me debug an issue by clarifying expectations, identifying gaps, and agreeing on a fix plan before changing code.
|
|
7
|
+
|
|
8
|
+
## Step 1: Gather Context
|
|
9
|
+
Ask me for:
|
|
10
|
+
- Brief issue description (what is happening?)
|
|
11
|
+
- Expected behavior or acceptance criteria (what should happen?)
|
|
12
|
+
- Current behavior and any error messages/logs
|
|
13
|
+
- Recent related changes or deployments
|
|
14
|
+
- Scope of impact (users, services, environments)
|
|
15
|
+
|
|
16
|
+
## Step 2: Clarify Reality vs Expectation
|
|
17
|
+
- Restate the observed behavior vs the expected outcome
|
|
18
|
+
- Confirm relevant requirements, tickets, or docs that define the expectation
|
|
19
|
+
- Identify acceptance criteria for the fix (how we know it is resolved)
|
|
20
|
+
|
|
21
|
+
## Step 3: Reproduce & Isolate
|
|
22
|
+
- Determine reproducibility (always, intermittent, environment-specific)
|
|
23
|
+
- Capture reproduction steps or commands
|
|
24
|
+
- Note any available tests that expose the failure
|
|
25
|
+
- List suspected components, services, or modules
|
|
26
|
+
|
|
27
|
+
## Step 4: Analyze Potential Causes
|
|
28
|
+
- Brainstorm plausible root causes (data, config, code regressions, external dependencies)
|
|
29
|
+
- Gather supporting evidence (logs, metrics, traces, screenshots)
|
|
30
|
+
- Highlight gaps or unknowns that need investigation
|
|
31
|
+
|
|
32
|
+
## Step 5: Surface Options
|
|
33
|
+
- Present possible resolution paths (quick fix, deeper refactor, rollback, feature flag, etc.)
|
|
34
|
+
- For each option, list pros/cons, risks, and verification steps
|
|
35
|
+
- Consider required approvals or coordination
|
|
36
|
+
|
|
37
|
+
## Step 6: Confirm Path Forward
|
|
38
|
+
- Ask which option we should pursue
|
|
39
|
+
- Summarize chosen approach, required pre-work, and success criteria
|
|
40
|
+
- Plan validation steps (tests, monitoring, user sign-off)
|
|
41
|
+
|
|
42
|
+
## Step 7: Next Actions & Tracking
|
|
43
|
+
- Document tasks, owners, and timelines for the selected option
|
|
44
|
+
- Note follow-up actions after deployment (monitoring, comms, postmortem if needed)
|
|
45
|
+
- Encourage updating relevant docs/tests once resolved
|
|
46
|
+
|
|
47
|
+
Let me know when you're ready to walk through the debugging flow.
|
|
48
|
+
'''
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
description='''Execute a feature plan interactively, guiding me through each
|
|
2
|
+
task while referencing relevant docs and updating status.'''
|
|
3
|
+
prompt='''# Feature Plan Execution Assistant
|
|
4
|
+
|
|
5
|
+
Help me work through a feature plan one task at a time.
|
|
6
|
+
|
|
7
|
+
## Step 1: Gather Context
|
|
8
|
+
Ask me for:
|
|
9
|
+
- Feature name (kebab-case, e.g., `user-authentication`)
|
|
10
|
+
- Brief feature/branch description
|
|
11
|
+
- Relevant planning doc path (default `docs/ai/planning/feature-{name}.md`)
|
|
12
|
+
- Any supporting design/implementation docs (design, requirements, implementation)
|
|
13
|
+
- Current branch and latest diff summary (`git status -sb`, `git diff --stat`)
|
|
14
|
+
|
|
15
|
+
## Step 2: Load the Plan
|
|
16
|
+
- Request the planning doc contents or offer commands like:
|
|
17
|
+
```bash
|
|
18
|
+
cat docs/ai/planning/feature-<name>.md
|
|
19
|
+
```
|
|
20
|
+
- Parse sections that represent task lists (look for headings + checkboxes `[ ]`, `[x]`).
|
|
21
|
+
- Build an ordered queue of tasks grouped by section (e.g., Foundation, Core Features, Testing).
|
|
22
|
+
|
|
23
|
+
## Step 3: Present Task Queue
|
|
24
|
+
Show an overview:
|
|
25
|
+
```
|
|
26
|
+
### Task Queue: <Feature Name>
|
|
27
|
+
1. [status] Section • Task title
|
|
28
|
+
2. ...
|
|
29
|
+
```
|
|
30
|
+
Status legend: `todo`, `in-progress`, `done`, `blocked` (based on checkbox/notes if present).
|
|
31
|
+
|
|
32
|
+
## Step 4: Interactive Task Execution
|
|
33
|
+
For each task in order:
|
|
34
|
+
1. Display the section/context, full bullet text, and any existing notes.
|
|
35
|
+
2. Suggest relevant docs to reference (requirements/design/implementation).
|
|
36
|
+
3. Ask: "Plan for this task?" Offer to outline sub-steps using the design doc.
|
|
37
|
+
4. Prompt to mark status (`done`, `in-progress`, `blocked`, `skipped`) and capture short notes/next steps.
|
|
38
|
+
5. Encourage code/document edits inside Cursor; offer commands/snippets when useful.
|
|
39
|
+
6. If blocked, record blocker info and move task to the end or into a "Blocked" list.
|
|
40
|
+
|
|
41
|
+
## Step 5: Update Planning Doc
|
|
42
|
+
After each status change, generate a Markdown snippet the user can paste back into the planning doc, e.g.:
|
|
43
|
+
```
|
|
44
|
+
- [x] Task: Implement auth service (Notes: finished POST /auth/login, tests added)
|
|
45
|
+
```
|
|
46
|
+
Remind the user to keep the source doc updated.
|
|
47
|
+
|
|
48
|
+
## Step 6: Check for Newly Discovered Work
|
|
49
|
+
After each section, ask if new tasks were discovered. If yes, capture them in a "New Work" list with status `todo` and include in the summary.
|
|
50
|
+
|
|
51
|
+
## Step 7: Session Summary
|
|
52
|
+
Produce a summary table:
|
|
53
|
+
```
|
|
54
|
+
### Execution Summary
|
|
55
|
+
- Completed: (list)
|
|
56
|
+
- In Progress: (list + owners/next steps)
|
|
57
|
+
- Blocked: (list + blockers)
|
|
58
|
+
- Skipped / Deferred: (list + rationale)
|
|
59
|
+
- New Tasks: (list)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Step 8: Next Actions
|
|
63
|
+
Remind the user to:
|
|
64
|
+
- Update `docs/ai/planning/feature-{name}.md` with the new statuses
|
|
65
|
+
- Sync related docs (requirements/design/implementation/testing) if decisions changed
|
|
66
|
+
- Run `/check-implementation` to validate changes against design docs
|
|
67
|
+
- Run `/writing-test` to produce unit/integration tests targeting 100% coverage
|
|
68
|
+
- Run `/update-planning` to reconcile the planning doc with the latest status
|
|
69
|
+
- Run `/code-review` when ready for final review
|
|
70
|
+
- Run test suites relevant to completed tasks
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
Let me know when you're ready to start executing the plan. Provide the feature
|
|
74
|
+
name and planning doc first.'''
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
description='''Add new feature/requirement documentation and guide me through
|
|
2
|
+
the development workflow from requirements to testing.'''
|
|
3
|
+
prompt='''I want to add a new feature/requirement. Please guide me through the complete development workflow:
|
|
4
|
+
|
|
5
|
+
## Step 1: Capture Requirement
|
|
6
|
+
First, ask me:
|
|
7
|
+
- What is the feature name? (e.g., "user-authentication", "payment-integration")
|
|
8
|
+
- What problem does it solve?
|
|
9
|
+
- Who will use it?
|
|
10
|
+
- What are the key user stories?
|
|
11
|
+
|
|
12
|
+
## Step 2: Create Feature Documentation Structure
|
|
13
|
+
Once I provide the requirement, create the following files (copy the existing template content so sections/frontmatter match exactly):
|
|
14
|
+
- Start from `docs/ai/requirements/README.md` → save as `docs/ai/requirements/feature-{name}.md`
|
|
15
|
+
- Start from `docs/ai/design/README.md` → save as `docs/ai/design/feature-{name}.md`
|
|
16
|
+
- Start from `docs/ai/planning/README.md` → save as `docs/ai/planning/feature-{name}.md`
|
|
17
|
+
- Start from `docs/ai/implementation/README.md` → save as `docs/ai/implementation/feature-{name}.md`
|
|
18
|
+
- Start from `docs/ai/testing/README.md` → save as `docs/ai/testing/feature-{name}.md`
|
|
19
|
+
|
|
20
|
+
Ensure the YAML frontmatter and section headings remain identical to the templates before filling in feature-specific content.
|
|
21
|
+
|
|
22
|
+
## Step 3: Requirements Phase
|
|
23
|
+
Help me fill out `docs/ai/requirements/feature-{name}.md`:
|
|
24
|
+
- Clarify the problem statement
|
|
25
|
+
- Define goals and non-goals
|
|
26
|
+
- Write detailed user stories
|
|
27
|
+
- Establish success criteria
|
|
28
|
+
- Identify constraints and assumptions
|
|
29
|
+
- List open questions
|
|
30
|
+
|
|
31
|
+
## Step 4: Design Phase
|
|
32
|
+
Guide me through `docs/ai/design/feature-{name}.md`:
|
|
33
|
+
- Propose system architecture changes needed
|
|
34
|
+
- Define data models/schema changes
|
|
35
|
+
- Design API endpoints or interfaces
|
|
36
|
+
- Identify components to create/modify
|
|
37
|
+
- Document key design decisions
|
|
38
|
+
- Note security and performance considerations
|
|
39
|
+
|
|
40
|
+
## Step 5: Planning Phase
|
|
41
|
+
Help me break down work in `docs/ai/planning/feature-{name}.md`:
|
|
42
|
+
- Create task breakdown with subtasks
|
|
43
|
+
- Identify dependencies (on other features, APIs, etc.)
|
|
44
|
+
- Estimate effort for each task
|
|
45
|
+
- Suggest implementation order
|
|
46
|
+
- Identify risks and mitigation strategies
|
|
47
|
+
|
|
48
|
+
## Step 6: Documentation Review (Chained Commands)
|
|
49
|
+
Once the docs above are drafted, run the following commands to tighten them up:
|
|
50
|
+
- `/review-requirements` to validate the requirements doc for completeness and clarity
|
|
51
|
+
- `/review-design` to ensure the design doc aligns with requirements and highlights key decisions
|
|
52
|
+
|
|
53
|
+
(If you are using Claude Code, reference the `review-requirements` and `review-design` commands instead.)
|
|
54
|
+
|
|
55
|
+
## Step 7: Implementation Phase (Deferred)
|
|
56
|
+
This command focuses on documentation only. Actual implementation happens later via `/execute-plan`.
|
|
57
|
+
For each task in the plan:
|
|
58
|
+
1. Review the task requirements and design
|
|
59
|
+
2. Ask me to confirm I'm starting this task
|
|
60
|
+
3. Guide implementation with reference to design docs
|
|
61
|
+
4. Suggest code structure and patterns
|
|
62
|
+
5. Help with error handling and edge cases
|
|
63
|
+
6. Update `docs/ai/implementation/feature-{name}.md` with notes
|
|
64
|
+
|
|
65
|
+
## Step 8: Testing Phase
|
|
66
|
+
Guide testing in `docs/ai/testing/feature-{name}.md`:
|
|
67
|
+
- Draft unit test cases with `/writing-test`
|
|
68
|
+
- Draft integration test scenarios with `/writing-test`
|
|
69
|
+
- Recommend manual testing steps
|
|
70
|
+
- Help write test code
|
|
71
|
+
- Verify all success criteria are testable
|
|
72
|
+
|
|
73
|
+
## Step 9: Local Testing & Verification
|
|
74
|
+
Guide me through:
|
|
75
|
+
1. Running all tests locally
|
|
76
|
+
2. Manual testing checklist
|
|
77
|
+
3. Reviewing against requirements
|
|
78
|
+
4. Checking design compliance
|
|
79
|
+
5. Preparing for code review (diff summary, list of files, design references)
|
|
80
|
+
|
|
81
|
+
## Step 10: Local Code Review (Optional but recommended)
|
|
82
|
+
Before pushing, ask me to run `/code-review` with the modified file list and relevant docs.
|
|
83
|
+
|
|
84
|
+
## Step 11: Implementation Execution Reminder
|
|
85
|
+
When ready to implement, run `/execute-plan` to work through the planning doc tasks interactively. That command will orchestrate implementation, testing, and follow-up documentation.
|
|
86
|
+
|
|
87
|
+
## Step 12: Create Merge/Pull Request
|
|
88
|
+
Provide the MR/PR description:
|
|
89
|
+
```markdown
|
|
90
|
+
## Feature: [Feature Name]
|
|
91
|
+
|
|
92
|
+
### Summary
|
|
93
|
+
[Brief description of what this feature does]
|
|
94
|
+
|
|
95
|
+
### Requirements
|
|
96
|
+
- Documented in: `docs/ai/requirements/feature-{name}.md`
|
|
97
|
+
- Related to: [issue/ticket number if applicable]
|
|
98
|
+
|
|
99
|
+
### Changes
|
|
100
|
+
- [List key changes]
|
|
101
|
+
- [List new files/components]
|
|
102
|
+
- [List modified files]
|
|
103
|
+
|
|
104
|
+
### Design
|
|
105
|
+
- Architecture: [Link to design doc section]
|
|
106
|
+
- Key decisions: [Brief summary]
|
|
107
|
+
|
|
108
|
+
### Testing
|
|
109
|
+
- Unit tests: [coverage/status]
|
|
110
|
+
- Integration tests: [status]
|
|
111
|
+
- Manual testing: Completed
|
|
112
|
+
- Test documentation: `docs/ai/testing/feature-{name}.md`
|
|
113
|
+
|
|
114
|
+
### Checklist
|
|
115
|
+
- [ ] Code follows project standards
|
|
116
|
+
- [ ] All tests pass
|
|
117
|
+
- [ ] Documentation updated
|
|
118
|
+
- [ ] No breaking changes (or documented if any)
|
|
119
|
+
- [ ] Ready for review
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Then provide the appropriate command:
|
|
123
|
+
- **GitHub**: `gh pr create --title "feat: [feature-name]" --body-file pr-description.md`
|
|
124
|
+
- **GitLab**: `glab mr create --title "feat: [feature-name]" --description "$(cat mr-description.md)"`
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
**Let's start! Tell me about the feature you want to build.**
|
|
129
|
+
'''
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
description='''Review the design documentation for a feature to ensure
|
|
2
|
+
completeness and accuracy.'''
|
|
3
|
+
prompt='''Review the design documentation in docs/ai/design/feature-{name}.md (and the project-level README if relevant). Summarize:
|
|
4
|
+
- Architecture overview (ensure mermaid diagram is present and accurate)
|
|
5
|
+
- Key components and their responsibilities
|
|
6
|
+
- Technology choices and rationale
|
|
7
|
+
- Data models and relationships
|
|
8
|
+
- API/interface contracts (inputs, outputs, auth)
|
|
9
|
+
- Major design decisions and trade-offs
|
|
10
|
+
- Non-functional requirements that must be preserved
|
|
11
|
+
|
|
12
|
+
Highlight any inconsistencies, missing sections, or diagrams that need updates.
|
|
13
|
+
'''
|