mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-04 01:40:45 +08:00
- Implemented CliCommandNode component for executing CLI tools with AI models. - Implemented PromptNode component for constructing AI prompts with context. - Added styling for mode and tool badges in both components. - Enhanced user experience with command and argument previews, execution status, and error handling. test: add comprehensive tests for ask_question tool - Created direct test for ask_question tool execution. - Developed end-to-end tests to validate ask_question tool integration with WebSocket and A2UI surfaces. - Implemented simple and integrated WebSocket tests to ensure proper message handling and surface reception. - Added tool registration test to verify ask_question tool is correctly registered. chore: add WebSocket listener and simulation tests - Added WebSocket listener for A2UI surfaces to facilitate testing. - Implemented frontend simulation test to validate complete flow from backend to frontend. - Created various test scripts to ensure robust testing of ask_question tool functionality.
1 line
21 KiB
JavaScript
1 line
21 KiB
JavaScript
"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[121],{1184(e,n,s){s.d(n,{R:()=>o,x:()=>l});var i=s(3696);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}},1211(e,n,s){s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"commands/issue/issue-convert-to-plan","title":"issue:convert-to-plan","description":"Convert planning artifacts to issue solutions","source":"@site/docs/commands/issue/issue-convert-to-plan.md","sourceDirName":"commands/issue","slug":"/commands/issue/issue-convert-to-plan","permalink":"/docs/docs/commands/issue/issue-convert-to-plan","draft":false,"unlisted":false,"editUrl":"https://github.com/ccw/docs/tree/main/docs/commands/issue/issue-convert-to-plan.md","tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"issue:convert-to-plan","sidebar_label":"issue:convert-to-plan","sidebar_position":7,"description":"Convert planning artifacts to issue solutions"},"sidebar":"docs","previous":{"title":"issue:from-brainstorm","permalink":"/docs/docs/commands/issue/issue-from-brainstorm"},"next":{"title":"/cli:cli-init","permalink":"/docs/docs/commands/cli/cli-init"}}');var r=s(2540),t=s(1184);const o={title:"issue:convert-to-plan",sidebar_label:"issue:convert-to-plan",sidebar_position:7,description:"Convert planning artifacts to issue solutions"},l="issue",a={},d=[{value:"Description",id:"description",level:2},{value:"Key Features",id:"key-features",level:3},{value:"Usage",id:"usage",level:2},{value:"Arguments",id:"arguments",level:3},{value:"Examples",id:"examples",level:2},{value:"Convert Lite-Plan",id:"convert-lite-plan",level:3},{value:"Convert Workflow Session",id:"convert-workflow-session",level:3},{value:"Convert Markdown with AI",id:"convert-markdown-with-ai",level:3},{value:"Supplement Existing Solution",id:"supplement-existing-solution",level:3},{value:"Issue Lifecycle Flow",id:"issue-lifecycle-flow",level:2},{value:"Supported Sources",id:"supported-sources",level:2},{value:"1. Lite-Plan",id:"1-lite-plan",level:3},{value:"2. Workflow Session",id:"2-workflow-session",level:3},{value:"3. Markdown File",id:"3-markdown-file",level:3},{value:"4. JSON File",id:"4-json-file",level:3},{value:"Task Normalization",id:"task-normalization",level:2},{value:"ID Normalization",id:"id-normalization",level:3},{value:"Depends-On Normalization",id:"depends-on-normalization",level:3},{value:"Action Validation",id:"action-validation",level:3},{value:"Solution Schema",id:"solution-schema",level:2},{value:"Priority Auto-Detection",id:"priority-auto-detection",level:2},{value:"Error Handling",id:"error-handling",level:2},{value:"CLI Endpoints",id:"cli-endpoints",level:2},{value:"Related Commands",id:"related-commands",level:2},{value:"Best Practices",id:"best-practices",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",mermaid:"mermaid",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,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsxs)(n.h1,{id:"issue",children:["issue",":convert-to-plan"]})}),"\n",(0,r.jsx)(n.p,{children:"Converts various planning artifact formats (lite-plan, workflow session, markdown, JSON) into issue workflow solutions with intelligent detection and automatic binding."}),"\n",(0,r.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"issue:convert-to-plan"})," command bridges external planning workflows with the issue system. It auto-detects source formats, extracts task structures, normalizes to solution schema, and either creates new issues or supplements existing solutions."]}),"\n",(0,r.jsx)(n.h3,{id:"key-features",children:"Key Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Multi-format support"}),": lite-plan, workflow sessions, markdown, JSON"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Auto-detection"}),": Identifies source type automatically"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"AI-assisted extraction"}),": Gemini CLI for markdown parsing"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Supplement mode"}),": Add tasks to existing solutions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Auto-binding"}),": Solutions automatically bound to issues"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Issue auto-creation"}),": Creates issues from plans when needed"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Convert lite-plan to new issue (auto-creates issue)\r\n/issue:convert-to-plan ".workflow/.lite-plan/implement-auth-2026-01-25"\r\n\r\n# Convert workflow session to existing issue\r\n/issue:convert-to-plan WFS-auth-impl --issue GH-123\r\n\r\n# Convert markdown file to issue\r\n/issue:convert-to-plan "./docs/implementation-plan.md"\r\n\r\n# Supplement existing solution with additional tasks\r\n/issue:convert-to-plan "./docs/additional-tasks.md" --issue ISS-001 --supplement\r\n\r\n# Auto mode - skip confirmations\r\n/issue:convert-to-plan ".workflow/.lite-plan/my-plan" -y\n'})}),"\n",(0,r.jsx)(n.h3,{id:"arguments",children:"Arguments"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Argument"}),(0,r.jsx)(n.th,{children:"Required"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"SOURCE"})}),(0,r.jsx)(n.td,{children:"Yes"}),(0,r.jsx)(n.td,{children:"Planning artifact path or WFS-xxx ID"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"--issue <id>"})}),(0,r.jsx)(n.td,{children:"No"}),(0,r.jsx)(n.td,{children:"Bind to existing issue instead of creating new"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"--supplement"})}),(0,r.jsx)(n.td,{children:"No"}),(0,r.jsx)(n.td,{children:"Add tasks to existing solution (requires --issue)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"-y, --yes"})}),(0,r.jsx)(n.td,{children:"No"}),(0,r.jsx)(n.td,{children:"Skip all confirmations"})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,r.jsx)(n.h3,{id:"convert-lite-plan",children:"Convert Lite-Plan"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'/issue:convert-to-plan ".workflow/.lite-plan/implement-auth"\r\n# Output:\r\n# Detected source type: lite-plan\r\n# Extracted: 5 tasks\r\n# Created issue: ISS-20250129-001 (priority: 3)\r\n# \u2713 Created solution: SOL-ISS-20250129-001-a7b3\r\n# \u2713 Bound solution to issue\r\n# \u2192 Status: planned\n'})}),"\n",(0,r.jsx)(n.h3,{id:"convert-workflow-session",children:"Convert Workflow Session"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"/issue:convert-to-plan WFS-auth-impl --issue GH-123\r\n# Output:\r\n# Detected source type: workflow-session\r\n# Loading session: .workflow/active/WFS-auth-impl/\r\n# Extracted: 8 tasks from session\r\n# \u2713 Created solution: SOL-GH-123-c9d2\r\n# \u2713 Bound solution to issue GH-123\n"})}),"\n",(0,r.jsx)(n.h3,{id:"convert-markdown-with-ai",children:"Convert Markdown with AI"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'/issue:convert-to-plan "./docs/api-redesign.md"\r\n# Output:\r\n# Detected source type: markdown-file\r\n# Using Gemini CLI for intelligent extraction...\r\n# Extracted: 6 tasks\r\n# Created issue: ISS-20250129-002 (priority: 2)\r\n# \u2713 Created solution: SOL-ISS-20250129-002-e4f1\n'})}),"\n",(0,r.jsx)(n.h3,{id:"supplement-existing-solution",children:"Supplement Existing Solution"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'/issue:convert-to-plan "./docs/tasks-phase2.md" --issue ISS-001 --supplement\r\n# Output:\r\n# Loaded existing solution: SOL-ISS-001-a7b3 (3 tasks)\r\n# Extracted: 2 new tasks\r\n# Supplementing: 3 existing + 2 new = 5 total tasks\r\n# \u2713 Updated solution: SOL-ISS-001-a7b3\n'})}),"\n",(0,r.jsx)(n.h2,{id:"issue-lifecycle-flow",children:"Issue Lifecycle Flow"}),"\n",(0,r.jsx)(n.mermaid,{value:"graph TB\r\n A[Source Artifact] --\x3e B{Detect Type}\r\n B --\x3e|Lite-Plan| C1[plan.json]\r\n B --\x3e|Workflow Session| C2[workflow-session.json]\r\n B --\x3e|Markdown| C3[.md File + Gemini AI]\r\n B --\x3e|JSON| C4[plan.json]\r\n C1 --\x3e D[Extract Tasks]\r\n C2 --\x3e D\r\n C3 --\x3e D\r\n C4 --\x3e D\r\n D --\x3e E{--issue\r\nProvided?}\r\n E --\x3e|Yes| F{Issue\r\nExists?}\r\n E --\x3e|No| G[Create New\r\nIssue]\r\n F --\x3e|Yes| H{--supplement?}\r\n F --\x3e|No| I[Error: Issue\r\nNot Found]\r\n H --\x3e|Yes| J[Load Existing\r\nSolution]\r\n H --\x3e|No| K[Create New\r\nSolution]\r\n G --\x3e K\r\n J --\x3e L[Merge Tasks]\r\n K --\x3e M[Normalize IDs]\r\n L --\x3e M\r\n M --\x3e N[Persist\r\nSolution]\r\n N --\x3e O[Bind to Issue]\r\n O --\x3e P[Status: Planned]\r\n P --\x3e Q[issue:queue]"}),"\n",(0,r.jsx)(n.h2,{id:"supported-sources",children:"Supported Sources"}),"\n",(0,r.jsx)(n.h3,{id:"1-lite-plan",children:"1. Lite-Plan"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Location"}),": ",(0,r.jsx)(n.code,{children:".workflow/.lite-plan/{slug}/plan.json"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Schema"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:"interface LitePlan {\r\n summary: string;\r\n approach: string;\r\n complexity: 'low' | 'medium' | 'high';\r\n estimated_time: string;\r\n tasks: LiteTask[];\r\n _metadata: {\r\n timestamp: string;\r\n exploration_angles: string[];\r\n };\r\n}\r\n\r\ninterface LiteTask {\r\n id: string;\r\n title: string;\r\n scope: string;\r\n action: string;\r\n description: string;\r\n modification_points: Array<{file, target, change}>;\r\n implementation: string[];\r\n acceptance: string[];\r\n depends_on: string[];\r\n}\n"})}),"\n",(0,r.jsx)(n.h3,{id:"2-workflow-session",children:"2. Workflow Session"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Location"}),": ",(0,r.jsx)(n.code,{children:".workflow/active/{session}/"})," or ",(0,r.jsx)(n.code,{children:"WFS-xxx"})," ID"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Files"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"workflow-session.json"})," - Session metadata"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"IMPL_PLAN.md"})," - Implementation plan (optional)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:".task/IMPL-*.json"})," - Task definitions"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Extraction"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:"// From workflow-session.json\r\n{\r\n title: session.name,\r\n description: session.description,\r\n session_id: session.id\r\n}\r\n\r\n// From IMPL_PLAN.md\r\napproach: Extract overview section\r\n\r\n// From .task/IMPL-*.json\r\ntasks: Map IMPL-001 \u2192 T1, IMPL-002 \u2192 T2...\n"})}),"\n",(0,r.jsx)(n.h3,{id:"3-markdown-file",children:"3. Markdown File"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["Any ",(0,r.jsx)(n.code,{children:".md"})," file with implementation/task content"]})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"AI Extraction"})," (via Gemini CLI):"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'// Prompt Gemini to extract structure\r\n{\r\n title: "Extracted from document",\r\n approach: "Technical strategy section",\r\n tasks: [\r\n {\r\n id: "T1",\r\n title: "Parsed from headers/lists",\r\n scope: "inferred from content",\r\n action: "detected from verbs",\r\n implementation: ["step 1", "step 2"],\r\n acceptance: ["criteria 1", "criteria 2"]\r\n }\r\n ]\r\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"4-json-file",children:"4. JSON File"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Direct JSON matching plan-json-schema"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:"interface JSONPlan {\r\n summary?: string;\r\n title?: string;\r\n description?: string;\r\n approach?: string;\r\n complexity?: 'low' | 'medium' | 'high';\r\n tasks: JSONTask[];\r\n _metadata?: object;\r\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"task-normalization",children:"Task Normalization"}),"\n",(0,r.jsx)(n.h3,{id:"id-normalization",children:"ID Normalization"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'// Various input formats \u2192 T1, T2, T3...\r\n"IMPL-001" \u2192 "T1"\r\n"IMPL-01" \u2192 "T1"\r\n"task-1" \u2192 "T1"\r\n"1" \u2192 "T1"\r\n"T-1" \u2192 "T1"\n'})}),"\n",(0,r.jsx)(n.h3,{id:"depends-on-normalization",children:"Depends-On Normalization"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'// Normalize all references to T-format\r\ndepends_on: ["IMPL-001", "task-2"]\r\n// \u2192 ["T1", "T2"]\n'})}),"\n",(0,r.jsx)(n.h3,{id:"action-validation",children:"Action Validation"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:"// Valid actions (case-insensitive, auto-capitalized)\r\n['Create', 'Update', 'Implement', 'Refactor',\r\n 'Add', 'Delete', 'Configure', 'Test', 'Fix']\r\n\r\n// Invalid actions \u2192 Default to 'Implement'\r\n'build' \u2192 'Implement'\r\n'write' \u2192 'Create'\n"})}),"\n",(0,r.jsx)(n.h2,{id:"solution-schema",children:"Solution Schema"}),"\n",(0,r.jsx)(n.p,{children:"Target format for all extracted data:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:"interface Solution {\r\n id: string; // SOL-{issue-id}-{4-char-uid}\r\n description?: string; // High-level summary\r\n approach?: string; // Technical strategy\r\n tasks: Task[]; // Required: at least 1 task\r\n exploration_context?: object; // Optional: source context\r\n analysis?: {\r\n risk: 'low' | 'medium' | 'high';\r\n impact: 'low' | 'medium' | 'high';\r\n complexity: 'low' | 'medium' | 'high';\r\n };\r\n score?: number; // 0.0-1.0\r\n is_bound: boolean;\r\n created_at: string;\r\n bound_at?: string;\r\n _conversion_metadata?: {\r\n source_type: string;\r\n source_path: string;\r\n converted_at: string;\r\n };\r\n}\r\n\r\ninterface Task {\r\n id: string; // T1, T2, T3...\r\n title: string; // Required: action verb + target\r\n scope: string; // Required: module path or feature area\r\n action: Action; // Required: Create|Update|Implement...\r\n description?: string;\r\n modification_points?: Array<{file, target, change}>;\r\n implementation: string[]; // Required: step-by-step guide\r\n test?: {\r\n unit?: string[];\r\n integration?: string[];\r\n commands?: string[];\r\n coverage_target?: string;\r\n };\r\n acceptance: {\r\n criteria: string[];\r\n verification: string[];\r\n };\r\n commit?: {\r\n type: string;\r\n scope: string;\r\n message_template: string;\r\n breaking?: boolean;\r\n };\r\n depends_on?: string[];\r\n priority?: number; // 1-5 (default: 3)\r\n}\r\n\r\ntype Action = 'Create' | 'Update' | 'Implement' | 'Refactor' |\r\n 'Add' | 'Delete' | 'Configure' | 'Test' | 'Fix';\n"})}),"\n",(0,r.jsx)(n.h2,{id:"priority-auto-detection",children:"Priority Auto-Detection"}),"\n",(0,r.jsx)(n.p,{children:"For new issues created from plans:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:"const complexityMap = {\r\n high: 2, // High complexity \u2192 priority 2 (high)\r\n medium: 3, // Medium complexity \u2192 priority 3 (medium)\r\n low: 4 // Low complexity \u2192 priority 4 (low)\r\n};\r\n\r\n// If no complexity specified, default to 3\r\nconst priority = complexityMap[plan.complexity?.toLowerCase()] || 3;\n"})}),"\n",(0,r.jsx)(n.h2,{id:"error-handling",children:"Error Handling"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Error Code"}),(0,r.jsx)(n.th,{children:"Message"}),(0,r.jsx)(n.th,{children:"Resolution"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E001"})}),(0,r.jsx)(n.td,{children:"Source not found: {path}"}),(0,r.jsx)(n.td,{children:"Check path exists and is accessible"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E002"})}),(0,r.jsx)(n.td,{children:"Unable to detect source format"}),(0,r.jsx)(n.td,{children:"Verify file contains valid plan structure"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E003"})}),(0,r.jsx)(n.td,{children:"Issue not found: {id}"}),(0,r.jsx)(n.td,{children:"Check issue ID or omit --issue to create new"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E004"})}),(0,r.jsx)(n.td,{children:"Issue already has bound solution"}),(0,r.jsx)(n.td,{children:"Use --supplement to add tasks"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E005"})}),(0,r.jsx)(n.td,{children:"Failed to extract tasks from markdown"}),(0,r.jsx)(n.td,{children:"Check markdown structure, try simpler format"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"E006"})}),(0,r.jsx)(n.td,{children:"No tasks extracted from source"}),(0,r.jsx)(n.td,{children:"Source must contain at least 1 task"})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"cli-endpoints",children:"CLI Endpoints"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Create new issue\r\nccw issue create << \'EOF\'\r\n{"title":"...","context":"...","priority":3,"source":"converted"}\r\nEOF\r\n\r\n# Check issue exists\r\nccw issue status <id> --json\r\n\r\n# Get existing solution\r\nccw issue solution <solution-id> --json\r\n\r\n# Bind solution to issue\r\nccw issue bind <issue-id> <solution-id>\r\n\r\n# Update issue status\r\nccw issue update <issue-id> --status planned\n'})}),"\n",(0,r.jsx)(n.h2,{id:"related-commands",children:"Related Commands"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"/docs/docs/commands/issue/issue-plan",children:["issue",":plan"]})})," - Generate solutions from issue exploration"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"/docs/docs/commands/issue/issue-new",children:["issue",":new"]})})," - Create issues from GitHub or text"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"/docs/docs/commands/issue/issue-queue",children:["issue",":queue"]})})," - Form execution queue from converted plans"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"/docs/docs/commands/issue/issue-execute",children:["issue",":execute"]})})," - Execute converted solutions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"#",children:["workflow",":lite-lite-lite"]})})," - Generate lite-plan artifacts"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsxs)(n.a,{href:"#",children:["workflow",":execute"]})})," - Generate workflow sessions"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"best-practices",children:"Best Practices"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Verify source format"}),": Ensure plan has valid structure before conversion"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Check for existing solutions"}),": Use --supplement to add tasks, not replace"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Review extracted tasks"}),": Verify AI extraction accuracy for markdown"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Normalize manually"}),": Edit task IDs and dependencies if needed"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Test in supplement mode"}),": Add tasks to existing solution before creating new issue"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Keep source artifacts"}),": Don't delete original plan files after conversion"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}}}]); |