claude-code-workflow 6.1.4 → 6.2.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/.claude/CLAUDE.md +10 -0
- package/.claude/agents/action-planning-agent.md +857 -778
- package/.claude/agents/cli-execution-agent.md +266 -269
- package/.claude/agents/cli-explore-agent.md +2 -2
- package/.claude/agents/cli-lite-planning-agent.md +142 -92
- package/.claude/agents/cli-planning-agent.md +4 -4
- package/.claude/agents/code-developer.md +7 -6
- package/.claude/agents/conceptual-planning-agent.md +2 -2
- package/.claude/agents/context-search-agent.md +31 -32
- package/.claude/agents/doc-generator.md +4 -4
- package/.claude/agents/memory-bridge.md +93 -93
- package/.claude/agents/test-context-search-agent.md +8 -7
- package/.claude/agents/test-fix-agent.md +7 -6
- package/.claude/commands/clean.md +516 -0
- package/.claude/commands/memory/compact.md +383 -0
- package/.claude/commands/memory/docs-full-cli.md +471 -471
- package/.claude/commands/memory/docs-related-cli.md +386 -386
- package/.claude/commands/memory/docs.md +615 -615
- package/.claude/commands/memory/load.md +5 -5
- package/.claude/commands/memory/tech-research-rules.md +310 -0
- package/.claude/commands/memory/update-full.md +332 -332
- package/.claude/commands/memory/workflow-skill-memory.md +4 -4
- package/.claude/commands/task/create.md +151 -151
- package/.claude/commands/version.md +254 -254
- package/.claude/commands/workflow/brainstorm/api-designer.md +587 -585
- package/.claude/commands/workflow/brainstorm/artifacts.md +1 -0
- package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -443
- package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
- package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
- package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
- package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
- package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
- package/.claude/commands/workflow/brainstorm/system-architect.md +389 -387
- package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
- package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
- package/.claude/commands/workflow/debug.md +321 -0
- package/.claude/commands/workflow/execute.md +13 -0
- package/.claude/commands/workflow/init.md +165 -164
- package/.claude/commands/workflow/lite-execute.md +119 -13
- package/.claude/commands/workflow/lite-fix.md +623 -621
- package/.claude/commands/workflow/lite-plan.md +610 -592
- package/.claude/commands/workflow/plan.md +5 -5
- package/.claude/commands/workflow/review-module-cycle.md +2 -0
- package/.claude/commands/workflow/review-session-cycle.md +2 -0
- package/.claude/commands/workflow/review.md +297 -291
- package/.claude/commands/workflow/session/complete.md +153 -500
- package/.claude/commands/workflow/session/list.md +95 -95
- package/.claude/commands/workflow/session/resume.md +60 -60
- package/.claude/commands/workflow/session/start.md +199 -199
- package/.claude/commands/workflow/tdd-plan.md +3 -3
- package/.claude/commands/workflow/tdd-verify.md +23 -9
- package/.claude/commands/workflow/test-cycle-execute.md +2 -0
- package/.claude/commands/workflow/test-fix-gen.md +699 -699
- package/.claude/commands/workflow/tools/conflict-resolution.md +104 -18
- package/.claude/commands/workflow/tools/context-gather.md +436 -434
- package/.claude/commands/workflow/tools/task-generate-agent.md +490 -291
- package/.claude/commands/workflow/tools/task-generate-tdd.md +18 -10
- package/.claude/commands/workflow/tools/test-concept-enhanced.md +2 -1
- package/.claude/commands/workflow/tools/test-context-gather.md +1 -0
- package/.claude/commands/workflow/tools/test-task-generate.md +1 -0
- package/.claude/commands/workflow/ui-design/import-from-code.md +9 -6
- package/.claude/skills/command-guide/SKILL.md +5 -5
- package/.claude/skills/command-guide/index/all-commands.json +1 -1
- package/.claude/skills/command-guide/index/by-category.json +1 -1
- package/.claude/skills/command-guide/index/by-use-case.json +1 -1
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -778
- package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +266 -269
- package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +2 -2
- package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +142 -92
- package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +4 -4
- package/.claude/skills/command-guide/reference/agents/code-developer.md +7 -6
- package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +2 -2
- package/.claude/skills/command-guide/reference/agents/context-search-agent.md +31 -32
- package/.claude/skills/command-guide/reference/agents/doc-generator.md +4 -4
- package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
- package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +8 -7
- package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +7 -6
- package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
- package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
- package/.claude/skills/command-guide/reference/commands/memory/docs.md +17 -16
- package/.claude/skills/command-guide/reference/commands/memory/load.md +5 -5
- package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +194 -357
- package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
- package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +4 -4
- package/.claude/skills/command-guide/reference/commands/task/create.md +151 -151
- package/.claude/skills/command-guide/reference/commands/version.md +254 -254
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -585
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -443
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -220
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -387
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -221
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -221
- package/.claude/skills/command-guide/reference/commands/workflow/execute.md +25 -20
- package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -164
- package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -686
- package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -621
- package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -592
- package/.claude/skills/command-guide/reference/commands/workflow/plan.md +5 -5
- package/.claude/skills/command-guide/reference/commands/workflow/review.md +25 -18
- package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -500
- package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +45 -27
- package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +35 -19
- package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +90 -33
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +3 -3
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +23 -9
- package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -699
- package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +103 -17
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -291
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +17 -10
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +6 -6
- package/.claude/workflows/chinese-response.md +38 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
- package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -131
- package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +5 -9
- package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +5 -9
- package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
- package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
- package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
- package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +25 -0
- package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +25 -0
- package/.claude/workflows/cli-tools-usage.md +526 -0
- package/{CLAUDE.md → .claude/workflows/coding-philosophy.md} +24 -45
- package/.claude/workflows/context-tools.md +84 -0
- package/.claude/workflows/file-modification.md +64 -0
- package/.claude/workflows/tool-strategy.md +216 -79
- package/.claude/workflows/windows-platform.md +16 -0
- package/.claude/workflows/workflow-architecture.md +942 -942
- package/.codex/AGENTS.md +63 -330
- package/.codex/prompts/debug.md +318 -0
- package/.codex/prompts/execute.md +273 -0
- package/.codex/prompts/lite-execute.md +164 -0
- package/.codex/prompts/lite-plan.md +469 -0
- package/.codex/prompts.zip +0 -0
- package/.gemini/GEMINI.md +25 -164
- package/.qwen/QWEN.md +0 -139
- package/README.md +29 -9
- package/ccw/README.md +30 -6
- package/ccw/bin/ccw-mcp.js +7 -0
- package/ccw/bin/ccw.js +9 -9
- package/ccw/package.json +65 -47
- package/ccw/src/.workflow/.cli-history/history.db +0 -0
- package/ccw/src/.workflow/.cli-history/history.db-shm +0 -0
- package/ccw/src/.workflow/.cli-history/history.db-wal +0 -0
- package/ccw/src/cli.ts +244 -0
- package/ccw/src/commands/cli.ts +740 -0
- package/ccw/src/commands/core-memory.ts +770 -0
- package/ccw/src/commands/hook.ts +315 -0
- package/ccw/src/commands/install.ts +519 -0
- package/ccw/src/commands/{list.js → list.ts} +1 -1
- package/ccw/src/commands/memory.ts +1090 -0
- package/ccw/src/commands/{serve.js → serve.ts} +14 -5
- package/ccw/src/commands/session-path-resolver.ts +372 -0
- package/ccw/src/commands/session.ts +1141 -0
- package/ccw/src/commands/{stop.js → stop.ts} +16 -6
- package/ccw/src/commands/tool.ts +201 -0
- package/ccw/src/commands/{uninstall.js → uninstall.ts} +89 -40
- package/ccw/src/commands/{upgrade.js → upgrade.ts} +68 -23
- package/ccw/src/commands/{view.js → view.ts} +22 -8
- package/ccw/src/config/storage-paths.ts +670 -0
- package/ccw/src/core/cache-manager.ts +294 -0
- package/ccw/src/core/claude-freshness.ts +319 -0
- package/ccw/src/core/core-memory-store.ts +1528 -0
- package/ccw/src/core/{dashboard-generator-patch.js → dashboard-generator-patch.ts} +18 -0
- package/ccw/src/core/{dashboard-generator.js → dashboard-generator.ts} +69 -12
- package/ccw/src/core/data-aggregator.ts +584 -0
- package/ccw/src/core/history-importer.ts +625 -0
- package/ccw/src/core/{lite-scanner.js → lite-scanner-complete.ts} +162 -66
- package/ccw/src/core/lite-scanner.ts +469 -0
- package/ccw/src/core/{manifest.js → manifest.ts} +104 -34
- package/ccw/src/core/memory-embedder-bridge.ts +262 -0
- package/ccw/src/core/memory-store.ts +978 -0
- package/ccw/src/core/routes/ccw-routes.ts +96 -0
- package/ccw/src/core/routes/claude-routes.ts +1183 -0
- package/ccw/src/core/routes/cli-routes.ts +561 -0
- package/ccw/src/core/routes/codexlens-routes.ts +806 -0
- package/ccw/src/core/routes/core-memory-routes.ts +605 -0
- package/ccw/src/core/routes/files-routes.ts +428 -0
- package/ccw/src/core/routes/graph-routes.md +164 -0
- package/ccw/src/core/routes/graph-routes.ts +626 -0
- package/ccw/src/core/routes/help-routes.ts +308 -0
- package/ccw/src/core/routes/hooks-routes.ts +405 -0
- package/ccw/src/core/routes/mcp-routes.ts +1271 -0
- package/ccw/src/core/routes/mcp-routes.ts.backup +550 -0
- package/ccw/src/core/routes/mcp-templates-db.ts +268 -0
- package/ccw/src/core/routes/memory-routes.ts +1206 -0
- package/ccw/src/core/routes/rules-routes.ts +526 -0
- package/ccw/src/core/routes/session-routes.ts +467 -0
- package/ccw/src/core/routes/skills-routes.ts +599 -0
- package/ccw/src/core/routes/status-routes.ts +57 -0
- package/ccw/src/core/routes/system-routes.ts +427 -0
- package/ccw/src/core/server.ts +431 -0
- package/ccw/src/core/session-clustering-service.ts +1258 -0
- package/ccw/src/core/session-scanner.ts +283 -0
- package/ccw/src/core/websocket.ts +190 -0
- package/ccw/src/{index.js → index.ts} +1 -0
- package/ccw/src/mcp-server/index.ts +186 -0
- package/ccw/src/templates/assets/css/github-dark.min.css +10 -0
- package/ccw/src/templates/assets/css/github.min.css +10 -0
- package/ccw/src/templates/assets/js/cytoscape.min.js +32 -0
- package/ccw/src/templates/assets/js/d3.min.js +2 -0
- package/ccw/src/templates/assets/js/highlight.min.js +1244 -0
- package/ccw/src/templates/assets/js/lucide.min.js +12 -0
- package/ccw/src/templates/assets/js/marked.min.js +69 -0
- package/ccw/src/templates/assets/js/tailwind.js +83 -0
- package/ccw/src/templates/dashboard-css/01-base.css +11 -0
- package/ccw/src/templates/dashboard-css/02-session.css +22 -0
- package/ccw/src/templates/dashboard-css/04-lite-tasks.css +10 -0
- package/ccw/src/templates/dashboard-css/06-cards.css +10 -4
- package/ccw/src/templates/dashboard-css/07-managers.css +1178 -7
- package/ccw/src/templates/dashboard-css/09-explorer.css +23 -12
- package/ccw/src/templates/dashboard-css/10-cli-status.css +337 -0
- package/ccw/src/templates/dashboard-css/11-cli-history.css +271 -0
- package/ccw/src/templates/dashboard-css/12-cli-legacy.css +796 -0
- package/ccw/src/templates/dashboard-css/13-cli-ccw.css +199 -0
- package/ccw/src/templates/dashboard-css/14-cli-modals.css +258 -0
- package/ccw/src/templates/dashboard-css/15-cli-endpoints.css +305 -0
- package/ccw/src/templates/dashboard-css/16-cli-session.css +241 -0
- package/ccw/src/templates/dashboard-css/17-cli-conversation.css +283 -0
- package/ccw/src/templates/dashboard-css/18-cli-settings.css +160 -0
- package/ccw/src/templates/dashboard-css/19-cli-native-session.css +496 -0
- package/ccw/src/templates/dashboard-css/20-cli-taskqueue.css +188 -0
- package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +310 -0
- package/ccw/src/templates/dashboard-css/22-cli-semantic.css +240 -0
- package/ccw/src/templates/dashboard-css/23-memory.css +2390 -0
- package/ccw/src/templates/dashboard-css/24-prompt-history.css +1089 -0
- package/ccw/src/templates/dashboard-css/25-skills-rules.css +326 -0
- package/ccw/src/templates/dashboard-css/26-claude-manager.css +908 -0
- package/ccw/src/templates/dashboard-css/27-graph-explorer.css +1678 -0
- package/ccw/src/templates/dashboard-css/28-mcp-manager.css +748 -0
- package/ccw/src/templates/dashboard-css/29-help.css +264 -0
- package/ccw/src/templates/dashboard-css/30-core-memory.css +1700 -0
- package/ccw/src/templates/dashboard-js/api.js +162 -142
- package/ccw/src/templates/dashboard-js/components/carousel.js +4 -4
- package/ccw/src/templates/dashboard-js/components/cli-history.js +876 -0
- package/ccw/src/templates/dashboard-js/components/cli-status.js +978 -0
- package/ccw/src/templates/dashboard-js/components/global-notifications.js +508 -219
- package/ccw/src/templates/dashboard-js/components/hook-manager.js +1277 -282
- package/ccw/src/templates/dashboard-js/components/index-manager.js +302 -0
- package/ccw/src/templates/dashboard-js/components/mcp-manager.js +718 -27
- package/ccw/src/templates/dashboard-js/components/modals.js +66 -0
- package/ccw/src/templates/dashboard-js/components/navigation.js +80 -12
- package/ccw/src/templates/dashboard-js/components/notifications.js +758 -194
- package/ccw/src/templates/dashboard-js/components/storage-manager.js +478 -0
- package/ccw/src/templates/dashboard-js/components/tabs-other.js +157 -6
- package/ccw/src/templates/dashboard-js/components/task-queue-sidebar.js +716 -0
- package/ccw/src/templates/dashboard-js/help-i18n.js +272 -0
- package/ccw/src/templates/dashboard-js/i18n.js +2807 -0
- package/ccw/src/templates/dashboard-js/main.js +15 -0
- package/ccw/src/templates/dashboard-js/state.js +243 -42
- package/ccw/src/templates/dashboard-js/utils.js +47 -1
- package/ccw/src/templates/dashboard-js/views/claude-manager.js +912 -0
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +2272 -0
- package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +964 -0
- package/ccw/src/templates/dashboard-js/views/core-memory-clusters.js +503 -0
- package/ccw/src/templates/dashboard-js/views/core-memory.js +782 -0
- package/ccw/src/templates/dashboard-js/views/explorer.js +888 -852
- package/ccw/src/templates/dashboard-js/views/graph-explorer.js +1157 -0
- package/ccw/src/templates/dashboard-js/views/help.js +856 -0
- package/ccw/src/templates/dashboard-js/views/history.js +337 -0
- package/ccw/src/templates/dashboard-js/views/home.js +61 -15
- package/ccw/src/templates/dashboard-js/views/hook-manager.js +311 -43
- package/ccw/src/templates/dashboard-js/views/lite-tasks.js +204 -28
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js +2187 -411
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js.backup +1729 -0
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js.new +928 -0
- package/ccw/src/templates/dashboard-js/views/memory.js +1221 -0
- package/ccw/src/templates/dashboard-js/views/prompt-history.js +713 -0
- package/ccw/src/templates/dashboard-js/views/rules-manager.js +828 -0
- package/ccw/src/templates/dashboard-js/views/session-detail.js +54 -53
- package/ccw/src/templates/dashboard-js/views/skills-manager.js +819 -0
- package/ccw/src/templates/dashboard.html +185 -85
- package/ccw/src/templates/hooks-config-example.json +60 -0
- package/ccw/src/tools/classify-folders.ts +245 -0
- package/ccw/src/tools/cli-config-manager.ts +268 -0
- package/ccw/src/tools/cli-executor.ts +2014 -0
- package/ccw/src/tools/cli-history-store.ts +1195 -0
- package/ccw/src/tools/codex-lens.ts +1141 -0
- package/ccw/src/tools/{convert-tokens-to-css.js → convert-tokens-to-css.ts} +73 -23
- package/ccw/src/tools/core-memory.ts +444 -0
- package/ccw/src/tools/detect-changed-modules.ts +325 -0
- package/ccw/src/tools/{discover-design-files.js → discover-design-files.ts} +74 -24
- package/ccw/src/tools/edit-file.ts +568 -0
- package/ccw/src/tools/{generate-module-docs.js → generate-module-docs.ts} +207 -185
- package/ccw/src/tools/{get-modules-by-depth.js → get-modules-by-depth.ts} +120 -79
- package/ccw/src/tools/index.ts +370 -0
- package/ccw/src/tools/native-session-discovery.ts +795 -0
- package/ccw/src/tools/notifier.ts +129 -0
- package/ccw/src/tools/read-file.ts +410 -0
- package/ccw/src/tools/resume-strategy.ts +345 -0
- package/ccw/src/tools/session-content-parser.ts +619 -0
- package/ccw/src/tools/session-manager.ts +1026 -0
- package/ccw/src/tools/smart-context.ts +228 -0
- package/ccw/src/tools/smart-search.ts +2065 -0
- package/ccw/src/tools/smart-search.ts.backup +1233 -0
- package/ccw/src/tools/storage-manager.ts +455 -0
- package/ccw/src/tools/write-file.ts +222 -0
- package/ccw/src/types/config.ts +11 -0
- package/ccw/src/types/index.ts +3 -0
- package/ccw/src/types/session.ts +25 -0
- package/ccw/src/types/tool.ts +41 -0
- package/ccw/src/utils/{browser-launcher.js → browser-launcher.ts} +10 -8
- package/ccw/src/utils/file-utils.ts +48 -0
- package/ccw/src/utils/{path-resolver.js → path-resolver.ts} +114 -78
- package/ccw/src/utils/path-validator.ts +153 -0
- package/ccw/src/utils/{ui.js → ui.ts} +32 -25
- package/codex-lens/pyproject.toml +48 -0
- package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
- package/codex-lens/src/codexlens/__init__.py +28 -0
- package/codex-lens/src/codexlens/__main__.py +14 -0
- package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__init__.py +27 -0
- package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/commands.py +1931 -0
- package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
- package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
- package/codex-lens/src/codexlens/cli/output.py +124 -0
- package/codex-lens/src/codexlens/config.py +201 -0
- package/codex-lens/src/codexlens/entities.py +121 -0
- package/codex-lens/src/codexlens/errors.py +55 -0
- package/codex-lens/src/codexlens/indexing/README.md +77 -0
- package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
- package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
- package/codex-lens/src/codexlens/parsers/factory.py +256 -0
- package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
- package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
- package/codex-lens/src/codexlens/search/__init__.py +15 -0
- package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/chain_search.py +647 -0
- package/codex-lens/src/codexlens/search/enrichment.py +150 -0
- package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
- package/codex-lens/src/codexlens/search/query_parser.py +242 -0
- package/codex-lens/src/codexlens/search/ranking.py +274 -0
- package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
- package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
- package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
- package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
- package/codex-lens/src/codexlens/storage/__init__.py +29 -0
- package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
- package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
- package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
- package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
- package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
- package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
- package/codex-lens/src/codexlens/storage/registry.py +670 -0
- package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
- package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
- package/package.json +4 -1
- package/.claude/commands/memory/tech-research.md +0 -477
- package/.claude/scripts/classify-folders.sh +0 -39
- package/.claude/scripts/convert_tokens_to_css.sh +0 -229
- package/.claude/scripts/detect_changed_modules.sh +0 -161
- package/.claude/scripts/discover-design-files.sh +0 -87
- package/.claude/scripts/extract-animations.js +0 -243
- package/.claude/scripts/extract-computed-styles.js +0 -118
- package/.claude/scripts/extract-layout-structure.js +0 -411
- package/.claude/scripts/generate_module_docs.sh +0 -717
- package/.claude/scripts/get_modules_by_depth.sh +0 -170
- package/.claude/scripts/ui-generate-preview.sh +0 -395
- package/.claude/scripts/ui-instantiate-prototypes.sh +0 -815
- package/.claude/scripts/update_module_claude.sh +0 -337
- package/.claude/workflows/context-search-strategy.md +0 -77
- package/.claude/workflows/intelligent-tools-strategy.md +0 -662
- package/ccw/src/cli.js +0 -119
- package/ccw/src/commands/install.js +0 -324
- package/ccw/src/commands/tool.js +0 -138
- package/ccw/src/core/data-aggregator.js +0 -409
- package/ccw/src/core/server.js +0 -2063
- package/ccw/src/core/session-scanner.js +0 -235
- package/ccw/src/tools/classify-folders.js +0 -204
- package/ccw/src/tools/detect-changed-modules.js +0 -288
- package/ccw/src/tools/edit-file.js +0 -266
- package/ccw/src/tools/index.js +0 -176
- package/ccw/src/utils/file-utils.js +0 -48
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug
|
|
3
|
+
description: Interactive hypothesis-driven debugging with NDJSON logging, iterative until resolved
|
|
4
|
+
argument-hint: "\"bug description or error message\""
|
|
5
|
+
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Workflow Debug Command (/workflow:debug)
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Evidence-based interactive debugging command. Systematically identifies root causes through hypothesis-driven logging and iterative verification.
|
|
13
|
+
|
|
14
|
+
**Core workflow**: Explore → Add Logging → Reproduce → Analyze Log → Fix → Verify
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
/workflow:debug <BUG_DESCRIPTION>
|
|
20
|
+
|
|
21
|
+
# Arguments
|
|
22
|
+
<bug-description> Bug description, error message, or stack trace (required)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Execution Process
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Session Detection:
|
|
29
|
+
├─ Check if debug session exists for this bug
|
|
30
|
+
├─ EXISTS + debug.log has content → Analyze mode
|
|
31
|
+
└─ NOT_FOUND or empty log → Explore mode
|
|
32
|
+
|
|
33
|
+
Explore Mode:
|
|
34
|
+
├─ Locate error source in codebase
|
|
35
|
+
├─ Generate testable hypotheses (dynamic count)
|
|
36
|
+
├─ Add NDJSON logging instrumentation
|
|
37
|
+
└─ Output: Hypothesis list + await user reproduction
|
|
38
|
+
|
|
39
|
+
Analyze Mode:
|
|
40
|
+
├─ Parse debug.log, validate each hypothesis
|
|
41
|
+
└─ Decision:
|
|
42
|
+
├─ Confirmed → Fix root cause
|
|
43
|
+
├─ Inconclusive → Add more logging, iterate
|
|
44
|
+
└─ All rejected → Generate new hypotheses
|
|
45
|
+
|
|
46
|
+
Fix & Cleanup:
|
|
47
|
+
├─ Apply fix based on confirmed hypothesis
|
|
48
|
+
├─ User verifies
|
|
49
|
+
├─ Remove debug instrumentation
|
|
50
|
+
└─ If not fixed → Return to Analyze mode
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Implementation
|
|
54
|
+
|
|
55
|
+
### Session Setup & Mode Detection
|
|
56
|
+
|
|
57
|
+
```javascript
|
|
58
|
+
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
59
|
+
|
|
60
|
+
const bugSlug = bug_description.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 30)
|
|
61
|
+
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
62
|
+
|
|
63
|
+
const sessionId = `DBG-${bugSlug}-${dateStr}`
|
|
64
|
+
const sessionFolder = `.workflow/.debug/${sessionId}`
|
|
65
|
+
const debugLogPath = `${sessionFolder}/debug.log`
|
|
66
|
+
|
|
67
|
+
// Auto-detect mode
|
|
68
|
+
const sessionExists = fs.existsSync(sessionFolder)
|
|
69
|
+
const logHasContent = sessionExists && fs.existsSync(debugLogPath) && fs.statSync(debugLogPath).size > 0
|
|
70
|
+
|
|
71
|
+
const mode = logHasContent ? 'analyze' : 'explore'
|
|
72
|
+
|
|
73
|
+
if (!sessionExists) {
|
|
74
|
+
bash(`mkdir -p ${sessionFolder}`)
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Explore Mode
|
|
81
|
+
|
|
82
|
+
**Step 1.1: Locate Error Source**
|
|
83
|
+
|
|
84
|
+
```javascript
|
|
85
|
+
// Extract keywords from bug description
|
|
86
|
+
const keywords = extractErrorKeywords(bug_description)
|
|
87
|
+
// e.g., ['Stack Length', '未找到', 'registered 0']
|
|
88
|
+
|
|
89
|
+
// Search codebase for error locations
|
|
90
|
+
for (const keyword of keywords) {
|
|
91
|
+
Grep({ pattern: keyword, path: ".", output_mode: "content", "-C": 3 })
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Identify affected files and functions
|
|
95
|
+
const affectedLocations = [...] // from search results
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Step 1.2: Generate Hypotheses (Dynamic)**
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
// Hypothesis categories based on error pattern
|
|
102
|
+
const HYPOTHESIS_PATTERNS = {
|
|
103
|
+
"not found|missing|undefined|未找到": "data_mismatch",
|
|
104
|
+
"0|empty|zero|registered 0": "logic_error",
|
|
105
|
+
"timeout|connection|sync": "integration_issue",
|
|
106
|
+
"type|format|parse": "type_mismatch"
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Generate hypotheses based on actual issue (NOT fixed count)
|
|
110
|
+
function generateHypotheses(bugDescription, affectedLocations) {
|
|
111
|
+
const hypotheses = []
|
|
112
|
+
|
|
113
|
+
// Analyze bug and create targeted hypotheses
|
|
114
|
+
// Each hypothesis has:
|
|
115
|
+
// - id: H1, H2, ... (dynamic count)
|
|
116
|
+
// - description: What might be wrong
|
|
117
|
+
// - testable_condition: What to log
|
|
118
|
+
// - logging_point: Where to add instrumentation
|
|
119
|
+
|
|
120
|
+
return hypotheses // Could be 1, 3, 5, or more
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const hypotheses = generateHypotheses(bug_description, affectedLocations)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Step 1.3: Add NDJSON Instrumentation**
|
|
127
|
+
|
|
128
|
+
For each hypothesis, add logging at the relevant location:
|
|
129
|
+
|
|
130
|
+
**Python template**:
|
|
131
|
+
```python
|
|
132
|
+
# region debug [H{n}]
|
|
133
|
+
try:
|
|
134
|
+
import json, time
|
|
135
|
+
_dbg = {
|
|
136
|
+
"sid": "{sessionId}",
|
|
137
|
+
"hid": "H{n}",
|
|
138
|
+
"loc": "{file}:{line}",
|
|
139
|
+
"msg": "{testable_condition}",
|
|
140
|
+
"data": {
|
|
141
|
+
# Capture relevant values here
|
|
142
|
+
},
|
|
143
|
+
"ts": int(time.time() * 1000)
|
|
144
|
+
}
|
|
145
|
+
with open(r"{debugLogPath}", "a", encoding="utf-8") as _f:
|
|
146
|
+
_f.write(json.dumps(_dbg, ensure_ascii=False) + "\n")
|
|
147
|
+
except: pass
|
|
148
|
+
# endregion
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**JavaScript/TypeScript template**:
|
|
152
|
+
```javascript
|
|
153
|
+
// region debug [H{n}]
|
|
154
|
+
try {
|
|
155
|
+
require('fs').appendFileSync("{debugLogPath}", JSON.stringify({
|
|
156
|
+
sid: "{sessionId}",
|
|
157
|
+
hid: "H{n}",
|
|
158
|
+
loc: "{file}:{line}",
|
|
159
|
+
msg: "{testable_condition}",
|
|
160
|
+
data: { /* Capture relevant values */ },
|
|
161
|
+
ts: Date.now()
|
|
162
|
+
}) + "\n");
|
|
163
|
+
} catch(_) {}
|
|
164
|
+
// endregion
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Output to user**:
|
|
168
|
+
```
|
|
169
|
+
## Hypotheses Generated
|
|
170
|
+
|
|
171
|
+
Based on error "{bug_description}", generated {n} hypotheses:
|
|
172
|
+
|
|
173
|
+
{hypotheses.map(h => `
|
|
174
|
+
### ${h.id}: ${h.description}
|
|
175
|
+
- Logging at: ${h.logging_point}
|
|
176
|
+
- Testing: ${h.testable_condition}
|
|
177
|
+
`).join('')}
|
|
178
|
+
|
|
179
|
+
**Debug log**: ${debugLogPath}
|
|
180
|
+
|
|
181
|
+
**Next**: Run reproduction steps, then come back for analysis.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
### Analyze Mode
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
// Parse NDJSON log
|
|
190
|
+
const entries = Read(debugLogPath).split('\n')
|
|
191
|
+
.filter(l => l.trim())
|
|
192
|
+
.map(l => JSON.parse(l))
|
|
193
|
+
|
|
194
|
+
// Group by hypothesis
|
|
195
|
+
const byHypothesis = groupBy(entries, 'hid')
|
|
196
|
+
|
|
197
|
+
// Validate each hypothesis
|
|
198
|
+
for (const [hid, logs] of Object.entries(byHypothesis)) {
|
|
199
|
+
const hypothesis = hypotheses.find(h => h.id === hid)
|
|
200
|
+
const latestLog = logs[logs.length - 1]
|
|
201
|
+
|
|
202
|
+
// Check if evidence confirms or rejects hypothesis
|
|
203
|
+
const verdict = evaluateEvidence(hypothesis, latestLog.data)
|
|
204
|
+
// Returns: 'confirmed' | 'rejected' | 'inconclusive'
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Output**:
|
|
209
|
+
```
|
|
210
|
+
## Evidence Analysis
|
|
211
|
+
|
|
212
|
+
Analyzed ${entries.length} log entries.
|
|
213
|
+
|
|
214
|
+
${results.map(r => `
|
|
215
|
+
### ${r.id}: ${r.description}
|
|
216
|
+
- **Status**: ${r.verdict}
|
|
217
|
+
- **Evidence**: ${JSON.stringify(r.evidence)}
|
|
218
|
+
- **Reason**: ${r.reason}
|
|
219
|
+
`).join('')}
|
|
220
|
+
|
|
221
|
+
${confirmedHypothesis ? `
|
|
222
|
+
## Root Cause Identified
|
|
223
|
+
|
|
224
|
+
**${confirmedHypothesis.id}**: ${confirmedHypothesis.description}
|
|
225
|
+
|
|
226
|
+
Ready to fix.
|
|
227
|
+
` : `
|
|
228
|
+
## Need More Evidence
|
|
229
|
+
|
|
230
|
+
Add more logging or refine hypotheses.
|
|
231
|
+
`}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### Fix & Cleanup
|
|
237
|
+
|
|
238
|
+
```javascript
|
|
239
|
+
// Apply fix based on confirmed hypothesis
|
|
240
|
+
// ... Edit affected files
|
|
241
|
+
|
|
242
|
+
// After user verifies fix works:
|
|
243
|
+
|
|
244
|
+
// Remove debug instrumentation (search for region markers)
|
|
245
|
+
const instrumentedFiles = Grep({
|
|
246
|
+
pattern: "# region debug|// region debug",
|
|
247
|
+
output_mode: "files_with_matches"
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
for (const file of instrumentedFiles) {
|
|
251
|
+
// Remove content between region markers
|
|
252
|
+
removeDebugRegions(file)
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
console.log(`
|
|
256
|
+
## Debug Complete
|
|
257
|
+
|
|
258
|
+
- Root cause: ${confirmedHypothesis.description}
|
|
259
|
+
- Fix applied to: ${modifiedFiles.join(', ')}
|
|
260
|
+
- Debug instrumentation removed
|
|
261
|
+
`)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Debug Log Format (NDJSON)
|
|
267
|
+
|
|
268
|
+
Each line is a JSON object:
|
|
269
|
+
|
|
270
|
+
```json
|
|
271
|
+
{"sid":"DBG-xxx-2025-12-18","hid":"H1","loc":"file.py:func:42","msg":"Check dict keys","data":{"keys":["a","b"],"target":"c","found":false},"ts":1734567890123}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
| Field | Description |
|
|
275
|
+
|-------|-------------|
|
|
276
|
+
| `sid` | Session ID |
|
|
277
|
+
| `hid` | Hypothesis ID (H1, H2, ...) |
|
|
278
|
+
| `loc` | Code location |
|
|
279
|
+
| `msg` | What's being tested |
|
|
280
|
+
| `data` | Captured values |
|
|
281
|
+
| `ts` | Timestamp (ms) |
|
|
282
|
+
|
|
283
|
+
## Session Folder
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
.workflow/.debug/DBG-{slug}-{date}/
|
|
287
|
+
├── debug.log # NDJSON log (main artifact)
|
|
288
|
+
└── resolution.md # Summary after fix (optional)
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Iteration Flow
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
First Call (/workflow:debug "error"):
|
|
295
|
+
├─ No session exists → Explore mode
|
|
296
|
+
├─ Extract error keywords, search codebase
|
|
297
|
+
├─ Generate hypotheses, add logging
|
|
298
|
+
└─ Await user reproduction
|
|
299
|
+
|
|
300
|
+
After Reproduction (/workflow:debug "error"):
|
|
301
|
+
├─ Session exists + debug.log has content → Analyze mode
|
|
302
|
+
├─ Parse log, evaluate hypotheses
|
|
303
|
+
└─ Decision:
|
|
304
|
+
├─ Confirmed → Fix → User verify
|
|
305
|
+
│ ├─ Fixed → Cleanup → Done
|
|
306
|
+
│ └─ Not fixed → Add logging → Iterate
|
|
307
|
+
├─ Inconclusive → Add logging → Iterate
|
|
308
|
+
└─ All rejected → New hypotheses → Iterate
|
|
309
|
+
|
|
310
|
+
Output:
|
|
311
|
+
└─ .workflow/.debug/DBG-{slug}-{date}/debug.log
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Error Handling
|
|
315
|
+
|
|
316
|
+
| Situation | Action |
|
|
317
|
+
|-----------|--------|
|
|
318
|
+
| Empty debug.log | Verify reproduction triggered the code path |
|
|
319
|
+
| All hypotheses rejected | Generate new hypotheses with broader scope |
|
|
320
|
+
| Fix doesn't work | Iterate with more granular logging |
|
|
321
|
+
| >5 iterations | Escalate to `/workflow:lite-fix` with evidence |
|
|
@@ -56,6 +56,7 @@ Phase 2: Planning Document Validation
|
|
|
56
56
|
└─ Validate .task/ contains IMPL-*.json files
|
|
57
57
|
|
|
58
58
|
Phase 3: TodoWrite Generation
|
|
59
|
+
├─ Update session status to "active" (Step 0)
|
|
59
60
|
├─ Parse TODO_LIST.md for task statuses
|
|
60
61
|
├─ Generate TodoWrite for entire workflow
|
|
61
62
|
└─ Prepare session context paths
|
|
@@ -80,6 +81,7 @@ Phase 5: Completion
|
|
|
80
81
|
Resume Mode (--resume-session):
|
|
81
82
|
├─ Skip Phase 1 & Phase 2
|
|
82
83
|
└─ Entry Point: Phase 3 (TodoWrite Generation)
|
|
84
|
+
├─ Update session status to "active" (if not already)
|
|
83
85
|
└─ Continue: Phase 4 → Phase 5
|
|
84
86
|
```
|
|
85
87
|
|
|
@@ -179,6 +181,16 @@ bash(cat .workflow/active/${sessionId}/workflow-session.json)
|
|
|
179
181
|
### Phase 3: TodoWrite Generation
|
|
180
182
|
**Applies to**: Both normal and resume modes (resume mode entry point)
|
|
181
183
|
|
|
184
|
+
**Step 0: Update Session Status to Active**
|
|
185
|
+
Before generating TodoWrite, update session status from "planning" to "active":
|
|
186
|
+
```bash
|
|
187
|
+
# Update session status (idempotent - safe to run if already active)
|
|
188
|
+
jq '.status = "active" | .execution_started_at = (.execution_started_at // now | todate)' \
|
|
189
|
+
.workflow/active/${sessionId}/workflow-session.json > tmp.json && \
|
|
190
|
+
mv tmp.json .workflow/active/${sessionId}/workflow-session.json
|
|
191
|
+
```
|
|
192
|
+
This ensures the dashboard shows the session as "ACTIVE" during execution.
|
|
193
|
+
|
|
182
194
|
**Process**:
|
|
183
195
|
1. **Create TodoWrite List**: Generate task list from TODO_LIST.md (not from task JSONs)
|
|
184
196
|
- Parse TODO_LIST.md to extract all tasks with current statuses
|
|
@@ -380,6 +392,7 @@ TodoWrite({
|
|
|
380
392
|
|
|
381
393
|
```bash
|
|
382
394
|
Task(subagent_type="{meta.agent}",
|
|
395
|
+
run_in_background=false,
|
|
383
396
|
prompt="Execute task: {task.title}
|
|
384
397
|
|
|
385
398
|
{[FLOW_CONTROL]}
|
|
@@ -1,164 +1,165 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: init
|
|
3
|
-
description: Initialize project-level state with intelligent project analysis using cli-explore-agent
|
|
4
|
-
argument-hint: "[--regenerate]"
|
|
5
|
-
examples:
|
|
6
|
-
- /workflow:init
|
|
7
|
-
- /workflow:init --regenerate
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Workflow Init Command (/workflow:init)
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
Initialize `.workflow/project.json` with comprehensive project understanding by delegating analysis to **cli-explore-agent**.
|
|
14
|
-
|
|
15
|
-
**Note**: This command may be called by other workflow commands. Upon completion, return immediately to continue the calling workflow without interrupting the task flow.
|
|
16
|
-
|
|
17
|
-
## Usage
|
|
18
|
-
```bash
|
|
19
|
-
/workflow:init # Initialize (skip if exists)
|
|
20
|
-
/workflow:init --regenerate # Force regeneration
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Execution Process
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
Input Parsing:
|
|
27
|
-
└─ Parse --regenerate flag → regenerate = true | false
|
|
28
|
-
|
|
29
|
-
Decision:
|
|
30
|
-
├─ EXISTS + no --regenerate → Exit: "Already initialized"
|
|
31
|
-
├─ EXISTS + --regenerate → Backup existing → Continue analysis
|
|
32
|
-
└─ NOT_FOUND → Continue analysis
|
|
33
|
-
|
|
34
|
-
Analysis Flow:
|
|
35
|
-
├─ Get project metadata (name, root)
|
|
36
|
-
├─ Invoke cli-explore-agent
|
|
37
|
-
│ ├─ Structural scan (get_modules_by_depth.sh, find, wc)
|
|
38
|
-
│ ├─ Semantic analysis (Gemini CLI)
|
|
39
|
-
│ ├─ Synthesis and merge
|
|
40
|
-
│ └─ Write .workflow/project.json
|
|
41
|
-
└─ Display summary
|
|
42
|
-
|
|
43
|
-
Output:
|
|
44
|
-
└─ .workflow/project.json (+ .backup if regenerate)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Implementation
|
|
48
|
-
|
|
49
|
-
### Step 1: Parse Input and Check Existing State
|
|
50
|
-
|
|
51
|
-
**Parse --regenerate flag**:
|
|
52
|
-
```javascript
|
|
53
|
-
const regenerate = $ARGUMENTS.includes('--regenerate')
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Check existing state**:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
bash(test -f .workflow/project.json && echo "EXISTS" || echo "NOT_FOUND")
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**If EXISTS and no --regenerate**: Exit early
|
|
63
|
-
```
|
|
64
|
-
Project already initialized at .workflow/project.json
|
|
65
|
-
Use /workflow:init --regenerate to rebuild
|
|
66
|
-
Use /workflow:status --project to view state
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Step 2: Get Project Metadata
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
bash(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
|
|
73
|
-
bash(git rev-parse --show-toplevel 2>/dev/null || pwd)
|
|
74
|
-
bash(mkdir -p .workflow)
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Step 3: Invoke cli-explore-agent
|
|
78
|
-
|
|
79
|
-
**For --regenerate**: Backup and preserve existing data
|
|
80
|
-
```bash
|
|
81
|
-
bash(cp .workflow/project.json .workflow/project.json.backup)
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Delegate analysis to agent**:
|
|
85
|
-
|
|
86
|
-
```javascript
|
|
87
|
-
Task(
|
|
88
|
-
subagent_type="cli-explore-agent",
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
**
|
|
164
|
-
**
|
|
1
|
+
---
|
|
2
|
+
name: init
|
|
3
|
+
description: Initialize project-level state with intelligent project analysis using cli-explore-agent
|
|
4
|
+
argument-hint: "[--regenerate]"
|
|
5
|
+
examples:
|
|
6
|
+
- /workflow:init
|
|
7
|
+
- /workflow:init --regenerate
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Workflow Init Command (/workflow:init)
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
Initialize `.workflow/project.json` with comprehensive project understanding by delegating analysis to **cli-explore-agent**.
|
|
14
|
+
|
|
15
|
+
**Note**: This command may be called by other workflow commands. Upon completion, return immediately to continue the calling workflow without interrupting the task flow.
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
```bash
|
|
19
|
+
/workflow:init # Initialize (skip if exists)
|
|
20
|
+
/workflow:init --regenerate # Force regeneration
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Execution Process
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Input Parsing:
|
|
27
|
+
└─ Parse --regenerate flag → regenerate = true | false
|
|
28
|
+
|
|
29
|
+
Decision:
|
|
30
|
+
├─ EXISTS + no --regenerate → Exit: "Already initialized"
|
|
31
|
+
├─ EXISTS + --regenerate → Backup existing → Continue analysis
|
|
32
|
+
└─ NOT_FOUND → Continue analysis
|
|
33
|
+
|
|
34
|
+
Analysis Flow:
|
|
35
|
+
├─ Get project metadata (name, root)
|
|
36
|
+
├─ Invoke cli-explore-agent
|
|
37
|
+
│ ├─ Structural scan (get_modules_by_depth.sh, find, wc)
|
|
38
|
+
│ ├─ Semantic analysis (Gemini CLI)
|
|
39
|
+
│ ├─ Synthesis and merge
|
|
40
|
+
│ └─ Write .workflow/project.json
|
|
41
|
+
└─ Display summary
|
|
42
|
+
|
|
43
|
+
Output:
|
|
44
|
+
└─ .workflow/project.json (+ .backup if regenerate)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Implementation
|
|
48
|
+
|
|
49
|
+
### Step 1: Parse Input and Check Existing State
|
|
50
|
+
|
|
51
|
+
**Parse --regenerate flag**:
|
|
52
|
+
```javascript
|
|
53
|
+
const regenerate = $ARGUMENTS.includes('--regenerate')
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Check existing state**:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
bash(test -f .workflow/project.json && echo "EXISTS" || echo "NOT_FOUND")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**If EXISTS and no --regenerate**: Exit early
|
|
63
|
+
```
|
|
64
|
+
Project already initialized at .workflow/project.json
|
|
65
|
+
Use /workflow:init --regenerate to rebuild
|
|
66
|
+
Use /workflow:status --project to view state
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Step 2: Get Project Metadata
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
bash(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
|
|
73
|
+
bash(git rev-parse --show-toplevel 2>/dev/null || pwd)
|
|
74
|
+
bash(mkdir -p .workflow)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Step 3: Invoke cli-explore-agent
|
|
78
|
+
|
|
79
|
+
**For --regenerate**: Backup and preserve existing data
|
|
80
|
+
```bash
|
|
81
|
+
bash(cp .workflow/project.json .workflow/project.json.backup)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Delegate analysis to agent**:
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
Task(
|
|
88
|
+
subagent_type="cli-explore-agent",
|
|
89
|
+
run_in_background=false,
|
|
90
|
+
description="Deep project analysis",
|
|
91
|
+
prompt=`
|
|
92
|
+
Analyze project for workflow initialization and generate .workflow/project.json.
|
|
93
|
+
|
|
94
|
+
## MANDATORY FIRST STEPS
|
|
95
|
+
1. Execute: cat ~/.claude/workflows/cli-templates/schemas/project-json-schema.json (get schema reference)
|
|
96
|
+
2. Execute: ccw tool exec get_modules_by_depth '{}' (get project structure)
|
|
97
|
+
|
|
98
|
+
## Task
|
|
99
|
+
Generate complete project.json with:
|
|
100
|
+
- project_name: ${projectName}
|
|
101
|
+
- initialized_at: current ISO timestamp
|
|
102
|
+
- overview: {description, technology_stack, architecture, key_components}
|
|
103
|
+
- features: ${regenerate ? 'preserve from backup' : '[] (empty)'}
|
|
104
|
+
- development_index: ${regenerate ? 'preserve from backup' : '{feature: [], enhancement: [], bugfix: [], refactor: [], docs: []}'}
|
|
105
|
+
- statistics: ${regenerate ? 'preserve from backup' : '{total_features: 0, total_sessions: 0, last_updated}'}
|
|
106
|
+
- _metadata: {initialized_by: "cli-explore-agent", analysis_timestamp, analysis_mode}
|
|
107
|
+
|
|
108
|
+
## Analysis Requirements
|
|
109
|
+
|
|
110
|
+
**Technology Stack**:
|
|
111
|
+
- Languages: File counts, mark primary
|
|
112
|
+
- Frameworks: From package.json, requirements.txt, go.mod, etc.
|
|
113
|
+
- Build tools: npm, cargo, maven, webpack, vite
|
|
114
|
+
- Test frameworks: jest, pytest, go test, junit
|
|
115
|
+
|
|
116
|
+
**Architecture**:
|
|
117
|
+
- Style: MVC, microservices, layered (from structure & imports)
|
|
118
|
+
- Layers: presentation, business-logic, data-access
|
|
119
|
+
- Patterns: singleton, factory, repository
|
|
120
|
+
- Key components: 5-10 modules {name, path, description, importance}
|
|
121
|
+
|
|
122
|
+
## Execution
|
|
123
|
+
1. Structural scan: get_modules_by_depth.sh, find, wc -l
|
|
124
|
+
2. Semantic analysis: Gemini for patterns/architecture
|
|
125
|
+
3. Synthesis: Merge findings
|
|
126
|
+
4. ${regenerate ? 'Merge with preserved features/development_index/statistics from .workflow/project.json.backup' : ''}
|
|
127
|
+
5. Write JSON: Write('.workflow/project.json', jsonContent)
|
|
128
|
+
6. Report: Return brief completion summary
|
|
129
|
+
|
|
130
|
+
Project root: ${projectRoot}
|
|
131
|
+
`
|
|
132
|
+
)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 4: Display Summary
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
const projectJson = JSON.parse(Read('.workflow/project.json'));
|
|
139
|
+
|
|
140
|
+
console.log(`
|
|
141
|
+
✓ Project initialized successfully
|
|
142
|
+
|
|
143
|
+
## Project Overview
|
|
144
|
+
Name: ${projectJson.project_name}
|
|
145
|
+
Description: ${projectJson.overview.description}
|
|
146
|
+
|
|
147
|
+
### Technology Stack
|
|
148
|
+
Languages: ${projectJson.overview.technology_stack.languages.map(l => l.name).join(', ')}
|
|
149
|
+
Frameworks: ${projectJson.overview.technology_stack.frameworks.join(', ')}
|
|
150
|
+
|
|
151
|
+
### Architecture
|
|
152
|
+
Style: ${projectJson.overview.architecture.style}
|
|
153
|
+
Components: ${projectJson.overview.key_components.length} core modules
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
Project state: .workflow/project.json
|
|
157
|
+
${regenerate ? 'Backup: .workflow/project.json.backup' : ''}
|
|
158
|
+
`);
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Error Handling
|
|
162
|
+
|
|
163
|
+
**Agent Failure**: Fall back to basic initialization with placeholder overview
|
|
164
|
+
**Missing Tools**: Agent uses Qwen fallback or bash-only
|
|
165
|
+
**Empty Project**: Create minimal JSON with all gaps identified
|