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,516 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clean
|
|
3
|
+
description: Intelligent code cleanup with mainline detection, stale artifact discovery, and safe execution
|
|
4
|
+
argument-hint: "[--dry-run] [\"focus area\"]"
|
|
5
|
+
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Glob(*), Bash(*), Write(*)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Clean Command (/clean)
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Intelligent cleanup command that explores the codebase to identify the development mainline, discovers artifacts that have drifted from it, and safely removes stale sessions, abandoned documents, and dead code.
|
|
13
|
+
|
|
14
|
+
**Core capabilities:**
|
|
15
|
+
- Mainline detection: Identify active development branches and core modules
|
|
16
|
+
- Drift analysis: Find sessions, documents, and code that deviate from mainline
|
|
17
|
+
- Intelligent discovery: cli-explore-agent based artifact scanning
|
|
18
|
+
- Safe execution: Confirmation-based cleanup with dry-run preview
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
/clean # Full intelligent cleanup (explore → analyze → confirm → execute)
|
|
24
|
+
/clean --dry-run # Explore and analyze only, no execution
|
|
25
|
+
/clean "auth module" # Focus cleanup on specific area
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Execution Process
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Phase 1: Mainline Detection
|
|
32
|
+
├─ Analyze git history for development trends
|
|
33
|
+
├─ Identify core modules (high commit frequency)
|
|
34
|
+
├─ Map active vs stale branches
|
|
35
|
+
└─ Build mainline profile
|
|
36
|
+
|
|
37
|
+
Phase 2: Drift Discovery (cli-explore-agent)
|
|
38
|
+
├─ Scan workflow sessions for orphaned artifacts
|
|
39
|
+
├─ Identify documents drifted from mainline
|
|
40
|
+
├─ Detect dead code and unused exports
|
|
41
|
+
└─ Generate cleanup manifest
|
|
42
|
+
|
|
43
|
+
Phase 3: Confirmation
|
|
44
|
+
├─ Display cleanup summary by category
|
|
45
|
+
├─ Show impact analysis (files, size, risk)
|
|
46
|
+
└─ AskUserQuestion: Select categories to clean
|
|
47
|
+
|
|
48
|
+
Phase 4: Execution (unless --dry-run)
|
|
49
|
+
├─ Execute cleanup by category
|
|
50
|
+
├─ Update manifests and indexes
|
|
51
|
+
└─ Report results
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Implementation
|
|
55
|
+
|
|
56
|
+
### Phase 1: Mainline Detection
|
|
57
|
+
|
|
58
|
+
**Session Setup**:
|
|
59
|
+
```javascript
|
|
60
|
+
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
61
|
+
|
|
62
|
+
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
63
|
+
const sessionId = `clean-${dateStr}`
|
|
64
|
+
const sessionFolder = `.workflow/.clean/${sessionId}`
|
|
65
|
+
|
|
66
|
+
Bash(`mkdir -p ${sessionFolder}`)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Step 1.1: Git History Analysis**
|
|
70
|
+
```bash
|
|
71
|
+
# Get commit frequency by directory (last 30 days)
|
|
72
|
+
bash(git log --since="30 days ago" --name-only --pretty=format: | grep -v "^$" | cut -d/ -f1-2 | sort | uniq -c | sort -rn | head -20)
|
|
73
|
+
|
|
74
|
+
# Get recent active branches
|
|
75
|
+
bash(git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short) %(committerdate:relative)' | head -10)
|
|
76
|
+
|
|
77
|
+
# Get files with most recent changes
|
|
78
|
+
bash(git log --since="7 days ago" --name-only --pretty=format: | grep -v "^$" | sort | uniq -c | sort -rn | head -30)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Step 1.2: Build Mainline Profile**
|
|
82
|
+
```javascript
|
|
83
|
+
const mainlineProfile = {
|
|
84
|
+
coreModules: [], // High-frequency directories
|
|
85
|
+
activeFiles: [], // Recently modified files
|
|
86
|
+
activeBranches: [], // Branches with recent commits
|
|
87
|
+
staleThreshold: {
|
|
88
|
+
sessions: 7, // Days
|
|
89
|
+
branches: 30,
|
|
90
|
+
documents: 14
|
|
91
|
+
},
|
|
92
|
+
timestamp: getUtc8ISOString()
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Parse git log output to identify core modules
|
|
96
|
+
// Modules with >5 commits in last 30 days = core
|
|
97
|
+
// Modules with 0 commits in last 30 days = potentially stale
|
|
98
|
+
|
|
99
|
+
Write(`${sessionFolder}/mainline-profile.json`, JSON.stringify(mainlineProfile, null, 2))
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### Phase 2: Drift Discovery
|
|
105
|
+
|
|
106
|
+
**Launch cli-explore-agent for intelligent artifact scanning**:
|
|
107
|
+
|
|
108
|
+
```javascript
|
|
109
|
+
Task(
|
|
110
|
+
subagent_type="cli-explore-agent",
|
|
111
|
+
run_in_background=false,
|
|
112
|
+
description="Discover stale artifacts",
|
|
113
|
+
prompt=`
|
|
114
|
+
## Task Objective
|
|
115
|
+
Discover artifacts that have drifted from the development mainline. Identify stale sessions, abandoned documents, and dead code for cleanup.
|
|
116
|
+
|
|
117
|
+
## Context
|
|
118
|
+
- **Session Folder**: ${sessionFolder}
|
|
119
|
+
- **Mainline Profile**: ${sessionFolder}/mainline-profile.json
|
|
120
|
+
- **Focus Area**: ${focusArea || "全项目"}
|
|
121
|
+
|
|
122
|
+
## Discovery Categories
|
|
123
|
+
|
|
124
|
+
### Category 1: Stale Workflow Sessions
|
|
125
|
+
Scan and analyze workflow session directories:
|
|
126
|
+
|
|
127
|
+
**Locations to scan**:
|
|
128
|
+
- .workflow/active/WFS-* (active sessions)
|
|
129
|
+
- .workflow/archives/WFS-* (archived sessions)
|
|
130
|
+
- .workflow/.lite-plan/* (lite-plan sessions)
|
|
131
|
+
- .workflow/.debug/DBG-* (debug sessions)
|
|
132
|
+
|
|
133
|
+
**Staleness criteria**:
|
|
134
|
+
- Active sessions: No modification >7 days + no related git commits
|
|
135
|
+
- Archives: >30 days old + no feature references in project.json
|
|
136
|
+
- Lite-plan: >7 days old + plan.json not executed
|
|
137
|
+
- Debug: >3 days old + issue not in recent commits
|
|
138
|
+
|
|
139
|
+
**Analysis steps**:
|
|
140
|
+
1. List all session directories with modification times
|
|
141
|
+
2. Cross-reference with git log (are session topics in recent commits?)
|
|
142
|
+
3. Check manifest.json for orphan entries
|
|
143
|
+
4. Identify sessions with .archiving marker (interrupted)
|
|
144
|
+
|
|
145
|
+
### Category 2: Drifted Documents
|
|
146
|
+
Scan documentation that no longer aligns with code:
|
|
147
|
+
|
|
148
|
+
**Locations to scan**:
|
|
149
|
+
- .claude/rules/tech/* (generated tech rules)
|
|
150
|
+
- .workflow/.scratchpad/* (temporary notes)
|
|
151
|
+
- **/CLAUDE.md (module documentation)
|
|
152
|
+
- **/README.md (outdated descriptions)
|
|
153
|
+
|
|
154
|
+
**Drift criteria**:
|
|
155
|
+
- Tech rules: Referenced files no longer exist
|
|
156
|
+
- Scratchpad: Any file (always temporary)
|
|
157
|
+
- Module docs: Describe functions/classes that were removed
|
|
158
|
+
- READMEs: Reference deleted directories
|
|
159
|
+
|
|
160
|
+
**Analysis steps**:
|
|
161
|
+
1. Parse document content for file/function references
|
|
162
|
+
2. Verify referenced entities still exist in codebase
|
|
163
|
+
3. Flag documents with >30% broken references
|
|
164
|
+
|
|
165
|
+
### Category 3: Dead Code
|
|
166
|
+
Identify code that is no longer used:
|
|
167
|
+
|
|
168
|
+
**Scan patterns**:
|
|
169
|
+
- Unused exports (exported but never imported)
|
|
170
|
+
- Orphan files (not imported anywhere)
|
|
171
|
+
- Commented-out code blocks (>10 lines)
|
|
172
|
+
- TODO/FIXME comments >90 days old
|
|
173
|
+
|
|
174
|
+
**Analysis steps**:
|
|
175
|
+
1. Build import graph using rg/grep
|
|
176
|
+
2. Identify exports with no importers
|
|
177
|
+
3. Find files not in import graph
|
|
178
|
+
4. Scan for large comment blocks
|
|
179
|
+
|
|
180
|
+
## Output Format
|
|
181
|
+
|
|
182
|
+
Write to: ${sessionFolder}/cleanup-manifest.json
|
|
183
|
+
|
|
184
|
+
\`\`\`json
|
|
185
|
+
{
|
|
186
|
+
"generated_at": "ISO timestamp",
|
|
187
|
+
"mainline_summary": {
|
|
188
|
+
"core_modules": ["src/core", "src/api"],
|
|
189
|
+
"active_branches": ["main", "feature/auth"],
|
|
190
|
+
"health_score": 0.85
|
|
191
|
+
},
|
|
192
|
+
"discoveries": {
|
|
193
|
+
"stale_sessions": [
|
|
194
|
+
{
|
|
195
|
+
"path": ".workflow/active/WFS-old-feature",
|
|
196
|
+
"type": "active",
|
|
197
|
+
"age_days": 15,
|
|
198
|
+
"reason": "No related commits in 15 days",
|
|
199
|
+
"size_kb": 1024,
|
|
200
|
+
"risk": "low"
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"drifted_documents": [
|
|
204
|
+
{
|
|
205
|
+
"path": ".claude/rules/tech/deprecated-lib",
|
|
206
|
+
"type": "tech_rules",
|
|
207
|
+
"broken_references": 5,
|
|
208
|
+
"total_references": 6,
|
|
209
|
+
"drift_percentage": 83,
|
|
210
|
+
"reason": "Referenced library removed",
|
|
211
|
+
"risk": "low"
|
|
212
|
+
}
|
|
213
|
+
],
|
|
214
|
+
"dead_code": [
|
|
215
|
+
{
|
|
216
|
+
"path": "src/utils/legacy.ts",
|
|
217
|
+
"type": "orphan_file",
|
|
218
|
+
"reason": "Not imported by any file",
|
|
219
|
+
"last_modified": "2025-10-01",
|
|
220
|
+
"risk": "medium"
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
},
|
|
224
|
+
"summary": {
|
|
225
|
+
"total_items": 12,
|
|
226
|
+
"total_size_mb": 45.2,
|
|
227
|
+
"by_category": {
|
|
228
|
+
"stale_sessions": 5,
|
|
229
|
+
"drifted_documents": 4,
|
|
230
|
+
"dead_code": 3
|
|
231
|
+
},
|
|
232
|
+
"by_risk": {
|
|
233
|
+
"low": 8,
|
|
234
|
+
"medium": 3,
|
|
235
|
+
"high": 1
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
\`\`\`
|
|
240
|
+
|
|
241
|
+
## Execution Commands
|
|
242
|
+
|
|
243
|
+
\`\`\`bash
|
|
244
|
+
# Session directories
|
|
245
|
+
find .workflow -type d -name "WFS-*" -o -name "DBG-*" 2>/dev/null
|
|
246
|
+
|
|
247
|
+
# Check modification times (Linux/Mac)
|
|
248
|
+
stat -c "%Y %n" .workflow/active/WFS-* 2>/dev/null
|
|
249
|
+
|
|
250
|
+
# Check modification times (Windows PowerShell via bash)
|
|
251
|
+
powershell -Command "Get-ChildItem '.workflow/active/WFS-*' | ForEach-Object { Write-Output \"$($_.LastWriteTime) $($_.FullName)\" }"
|
|
252
|
+
|
|
253
|
+
# Find orphan exports (TypeScript)
|
|
254
|
+
rg "export (const|function|class|interface|type)" --type ts -l
|
|
255
|
+
|
|
256
|
+
# Find imports
|
|
257
|
+
rg "import.*from" --type ts
|
|
258
|
+
|
|
259
|
+
# Find large comment blocks
|
|
260
|
+
rg "^\\s*/\\*" -A 10 --type ts
|
|
261
|
+
|
|
262
|
+
# Find old TODOs
|
|
263
|
+
rg "TODO|FIXME" --type ts -n
|
|
264
|
+
\`\`\`
|
|
265
|
+
|
|
266
|
+
## Success Criteria
|
|
267
|
+
- [ ] All session directories scanned with age calculation
|
|
268
|
+
- [ ] Documents cross-referenced with existing code
|
|
269
|
+
- [ ] Dead code detection via import graph analysis
|
|
270
|
+
- [ ] cleanup-manifest.json written with complete data
|
|
271
|
+
- [ ] Each item has risk level and cleanup reason
|
|
272
|
+
`
|
|
273
|
+
)
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
### Phase 3: Confirmation
|
|
279
|
+
|
|
280
|
+
**Step 3.1: Display Summary**
|
|
281
|
+
```javascript
|
|
282
|
+
const manifest = JSON.parse(Read(`${sessionFolder}/cleanup-manifest.json`))
|
|
283
|
+
|
|
284
|
+
console.log(`
|
|
285
|
+
## Cleanup Discovery Report
|
|
286
|
+
|
|
287
|
+
**Mainline Health**: ${Math.round(manifest.mainline_summary.health_score * 100)}%
|
|
288
|
+
**Core Modules**: ${manifest.mainline_summary.core_modules.join(', ')}
|
|
289
|
+
|
|
290
|
+
### Summary
|
|
291
|
+
| Category | Count | Size | Risk |
|
|
292
|
+
|----------|-------|------|------|
|
|
293
|
+
| Stale Sessions | ${manifest.summary.by_category.stale_sessions} | - | ${getRiskSummary('sessions')} |
|
|
294
|
+
| Drifted Documents | ${manifest.summary.by_category.drifted_documents} | - | ${getRiskSummary('documents')} |
|
|
295
|
+
| Dead Code | ${manifest.summary.by_category.dead_code} | - | ${getRiskSummary('code')} |
|
|
296
|
+
|
|
297
|
+
**Total**: ${manifest.summary.total_items} items, ~${manifest.summary.total_size_mb} MB
|
|
298
|
+
|
|
299
|
+
### Stale Sessions
|
|
300
|
+
${manifest.discoveries.stale_sessions.map(s =>
|
|
301
|
+
`- ${s.path} (${s.age_days}d, ${s.risk}): ${s.reason}`
|
|
302
|
+
).join('\n')}
|
|
303
|
+
|
|
304
|
+
### Drifted Documents
|
|
305
|
+
${manifest.discoveries.drifted_documents.map(d =>
|
|
306
|
+
`- ${d.path} (${d.drift_percentage}% broken, ${d.risk}): ${d.reason}`
|
|
307
|
+
).join('\n')}
|
|
308
|
+
|
|
309
|
+
### Dead Code
|
|
310
|
+
${manifest.discoveries.dead_code.map(c =>
|
|
311
|
+
`- ${c.path} (${c.type}, ${c.risk}): ${c.reason}`
|
|
312
|
+
).join('\n')}
|
|
313
|
+
`)
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Step 3.2: Dry-Run Exit**
|
|
317
|
+
```javascript
|
|
318
|
+
if (flags.includes('--dry-run')) {
|
|
319
|
+
console.log(`
|
|
320
|
+
---
|
|
321
|
+
**Dry-run mode**: No changes made.
|
|
322
|
+
Manifest saved to: ${sessionFolder}/cleanup-manifest.json
|
|
323
|
+
|
|
324
|
+
To execute cleanup: /clean
|
|
325
|
+
`)
|
|
326
|
+
return
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Step 3.3: User Confirmation**
|
|
331
|
+
```javascript
|
|
332
|
+
AskUserQuestion({
|
|
333
|
+
questions: [
|
|
334
|
+
{
|
|
335
|
+
question: "Which categories to clean?",
|
|
336
|
+
header: "Categories",
|
|
337
|
+
multiSelect: true,
|
|
338
|
+
options: [
|
|
339
|
+
{
|
|
340
|
+
label: "Sessions",
|
|
341
|
+
description: `${manifest.summary.by_category.stale_sessions} stale workflow sessions`
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
label: "Documents",
|
|
345
|
+
description: `${manifest.summary.by_category.drifted_documents} drifted documents`
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
label: "Dead Code",
|
|
349
|
+
description: `${manifest.summary.by_category.dead_code} unused code files`
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
question: "Risk level to include?",
|
|
355
|
+
header: "Risk",
|
|
356
|
+
multiSelect: false,
|
|
357
|
+
options: [
|
|
358
|
+
{ label: "Low only", description: "Safest - only obviously stale items" },
|
|
359
|
+
{ label: "Low + Medium", description: "Recommended - includes likely unused items" },
|
|
360
|
+
{ label: "All", description: "Aggressive - includes high-risk items" }
|
|
361
|
+
]
|
|
362
|
+
}
|
|
363
|
+
]
|
|
364
|
+
})
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
### Phase 4: Execution
|
|
370
|
+
|
|
371
|
+
**Step 4.1: Filter Items by Selection**
|
|
372
|
+
```javascript
|
|
373
|
+
const selectedCategories = userSelection.categories // ['Sessions', 'Documents', ...]
|
|
374
|
+
const riskLevel = userSelection.risk // 'Low only', 'Low + Medium', 'All'
|
|
375
|
+
|
|
376
|
+
const riskFilter = {
|
|
377
|
+
'Low only': ['low'],
|
|
378
|
+
'Low + Medium': ['low', 'medium'],
|
|
379
|
+
'All': ['low', 'medium', 'high']
|
|
380
|
+
}[riskLevel]
|
|
381
|
+
|
|
382
|
+
const itemsToClean = []
|
|
383
|
+
|
|
384
|
+
if (selectedCategories.includes('Sessions')) {
|
|
385
|
+
itemsToClean.push(...manifest.discoveries.stale_sessions.filter(s => riskFilter.includes(s.risk)))
|
|
386
|
+
}
|
|
387
|
+
if (selectedCategories.includes('Documents')) {
|
|
388
|
+
itemsToClean.push(...manifest.discoveries.drifted_documents.filter(d => riskFilter.includes(d.risk)))
|
|
389
|
+
}
|
|
390
|
+
if (selectedCategories.includes('Dead Code')) {
|
|
391
|
+
itemsToClean.push(...manifest.discoveries.dead_code.filter(c => riskFilter.includes(c.risk)))
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
TodoWrite({
|
|
395
|
+
todos: itemsToClean.map(item => ({
|
|
396
|
+
content: `Clean: ${item.path}`,
|
|
397
|
+
status: "pending",
|
|
398
|
+
activeForm: `Cleaning ${item.path}`
|
|
399
|
+
}))
|
|
400
|
+
})
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Step 4.2: Execute Cleanup**
|
|
404
|
+
```javascript
|
|
405
|
+
const results = { deleted: [], failed: [], skipped: [] }
|
|
406
|
+
|
|
407
|
+
for (const item of itemsToClean) {
|
|
408
|
+
TodoWrite({ todos: [...] }) // Mark current as in_progress
|
|
409
|
+
|
|
410
|
+
try {
|
|
411
|
+
if (item.type === 'orphan_file' || item.type === 'dead_export') {
|
|
412
|
+
// Dead code: Delete file or remove export
|
|
413
|
+
Bash({ command: `rm -rf "${item.path}"` })
|
|
414
|
+
} else {
|
|
415
|
+
// Sessions and documents: Delete directory/file
|
|
416
|
+
Bash({ command: `rm -rf "${item.path}"` })
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
results.deleted.push(item.path)
|
|
420
|
+
TodoWrite({ todos: [...] }) // Mark as completed
|
|
421
|
+
} catch (error) {
|
|
422
|
+
results.failed.push({ path: item.path, error: error.message })
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Step 4.3: Update Manifests**
|
|
428
|
+
```javascript
|
|
429
|
+
// Update archives manifest if sessions were deleted
|
|
430
|
+
if (selectedCategories.includes('Sessions')) {
|
|
431
|
+
const archiveManifestPath = '.workflow/archives/manifest.json'
|
|
432
|
+
if (fileExists(archiveManifestPath)) {
|
|
433
|
+
const archiveManifest = JSON.parse(Read(archiveManifestPath))
|
|
434
|
+
const deletedSessionIds = results.deleted
|
|
435
|
+
.filter(p => p.includes('WFS-'))
|
|
436
|
+
.map(p => p.split('/').pop())
|
|
437
|
+
|
|
438
|
+
const updatedManifest = archiveManifest.filter(entry =>
|
|
439
|
+
!deletedSessionIds.includes(entry.session_id)
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
Write(archiveManifestPath, JSON.stringify(updatedManifest, null, 2))
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// Update project.json if features referenced deleted sessions
|
|
447
|
+
const projectPath = '.workflow/project.json'
|
|
448
|
+
if (fileExists(projectPath)) {
|
|
449
|
+
const project = JSON.parse(Read(projectPath))
|
|
450
|
+
const deletedPaths = new Set(results.deleted)
|
|
451
|
+
|
|
452
|
+
project.features = project.features.filter(f =>
|
|
453
|
+
!deletedPaths.has(f.traceability?.archive_path)
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
project.statistics.total_features = project.features.length
|
|
457
|
+
project.statistics.last_updated = getUtc8ISOString()
|
|
458
|
+
|
|
459
|
+
Write(projectPath, JSON.stringify(project, null, 2))
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
**Step 4.4: Report Results**
|
|
464
|
+
```javascript
|
|
465
|
+
console.log(`
|
|
466
|
+
## Cleanup Complete
|
|
467
|
+
|
|
468
|
+
**Deleted**: ${results.deleted.length} items
|
|
469
|
+
**Failed**: ${results.failed.length} items
|
|
470
|
+
**Skipped**: ${results.skipped.length} items
|
|
471
|
+
|
|
472
|
+
### Deleted Items
|
|
473
|
+
${results.deleted.map(p => `- ${p}`).join('\n')}
|
|
474
|
+
|
|
475
|
+
${results.failed.length > 0 ? `
|
|
476
|
+
### Failed Items
|
|
477
|
+
${results.failed.map(f => `- ${f.path}: ${f.error}`).join('\n')}
|
|
478
|
+
` : ''}
|
|
479
|
+
|
|
480
|
+
Cleanup manifest archived to: ${sessionFolder}/cleanup-manifest.json
|
|
481
|
+
`)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
## Session Folder Structure
|
|
487
|
+
|
|
488
|
+
```
|
|
489
|
+
.workflow/.clean/{YYYY-MM-DD}/
|
|
490
|
+
├── mainline-profile.json # Git history analysis
|
|
491
|
+
└── cleanup-manifest.json # Discovery results
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
## Risk Level Definitions
|
|
495
|
+
|
|
496
|
+
| Risk | Description | Examples |
|
|
497
|
+
|------|-------------|----------|
|
|
498
|
+
| **Low** | Safe to delete, no dependencies | Empty sessions, scratchpad files, 100% broken docs |
|
|
499
|
+
| **Medium** | Likely unused, verify before delete | Orphan files, old archives, partially broken docs |
|
|
500
|
+
| **High** | May have hidden dependencies | Files with some imports, recent modifications |
|
|
501
|
+
|
|
502
|
+
## Error Handling
|
|
503
|
+
|
|
504
|
+
| Situation | Action |
|
|
505
|
+
|-----------|--------|
|
|
506
|
+
| No git repository | Skip mainline detection, use file timestamps only |
|
|
507
|
+
| Session in use (.archiving) | Skip with warning |
|
|
508
|
+
| Permission denied | Report error, continue with others |
|
|
509
|
+
| Manifest parse error | Regenerate from filesystem scan |
|
|
510
|
+
| Empty discovery | Report "codebase is clean" |
|
|
511
|
+
|
|
512
|
+
## Related Commands
|
|
513
|
+
|
|
514
|
+
- `/workflow:session:complete` - Properly archive active sessions
|
|
515
|
+
- `/memory:compact` - Save session memory before cleanup
|
|
516
|
+
- `/workflow:status` - View current workflow state
|