"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[725],{1184(e,s,n){n.d(s,{R:()=>r,x:()=>d});var i=n(3696);const l={},t=i.createContext(l);function r(e){const s=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:r(e.components),i.createElement(t.Provider,{value:s},e.children)}},5651(e,s,n){n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>d,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"workflows/faq","title":"Workflow FAQ","description":"Frequently asked questions about CCW workflows","source":"@site/docs/workflows/faq.mdx","sourceDirName":"workflows","slug":"/workflows/faq","permalink":"/docs/docs/workflows/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/ccw/docs/tree/main/docs/workflows/faq.mdx","tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"Workflow FAQ","description":"Frequently asked questions about CCW workflows","sidebar_position":7}}');var l=n(2540),t=n(1184),r=n(1540);const d={title:"Workflow FAQ",description:"Frequently asked questions about CCW workflows",sidebar_position:7},o="Workflow FAQ",c={},h=[{value:"General Questions",id:"general-questions",level:2},{value:"What is the difference between Main Workflow and Issue Workflow?",id:"what-is-the-difference-between-main-workflow-and-issue-workflow",level:3},{value:"How do I choose the right workflow level?",id:"how-do-i-choose-the-right-workflow-level",level:3},{value:"What are Minimum Execution Units?",id:"what-are-minimum-execution-units",level:3},{value:"Level 1 Questions",id:"level-1-questions",level:2},{value:"When should I use Level 1?",id:"when-should-i-use-level-1",level:3},{value:"Level 2 Questions",id:"level-2-questions",level:2},{value:"What's the difference between lite-plan, lite-fix, and multi-cli-plan?",id:"whats-the-difference-between-lite-plan-lite-fix-and-multi-cli-plan",level:3},{value:"What is hotfix mode?",id:"what-is-hotfix-mode",level:3},{value:"When should I use multi-cli-plan vs lite-plan?",id:"when-should-i-use-multi-cli-plan-vs-lite-plan",level:3},{value:"Level 3 Questions",id:"level-3-questions",level:2},{value:"What is the difference between plan, tdd-plan, and test-fix-gen?",id:"what-is-the-difference-between-plan-tdd-plan-and-test-fix-gen",level:3},{value:"What is TDD (Test-Driven Development)?",id:"what-is-tdd-test-driven-development",level:3},{value:"Why does TDD require tests to be written first?",id:"why-does-tdd-require-tests-to-be-written-first",level:3},{value:"What are the test layers in test-fix-gen?",id:"what-are-the-test-layers-in-test-fix-gen",level:3},{value:"Level 4 Questions",id:"level-4-questions",level:2},{value:"When should I use brainstorm?",id:"when-should-i-use-brainstorm",level:3},{value:"What roles are available in brainstorm?",id:"what-roles-are-available-in-brainstorm",level:3},{value:"What are With-File workflows?",id:"what-are-with-file-workflows",level:3},{value:"Level 5 Questions",id:"level-5-questions",level:2},{value:"When should I use ccw-coordinator?",id:"when-should-i-use-ccw-coordinator",level:3},{value:"How does ccw-coordinator differ from other levels?",id:"how-does-ccw-coordinator-differ-from-other-levels",level:3},{value:"Execution Questions",id:"execution-questions",level:2},{value:"What is lite-execute?",id:"what-is-lite-execute",level:3},{value:"What is execute?",id:"what-is-execute",level:3},{value:"Session Questions",id:"session-questions",level:2},{value:"How do I resume a paused session?",id:"how-do-i-resume-a-paused-session",level:3},{value:"How do I complete a session?",id:"how-do-i-complete-a-session",level:3},{value:"How do I list all sessions?",id:"how-do-i-list-all-sessions",level:3},{value:"Artifact Questions",id:"artifact-questions",level:2},{value:"Where are workflow artifacts stored?",id:"where-are-workflow-artifacts-stored",level:3},{value:"What files are in a session?",id:"what-files-are-in-a-session",level:3},{value:"Testing Questions",id:"testing-questions",level:2},{value:"How do I add tests to existing code?",id:"how-do-i-add-tests-to-existing-code",level:3},{value:"How do I fix failing tests?",id:"how-do-i-fix-failing-tests",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"My workflow failed. What should I do?",id:"my-workflow-failed-what-should-i-do",level:3},{value:"How do I skip a failing task?",id:"how-do-i-skip-a-failing-task",level:3},{value:"How do I clean up old sessions?",id:"how-do-i-clean-up-old-sessions",level:3},{value:"Best Practices",id:"best-practices",level:2},{value:"What are the workflow best practices?",id:"what-are-the-workflow-best-practices",level:3},{value:"When should I use worktree isolation?",id:"when-should-i-use-worktree-isolation",level:3},{value:"Related Documentation",id:"related-documentation",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.header,{children:(0,l.jsx)(s.h1,{id:"workflow-faq",children:"Workflow FAQ"})}),"\n",(0,l.jsx)(s.p,{children:"Common questions and answers about CCW workflows."}),"\n",(0,l.jsx)(s.h2,{id:"general-questions",children:"General Questions"}),"\n",(0,l.jsx)(s.h3,{id:"what-is-the-difference-between-main-workflow-and-issue-workflow",children:"What is the difference between Main Workflow and Issue Workflow?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Main Workflow"})," is for primary development (Levels 1-5), while ",(0,l.jsx)(s.strong,{children:"Issue Workflow"})," is for post-development maintenance."]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Aspect"}),(0,l.jsx)(s.th,{children:"Main Workflow"}),(0,l.jsx)(s.th,{children:"Issue Workflow"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Purpose"})}),(0,l.jsx)(s.td,{children:"Feature development"}),(0,l.jsx)(s.td,{children:"Post-development fixes"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Timing"})}),(0,l.jsx)(s.td,{children:"Development phase"}),(0,l.jsx)(s.td,{children:"After main workflow completes"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Parallelism"})}),(0,l.jsx)(s.td,{children:"Dependency analysis"}),(0,l.jsx)(s.td,{children:"Worktree isolation (optional)"})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-choose-the-right-workflow-level",children:"How do I choose the right workflow level?"}),"\n",(0,l.jsx)(r.A,{chart:'\n flowchart TD\n Start([Start]) --\x3e Q1{Post-development?}\n Q1 --\x3e|Yes| Issue["Issue Workflow"]\n Q1 --\x3e|No| Q2{Uncertain commands?}\n Q2 --\x3e|Yes| L5["Level 5: ccw-coordinator"]\n Q2 --\x3e|No| Q3{Requirements clear?}\n Q3 --\x3e|No| L4["Level 4: brainstorm"]\n Q3 --\x3e|Yes| Q4{Need persistent session?}\n Q4 --\x3e|Yes| Q5{Development type?}\n Q4 --\x3e|No| Q6{Multi-perspective?}\n Q5 --\x3e|Standard| L3Std["Level 3: plan"]\n Q5 --\x3e|TDD| L3TDD["Level 3: tdd-plan"]\n Q5 --\x3e|Test Fix| L3Test["Level 3: test-fix-gen"]\n Q6 --\x3e|Yes| L2Multi["Level 2: multi-cli-plan"]\n Q6 --\x3e|No| Q7{Bug fix?}\n Q7 --\x3e|Yes| L2Fix["Level 2: lite-fix"]\n Q7 --\x3e|No| Q8{Need planning?}\n Q8 --\x3e|Yes| L2Plan["Level 2: lite-plan"]\n Q8 --\x3e|No| L1["Level 1: lite-lite-lite"]\n\n classDef startend fill:#c8e6c9,stroke:#388e3c\n classDef decision fill:#fff9c4,stroke:#f57c00\n classDef level fill:#e3f2fd,stroke:#1976d2\n\n class Start startend,Q1,Q2,Q3,Q4,Q6,Q7,Q8 decision,Issue,L1,L2Plan,L2Fix,L2Multi,L3Std,L3TDD,L3Test,L4,L5 level\n'}),"\n",(0,l.jsx)(s.h3,{id:"what-are-minimum-execution-units",children:"What are Minimum Execution Units?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Minimum Execution Units"})," are sets of commands that must execute together as atomic groups. Splitting these commands breaks logical flow and creates incomplete states."]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Example"}),": The unit ",(0,l.jsx)(s.code,{children:"lite-plan -> lite-execute"})," must complete together. Stopping after ",(0,l.jsx)(s.code,{children:"lite-plan"})," leaves you with a plan but no implementation."]}),"\n",(0,l.jsx)(s.h2,{id:"level-1-questions",children:"Level 1 Questions"}),"\n",(0,l.jsx)(s.h3,{id:"when-should-i-use-level-1",children:"When should I use Level 1?"}),"\n",(0,l.jsxs)(s.p,{children:["Use Level 1 (",(0,l.jsx)(s.code,{children:"lite-lite-lite"}),") when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Quick fixes (typos, minor adjustments)"}),"\n",(0,l.jsx)(s.li,{children:"Simple features (single function, small utility)"}),"\n",(0,l.jsx)(s.li,{children:"Config changes (environment variables, timeout values)"}),"\n",(0,l.jsx)(s.li,{children:"Documentation updates (readme, comments)"}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Don't use"})," when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Multi-module changes"}),"\n",(0,l.jsx)(s.li,{children:"Need persistent records"}),"\n",(0,l.jsx)(s.li,{children:"Complex refactoring"}),"\n",(0,l.jsx)(s.li,{children:"Test-driven development"}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"level-2-questions",children:"Level 2 Questions"}),"\n",(0,l.jsx)(s.h3,{id:"whats-the-difference-between-lite-plan-lite-fix-and-multi-cli-plan",children:"What's the difference between lite-plan, lite-fix, and multi-cli-plan?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Workflow"}),(0,l.jsx)(s.th,{children:"Purpose"}),(0,l.jsx)(s.th,{children:"When to Use"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"lite-plan"})}),(0,l.jsx)(s.td,{children:"Clear requirements"}),(0,l.jsx)(s.td,{children:"Single-module features"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"lite-fix"})}),(0,l.jsx)(s.td,{children:"Bug diagnosis"}),(0,l.jsx)(s.td,{children:"Bug fixes, production issues"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"multi-cli-plan"})}),(0,l.jsx)(s.td,{children:"Multi-perspective analysis"}),(0,l.jsx)(s.td,{children:"Technology selection, solution comparison"})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"what-is-hotfix-mode",children:"What is hotfix mode?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:'/workflow:lite-fix --hotfix "Production database connection failing"\n'})}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Hotfix mode"}),":"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Skips most diagnosis phases"}),"\n",(0,l.jsx)(s.li,{children:"Minimal planning (direct execution)"}),"\n",(0,l.jsx)(s.li,{children:"Auto-generates follow-up tasks for complete fix + post-mortem"}),"\n",(0,l.jsxs)(s.li,{children:["Use for ",(0,l.jsx)(s.strong,{children:"production emergencies only"})]}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"when-should-i-use-multi-cli-plan-vs-lite-plan",children:"When should I use multi-cli-plan vs lite-plan?"}),"\n",(0,l.jsxs)(s.p,{children:["Use ",(0,l.jsx)(s.code,{children:"multi-cli-plan"})," when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Need multiple perspectives (Gemini, Codex, Claude)"}),"\n",(0,l.jsx)(s.li,{children:"Technology selection decisions"}),"\n",(0,l.jsx)(s.li,{children:"Solution comparison"}),"\n",(0,l.jsx)(s.li,{children:"Architecture trade-offs"}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:["Use ",(0,l.jsx)(s.code,{children:"lite-plan"})," when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Requirements are clear"}),"\n",(0,l.jsx)(s.li,{children:"Single-perspective sufficient"}),"\n",(0,l.jsx)(s.li,{children:"Faster iteration needed"}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"level-3-questions",children:"Level 3 Questions"}),"\n",(0,l.jsx)(s.h3,{id:"what-is-the-difference-between-plan-tdd-plan-and-test-fix-gen",children:"What is the difference between plan, tdd-plan, and test-fix-gen?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Workflow"}),(0,l.jsx)(s.th,{children:"Purpose"}),(0,l.jsx)(s.th,{children:"Key Feature"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"plan"})}),(0,l.jsx)(s.td,{children:"Standard development"}),(0,l.jsx)(s.td,{children:"5-phase planning with verification"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"tdd-plan"})}),(0,l.jsx)(s.td,{children:"Test-driven development"}),(0,l.jsx)(s.td,{children:"Red-Green-Refactor cycles"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"test-fix-gen"})}),(0,l.jsx)(s.td,{children:"Test fixes"}),(0,l.jsx)(s.td,{children:"Progressive test layers (L0-L3)"})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"what-is-tdd-test-driven-development",children:"What is TDD (Test-Driven Development)?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"TDD"})," follows the Red-Green-Refactor cycle:"]}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Red"}),": Write a failing test"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Green"}),": Write minimal code to pass the test"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Refactor"}),": Improve code while keeping tests green"]}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"The Iron Law"}),":"]}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{children:"NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST\n"})}),"\n",(0,l.jsx)(s.h3,{id:"why-does-tdd-require-tests-to-be-written-first",children:"Why does TDD require tests to be written first?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Aspect"}),(0,l.jsx)(s.th,{children:"Test-First"}),(0,l.jsx)(s.th,{children:"Test-After"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Proof"})}),(0,l.jsx)(s.td,{children:"Tests fail before implementation"}),(0,l.jsx)(s.td,{children:"Tests pass immediately (proves nothing)"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Discovery"})}),(0,l.jsx)(s.td,{children:"Edge cases found before coding"}),(0,l.jsx)(s.td,{children:"Edge cases found after coding"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Verification"})}),(0,l.jsx)(s.td,{children:"Verifies requirements"}),(0,l.jsx)(s.td,{children:"Verifies implementation"})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"what-are-the-test-layers-in-test-fix-gen",children:"What are the test layers in test-fix-gen?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Layer"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"L0"})}),(0,l.jsx)(s.td,{children:"Static"}),(0,l.jsx)(s.td,{children:"Type checking, linting"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"L1"})}),(0,l.jsx)(s.td,{children:"Unit"}),(0,l.jsx)(s.td,{children:"Function-level tests"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"L2"})}),(0,l.jsx)(s.td,{children:"Integration"}),(0,l.jsx)(s.td,{children:"Component interaction"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"L3"})}),(0,l.jsx)(s.td,{children:"E2E"}),(0,l.jsx)(s.td,{children:"Full system tests"})]})]})]}),"\n",(0,l.jsx)(s.h2,{id:"level-4-questions",children:"Level 4 Questions"}),"\n",(0,l.jsxs)(s.h3,{id:"when-should-i-use-brainstorm",children:["When should I use brainstorm",":auto-parallel","?"]}),"\n",(0,l.jsxs)(s.p,{children:["Use Level 4 (",(0,l.jsx)(s.code,{children:"brainstorm:auto-parallel"}),") when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"New feature design"}),"\n",(0,l.jsx)(s.li,{children:"System architecture refactoring"}),"\n",(0,l.jsx)(s.li,{children:"Exploratory requirements"}),"\n",(0,l.jsx)(s.li,{children:"Uncertain implementation approach"}),"\n",(0,l.jsx)(s.li,{children:"Multi-dimensional trade-offs needed"}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"what-roles-are-available-in-brainstorm",children:"What roles are available in brainstorm?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Role"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"system-architect"})}),(0,l.jsx)(s.td,{children:"System design"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"ui-designer"})}),(0,l.jsx)(s.td,{children:"UI design"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"ux-expert"})}),(0,l.jsx)(s.td,{children:"User experience"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"product-manager"})}),(0,l.jsx)(s.td,{children:"Product requirements"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"product-owner"})}),(0,l.jsx)(s.td,{children:"Business value"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"data-architect"})}),(0,l.jsx)(s.td,{children:"Data structure"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"scrum-master"})}),(0,l.jsx)(s.td,{children:"Process and team"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"subject-matter-expert"})}),(0,l.jsx)(s.td,{children:"Domain expertise"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"test-strategist"})}),(0,l.jsx)(s.td,{children:"Testing strategy"})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"what-are-with-file-workflows",children:"What are With-File workflows?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"With-File workflows"})," provide documented exploration with multi-CLI collaboration:"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Workflow"}),(0,l.jsx)(s.th,{children:"Purpose"}),(0,l.jsx)(s.th,{children:"Level"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"brainstorm-with-file"})}),(0,l.jsx)(s.td,{children:"Multi-perspective ideation"}),(0,l.jsx)(s.td,{children:"4"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"debug-with-file"})}),(0,l.jsx)(s.td,{children:"Hypothesis-driven debugging"}),(0,l.jsx)(s.td,{children:"3"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:"analyze-with-file"})}),(0,l.jsx)(s.td,{children:"Collaborative analysis"}),(0,l.jsx)(s.td,{children:"3"})]})]})]}),"\n",(0,l.jsx)(s.h2,{id:"level-5-questions",children:"Level 5 Questions"}),"\n",(0,l.jsx)(s.h3,{id:"when-should-i-use-ccw-coordinator",children:"When should I use ccw-coordinator?"}),"\n",(0,l.jsxs)(s.p,{children:["Use Level 5 (",(0,l.jsx)(s.code,{children:"ccw-coordinator"}),") when:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Complex multi-step workflows"}),"\n",(0,l.jsx)(s.li,{children:"Uncertain which commands to use"}),"\n",(0,l.jsx)(s.li,{children:"Desire end-to-end automation"}),"\n",(0,l.jsx)(s.li,{children:"Need full state tracking and resumability"}),"\n",(0,l.jsx)(s.li,{children:"Team collaboration with unified execution flow"}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"how-does-ccw-coordinator-differ-from-other-levels",children:"How does ccw-coordinator differ from other levels?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Aspect"}),(0,l.jsx)(s.th,{children:"Level 1-4"}),(0,l.jsx)(s.th,{children:"Level 5"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Command Selection"})}),(0,l.jsx)(s.td,{children:"Manual"}),(0,l.jsx)(s.td,{children:"Auto"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"Orchestration"})}),(0,l.jsx)(s.td,{children:"Manual"}),(0,l.jsx)(s.td,{children:"Intelligent"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:(0,l.jsx)(s.strong,{children:"State Tracking"})}),(0,l.jsx)(s.td,{children:"Varies"}),(0,l.jsx)(s.td,{children:"Full persistence"})]})]})]}),"\n",(0,l.jsx)(s.h2,{id:"execution-questions",children:"Execution Questions"}),"\n",(0,l.jsx)(s.h3,{id:"what-is-lite-execute",children:"What is lite-execute?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"lite-execute"})," is the unified execution command for Level 2 workflows:"]}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"/workflow:lite-execute --in-memory\n"})}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Features"}),":"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Parallel execution for independent tasks"}),"\n",(0,l.jsx)(s.li,{children:"Sequential phases for dependent tasks"}),"\n",(0,l.jsx)(s.li,{children:"Progress tracking via TodoWrite"}),"\n",(0,l.jsx)(s.li,{children:"Optional code review"}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"what-is-execute",children:"What is execute?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"execute"})," is the unified execution command for Level 3 workflows:"]}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"/workflow:execute --session WFS-{session-id}\n"})}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Features"}),":"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Dependency analysis"}),"\n",(0,l.jsx)(s.li,{children:"Parallel/sequential task execution"}),"\n",(0,l.jsx)(s.li,{children:"Session-based progress tracking"}),"\n",(0,l.jsx)(s.li,{children:"Task completion summaries"}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"session-questions",children:"Session Questions"}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-resume-a-paused-session",children:"How do I resume a paused session?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"/workflow:session:resume # Resume most recent session\n/workflow:session:resume WFS-{session-id} # Resume specific session\n"})}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-complete-a-session",children:"How do I complete a session?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"/workflow:session:complete --session WFS-{session-id}\n"})}),"\n",(0,l.jsx)(s.p,{children:"This archives the session with lessons learned and updates the manifest."}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-list-all-sessions",children:"How do I list all sessions?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"/workflow:session:list\n"})}),"\n",(0,l.jsx)(s.h2,{id:"artifact-questions",children:"Artifact Questions"}),"\n",(0,l.jsx)(s.h3,{id:"where-are-workflow-artifacts-stored",children:"Where are workflow artifacts stored?"}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Level"}),(0,l.jsx)(s.th,{children:"Artifact Location"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"Level 1"}),(0,l.jsx)(s.td,{children:"None (stateless)"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"Level 2"}),(0,l.jsxs)(s.td,{children:[(0,l.jsx)(s.code,{children:"memory://plan"})," or ",(0,l.jsx)(s.code,{children:".workflow/.lite-fix/"}),", ",(0,l.jsx)(s.code,{children:".workflow/.multi-cli-plan/"})]})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"Level 3"}),(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:".workflow/active/WFS-{session}/"})})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"Level 4"}),(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:".workflow/active/WFS-{session}/.brainstorming/"})})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"Level 5"}),(0,l.jsx)(s.td,{children:(0,l.jsx)(s.code,{children:".workflow/.ccw-coordinator/{session}/"})})]})]})]}),"\n",(0,l.jsx)(s.h3,{id:"what-files-are-in-a-session",children:"What files are in a session?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{children:".workflow/active/WFS-{session}/\n\u251c\u2500\u2500 workflow-session.json # Session metadata\n\u251c\u2500\u2500 IMPL_PLAN.md # Implementation plan\n\u251c\u2500\u2500 TODO_LIST.md # Progress tracking\n\u251c\u2500\u2500 .task/\n\u2502 \u251c\u2500\u2500 IMPL-001.json # Task definitions\n\u2502 \u251c\u2500\u2500 IMPL-002.json\n\u2502 \u2514\u2500\u2500 ...\n\u2514\u2500\u2500 .process/\n \u251c\u2500\u2500 context-package.json # Project context\n \u2514\u2500\u2500 planning-notes.md\n"})}),"\n",(0,l.jsx)(s.h2,{id:"testing-questions",children:"Testing Questions"}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-add-tests-to-existing-code",children:"How do I add tests to existing code?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:'# Session Mode (from existing session)\n/workflow:test-fix-gen WFS-user-auth-v2\n\n# Prompt Mode (direct description)\n/workflow:test-fix-gen "Add unit tests for the auth API"\n'})}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-fix-failing-tests",children:"How do I fix failing tests?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:'/workflow:test-fix-gen "Tests failing for user registration"\n/workflow:test-cycle-execute\n'})}),"\n",(0,l.jsx)(s.p,{children:"The workflow will:"}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsx)(s.li,{children:"Analyze test failures"}),"\n",(0,l.jsx)(s.li,{children:"Identify root causes"}),"\n",(0,l.jsx)(s.li,{children:"Fix issues iteratively"}),"\n",(0,l.jsx)(s.li,{children:"Verify >= 95% pass rate"}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,l.jsx)(s.h3,{id:"my-workflow-failed-what-should-i-do",children:"My workflow failed. What should I do?"}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Check the error message"})," - Identify the root cause"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Review state.json"})," - Check ",(0,l.jsx)(s.code,{children:".workflow/.ccw-coordinator/{session}/state.json"})]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Resume the session"})," - Use ",(0,l.jsx)(s.code,{children:"/workflow:session:resume"})," to continue"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Adjust and retry"})," - Modify approach based on error"]}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-skip-a-failing-task",children:"How do I skip a failing task?"}),"\n",(0,l.jsx)(s.p,{children:'Edit the task JSON to set status to "completed":'}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"jq '.status = \"completed\"' .workflow/active/WFS-{session}/.task/IMPL-001.json\n"})}),"\n",(0,l.jsx)(s.h3,{id:"how-do-i-clean-up-old-sessions",children:"How do I clean up old sessions?"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"# List sessions\n/workflow:session:list\n\n# Remove specific session\nrm -rf .workflow/active/WFS-{session-id}\n\n# Clean all completed sessions\n/workflow:clean\n"})}),"\n",(0,l.jsx)(s.h2,{id:"best-practices",children:"Best Practices"}),"\n",(0,l.jsx)(s.h3,{id:"what-are-the-workflow-best-practices",children:"What are the workflow best practices?"}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Start simple"})," - Use the lowest level that meets your needs"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Plan before executing"})," - Use verification steps when available"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Test continuously"})," - Integrate testing into your workflow"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Review code"})," - Use built-in review workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Document decisions"})," - Use brainstorm workflows for complex decisions"]}),"\n"]}),"\n",(0,l.jsx)(s.h3,{id:"when-should-i-use-worktree-isolation",children:"When should I use worktree isolation?"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Worktree isolation"})," is primarily for ",(0,l.jsx)(s.strong,{children:"Issue Workflow"}),":"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"After main development is complete"}),"\n",(0,l.jsxs)(s.li,{children:["Merged to ",(0,l.jsx)(s.code,{children:"main"})," branch"]}),"\n",(0,l.jsx)(s.li,{children:"Issues discovered requiring fixes"}),"\n",(0,l.jsx)(s.li,{children:"Need to fix without affecting current development"}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Main Workflow"})," doesn't need worktree because:"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Dependency analysis solves parallelism"}),"\n",(0,l.jsx)(s.li,{children:"Agents execute independent tasks in parallel"}),"\n",(0,l.jsx)(s.li,{children:"No filesystem isolation needed"}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"related-documentation",children:"Related Documentation"}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/introduction",children:"Introduction"})," - Workflow overview"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/level-1-ultra-lightweight",children:"Level 1"})," - Ultra-lightweight workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/level-2-rapid",children:"Level 2"})," - Rapid workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/level-3-standard",children:"Level 3"})," - Standard workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/level-4-brainstorm",children:"Level 4"})," - Brainstorm workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/workflows/level-5-intelligent",children:"Level 5"})," - Intelligent workflows"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.a,{href:"/docs/docs/commands/general/ccw",children:"Commands"})," - Command reference"]}),"\n"]})]})}function x(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,l.jsx)(s,{...e,children:(0,l.jsx)(a,{...e})}):a(e)}}}]);