@mind-fold/open-flow 0.1.3 → 0.1.5

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/dist/cli/index.js CHANGED
@@ -13,7 +13,7 @@ const program = new Command();
13
13
  program
14
14
  .name("open-flow")
15
15
  .description("AI-assisted development workflow initializer for Cursor, Claude Code and more")
16
- .version(VERSION);
16
+ .version(VERSION, "-v, --version", "output the version number");
17
17
  program
18
18
  .command("init")
19
19
  .description("Initialize open-flow in the current project")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,iCAAiC;AACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CACX,+EAA+E,CAC/E;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CACN,mBAAmB,EACnB,mDAAmD,CACnD;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzB,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,iCAAiC;AACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CACX,+EAA+E,CAC/E;KACA,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAEjE,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CACN,mBAAmB,EACnB,mDAAmD,CACnD;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzB,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuI9D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqJ9D"}
@@ -11,19 +11,9 @@ export async function init(options) {
11
11
  console.log(chalk.cyan("\nšŸš€ open-flow - AI-assisted development workflow initializer\n"));
12
12
  // Check if already initialized
13
13
  const workflowDir = path.join(cwd, "workflow");
14
- if (fs.existsSync(workflowDir)) {
15
- const { overwrite } = await inquirer.prompt([
16
- {
17
- type: "confirm",
18
- name: "overwrite",
19
- message: chalk.yellow("workflow/ directory already exists. Overwrite?"),
20
- default: false,
21
- },
22
- ]);
23
- if (!overwrite) {
24
- console.log(chalk.gray("Initialization cancelled."));
25
- return;
26
- }
14
+ const workflowExists = fs.existsSync(workflowDir);
15
+ if (workflowExists) {
16
+ console.log(chalk.yellow("āš ļø workflow/ directory already exists, skipping..."));
27
17
  }
28
18
  let tools;
29
19
  if (options.yes) {
@@ -33,10 +23,12 @@ export async function init(options) {
33
23
  else if (options.cursor || options.claude) {
34
24
  // Use flags
35
25
  tools = [];
36
- if (options.cursor)
26
+ if (options.cursor) {
37
27
  tools.push("cursor");
38
- if (options.claude)
28
+ }
29
+ if (options.claude) {
39
30
  tools.push("claude");
31
+ }
40
32
  }
41
33
  else {
42
34
  // Interactive mode
@@ -58,19 +50,33 @@ export async function init(options) {
58
50
  return;
59
51
  }
60
52
  console.log(chalk.gray(`\nConfiguring: ${tools.join(", ")}\n`));
61
- // Create workflow structure
62
- console.log(chalk.blue("šŸ“ Creating workflow structure..."));
63
- await createWorkflowStructure(cwd);
64
- // Configure selected tools
53
+ // Create workflow structure (skip if exists)
54
+ if (!workflowExists) {
55
+ console.log(chalk.blue("šŸ“ Creating workflow structure..."));
56
+ await createWorkflowStructure(cwd);
57
+ }
58
+ // Configure selected tools (skip if exists)
65
59
  if (tools.includes("cursor")) {
66
- console.log(chalk.blue("šŸ“ Configuring Cursor commands..."));
67
- await configureCursor(cwd);
60
+ const cursorDir = path.join(cwd, ".cursor/commands");
61
+ if (fs.existsSync(cursorDir)) {
62
+ console.log(chalk.yellow("āš ļø .cursor/commands/ already exists, skipping..."));
63
+ }
64
+ else {
65
+ console.log(chalk.blue("šŸ“ Configuring Cursor commands..."));
66
+ await configureCursor(cwd);
67
+ }
68
68
  }
69
69
  if (tools.includes("claude")) {
70
- console.log(chalk.blue("šŸ“ Configuring Claude Code commands..."));
71
- await configureClaude(cwd);
70
+ const claudeDir = path.join(cwd, ".claude/commands");
71
+ if (fs.existsSync(claudeDir)) {
72
+ console.log(chalk.yellow("āš ļø .claude/commands/ already exists, skipping..."));
73
+ }
74
+ else {
75
+ console.log(chalk.blue("šŸ“ Configuring Claude Code commands..."));
76
+ await configureClaude(cwd);
77
+ }
72
78
  }
73
- // Create root files
79
+ // Create root files (skip if exists)
74
80
  await createRootFiles(cwd);
75
81
  // Initialize developer identity if specified
76
82
  let developerInitialized = false;
@@ -107,6 +113,8 @@ export async function init(options) {
107
113
  chalk.gray(" command in your AI tool to start a session\n"));
108
114
  }
109
115
  async function createRootFiles(cwd) {
116
+ const initAgentPath = path.join(cwd, "init-agent.md");
117
+ const agentsPath = path.join(cwd, "AGENTS.md");
110
118
  // Create init-agent.md
111
119
  const initAgentContent = `# AI Agent Initialization Guide
112
120
 
@@ -198,7 +206,14 @@ cat workflow/flow.md
198
206
 
199
207
  **Ready to start? Follow the Quick Start section above!**
200
208
  `;
201
- fs.writeFileSync(path.join(cwd, "init-agent.md"), initAgentContent);
209
+ // Write init-agent.md (skip if exists)
210
+ if (!fs.existsSync(initAgentPath)) {
211
+ fs.writeFileSync(initAgentPath, initAgentContent);
212
+ console.log(chalk.blue("šŸ“„ Created init-agent.md"));
213
+ }
214
+ else {
215
+ console.log(chalk.yellow("āš ļø init-agent.md already exists, skipping..."));
216
+ }
202
217
  // Create AGENTS.md
203
218
  const agentsContent = `<!-- OPEN-FLOW:START -->
204
219
  # Open-Flow Instructions
@@ -219,6 +234,13 @@ Keep this managed block so 'open-flow update' can refresh the instructions.
219
234
 
220
235
  <!-- OPEN-FLOW:END -->
221
236
  `;
222
- fs.writeFileSync(path.join(cwd, "AGENTS.md"), agentsContent);
237
+ // Write AGENTS.md (skip if exists)
238
+ if (!fs.existsSync(agentsPath)) {
239
+ fs.writeFileSync(agentsPath, agentsContent);
240
+ console.log(chalk.blue("šŸ“„ Created AGENTS.md"));
241
+ }
242
+ else {
243
+ console.log(chalk.yellow("āš ļø AGENTS.md already exists, skipping..."));
244
+ }
223
245
  }
224
246
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/configurators/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAQtD"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/configurators/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAUtD"}
@@ -4,11 +4,13 @@
4
4
  */
5
5
  export function getCommandTemplates() {
6
6
  return {
7
- 'init-agent': getInitAgentTemplate(),
8
- 'check-frontend': getCheckFrontendTemplate(),
9
- 'check-backend': getCheckBackendTemplate(),
10
- 'record-agent-flow': getRecordAgentFlowTemplate(),
11
- 'onboard-developer': getOnboardDeveloperTemplate(),
7
+ "init-agent": getInitAgentTemplate(),
8
+ "check-frontend": getCheckFrontendTemplate(),
9
+ "check-backend": getCheckBackendTemplate(),
10
+ "record-agent-flow": getRecordAgentFlowTemplate(),
11
+ "onboard-developer": getOnboardDeveloperTemplate(),
12
+ "generate-frontend-structure": getGenerateFrontendStructureTemplate(),
13
+ "generate-backend-structure": getGenerateBackendStructureTemplate(),
12
14
  };
13
15
  }
14
16
  function getInitAgentTemplate() {
@@ -94,4 +96,544 @@ Key points to emphasize:
94
96
  - Read guidelines before coding (mandatory)
95
97
  `;
96
98
  }
99
+ function getGenerateFrontendStructureTemplate() {
100
+ return `# Generate Frontend Structure Guidelines
101
+
102
+ ## Task Description
103
+
104
+ Scan the project's frontend code, analyze existing code patterns and tech stack, then auto-generate \`index.md\` (navigation index) and \`doc.md\` (detailed guidelines) documents.
105
+
106
+ ---
107
+
108
+ ## Execution Steps
109
+
110
+ ### Step 1: Identify Frontend Directory
111
+
112
+ Scan these possible frontend directories to determine the main frontend code location:
113
+
114
+ \`\`\`bash
115
+ # Common frontend directories
116
+ ls -la apps/web/ 2>/dev/null || \\
117
+ ls -la src/ 2>/dev/null || \\
118
+ ls -la frontend/ 2>/dev/null || \\
119
+ ls -la client/ 2>/dev/null || \\
120
+ ls -la packages/web/ 2>/dev/null
121
+ \`\`\`
122
+
123
+ ### Step 2: Identify Tech Stack
124
+
125
+ Analyze \`package.json\` and code files to identify:
126
+
127
+ **Frameworks and Libraries**:
128
+ - [ ] Framework: Next.js / React / Vue / Svelte / Angular
129
+ - [ ] State Management: React Query / Zustand / Redux / Jotai / Pinia
130
+ - [ ] UI Library: Shadcn / Radix / MUI / Ant Design / Chakra
131
+ - [ ] Styling: Tailwind / CSS Modules / Styled Components / Sass
132
+ - [ ] Types: TypeScript / JavaScript
133
+ - [ ] API Client: tRPC / oRPC / REST / GraphQL
134
+
135
+ **Toolchain**:
136
+ - [ ] Build Tool: Vite / Webpack / Turbopack
137
+ - [ ] Package Manager: pnpm / npm / yarn / bun
138
+ - [ ] Linter: Biome / ESLint / Prettier
139
+
140
+ ### Step 3: Analyze Code Patterns
141
+
142
+ Scan frontend code to extract the following patterns:
143
+
144
+ **Directory Structure**:
145
+ \`\`\`bash
146
+ # List main directory structure
147
+ find [frontend-dir] -type d -maxdepth 3 | head -50
148
+ \`\`\`
149
+
150
+ **Component Patterns**:
151
+ - File naming convention (PascalCase / kebab-case)
152
+ - Component file structure (single file / folder)
153
+ - Export style (default / named)
154
+
155
+ **Hook Patterns**:
156
+ - Naming convention (useXxx)
157
+ - Query Hook patterns
158
+ - Mutation Hook patterns
159
+ - Custom Hook patterns
160
+
161
+ **Type Definition Patterns**:
162
+ - Type file locations
163
+ - Type import style
164
+ - Backend type reuse patterns
165
+
166
+ **API Call Patterns**:
167
+ - API client initialization
168
+ - Request/Response handling
169
+ - Error handling approach
170
+
171
+ **State Management Patterns**:
172
+ - Global state
173
+ - Local state
174
+ - URL state synchronization
175
+
176
+ ### Step 4: Generate Documents
177
+
178
+ Generate two files in \`workflow/structure/frontend/\` directory:
179
+
180
+ #### 4.1 Generate \`index.md\` (Index File)
181
+
182
+ The index file should include:
183
+
184
+ \`\`\`markdown
185
+ # Frontend Development Guidelines Index
186
+
187
+ > **Full Documentation**: See \`./doc.md\` for detailed guidelines
188
+
189
+ This index helps you quickly locate the guidelines you need based on your task type.
190
+
191
+ ## Quick Navigation
192
+
193
+ | Development Task | Section to Read | Line Range |
194
+ |-----------------|-----------------|------------|
195
+ | **New feature module** | Directory Structure | L5-XX |
196
+ | **Write Query Hook** | Hook Guidelines > Query Hook | LXX-XX |
197
+ | **Write Mutation Hook** | Hook Guidelines > Mutation Hook | LXX-XX |
198
+ | **API calls** | API Call Guidelines | LXX-XX |
199
+ | **State management** | State Management Guidelines | LXX-XX |
200
+ | **Write component** | Component Guidelines | LXX-XX |
201
+ | **Performance optimization** | Performance Guidelines | LXX-XX |
202
+ | **Code quality check** | Code Quality Guidelines | LXX-XX |
203
+
204
+ ## By Development Scenario
205
+
206
+ ### Scenario 1: Create a new Query Hook
207
+
208
+ **Required Reading**:
209
+ - Type Safety > Backend Contract Types (LXX-XX)
210
+ - Hook Guidelines > Query Hook (LXX-XX)
211
+
212
+ ### Scenario 2: Create a new UI Component
213
+
214
+ **Required Reading**:
215
+ - Component Guidelines > Component Structure (LXX-XX)
216
+ - Component Guidelines > Styling Standards (LXX-XX)
217
+
218
+ [... add more scenarios based on project needs ...]
219
+
220
+ ## Core Rules Quick Reference
221
+
222
+ | Rule | Location |
223
+ |------|----------|
224
+ | Import types from backend, don't redefine | LXX-XX |
225
+ | No any type allowed | LXX-XX |
226
+ | [other core rules...] | LXX-XX |
227
+
228
+ ## Reference Example Files
229
+
230
+ | Feature | Reference File |
231
+ |---------|----------------|
232
+ | Query Hook | \`[path]\` |
233
+ | Mutation Hook | \`[path]\` |
234
+ | Component | \`[path]\` |
235
+ \`\`\`
236
+
237
+ #### 4.2 Generate \`doc.md\` (Detailed Guidelines)
238
+
239
+ Detailed guidelines should include these sections (adjust based on project):
240
+
241
+ \`\`\`markdown
242
+ # Frontend Development Guidelines
243
+
244
+ These guidelines define the development standards and best practices for [Project Name] frontend modules.
245
+
246
+ ## šŸ“ Directory Structure Guidelines
247
+
248
+ ### Module Organization
249
+ [Describe directory structure with tree diagram code block]
250
+
251
+ **Reference Example**:
252
+ - \`[path]\` - [description]
253
+
254
+ ## šŸŽÆ Type Safety Guidelines
255
+
256
+ ### 1. Backend Contract Types vs Frontend View Models
257
+
258
+ #### āœ… Correct Approach - Import Types from Backend
259
+ [code example]
260
+
261
+ #### āŒ Wrong Approach
262
+ [anti-pattern code example]
263
+
264
+ ## šŸŖ Hook Development Guidelines
265
+
266
+ ### 1. Query Hook Standards
267
+
268
+ #### āœ… Correct Query Hook Pattern
269
+ [code example]
270
+
271
+ ### 2. Mutation Hook Standards
272
+
273
+ #### āœ… Correct Mutation Hook Pattern
274
+ [code example]
275
+
276
+ ## šŸ”Œ API Call Guidelines
277
+
278
+ ### Basic Usage
279
+ [code example]
280
+
281
+ ## šŸ—ļø State Management Guidelines
282
+
283
+ ### 1. URL State Management
284
+ [code example]
285
+
286
+ ### 2. React Context Standards
287
+ [code example]
288
+
289
+ ## šŸŽØ Component Development Guidelines
290
+
291
+ ### 1. Component Structure
292
+ [code example]
293
+
294
+ ### 2. Styling Standards
295
+ [code example]
296
+
297
+ ## ⚔ Performance Optimization Guidelines
298
+
299
+ [performance rules]
300
+
301
+ ## šŸ” Code Quality Guidelines
302
+
303
+ ### Lint and Formatting
304
+ [tool configuration and usage]
305
+
306
+ ## āœ… Checklist
307
+
308
+ - [ ] Code passes lint check
309
+ - [ ] Type check passes
310
+ - [ ] [other check items...]
311
+
312
+ ## šŸ“š Reference Examples
313
+
314
+ | Feature | Reference File |
315
+ |---------|----------------|
316
+ | [Feature1] | \`[path]\` |
317
+ \`\`\`
318
+
319
+ ---
320
+
321
+ ## Output Requirements
322
+
323
+ 1. **Create directory**: \`mkdir -p workflow/structure/frontend\`
324
+ 2. **Generate index.md**: Include navigation tables
325
+ 3. **Generate doc.md**: Include complete detailed guidelines
326
+ 4. **Update line numbers**: Ensure index.md line numbers match doc.md
327
+ 5. **Use actual project code**: Examples should come from real project files
328
+
329
+ ---
330
+
331
+ ## Completion Confirmation
332
+
333
+ - [ ] \`index.md\` created with navigation table
334
+ - [ ] \`doc.md\` created with detailed guidelines
335
+ - [ ] Line numbers correctly annotated
336
+ - [ ] Example code from actual project files
337
+ - [ ] Covers all major patterns used in project
338
+
339
+ Report: "Frontend structure guidelines generated, please check \`workflow/structure/frontend/\` directory"
340
+ `;
341
+ }
342
+ function getGenerateBackendStructureTemplate() {
343
+ return `# Generate Backend Structure Guidelines
344
+
345
+ ## Task Description
346
+
347
+ Scan the project's backend code, analyze existing code patterns and tech stack, then auto-generate \`index.md\` (navigation index) and \`doc.md\` (detailed guidelines) documents.
348
+
349
+ ---
350
+
351
+ ## Execution Steps
352
+
353
+ ### Step 1: Identify Backend Directory
354
+
355
+ Scan these possible backend directories to determine the main backend code location:
356
+
357
+ \`\`\`bash
358
+ # Common backend directories
359
+ ls -la packages/api/ 2>/dev/null || \\
360
+ ls -la apps/api/ 2>/dev/null || \\
361
+ ls -la server/ 2>/dev/null || \\
362
+ ls -la backend/ 2>/dev/null || \\
363
+ ls -la src/api/ 2>/dev/null || \\
364
+ ls -la api/ 2>/dev/null
365
+ \`\`\`
366
+
367
+ ### Step 2: Identify Tech Stack
368
+
369
+ Analyze \`package.json\` and code files to identify:
370
+
371
+ **Frameworks and Libraries**:
372
+ - [ ] Runtime: Node.js / Bun / Deno
373
+ - [ ] Framework: Express / Fastify / Hono / Nest.js / Next.js API
374
+ - [ ] ORM: Drizzle / Prisma / TypeORM / Sequelize / Knex
375
+ - [ ] Database: PostgreSQL / MySQL / MongoDB / SQLite
376
+ - [ ] Validation: Zod / Yup / Joi / class-validator
377
+ - [ ] API Style: REST / GraphQL / tRPC / oRPC / gRPC
378
+ - [ ] Authentication: better-auth / next-auth / passport / jwt
379
+
380
+ **Toolchain**:
381
+ - [ ] Types: TypeScript / JavaScript
382
+ - [ ] Linter: Biome / ESLint
383
+ - [ ] Testing: Vitest / Jest / Mocha
384
+
385
+ ### Step 3: Analyze Code Patterns
386
+
387
+ Scan backend code to extract the following patterns:
388
+
389
+ **Directory Structure**:
390
+ \`\`\`bash
391
+ # List main directory structure
392
+ find [backend-dir] -type d -maxdepth 3 | head -50
393
+ \`\`\`
394
+
395
+ **Module Organization Patterns**:
396
+ - Module division style (by feature / by layer)
397
+ - File naming conventions
398
+ - Export patterns
399
+
400
+ **Type Definition Patterns**:
401
+ - Zod Schema organization
402
+ - Type export standards
403
+ - Input/Output type definitions
404
+
405
+ **Router/Endpoint Patterns**:
406
+ - Route organization
407
+ - Middleware usage
408
+ - Parameter validation approach
409
+
410
+ **Database Operation Patterns**:
411
+ - Query function organization
412
+ - Transaction handling
413
+ - Batch operation patterns
414
+
415
+ **Error Handling Patterns**:
416
+ - Error type definitions
417
+ - Exception catching approach
418
+ - Response format standards
419
+
420
+ **Logging Patterns**:
421
+ - Logging tool
422
+ - Log level usage
423
+ - Structured log format
424
+
425
+ ### Step 4: Generate Documents
426
+
427
+ Generate two files in \`workflow/structure/backend/\` directory:
428
+
429
+ #### 4.1 Generate \`index.md\` (Index File)
430
+
431
+ \`\`\`markdown
432
+ # Backend Development Guidelines Index
433
+
434
+ > **Full Documentation**: See \`./doc.md\` for detailed guidelines
435
+
436
+ This index helps you quickly locate the sections and line numbers needed for backend tasks.
437
+
438
+ ## Quick Navigation
439
+
440
+ | Section | Key Content | Line Range |
441
+ |---------|-------------|------------|
442
+ | šŸ“ Directory Structure | Module directory template, examples | L5-XX |
443
+ | šŸŽÆ Type Safety Guidelines | TypeScript rules, Zod Schema | LXX-XX |
444
+ | 🪵 Logging Guidelines | Structured logging, no console | LXX-XX |
445
+ | šŸ—„ļø Database Operation Guidelines | Query directory, batch operations | LXX-XX |
446
+ | šŸŽØ Error Handling | Graceful degradation, response format | LXX-XX |
447
+ | šŸŽÆ Router Guidelines | Route definitions, middleware | LXX-XX |
448
+ | āœ… Checklist | Pre-commit checks | LXX-XX |
449
+
450
+ ## By Scenario
451
+
452
+ ### Scenario 1: Create New API Module
453
+ - Required: šŸ“ Directory Structure (LXX-XX)
454
+ - Also read: šŸŽÆ Type Safety Guidelines (LXX-XX)
455
+
456
+ ### Scenario 2: Write Database Operations
457
+ - Required: šŸ—„ļø Database Operation Guidelines (LXX-XX)
458
+ - Reference: šŸŽØ Error Handling (LXX-XX)
459
+
460
+ ### Scenario 3: Add New Endpoint
461
+ - Required: šŸŽÆ Router Guidelines (LXX-XX)
462
+ - Reference: šŸŽÆ Type Safety Guidelines (LXX-XX)
463
+
464
+ [... add more scenarios based on project needs ...]
465
+
466
+ ## Core Rules Quick Reference
467
+
468
+ | Rule | Location |
469
+ |------|----------|
470
+ | **All inputs/outputs must have Zod Schema** | LXX-XX |
471
+ | **Response body must include success + reason** | LXX-XX |
472
+ | **Never await database in loops** | LXX-XX |
473
+ | [other core rules...] | LXX-XX |
474
+
475
+ ## Reference Examples
476
+
477
+ | Feature | Reference File |
478
+ |---------|----------------|
479
+ | Complete module structure | \`[path]\` |
480
+ | Zod Schema definition | \`[path]\` |
481
+ | Database operations | \`[path]\` |
482
+ \`\`\`
483
+
484
+ #### 4.2 Generate \`doc.md\` (Detailed Guidelines)
485
+
486
+ \`\`\`markdown
487
+ # Backend Development Guidelines
488
+
489
+ These guidelines define the development standards and best practices for [Project Name] backend modules.
490
+
491
+ ## šŸ“ Directory Structure Guidelines
492
+
493
+ ### Module Organization
494
+ [describe directory structure]
495
+
496
+ ## šŸŽÆ Type Safety Guidelines
497
+
498
+ ### 1. TypeScript Non-null Assertion Rules
499
+
500
+ **Never use non-null assertion operator (\`!\`), use local variable extraction instead**
501
+
502
+ #### āŒ Wrong Approach
503
+
504
+ \\\`\\\`\\\`typescript
505
+ if (user.profileId) {
506
+ await db.update(profiles)
507
+ .set({ name: newName })
508
+ .where(eq(profiles.id, user.profileId!)); // āŒ non-null assertion
509
+ }
510
+ \\\`\\\`\\\`
511
+
512
+ #### āœ… Correct Approach
513
+
514
+ \\\`\\\`\\\`typescript
515
+ if (user.profileId) {
516
+ const profileId = user.profileId; // type narrowed to string
517
+ await db.update(profiles)
518
+ .set({ name: newName })
519
+ .where(eq(profiles.id, profileId)); // āœ… type safe
520
+ }
521
+ \\\`\\\`\\\`
522
+
523
+ ### 2. Zod Schema Definition
524
+
525
+ **All API endpoints must use Zod to define input/output schemas**
526
+
527
+ ### 3. Response Format Standards
528
+
529
+ #### Single Operation Response
530
+ \\\`\\\`\\\`typescript
531
+ {
532
+ success: boolean, // operation result
533
+ reason?: string, // success message or failure reason
534
+ error?: string, // detailed error info
535
+ // ... other domain-specific fields
536
+ }
537
+ \\\`\\\`\\\`
538
+
539
+ #### Batch Operation Response
540
+ \\\`\\\`\\\`typescript
541
+ {
542
+ success: boolean, // overall result
543
+ total: number, // total processed
544
+ processed: number, // succeeded count
545
+ failed: number, // failed count
546
+ errors?: Array<{id: string, error: string}>
547
+ }
548
+ \\\`\\\`\\\`
549
+
550
+ ## 🪵 Logging Guidelines
551
+
552
+ ### Use Structured Logging
553
+
554
+ **Never use \`console.log\` or \`console.error\`**
555
+
556
+ #### āœ… Correct Approach
557
+ [code example using logger]
558
+
559
+ #### āŒ Wrong Approach
560
+ [anti-pattern example]
561
+
562
+ ## šŸ—„ļø Database Operation Guidelines
563
+
564
+ ### 🚨 Never Execute Database Operations in Loops
565
+
566
+ #### āŒ Wrong Approach - N+1 Problem
567
+ [anti-pattern code example]
568
+
569
+ #### āœ… Correct Approach - Batch Query
570
+ [correct pattern code example]
571
+
572
+ ### Batch Insert
573
+ [code example]
574
+
575
+ ### Conflict Handling
576
+ [code example with onConflictDoUpdate]
577
+
578
+ ## šŸŽØ Error Handling
579
+
580
+ ### Graceful Degradation
581
+ [code example]
582
+
583
+ ### Promise.allSettled
584
+ [code example for batch operations]
585
+
586
+ ## šŸŽÆ Router Guidelines
587
+
588
+ ### Hono Router Example
589
+ [code example]
590
+
591
+ ### oRPC Router Example
592
+ [code example]
593
+
594
+ ## āœ… Checklist
595
+
596
+ Before committing, confirm:
597
+
598
+ - [ ] All API inputs use Zod Schema validation
599
+ - [ ] All API outputs have clear type definitions
600
+ - [ ] Response format includes \`success\` and \`reason\` fields
601
+ - [ ] Database operations not executed in loops
602
+ - [ ] Batch operations use \`Promise.allSettled\`
603
+ - [ ] Use \`logger\` instead of \`console\`
604
+ - [ ] No non-null assertions \`!\`
605
+ - [ ] Error handling returns degraded result instead of throwing
606
+ - [ ] \`pnpm lint\` passes
607
+ - [ ] \`pnpm type-check\` passes
608
+
609
+ ## šŸ“š Reference Examples
610
+
611
+ | Feature | Reference File |
612
+ |---------|----------------|
613
+ | [Feature1] | \`[path]\` |
614
+ \`\`\`
615
+
616
+ ---
617
+
618
+ ## Output Requirements
619
+
620
+ 1. **Create directory**: \`mkdir -p workflow/structure/backend\`
621
+ 2. **Generate index.md**: Include navigation tables
622
+ 3. **Generate doc.md**: Include complete detailed guidelines
623
+ 4. **Update line numbers**: Ensure index.md line numbers match doc.md
624
+ 5. **Use actual project code**: Examples should come from real project files
625
+
626
+ ---
627
+
628
+ ## Completion Confirmation
629
+
630
+ - [ ] \`index.md\` created with navigation table
631
+ - [ ] \`doc.md\` created with detailed guidelines
632
+ - [ ] Line numbers correctly annotated
633
+ - [ ] Example code from actual project files
634
+ - [ ] Covers all major patterns used in project
635
+
636
+ Report: "Backend structure guidelines generated, please check \`workflow/structure/backend/\` directory"
637
+ `;
638
+ }
97
639
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/configurators/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,YAAY,EAAE,oBAAoB,EAAE;QACpC,gBAAgB,EAAE,wBAAwB,EAAE;QAC5C,eAAe,EAAE,uBAAuB,EAAE;QAC1C,mBAAmB,EAAE,0BAA0B,EAAE;QACjD,mBAAmB,EAAE,2BAA2B,EAAE;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;;;;;;;;CAQR,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;CAQR,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;CAwBR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/configurators/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,mBAAmB;IAClC,OAAO;QACN,YAAY,EAAE,oBAAoB,EAAE;QACpC,gBAAgB,EAAE,wBAAwB,EAAE;QAC5C,eAAe,EAAE,uBAAuB,EAAE;QAC1C,mBAAmB,EAAE,0BAA0B,EAAE;QACjD,mBAAmB,EAAE,2BAA2B,EAAE;QAClD,6BAA6B,EAAE,oCAAoC,EAAE;QACrE,4BAA4B,EAAE,mCAAmC,EAAE;KACnE,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC5B,OAAO;;;;;;;;;CASP,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB;IAChC,OAAO;;;;;;;;CAQP,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB;IAC/B,OAAO;;;;;;;;CAQP,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B;IAClC,OAAO;;;;;;;;;;;;;;;;;;;CAmBP,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;CAwBP,CAAC;AACF,CAAC;AAED,SAAS,oCAAoC;IAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgPP,CAAC;AACF,CAAC;AAED,SAAS,mCAAmC;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsSP,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mind-fold/open-flow",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "AI-assisted development workflow initializer for Cursor, Claude Code and more",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",