@mind-fold/open-flow
Advanced tools
@@ -7,3 +7,2 @@ A new developer needs onboarding. | ||
| - `workflow/` directory structure | ||
| - Short commands available (/init-agent, /check-frontend, /check-backend, /record-agent-flow) | ||
| - Guidelines in `workflow/structure/` | ||
@@ -31,2 +30,40 @@ - Progress tracking in `workflow/agent-progress/` | ||
| 5. **Available slash commands**: | ||
| **Core Workflow**: | ||
| | Command | Purpose | | ||
| |---------|---------| | ||
| | `/init-agent` | Initialize AI session, read context | | ||
| | `/record-agent-flow` | Record work progress (after human commits) | | ||
| | `/onboard-developer` | Guide new developer through setup | | ||
| **Before Coding**: | ||
| | Command | Purpose | | ||
| |---------|---------| | ||
| | `/before-frontend-dev` | Read frontend guidelines first | | ||
| | `/before-backend-dev` | Read backend guidelines first | | ||
| **Code Checks**: | ||
| | Command | Purpose | | ||
| |---------|---------| | ||
| | `/check-frontend` | Check frontend code quality | | ||
| | `/check-backend` | Check backend code quality | | ||
| | `/check-cross-layer` | Verify cross-layer consistency | | ||
| **Work Completion**: | ||
| | Command | Purpose | | ||
| |---------|---------| | ||
| | `/finish-work` | Pre-commit checklist | | ||
| | `/break-loop` | End investigation loop | | ||
| **Utilities**: | ||
| | Command | Purpose | | ||
| |---------|---------| | ||
| | `/create-command` | Create new slash command | | ||
| | `/record-question` | Document solved problems | | ||
| | `/integrate-skill` | Integrate Claude skills into guidelines | | ||
| | `/extract-llm-docs` | Extract docs from LLM documentation | | ||
| | `/extract-to-rules` | Extract rules from source files | | ||
| | `/sync-from-runtime` | Sync knowledge from runtime docs | | ||
| Key points to emphasize: | ||
@@ -33,0 +70,0 @@ - AI should NOT execute `git commit` - human is responsible for testing and committing |
+1
-1
| { | ||
| "name": "@mind-fold/open-flow", | ||
| "version": "0.2.9", | ||
| "version": "0.2.10", | ||
| "description": "AI-assisted development workflow initializer for Cursor, Claude Code and more", | ||
@@ -5,0 +5,0 @@ "type": "module", |
| export declare const agentProgressIndexContent: string; | ||
| //# sourceMappingURL=agent-progress-index.d.ts.map |
| {"version":3,"file":"agent-progress-index.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/agent-progress-index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "agent-progress-index.md.txt"); | ||
| export const agentProgressIndexContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=agent-progress-index.js.map |
| {"version":3,"file":"agent-progress-index.js","sourceRoot":"","sources":["../../../src/templates/markdown/agent-progress-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const backendDocContent: string; | ||
| //# sourceMappingURL=backend-doc.d.ts.map |
| {"version":3,"file":"backend-doc.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/backend-doc.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "backend-doc.md.txt"); | ||
| export const backendDocContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=backend-doc.js.map |
| {"version":3,"file":"backend-doc.js","sourceRoot":"","sources":["../../../src/templates/markdown/backend-doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const backendIndexContent: string; | ||
| //# sourceMappingURL=backend-index.d.ts.map |
| {"version":3,"file":"backend-index.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/backend-index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "backend-index.md.txt"); | ||
| export const backendIndexContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=backend-index.js.map |
| {"version":3,"file":"backend-index.js","sourceRoot":"","sources":["../../../src/templates/markdown/backend-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const flowMdContent: string; | ||
| //# sourceMappingURL=flow.d.ts.map |
| {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/flow.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "flow.md.txt"); | ||
| export const flowMdContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=flow.js.map |
| {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../src/templates/markdown/flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const frontendDocContent: string; | ||
| //# sourceMappingURL=frontend-doc.d.ts.map |
| {"version":3,"file":"frontend-doc.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/frontend-doc.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "frontend-doc.md.txt"); | ||
| export const frontendDocContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=frontend-doc.js.map |
| {"version":3,"file":"frontend-doc.js","sourceRoot":"","sources":["../../../src/templates/markdown/frontend-doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const frontendIndexContent: string; | ||
| //# sourceMappingURL=frontend-index.d.ts.map |
| {"version":3,"file":"frontend-index.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/frontend-index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "frontend-index.md.txt"); | ||
| export const frontendIndexContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=frontend-index.js.map |
| {"version":3,"file":"frontend-index.js","sourceRoot":"","sources":["../../../src/templates/markdown/frontend-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const workflowGitignoreContent: string; | ||
| //# sourceMappingURL=gitignore.d.ts.map |
| {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../../src/templates/markdown/gitignore.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "gitignore.txt"); | ||
| export const workflowGitignoreContent = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=gitignore.js.map |
| {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../../src/templates/markdown/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const addSessionScript: string; | ||
| //# sourceMappingURL=add-session.d.ts.map |
| {"version":3,"file":"add-session.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/add-session.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "add-session.sh.txt"); | ||
| export const addSessionScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=add-session.js.map |
| {"version":3,"file":"add-session.js","sourceRoot":"","sources":["../../../src/templates/scripts/add-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const extractMdHeadingsScript: string; | ||
| //# sourceMappingURL=extract-md-headings.d.ts.map |
| {"version":3,"file":"extract-md-headings.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/extract-md-headings.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "extract-md-headings.sh.txt"); | ||
| export const extractMdHeadingsScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=extract-md-headings.js.map |
| {"version":3,"file":"extract-md-headings.js","sourceRoot":"","sources":["../../../src/templates/scripts/extract-md-headings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const featureScript: string; | ||
| //# sourceMappingURL=feature.d.ts.map |
| {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/feature.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "feature.sh.txt"); | ||
| export const featureScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=feature.js.map |
| {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../../src/templates/scripts/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const getContextScript: string; | ||
| //# sourceMappingURL=get-context.d.ts.map |
| {"version":3,"file":"get-context.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/get-context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "get-context.sh.txt"); | ||
| export const getContextScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=get-context.js.map |
| {"version":3,"file":"get-context.js","sourceRoot":"","sources":["../../../src/templates/scripts/get-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const getDeveloperScript: string; | ||
| //# sourceMappingURL=get-developer.d.ts.map |
| {"version":3,"file":"get-developer.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/get-developer.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "get-developer.sh.txt"); | ||
| export const getDeveloperScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=get-developer.js.map |
| {"version":3,"file":"get-developer.js","sourceRoot":"","sources":["../../../src/templates/scripts/get-developer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const initDeveloperScript: string; | ||
| //# sourceMappingURL=init-developer.d.ts.map |
| {"version":3,"file":"init-developer.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/init-developer.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "init-developer.sh.txt"); | ||
| export const initDeveloperScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=init-developer.js.map |
| {"version":3,"file":"init-developer.js","sourceRoot":"","sources":["../../../src/templates/scripts/init-developer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
| export declare const updateIndexScript: string; | ||
| //# sourceMappingURL=update-index.d.ts.map |
| {"version":3,"file":"update-index.d.ts","sourceRoot":"","sources":["../../../src/templates/scripts/update-index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,QAAyC,CAAC"} |
| import * as fs from "node:fs"; | ||
| import * as path from "node:path"; | ||
| const templatePath = path.join(__dirname, "update-index.sh.txt"); | ||
| export const updateIndexScript = fs.readFileSync(templatePath, "utf-8"); | ||
| //# sourceMappingURL=update-index.js.map |
| {"version":3,"file":"update-index.js","sourceRoot":"","sources":["../../../src/templates/scripts/update-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"} |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
305485
-3.45%104
-35%1040
-6.31%