claude-code-workflow 6.3.27 → 6.3.28

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.
Files changed (121) hide show
  1. package/.claude/CLAUDE.md +7 -1
  2. package/.claude/agents/action-planning-agent.md +1 -0
  3. package/.claude/agents/cli-discuss-agent.md +391 -0
  4. package/.claude/agents/cli-execution-agent.md +2 -0
  5. package/.claude/agents/cli-explore-agent.md +2 -1
  6. package/.claude/agents/cli-lite-planning-agent.md +1 -0
  7. package/.claude/agents/cli-planning-agent.md +1 -0
  8. package/.claude/agents/code-developer.md +1 -0
  9. package/.claude/agents/conceptual-planning-agent.md +2 -0
  10. package/.claude/agents/context-search-agent.md +1 -0
  11. package/.claude/agents/debug-explore-agent.md +2 -0
  12. package/.claude/agents/doc-generator.md +1 -0
  13. package/.claude/agents/issue-plan-agent.md +2 -1
  14. package/.claude/agents/issue-queue-agent.md +2 -1
  15. package/.claude/agents/memory-bridge.md +2 -0
  16. package/.claude/agents/test-context-search-agent.md +2 -0
  17. package/.claude/agents/test-fix-agent.md +1 -0
  18. package/.claude/agents/ui-design-agent.md +2 -0
  19. package/.claude/agents/universal-executor.md +1 -0
  20. package/.claude/commands/issue/execute.md +141 -163
  21. package/.claude/commands/workflow/lite-lite-lite.md +798 -0
  22. package/.claude/commands/workflow/multi-cli-plan.md +510 -0
  23. package/.claude/skills/ccw/SKILL.md +262 -372
  24. package/.claude/skills/ccw/command.json +547 -0
  25. package/.claude/skills/ccw-help/SKILL.md +46 -107
  26. package/.claude/skills/ccw-help/command.json +511 -0
  27. package/.claude/skills/skill-tuning/SKILL.md +303 -0
  28. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -0
  29. package/.claude/skills/skill-tuning/phases/actions/action-analyze-requirements.md +406 -0
  30. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -0
  31. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -0
  32. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -0
  33. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -0
  34. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -0
  35. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-docs.md +299 -0
  36. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -0
  37. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -0
  38. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -0
  39. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -0
  40. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -0
  41. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -0
  42. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -0
  43. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -0
  44. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -0
  45. package/.claude/skills/skill-tuning/specs/category-mappings.json +284 -0
  46. package/.claude/skills/skill-tuning/specs/dimension-mapping.md +212 -0
  47. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -0
  48. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -0
  49. package/.claude/skills/skill-tuning/specs/skill-authoring-principles.md +189 -0
  50. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -0
  51. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -0
  52. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -0
  53. package/.claude/workflows/cli-templates/schemas/multi-cli-discussion-schema.json +421 -0
  54. package/.claude/workflows/cli-tools-usage.md +0 -41
  55. package/ccw/dist/core/data-aggregator.d.ts +2 -0
  56. package/ccw/dist/core/data-aggregator.d.ts.map +1 -1
  57. package/ccw/dist/core/data-aggregator.js +5 -2
  58. package/ccw/dist/core/data-aggregator.js.map +1 -1
  59. package/ccw/dist/core/lite-scanner.d.ts +2 -1
  60. package/ccw/dist/core/lite-scanner.d.ts.map +1 -1
  61. package/ccw/dist/core/lite-scanner.js +295 -6
  62. package/ccw/dist/core/lite-scanner.js.map +1 -1
  63. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  64. package/ccw/dist/core/routes/session-routes.js +166 -48
  65. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  66. package/ccw/dist/core/routes/system-routes.d.ts.map +1 -1
  67. package/ccw/dist/core/routes/system-routes.js +87 -0
  68. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  69. package/ccw/dist/core/server.js +2 -2
  70. package/ccw/dist/core/server.js.map +1 -1
  71. package/ccw/scripts/IMPLEMENTATION-SUMMARY.md +226 -0
  72. package/ccw/scripts/QUICK-REFERENCE.md +135 -0
  73. package/ccw/scripts/README-memory-embedder.md +157 -0
  74. package/ccw/scripts/__pycache__/memory_embedder.cpython-313.pyc +0 -0
  75. package/ccw/scripts/__pycache__/test_memory_embedder.cpython-313-pytest-8.4.2.pyc +0 -0
  76. package/ccw/scripts/memory-embedder-example.ts +184 -0
  77. package/ccw/scripts/memory_embedder.py +428 -0
  78. package/ccw/scripts/test_memory_embedder.py +245 -0
  79. package/ccw/src/core/data-aggregator.ts +7 -2
  80. package/ccw/src/core/lite-scanner.ts +440 -6
  81. package/ccw/src/core/routes/session-routes.ts +201 -48
  82. package/ccw/src/core/routes/system-routes.ts +102 -0
  83. package/ccw/src/core/server.ts +2 -2
  84. package/ccw/src/templates/dashboard-css/01-base.css +8 -0
  85. package/ccw/src/templates/dashboard-css/02-session.css +81 -0
  86. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +2442 -0
  87. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +157 -0
  88. package/ccw/src/templates/dashboard-css/32-issue-manager.css +23 -0
  89. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +38 -4
  90. package/ccw/src/templates/dashboard-js/components/hook-manager.js +38 -13
  91. package/ccw/src/templates/dashboard-js/components/navigation.js +24 -4
  92. package/ccw/src/templates/dashboard-js/i18n.js +178 -4
  93. package/ccw/src/templates/dashboard-js/views/api-settings.js +32 -0
  94. package/ccw/src/templates/dashboard-js/views/claude-manager.js +44 -3
  95. package/ccw/src/templates/dashboard-js/views/cli-manager.js +303 -31
  96. package/ccw/src/templates/dashboard-js/views/history.js +44 -6
  97. package/ccw/src/templates/dashboard-js/views/home.js +1 -0
  98. package/ccw/src/templates/dashboard-js/views/issue-manager.js +54 -7
  99. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +1817 -4
  100. package/ccw/src/templates/dashboard.html +5 -0
  101. package/package.json +2 -1
  102. package/.claude/skills/ccw/index/command-capabilities.json +0 -127
  103. package/.claude/skills/ccw/index/intent-rules.json +0 -136
  104. package/.claude/skills/ccw/index/workflow-chains.json +0 -451
  105. package/.claude/skills/ccw/phases/actions/bugfix.md +0 -218
  106. package/.claude/skills/ccw/phases/actions/coupled.md +0 -194
  107. package/.claude/skills/ccw/phases/actions/docs.md +0 -93
  108. package/.claude/skills/ccw/phases/actions/full.md +0 -154
  109. package/.claude/skills/ccw/phases/actions/issue.md +0 -201
  110. package/.claude/skills/ccw/phases/actions/rapid.md +0 -104
  111. package/.claude/skills/ccw/phases/actions/review-fix.md +0 -84
  112. package/.claude/skills/ccw/phases/actions/tdd.md +0 -66
  113. package/.claude/skills/ccw/phases/actions/ui.md +0 -79
  114. package/.claude/skills/ccw/phases/orchestrator.md +0 -435
  115. package/.claude/skills/ccw/specs/intent-classification.md +0 -336
  116. package/.claude/skills/ccw-help/index/all-agents.json +0 -82
  117. package/.claude/skills/ccw-help/index/all-commands.json +0 -882
  118. package/.claude/skills/ccw-help/index/by-category.json +0 -914
  119. package/.claude/skills/ccw-help/index/by-use-case.json +0 -896
  120. package/.claude/skills/ccw-help/index/command-relationships.json +0 -160
  121. package/.claude/skills/ccw-help/index/essential-commands.json +0 -112
@@ -6,6 +6,7 @@
6
6
  // ========== Issue State ==========
7
7
  var issueData = {
8
8
  issues: [],
9
+ historyIssues: [], // Archived/completed issues from history
9
10
  queue: { tasks: [], solutions: [], conflicts: [], execution_groups: [], grouped_items: {} },
10
11
  selectedIssue: null,
11
12
  selectedSolution: null,
@@ -58,6 +59,18 @@ async function loadIssueData() {
58
59
  }
59
60
  }
60
61
 
62
+ async function loadIssueHistory() {
63
+ try {
64
+ const response = await fetch('/api/issues/history?path=' + encodeURIComponent(projectPath));
65
+ if (!response.ok) throw new Error('Failed to load issue history');
66
+ const data = await response.json();
67
+ issueData.historyIssues = data.issues || [];
68
+ } catch (err) {
69
+ console.error('Failed to load issue history:', err);
70
+ issueData.historyIssues = [];
71
+ }
72
+ }
73
+
61
74
  async function loadQueueData() {
62
75
  try {
63
76
  const response = await fetch('/api/queue?path=' + encodeURIComponent(projectPath));
@@ -93,10 +106,21 @@ function renderIssueView() {
93
106
  if (!container) return;
94
107
 
95
108
  const issues = issueData.issues || [];
109
+ const historyIssues = issueData.historyIssues || [];
110
+
96
111
  // Apply both status and search filters
97
- let filteredIssues = issueData.statusFilter === 'all'
98
- ? issues
99
- : issues.filter(i => i.status === issueData.statusFilter);
112
+ let filteredIssues;
113
+ if (issueData.statusFilter === 'all') {
114
+ filteredIssues = issues;
115
+ } else if (issueData.statusFilter === 'completed') {
116
+ // For 'completed' filter, include both current completed issues and archived history issues
117
+ const currentCompleted = issues.filter(i => i.status === 'completed');
118
+ // Mark history issues as archived for visual distinction
119
+ const archivedIssues = historyIssues.map(i => ({ ...i, _isArchived: true }));
120
+ filteredIssues = [...currentCompleted, ...archivedIssues];
121
+ } else {
122
+ filteredIssues = issues.filter(i => i.status === issueData.statusFilter);
123
+ }
100
124
 
101
125
  if (issueData.searchQuery) {
102
126
  const query = issueData.searchQuery.toLowerCase();
@@ -309,12 +333,15 @@ function renderIssueCard(issue) {
309
333
  failed: 'failed'
310
334
  };
311
335
 
336
+ const isArchived = issue._isArchived;
337
+
312
338
  return `
313
- <div class="issue-card" onclick="openIssueDetail('${issue.id}')">
339
+ <div class="issue-card ${isArchived ? 'archived' : ''}" onclick="openIssueDetail('${issue.id}'${isArchived ? ', true' : ''})">
314
340
  <div class="flex items-start justify-between mb-3">
315
341
  <div class="flex items-center gap-2">
316
342
  <span class="issue-id font-mono text-sm">${issue.id}</span>
317
343
  <span class="issue-status ${statusColors[issue.status] || ''}">${issue.status || 'unknown'}</span>
344
+ ${isArchived ? '<span class="issue-archived-badge">' + (t('issues.archived') || 'Archived') + '</span>' : ''}
318
345
  </div>
319
346
  <span class="issue-priority" title="${t('issues.priority') || 'Priority'}: ${issue.priority || 3}">
320
347
  ${renderPriorityStars(issue.priority || 3)}
@@ -360,8 +387,12 @@ function renderPriorityStars(priority) {
360
387
  return stars;
361
388
  }
362
389
 
363
- function filterIssuesByStatus(status) {
390
+ async function filterIssuesByStatus(status) {
364
391
  issueData.statusFilter = status;
392
+ // Load history data when filtering by 'completed' status
393
+ if (status === 'completed' && issueData.historyIssues.length === 0) {
394
+ await loadIssueHistory();
395
+ }
365
396
  renderIssueView();
366
397
  }
367
398
 
@@ -725,7 +756,7 @@ async function saveQueueOrder(groupId, newOrder) {
725
756
  }
726
757
 
727
758
  // ========== Detail Panel ==========
728
- async function openIssueDetail(issueId) {
759
+ async function openIssueDetail(issueId, isArchived = false) {
729
760
  const panel = document.getElementById('issueDetailPanel');
730
761
  if (!panel) return;
731
762
 
@@ -733,7 +764,23 @@ async function openIssueDetail(issueId) {
733
764
  panel.classList.remove('hidden');
734
765
  lucide.createIcons();
735
766
 
736
- const detail = await loadIssueDetail(issueId);
767
+ let detail;
768
+ if (isArchived) {
769
+ // For archived issues, get detail from historyIssues (already loaded)
770
+ const historyIssue = issueData.historyIssues.find(i => i.id === issueId);
771
+ if (historyIssue) {
772
+ // Mark as archived and provide minimal detail structure
773
+ detail = {
774
+ ...historyIssue,
775
+ _isArchived: true,
776
+ solutions: historyIssue.solutions || [],
777
+ tasks: historyIssue.tasks || []
778
+ };
779
+ }
780
+ } else {
781
+ detail = await loadIssueDetail(issueId);
782
+ }
783
+
737
784
  if (!detail) {
738
785
  panel.innerHTML = '<div class="p-8 text-center text-destructive">Failed to load issue</div>';
739
786
  return;