cokit-cli 1.2.0 → 1.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.
Files changed (243) hide show
  1. package/README.md +47 -36
  2. package/agents/brainstormer.agent.md +1 -1
  3. package/agents/debugger.agent.md +1 -1
  4. package/agents/docs-manager.agent.md +2 -2
  5. package/agents/git-manager.agent.md +5 -5
  6. package/agents/planner.agent.md +3 -3
  7. package/agents/researcher.agent.md +0 -1
  8. package/agents/scout.agent.md +9 -9
  9. package/agents/ui-ux-designer.agent.md +0 -1
  10. package/collections/ck-orchestration.collection.yml +2 -2
  11. package/docs/README.md +8 -8
  12. package/docs/codebase-summary.md +19 -19
  13. package/docs/cokit-commands-usage-guide.md +42 -43
  14. package/docs/cokit-comprehensive-mapping-guide.md +15 -15
  15. package/docs/cokit-slides.md +6 -6
  16. package/docs/cokit-sync-and-maintenance-guide.md +45 -45
  17. package/docs/cokit-team-presentation.md +11 -11
  18. package/docs/copilot-processing-flow.md +11 -11
  19. package/docs/guide-next-steps-speckit-cokit-implementation.md +1 -1
  20. package/docs/migration-guide.md +9 -9
  21. package/docs/project-overview-pdr.md +3 -3
  22. package/docs/project-roadmap.md +7 -7
  23. package/docs/system-architecture.md +6 -6
  24. package/package.json +1 -1
  25. package/prompts/ck-ask.prompt.md +3 -2
  26. package/prompts/ck-bootstrap.prompt.md +26 -32
  27. package/prompts/ck-brainstorm.prompt.md +4 -3
  28. package/prompts/ck-cook.prompt.md +5 -4
  29. package/prompts/ck-debug.prompt.md +4 -3
  30. package/prompts/ck-docs.prompt.md +4 -3
  31. package/prompts/ck-fix-ci.prompt.md +46 -0
  32. package/prompts/ck-fix-fast.prompt.md +44 -0
  33. package/prompts/ck-fix-hard.prompt.md +60 -0
  34. package/prompts/ck-fix-logs.prompt.md +53 -0
  35. package/prompts/ck-fix-test.prompt.md +47 -0
  36. package/prompts/ck-fix-types.prompt.md +29 -0
  37. package/prompts/ck-fix-ui.prompt.md +50 -0
  38. package/prompts/ck-fix.prompt.md +13 -15
  39. package/prompts/ck-git.prompt.md +2 -2
  40. package/prompts/ck-help.prompt.md +8 -6
  41. package/prompts/ck-journal.prompt.md +5 -3
  42. package/prompts/ck-plan-fast.prompt.md +26 -5
  43. package/prompts/ck-plan-hard.prompt.md +30 -9
  44. package/prompts/ck-plan-validate.prompt.md +209 -0
  45. package/prompts/ck-plan.prompt.md +49 -12
  46. package/prompts/ck-preview.prompt.md +16 -32
  47. package/prompts/ck-review.prompt.md +10 -11
  48. package/prompts/ck-scout.prompt.md +5 -4
  49. package/prompts/ck-simplify.prompt.md +3 -3
  50. package/prompts/ck-spec-analyze.prompt.md +9 -11
  51. package/prompts/ck-spec-checklist.prompt.md +7 -9
  52. package/prompts/ck-spec-clarify.prompt.md +8 -15
  53. package/prompts/ck-spec-constitution.prompt.md +6 -11
  54. package/prompts/ck-spec-implement.prompt.md +7 -10
  55. package/prompts/ck-spec-plan.prompt.md +5 -18
  56. package/prompts/ck-spec-specify.prompt.md +7 -17
  57. package/prompts/ck-spec-tasks.prompt.md +4 -16
  58. package/prompts/ck-test.prompt.md +5 -3
  59. package/prompts/ck-watzup.prompt.md +4 -2
  60. package/skills/INSTALLATION.md +3 -3
  61. package/skills/README.md +12 -34
  62. package/skills/agent-browser/SKILL.md +0 -1
  63. package/skills/agent_skills_spec.md +2 -2
  64. package/skills/backend-development/SKILL.md +0 -2
  65. package/skills/brainstorm/SKILL.md +7 -9
  66. package/skills/code-review/SKILL.md +9 -9
  67. package/skills/code-review/references/code-review-reception.md +1 -1
  68. package/skills/code-review/references/requesting-code-review.md +7 -7
  69. package/skills/common/api_key_helper.py +8 -8
  70. package/skills/context-engineering/SKILL.md +3 -4
  71. package/skills/context-engineering/references/context-degradation.md +2 -2
  72. package/skills/context-engineering/references/runtime-awareness.md +6 -6
  73. package/skills/cook/README.md +2 -2
  74. package/skills/cook/SKILL.md +3 -4
  75. package/skills/cook/references/agent-patterns.md +75 -0
  76. package/skills/cook/references/review-cycle.md +2 -2
  77. package/skills/cook/references/workflow-steps.md +6 -6
  78. package/skills/databases/SKILL.md +0 -1
  79. package/skills/databases/scripts/db_migrate.py +2 -2
  80. package/skills/databases/scripts/db_performance_check.py +2 -2
  81. package/skills/debug/SKILL.md +0 -1
  82. package/skills/devops/SKILL.md +0 -2
  83. package/skills/devops/scripts/docker_optimize.py +2 -2
  84. package/skills/docs-seeker/SKILL.md +0 -1
  85. package/skills/docs-seeker/package.json +1 -1
  86. package/skills/docs-seeker/scripts/utils/env-loader.js +2 -2
  87. package/skills/fix/SKILL.md +10 -11
  88. package/skills/fix/references/mode-selection.md +11 -27
  89. package/skills/fix/references/parallel-exploration.md +9 -9
  90. package/skills/fix/references/review-cycle.md +3 -3
  91. package/skills/fix/references/skill-activation-matrix.md +3 -3
  92. package/skills/fix/references/workflow-deep.md +11 -11
  93. package/skills/fix/references/workflow-quick.md +5 -5
  94. package/skills/fix/references/workflow-standard.md +12 -12
  95. package/skills/frontend-design/SKILL.md +2 -3
  96. package/skills/frontend-design/references/workflow-describe.md +1 -1
  97. package/skills/frontend-design/references/workflow-quick.md +1 -1
  98. package/skills/frontend-design/references/workflow-screenshot.md +1 -1
  99. package/skills/git/SKILL.md +2 -3
  100. package/skills/git/references/commit-standards.md +2 -2
  101. package/skills/git/references/workflow-commit.md +1 -1
  102. package/skills/git/references/workflow-merge.md +1 -1
  103. package/skills/git/references/workflow-pr.md +1 -1
  104. package/skills/git/references/workflow-push.md +1 -1
  105. package/skills/install.ps1 +5 -5
  106. package/skills/install.sh +2 -2
  107. package/skills/mcp-management/README.md +8 -8
  108. package/skills/mcp-management/SKILL.md +9 -9
  109. package/skills/mcp-management/references/gemini-cli-integration.md +2 -2
  110. package/skills/mcp-management/scripts/.env.example +2 -2
  111. package/skills/planning/SKILL.md +4 -5
  112. package/skills/planning/references/output-standards.md +1 -1
  113. package/skills/planning/references/plan-organization.md +1 -1
  114. package/skills/problem-solving/SKILL.md +1 -2
  115. package/skills/repomix/SKILL.md +2 -2
  116. package/skills/repomix/references/usage-patterns.md +2 -2
  117. package/skills/research/SKILL.md +0 -1
  118. package/skills/scout/SKILL.md +9 -10
  119. package/skills/scout/references/external-scouting.md +10 -10
  120. package/skills/scout/references/internal-scouting.md +9 -9
  121. package/skills/sequential-thinking/README.md +3 -3
  122. package/skills/sequential-thinking/SKILL.md +0 -2
  123. package/skills/sequential-thinking/package.json +1 -1
  124. package/skills/ui-styling/SKILL.md +0 -2
  125. package/skills/web-testing/SKILL.md +0 -2
  126. package/templates/repo/.github/agents/brainstormer.agent.md +1 -1
  127. package/templates/repo/.github/agents/debugger.agent.md +1 -1
  128. package/templates/repo/.github/agents/docs-manager.agent.md +2 -2
  129. package/templates/repo/.github/agents/git-manager.agent.md +5 -5
  130. package/templates/repo/.github/agents/planner.agent.md +3 -3
  131. package/templates/repo/.github/agents/researcher.agent.md +0 -1
  132. package/templates/repo/.github/agents/scout.agent.md +9 -9
  133. package/templates/repo/.github/agents/ui-ux-designer.agent.md +0 -1
  134. package/templates/repo/.github/collections/ck-orchestration.collection.yml +2 -2
  135. package/templates/repo/.github/prompts/ck-ask.prompt.md +3 -2
  136. package/templates/repo/.github/prompts/ck-bootstrap.prompt.md +26 -32
  137. package/templates/repo/.github/prompts/ck-brainstorm.prompt.md +4 -3
  138. package/templates/repo/.github/prompts/ck-cook.prompt.md +5 -4
  139. package/templates/repo/.github/prompts/ck-debug.prompt.md +4 -3
  140. package/templates/repo/.github/prompts/ck-docs.prompt.md +4 -3
  141. package/templates/repo/.github/prompts/ck-fix-ci.prompt.md +46 -0
  142. package/templates/repo/.github/prompts/ck-fix-fast.prompt.md +44 -0
  143. package/templates/repo/.github/prompts/ck-fix-hard.prompt.md +60 -0
  144. package/templates/repo/.github/prompts/ck-fix-logs.prompt.md +53 -0
  145. package/templates/repo/.github/prompts/ck-fix-test.prompt.md +47 -0
  146. package/templates/repo/.github/prompts/ck-fix-types.prompt.md +29 -0
  147. package/templates/repo/.github/prompts/ck-fix-ui.prompt.md +50 -0
  148. package/templates/repo/.github/prompts/ck-fix.prompt.md +13 -15
  149. package/templates/repo/.github/prompts/ck-git.prompt.md +2 -2
  150. package/templates/repo/.github/prompts/ck-help.prompt.md +8 -6
  151. package/templates/repo/.github/prompts/ck-journal.prompt.md +5 -3
  152. package/templates/repo/.github/prompts/ck-plan-fast.prompt.md +26 -5
  153. package/templates/repo/.github/prompts/ck-plan-hard.prompt.md +30 -9
  154. package/templates/repo/.github/prompts/ck-plan-validate.prompt.md +209 -0
  155. package/templates/repo/.github/prompts/ck-plan.prompt.md +49 -12
  156. package/templates/repo/.github/prompts/ck-preview.prompt.md +16 -32
  157. package/templates/repo/.github/prompts/ck-review.prompt.md +10 -11
  158. package/templates/repo/.github/prompts/ck-scout.prompt.md +5 -4
  159. package/templates/repo/.github/prompts/ck-simplify.prompt.md +3 -3
  160. package/templates/repo/.github/prompts/ck-spec-analyze.prompt.md +9 -11
  161. package/templates/repo/.github/prompts/ck-spec-checklist.prompt.md +7 -9
  162. package/templates/repo/.github/prompts/ck-spec-clarify.prompt.md +8 -15
  163. package/templates/repo/.github/prompts/ck-spec-constitution.prompt.md +6 -11
  164. package/templates/repo/.github/prompts/ck-spec-implement.prompt.md +7 -10
  165. package/templates/repo/.github/prompts/ck-spec-plan.prompt.md +5 -18
  166. package/templates/repo/.github/prompts/ck-spec-specify.prompt.md +7 -17
  167. package/templates/repo/.github/prompts/ck-spec-tasks.prompt.md +4 -16
  168. package/templates/repo/.github/prompts/ck-test.prompt.md +5 -3
  169. package/templates/repo/.github/prompts/ck-watzup.prompt.md +4 -2
  170. package/templates/repo/.github/skills/INSTALLATION.md +3 -3
  171. package/templates/repo/.github/skills/README.md +12 -34
  172. package/templates/repo/.github/skills/agent-browser/SKILL.md +0 -1
  173. package/templates/repo/.github/skills/agent_skills_spec.md +2 -2
  174. package/templates/repo/.github/skills/backend-development/SKILL.md +0 -2
  175. package/templates/repo/.github/skills/brainstorm/SKILL.md +7 -9
  176. package/templates/repo/.github/skills/code-review/SKILL.md +9 -9
  177. package/templates/repo/.github/skills/code-review/references/code-review-reception.md +1 -1
  178. package/templates/repo/.github/skills/code-review/references/requesting-code-review.md +7 -7
  179. package/templates/repo/.github/skills/common/api_key_helper.py +8 -8
  180. package/templates/repo/.github/skills/context-engineering/SKILL.md +3 -4
  181. package/templates/repo/.github/skills/context-engineering/references/context-degradation.md +2 -2
  182. package/templates/repo/.github/skills/context-engineering/references/runtime-awareness.md +6 -6
  183. package/templates/repo/.github/skills/cook/README.md +2 -2
  184. package/templates/repo/.github/skills/cook/SKILL.md +3 -4
  185. package/templates/repo/.github/skills/cook/references/agent-patterns.md +75 -0
  186. package/templates/repo/.github/skills/cook/references/review-cycle.md +2 -2
  187. package/templates/repo/.github/skills/cook/references/workflow-steps.md +6 -6
  188. package/templates/repo/.github/skills/databases/SKILL.md +0 -1
  189. package/templates/repo/.github/skills/databases/scripts/db_migrate.py +2 -2
  190. package/templates/repo/.github/skills/databases/scripts/db_performance_check.py +2 -2
  191. package/templates/repo/.github/skills/debug/SKILL.md +0 -1
  192. package/templates/repo/.github/skills/devops/SKILL.md +0 -2
  193. package/templates/repo/.github/skills/devops/scripts/docker_optimize.py +2 -2
  194. package/templates/repo/.github/skills/docs-seeker/SKILL.md +0 -1
  195. package/templates/repo/.github/skills/docs-seeker/package.json +1 -1
  196. package/templates/repo/.github/skills/docs-seeker/scripts/utils/env-loader.js +2 -2
  197. package/templates/repo/.github/skills/fix/SKILL.md +10 -11
  198. package/templates/repo/.github/skills/fix/references/mode-selection.md +11 -27
  199. package/templates/repo/.github/skills/fix/references/parallel-exploration.md +9 -9
  200. package/templates/repo/.github/skills/fix/references/review-cycle.md +3 -3
  201. package/templates/repo/.github/skills/fix/references/skill-activation-matrix.md +3 -3
  202. package/templates/repo/.github/skills/fix/references/workflow-deep.md +11 -11
  203. package/templates/repo/.github/skills/fix/references/workflow-quick.md +5 -5
  204. package/templates/repo/.github/skills/fix/references/workflow-standard.md +12 -12
  205. package/templates/repo/.github/skills/frontend-design/SKILL.md +2 -3
  206. package/templates/repo/.github/skills/frontend-design/references/workflow-describe.md +1 -1
  207. package/templates/repo/.github/skills/frontend-design/references/workflow-quick.md +1 -1
  208. package/templates/repo/.github/skills/frontend-design/references/workflow-screenshot.md +1 -1
  209. package/templates/repo/.github/skills/git/SKILL.md +2 -3
  210. package/templates/repo/.github/skills/git/references/commit-standards.md +2 -2
  211. package/templates/repo/.github/skills/git/references/workflow-commit.md +1 -1
  212. package/templates/repo/.github/skills/git/references/workflow-merge.md +1 -1
  213. package/templates/repo/.github/skills/git/references/workflow-pr.md +1 -1
  214. package/templates/repo/.github/skills/git/references/workflow-push.md +1 -1
  215. package/templates/repo/.github/skills/install.ps1 +5 -5
  216. package/templates/repo/.github/skills/install.sh +2 -2
  217. package/templates/repo/.github/skills/mcp-management/README.md +8 -8
  218. package/templates/repo/.github/skills/mcp-management/SKILL.md +9 -9
  219. package/templates/repo/.github/skills/mcp-management/references/gemini-cli-integration.md +2 -2
  220. package/templates/repo/.github/skills/mcp-management/scripts/.env.example +2 -2
  221. package/templates/repo/.github/skills/planning/SKILL.md +4 -5
  222. package/templates/repo/.github/skills/planning/references/output-standards.md +1 -1
  223. package/templates/repo/.github/skills/planning/references/plan-organization.md +1 -1
  224. package/templates/repo/.github/skills/problem-solving/SKILL.md +1 -2
  225. package/templates/repo/.github/skills/repomix/SKILL.md +2 -2
  226. package/templates/repo/.github/skills/repomix/references/usage-patterns.md +2 -2
  227. package/templates/repo/.github/skills/research/SKILL.md +0 -1
  228. package/templates/repo/.github/skills/scout/SKILL.md +9 -10
  229. package/templates/repo/.github/skills/scout/references/external-scouting.md +10 -10
  230. package/templates/repo/.github/skills/scout/references/internal-scouting.md +9 -9
  231. package/templates/repo/.github/skills/sequential-thinking/README.md +3 -3
  232. package/templates/repo/.github/skills/sequential-thinking/SKILL.md +0 -2
  233. package/templates/repo/.github/skills/sequential-thinking/package.json +1 -1
  234. package/templates/repo/.github/skills/ui-styling/SKILL.md +0 -2
  235. package/templates/repo/.github/skills/web-testing/SKILL.md +0 -2
  236. package/docs/cokit-instruction-guide.html +0 -3004
  237. package/docs/images/cokit-command-finder-final.png +0 -0
  238. package/docs/images/cokit-highlight-fix.png +0 -0
  239. package/docs/images/cokit-highlight-test.png +0 -0
  240. package/prompts/ck-spec-taskstoissues.prompt.md +0 -48
  241. package/skills/cook/references/subagent-patterns.md +0 -75
  242. package/templates/repo/.github/prompts/ck-spec-taskstoissues.prompt.md +0 -48
  243. package/templates/repo/.github/skills/cook/references/subagent-patterns.md +0 -75
@@ -1,3004 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>CoKit - Complete Guide</title>
7
- <style>
8
- :root {
9
- --bg: #0f172a;
10
- --bg-surface: #1e293b;
11
- --bg-card: #1a2332;
12
- --bg-hover: #334155;
13
- --text: #e2e8f0;
14
- --text-muted: #94a3b8;
15
- --text-dim: #64748b;
16
- --accent: #38bdf8;
17
- --accent2: #818cf8;
18
- --green: #34d399;
19
- --orange: #fb923c;
20
- --pink: #f472b6;
21
- --red: #f87171;
22
- --yellow: #fbbf24;
23
- --border: #334155;
24
- --border-light: #475569;
25
- --gradient-1: linear-gradient(135deg, #38bdf8 0%, #818cf8 100%);
26
- --gradient-2: linear-gradient(135deg, #34d399 0%, #38bdf8 100%);
27
- --gradient-3: linear-gradient(135deg, #f472b6 0%, #818cf8 100%);
28
- }
29
-
30
- * { margin: 0; padding: 0; box-sizing: border-box; }
31
-
32
- body {
33
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
34
- background: var(--bg);
35
- color: var(--text);
36
- line-height: 1.6;
37
- overflow-x: hidden;
38
- }
39
-
40
- /* ===== NAVIGATION ===== */
41
- .nav {
42
- position: fixed;
43
- top: 0;
44
- left: 0;
45
- right: 0;
46
- z-index: 100;
47
- background: rgba(15, 23, 42, 0.9);
48
- backdrop-filter: blur(12px);
49
- border-bottom: 1px solid var(--border);
50
- padding: 0 24px;
51
- }
52
- .nav-inner {
53
- max-width: 1200px;
54
- margin: 0 auto;
55
- display: flex;
56
- align-items: center;
57
- justify-content: space-between;
58
- height: 56px;
59
- }
60
- .nav-logo {
61
- font-size: 20px;
62
- font-weight: 800;
63
- background: var(--gradient-1);
64
- -webkit-background-clip: text;
65
- -webkit-text-fill-color: transparent;
66
- background-clip: text;
67
- }
68
- .nav-links {
69
- display: flex;
70
- gap: 4px;
71
- overflow-x: auto;
72
- -webkit-overflow-scrolling: touch;
73
- }
74
- .nav-links a {
75
- color: var(--text-muted);
76
- text-decoration: none;
77
- font-size: 13px;
78
- padding: 6px 12px;
79
- border-radius: 6px;
80
- white-space: nowrap;
81
- transition: all 0.2s;
82
- }
83
- .nav-links a:hover, .nav-links a.active {
84
- color: var(--accent);
85
- background: rgba(56,189,248,0.1);
86
- }
87
-
88
- /* ===== HERO ===== */
89
- .hero {
90
- padding: 120px 24px 60px;
91
- text-align: center;
92
- position: relative;
93
- overflow: hidden;
94
- }
95
- .hero::before {
96
- content: '';
97
- position: absolute;
98
- top: -200px;
99
- left: 50%;
100
- transform: translateX(-50%);
101
- width: 800px;
102
- height: 600px;
103
- background: radial-gradient(ellipse, rgba(56,189,248,0.08) 0%, transparent 70%);
104
- pointer-events: none;
105
- }
106
- .hero-badge {
107
- display: inline-flex;
108
- align-items: center;
109
- gap: 8px;
110
- padding: 6px 16px;
111
- background: rgba(56,189,248,0.1);
112
- border: 1px solid rgba(56,189,248,0.2);
113
- border-radius: 99px;
114
- font-size: 13px;
115
- color: var(--accent);
116
- margin-bottom: 24px;
117
- }
118
- .hero h1 {
119
- font-size: clamp(32px, 6vw, 56px);
120
- font-weight: 800;
121
- line-height: 1.1;
122
- margin-bottom: 16px;
123
- }
124
- .hero h1 span {
125
- background: var(--gradient-1);
126
- -webkit-background-clip: text;
127
- -webkit-text-fill-color: transparent;
128
- background-clip: text;
129
- }
130
- .hero-sub {
131
- font-size: clamp(16px, 2.5vw, 20px);
132
- color: var(--text-muted);
133
- max-width: 640px;
134
- margin: 0 auto 32px;
135
- }
136
- .hero-install {
137
- display: inline-flex;
138
- align-items: center;
139
- gap: 12px;
140
- background: var(--bg-surface);
141
- border: 1px solid var(--border);
142
- border-radius: 12px;
143
- padding: 14px 24px;
144
- font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
145
- font-size: 15px;
146
- color: var(--green);
147
- cursor: pointer;
148
- transition: all 0.2s;
149
- }
150
- .hero-install:hover {
151
- border-color: var(--green);
152
- box-shadow: 0 0 20px rgba(52,211,153,0.15);
153
- }
154
- .hero-install .copy-icon {
155
- color: var(--text-muted);
156
- font-size: 13px;
157
- }
158
-
159
- /* ===== SECTIONS ===== */
160
- .section {
161
- max-width: 1200px;
162
- margin: 0 auto;
163
- padding: 60px 24px;
164
- }
165
- .section-header {
166
- text-align: center;
167
- margin-bottom: 48px;
168
- }
169
- .section-header .label {
170
- display: inline-block;
171
- font-size: 12px;
172
- font-weight: 700;
173
- letter-spacing: 2px;
174
- text-transform: uppercase;
175
- color: var(--accent);
176
- margin-bottom: 8px;
177
- }
178
- .section-header h2 {
179
- font-size: clamp(24px, 4vw, 36px);
180
- font-weight: 700;
181
- margin-bottom: 12px;
182
- }
183
- .section-header p {
184
- color: var(--text-muted);
185
- font-size: 16px;
186
- max-width: 600px;
187
- margin: 0 auto;
188
- }
189
-
190
- /* ===== ANALOGY ===== */
191
- .analogy-grid {
192
- display: grid;
193
- grid-template-columns: 1fr;
194
- gap: 24px;
195
- max-width: 900px;
196
- margin: 0 auto;
197
- }
198
- .analogy-card {
199
- background: var(--bg-surface);
200
- border: 1px solid var(--border);
201
- border-radius: 16px;
202
- padding: 32px;
203
- position: relative;
204
- overflow: hidden;
205
- }
206
- .analogy-card::before {
207
- content: '';
208
- position: absolute;
209
- top: 0;
210
- left: 0;
211
- right: 0;
212
- height: 3px;
213
- }
214
- .analogy-card.blue::before { background: var(--gradient-1); }
215
-
216
- /* ===== CONCEPT CARDS ===== */
217
- .concept-grid {
218
- display: grid;
219
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
220
- gap: 20px;
221
- }
222
- .concept-card {
223
- background: var(--bg-surface);
224
- border: 1px solid var(--border);
225
- border-radius: 16px;
226
- padding: 28px;
227
- transition: all 0.3s;
228
- cursor: default;
229
- position: relative;
230
- overflow: hidden;
231
- }
232
- .concept-card:hover {
233
- border-color: var(--accent);
234
- transform: translateY(-2px);
235
- box-shadow: 0 8px 32px rgba(0,0,0,0.3);
236
- }
237
- .concept-icon {
238
- width: 48px;
239
- height: 48px;
240
- border-radius: 12px;
241
- display: flex;
242
- align-items: center;
243
- justify-content: center;
244
- font-size: 22px;
245
- margin-bottom: 16px;
246
- }
247
- .concept-icon.blue { background: rgba(56,189,248,0.15); }
248
- .concept-icon.green { background: rgba(52,211,153,0.15); }
249
- .concept-icon.purple { background: rgba(129,140,248,0.15); }
250
- .concept-icon.orange { background: rgba(251,146,60,0.15); }
251
- .concept-icon.pink { background: rgba(244,114,182,0.15); }
252
- .concept-card h3 {
253
- font-size: 18px;
254
- font-weight: 700;
255
- margin-bottom: 8px;
256
- }
257
- .concept-card .tech-name {
258
- font-family: 'SF Mono', 'Fira Code', monospace;
259
- font-size: 12px;
260
- color: var(--accent);
261
- margin-bottom: 8px;
262
- }
263
- .concept-card p {
264
- font-size: 14px;
265
- color: var(--text-muted);
266
- margin-bottom: 12px;
267
- }
268
- .concept-tag {
269
- display: inline-block;
270
- padding: 2px 8px;
271
- background: rgba(56,189,248,0.1);
272
- border-radius: 4px;
273
- font-size: 11px;
274
- color: var(--accent);
275
- margin-right: 4px;
276
- margin-bottom: 4px;
277
- }
278
- .concept-tag.green { background: rgba(52,211,153,0.1); color: var(--green); }
279
- .concept-tag.orange { background: rgba(251,146,60,0.1); color: var(--orange); }
280
- .concept-tag.purple { background: rgba(129,140,248,0.1); color: var(--accent2); }
281
-
282
- /* ===== FLOW DIAGRAM ===== */
283
- .flow-container {
284
- background: var(--bg-surface);
285
- border: 1px solid var(--border);
286
- border-radius: 16px;
287
- padding: 32px;
288
- overflow-x: auto;
289
- }
290
- .flow-steps {
291
- display: flex;
292
- align-items: center;
293
- justify-content: center;
294
- gap: 8px;
295
- flex-wrap: wrap;
296
- min-width: fit-content;
297
- }
298
- .flow-step {
299
- display: flex;
300
- flex-direction: column;
301
- align-items: center;
302
- gap: 8px;
303
- padding: 16px 12px;
304
- border-radius: 12px;
305
- min-width: 120px;
306
- transition: all 0.3s;
307
- cursor: default;
308
- }
309
- .flow-step:hover { background: rgba(56,189,248,0.05); }
310
- .flow-step .step-num {
311
- width: 32px;
312
- height: 32px;
313
- border-radius: 50%;
314
- display: flex;
315
- align-items: center;
316
- justify-content: center;
317
- font-size: 13px;
318
- font-weight: 700;
319
- color: white;
320
- }
321
- .flow-step .step-num.blue { background: rgba(56,189,248,0.3); color: var(--accent); }
322
- .flow-step .step-num.green { background: rgba(52,211,153,0.3); color: var(--green); }
323
- .flow-step .step-num.purple { background: rgba(129,140,248,0.3); color: var(--accent2); }
324
- .flow-step .step-num.orange { background: rgba(251,146,60,0.3); color: var(--orange); }
325
- .flow-step .step-num.pink { background: rgba(244,114,182,0.3); color: var(--pink); }
326
- .flow-step .step-label {
327
- font-size: 12px;
328
- font-weight: 600;
329
- text-align: center;
330
- }
331
- .flow-step .step-desc {
332
- font-size: 11px;
333
- color: var(--text-muted);
334
- text-align: center;
335
- }
336
- .flow-arrow {
337
- font-size: 18px;
338
- color: var(--text-dim);
339
- }
340
-
341
- /* ===== TABS ===== */
342
- .tab-container {
343
- background: var(--bg-surface);
344
- border: 1px solid var(--border);
345
- border-radius: 16px;
346
- overflow: hidden;
347
- }
348
- .tab-header {
349
- display: flex;
350
- border-bottom: 1px solid var(--border);
351
- overflow-x: auto;
352
- }
353
- .tab-btn {
354
- flex: 1;
355
- padding: 14px 20px;
356
- background: none;
357
- border: none;
358
- color: var(--text-muted);
359
- font-size: 14px;
360
- font-weight: 600;
361
- cursor: pointer;
362
- transition: all 0.2s;
363
- white-space: nowrap;
364
- position: relative;
365
- font-family: inherit;
366
- }
367
- .tab-btn:hover { color: var(--text); background: rgba(255,255,255,0.02); }
368
- .tab-btn.active {
369
- color: var(--accent);
370
- background: rgba(56,189,248,0.05);
371
- }
372
- .tab-btn.active::after {
373
- content: '';
374
- position: absolute;
375
- bottom: 0; left: 0; right: 0;
376
- height: 2px;
377
- background: var(--accent);
378
- }
379
- .tab-content {
380
- display: none;
381
- padding: 24px;
382
- animation: fadeIn 0.3s ease;
383
- }
384
- .tab-content.active { display: block; }
385
- @keyframes fadeIn {
386
- from { opacity: 0; transform: translateY(8px); }
387
- to { opacity: 1; transform: translateY(0); }
388
- }
389
-
390
- /* ===== TABLE ===== */
391
- .cmd-table {
392
- width: 100%;
393
- border-collapse: collapse;
394
- }
395
- .cmd-table th {
396
- text-align: left;
397
- padding: 12px 16px;
398
- font-size: 12px;
399
- font-weight: 700;
400
- text-transform: uppercase;
401
- letter-spacing: 1px;
402
- color: var(--text-muted);
403
- border-bottom: 1px solid var(--border);
404
- }
405
- .cmd-table td {
406
- padding: 12px 16px;
407
- border-bottom: 1px solid rgba(51,65,85,0.5);
408
- font-size: 14px;
409
- }
410
- .cmd-table tr:hover td { background: rgba(56,189,248,0.03); }
411
- .cmd-table code {
412
- font-family: 'SF Mono', 'Fira Code', monospace;
413
- font-size: 13px;
414
- color: var(--green);
415
- background: rgba(52,211,153,0.1);
416
- padding: 2px 8px;
417
- border-radius: 4px;
418
- }
419
- .cmd-table .desc { color: var(--text-muted); }
420
-
421
- /* ===== WORKFLOW ===== */
422
- .workflow-grid {
423
- display: grid;
424
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
425
- gap: 24px;
426
- }
427
- .workflow-card {
428
- background: var(--bg-surface);
429
- border: 1px solid var(--border);
430
- border-radius: 16px;
431
- padding: 28px;
432
- position: relative;
433
- }
434
- .workflow-card::before {
435
- content: '';
436
- position: absolute;
437
- top: 0; left: 0; right: 0;
438
- height: 3px;
439
- border-radius: 16px 16px 0 0;
440
- }
441
- .workflow-card.fast::before { background: var(--gradient-2); }
442
- .workflow-card.spec::before { background: var(--gradient-3); }
443
- .workflow-label {
444
- display: inline-block;
445
- font-size: 11px;
446
- font-weight: 700;
447
- letter-spacing: 1.5px;
448
- text-transform: uppercase;
449
- padding: 4px 10px;
450
- border-radius: 4px;
451
- margin-bottom: 12px;
452
- }
453
- .workflow-label.fast { background: rgba(52,211,153,0.15); color: var(--green); }
454
- .workflow-label.spec { background: rgba(244,114,182,0.15); color: var(--pink); }
455
- .workflow-card h3 {
456
- font-size: 20px;
457
- font-weight: 700;
458
- margin-bottom: 8px;
459
- }
460
- .workflow-card .when {
461
- font-size: 14px;
462
- color: var(--text-muted);
463
- margin-bottom: 16px;
464
- }
465
- .workflow-steps {
466
- display: flex;
467
- flex-direction: column;
468
- gap: 8px;
469
- }
470
- .workflow-step-item {
471
- display: flex;
472
- align-items: center;
473
- gap: 10px;
474
- padding: 8px 12px;
475
- background: rgba(0,0,0,0.2);
476
- border-radius: 8px;
477
- font-size: 13px;
478
- }
479
- .workflow-step-item code {
480
- font-family: 'SF Mono', 'Fira Code', monospace;
481
- color: var(--green);
482
- font-size: 12px;
483
- }
484
- .workflow-step-item .arrow-right { color: var(--text-dim); }
485
-
486
- /* ===== SCENARIOS ===== */
487
- .scenario-grid {
488
- display: grid;
489
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
490
- gap: 20px;
491
- }
492
- .scenario-card {
493
- background: var(--bg-surface);
494
- border: 1px solid var(--border);
495
- border-radius: 16px;
496
- padding: 24px;
497
- transition: all 0.3s;
498
- }
499
- .scenario-card:hover {
500
- border-color: var(--border-light);
501
- transform: translateY(-2px);
502
- }
503
- .scenario-header {
504
- display: flex;
505
- align-items: center;
506
- gap: 12px;
507
- margin-bottom: 12px;
508
- }
509
- .scenario-time {
510
- font-size: 11px;
511
- color: var(--orange);
512
- background: rgba(251,146,60,0.1);
513
- padding: 2px 8px;
514
- border-radius: 4px;
515
- font-weight: 600;
516
- }
517
- .scenario-card h4 { font-size: 15px; font-weight: 600; }
518
- .scenario-card .scenario-desc {
519
- font-size: 13px;
520
- color: var(--text-muted);
521
- margin-bottom: 12px;
522
- }
523
- .scenario-cmd {
524
- background: rgba(0,0,0,0.3);
525
- border-radius: 8px;
526
- padding: 12px;
527
- font-family: 'SF Mono', 'Fira Code', monospace;
528
- font-size: 12px;
529
- color: var(--green);
530
- line-height: 1.8;
531
- }
532
- .scenario-cmd .comment { color: var(--text-dim); }
533
-
534
- /* ===== STATS ===== */
535
- .stats-grid {
536
- display: grid;
537
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
538
- gap: 16px;
539
- margin-bottom: 48px;
540
- }
541
- .stat-card {
542
- background: var(--bg-surface);
543
- border: 1px solid var(--border);
544
- border-radius: 12px;
545
- padding: 24px;
546
- text-align: center;
547
- transition: all 0.3s;
548
- }
549
- .stat-card:hover {
550
- border-color: var(--accent);
551
- transform: translateY(-2px);
552
- }
553
- .stat-num {
554
- font-size: 32px;
555
- font-weight: 800;
556
- background: var(--gradient-1);
557
- -webkit-background-clip: text;
558
- -webkit-text-fill-color: transparent;
559
- background-clip: text;
560
- line-height: 1.2;
561
- }
562
- .stat-label {
563
- font-size: 13px;
564
- color: var(--text-muted);
565
- margin-top: 4px;
566
- }
567
-
568
- /* ===== DECISION TREE ===== */
569
- .decision-tree {
570
- max-width: 700px;
571
- margin: 0 auto;
572
- }
573
- .decision-node {
574
- background: var(--bg-surface);
575
- border: 1px solid var(--border);
576
- border-radius: 12px;
577
- padding: 16px 20px;
578
- margin-bottom: 12px;
579
- display: flex;
580
- align-items: center;
581
- justify-content: space-between;
582
- transition: all 0.3s;
583
- cursor: pointer;
584
- }
585
- .decision-node:hover {
586
- border-color: var(--accent);
587
- background: rgba(56,189,248,0.03);
588
- }
589
- .decision-node.expanded {
590
- border-color: var(--accent);
591
- border-bottom-left-radius: 0;
592
- border-bottom-right-radius: 0;
593
- margin-bottom: 0;
594
- }
595
- .decision-q { font-size: 15px; font-weight: 600; }
596
- .decision-q .q-icon { color: var(--accent); margin-right: 8px; }
597
- .decision-answer {
598
- display: none;
599
- background: rgba(56,189,248,0.03);
600
- border: 1px solid var(--border);
601
- border-top: none;
602
- border-radius: 0 0 12px 12px;
603
- padding: 16px 20px;
604
- margin-bottom: 12px;
605
- }
606
- .decision-answer.show { display: block; }
607
- .decision-answer code {
608
- font-family: 'SF Mono', 'Fira Code', monospace;
609
- color: var(--green);
610
- background: rgba(52,211,153,0.1);
611
- padding: 2px 8px;
612
- border-radius: 4px;
613
- font-size: 13px;
614
- }
615
- .decision-answer .answer-desc {
616
- color: var(--text-muted);
617
- font-size: 13px;
618
- margin-top: 4px;
619
- }
620
- .decision-toggle {
621
- color: var(--text-dim);
622
- font-size: 18px;
623
- transition: transform 0.2s;
624
- }
625
- .decision-node.expanded .decision-toggle {
626
- transform: rotate(180deg);
627
- color: var(--accent);
628
- }
629
-
630
- /* ===== RESOURCE MAP ===== */
631
- .resource-map {
632
- display: grid;
633
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
634
- gap: 16px;
635
- }
636
- .resource-item {
637
- background: var(--bg-surface);
638
- border: 1px solid var(--border);
639
- border-radius: 12px;
640
- padding: 20px;
641
- transition: all 0.3s;
642
- }
643
- .resource-item:hover { border-color: var(--border-light); }
644
- .resource-item h4 {
645
- font-size: 14px;
646
- font-weight: 700;
647
- margin-bottom: 8px;
648
- display: flex;
649
- align-items: center;
650
- gap: 8px;
651
- }
652
- .resource-item ul { list-style: none; padding: 0; }
653
- .resource-item li {
654
- font-size: 12px;
655
- color: var(--text-muted);
656
- padding: 3px 0;
657
- border-bottom: 1px solid rgba(51,65,85,0.3);
658
- }
659
- .resource-item li:last-child { border-bottom: none; }
660
-
661
- /* ===== INSTALL ===== */
662
- .install-box {
663
- max-width: 700px;
664
- margin: 0 auto;
665
- background: var(--bg-surface);
666
- border: 1px solid var(--border);
667
- border-radius: 16px;
668
- overflow: hidden;
669
- }
670
- .install-header {
671
- padding: 12px 20px;
672
- background: rgba(0,0,0,0.2);
673
- border-bottom: 1px solid var(--border);
674
- display: flex;
675
- align-items: center;
676
- gap: 8px;
677
- }
678
- .install-dot { width: 10px; height: 10px; border-radius: 50%; }
679
- .install-dot.red { background: #ff5f57; }
680
- .install-dot.yellow { background: #febc2e; }
681
- .install-dot.green { background: #28c840; }
682
- .install-header span {
683
- font-size: 12px;
684
- color: var(--text-dim);
685
- margin-left: 12px;
686
- }
687
- .install-body {
688
- padding: 24px;
689
- font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
690
- font-size: 14px;
691
- line-height: 2;
692
- }
693
- .install-body .prompt { color: var(--text-dim); }
694
- .install-body .cmd { color: var(--green); }
695
- .install-body .comment { color: var(--text-dim); font-style: italic; }
696
- .install-body .output { color: var(--text-muted); }
697
- .install-body .success { color: var(--green); }
698
-
699
- /* ===== COMPARE TABLE ===== */
700
- .compare-table {
701
- width: 100%;
702
- border-collapse: collapse;
703
- margin: 24px 0;
704
- }
705
- .compare-table th, .compare-table td {
706
- padding: 14px 16px;
707
- text-align: left;
708
- font-size: 14px;
709
- border-bottom: 1px solid var(--border);
710
- }
711
- .compare-table th {
712
- font-weight: 700;
713
- color: var(--accent);
714
- font-size: 13px;
715
- text-transform: uppercase;
716
- letter-spacing: 0.5px;
717
- }
718
- .compare-table td { color: var(--text-muted); }
719
- .compare-table tr:hover td { background: rgba(56,189,248,0.03); }
720
-
721
- /* ===== FOOTER ===== */
722
- .footer {
723
- padding: 40px 24px;
724
- text-align: center;
725
- border-top: 1px solid var(--border);
726
- margin-top: 60px;
727
- }
728
- .footer p { font-size: 13px; color: var(--text-dim); }
729
- .footer a { color: var(--accent); text-decoration: none; }
730
-
731
- .divider {
732
- height: 1px;
733
- background: var(--border);
734
- max-width: 1200px;
735
- margin: 0 auto;
736
- }
737
-
738
- /* ===== RESPONSIVE ===== */
739
- @media (max-width: 768px) {
740
- .nav-links { display: none; }
741
- .flow-steps { justify-content: flex-start; }
742
- }
743
-
744
- html { scroll-behavior: smooth; }
745
- section { scroll-margin-top: 70px; }
746
-
747
- .tip-box {
748
- background: rgba(56,189,248,0.05);
749
- border: 1px solid rgba(56,189,248,0.15);
750
- border-left: 3px solid var(--accent);
751
- border-radius: 8px;
752
- padding: 16px 20px;
753
- margin: 20px 0;
754
- font-size: 14px;
755
- color: var(--text-muted);
756
- }
757
- .tip-box strong { color: var(--accent); }
758
-
759
- .warning-box {
760
- background: rgba(251,146,60,0.05);
761
- border: 1px solid rgba(251,146,60,0.15);
762
- border-left: 3px solid var(--orange);
763
- border-radius: 8px;
764
- padding: 16px 20px;
765
- margin: 20px 0;
766
- font-size: 14px;
767
- color: var(--text-muted);
768
- }
769
- .warning-box strong { color: var(--orange); }
770
- </style>
771
- </head>
772
- <body>
773
-
774
- <!-- ===== NAV ===== -->
775
- <nav class="nav">
776
- <div class="nav-inner">
777
- <div class="nav-logo">CoKit</div>
778
- <div class="nav-links">
779
- <a href="#what">What is CoKit?</a>
780
- <a href="#concepts">5 Parts</a>
781
- <a href="#how">How it Works</a>
782
- <a href="#commands">Commands</a>
783
- <a href="#workflows">Workflows</a>
784
- <a href="#scenarios">Examples</a>
785
- <a href="#decide">Pick a Command</a>
786
- <a href="#flowchart">Flowchart</a>
787
- <a href="#deepdive">Deep Dive</a>
788
- <a href="#resources">Resources</a>
789
- <a href="#install">Install</a>
790
- </div>
791
- </div>
792
- </nav>
793
-
794
- <!-- ===== HERO ===== -->
795
- <header class="hero">
796
- <div class="hero-badge">&#9889; Version 1.1.0</div>
797
- <h1>Make <span>GitHub Copilot</span><br>smarter in 30 seconds</h1>
798
- <p class="hero-sub">CoKit gives Copilot ready-made workflows, AI experts, and coding rules &mdash; so it understands your project and works like a real developer.</p>
799
- <div class="hero-install" onclick="copyInstall()" id="installCmd">
800
- <span>npx cokit-cli init -g</span>
801
- <span class="copy-icon" id="copyIcon">&#128203; copy</span>
802
- </div>
803
- </header>
804
-
805
- <!-- ===== STATS ===== -->
806
- <section class="section">
807
- <div class="stats-grid">
808
- <div class="stat-card">
809
- <div class="stat-num">28</div>
810
- <div class="stat-label">Prompts (Commands)</div>
811
- </div>
812
- <div class="stat-card">
813
- <div class="stat-num">12</div>
814
- <div class="stat-label">Agents (Experts)</div>
815
- </div>
816
- <div class="stat-card">
817
- <div class="stat-num">23</div>
818
- <div class="stat-label">Skills (Knowledge)</div>
819
- </div>
820
- <div class="stat-card">
821
- <div class="stat-num">5</div>
822
- <div class="stat-label">Instructions (Rules)</div>
823
- </div>
824
- <div class="stat-card">
825
- <div class="stat-num">5</div>
826
- <div class="stat-label">Collections (Bundles)</div>
827
- </div>
828
- </div>
829
- </section>
830
-
831
- <div class="divider"></div>
832
-
833
- <!-- ===== WHAT IS COKIT ===== -->
834
- <section class="section" id="what">
835
- <div class="section-header">
836
- <div class="label">Introduction</div>
837
- <h2>What is CoKit?</h2>
838
- <p>Think of it like running a restaurant...</p>
839
- </div>
840
-
841
- <div class="analogy-grid">
842
- <div class="analogy-card blue">
843
- <h3 style="margin-bottom: 16px; color: var(--accent);">&#127869; Restaurant vs &#128187; CoKit</h3>
844
- <table class="compare-table">
845
- <tr>
846
- <th>Restaurant</th>
847
- <th>CoKit</th>
848
- </tr>
849
- <tr>
850
- <td><strong>Menu</strong> &mdash; Customer picks a dish</td>
851
- <td><strong>Prompts</strong> &mdash; You type a command: <code>/ck.fix</code>, <code>/ck.plan</code></td>
852
- </tr>
853
- <tr>
854
- <td><strong>Expert chefs</strong> &mdash; People who do the cooking</td>
855
- <td><strong>Agents</strong> &mdash; AI specialists: debugger, planner, tester...</td>
856
- </tr>
857
- <tr>
858
- <td><strong>Recipes</strong> &mdash; Deep cooking knowledge</td>
859
- <td><strong>Skills</strong> &mdash; Knowledge: debugging, code-review, planning...</td>
860
- </tr>
861
- <tr>
862
- <td><strong>Kitchen rules</strong> &mdash; Rules everyone follows</td>
863
- <td><strong>Instructions</strong> &mdash; Auto coding standards: frontend, backend, testing</td>
864
- </tr>
865
- <tr>
866
- <td><strong>Combo meal</strong> &mdash; Bundle of items</td>
867
- <td><strong>Collections</strong> &mdash; Group of resources by topic</td>
868
- </tr>
869
- </table>
870
- </div>
871
-
872
- <div class="tip-box">
873
- <strong>&#128161; In short:</strong> GitHub Copilot is like a super talented chef who doesn't know your restaurant yet. CoKit gives it the menu, recipes, and kitchen rules &mdash; so the chef can work better right away.
874
- </div>
875
- </div>
876
- </section>
877
-
878
- <div class="divider"></div>
879
-
880
- <!-- ===== 5 CONCEPTS ===== -->
881
- <section class="section" id="concepts">
882
- <div class="section-header">
883
- <div class="label">Core Concepts</div>
884
- <h2>The 5 Parts of CoKit</h2>
885
- <p>Each part has its own job. They work together automatically.</p>
886
- </div>
887
-
888
- <div class="concept-grid">
889
- <!-- PROMPT -->
890
- <div class="concept-card">
891
- <div class="concept-icon blue">&#128172;</div>
892
- <div class="tech-name">Prompt</div>
893
- <h3>Commands you type</h3>
894
- <p>Like a <strong>button on your phone</strong>. You type a command, and Copilot knows exactly what to do. Each prompt is a complete workflow.</p>
895
- <p><strong>How to use:</strong> Type <code style="color: var(--green);">/ck.fix</code> in Copilot Chat</p>
896
- <div>
897
- <span class="concept-tag">28 prompts</span>
898
- <span class="concept-tag">You trigger it</span>
899
- </div>
900
- </div>
901
-
902
- <!-- AGENT -->
903
- <div class="concept-card">
904
- <div class="concept-icon purple">&#129302;</div>
905
- <div class="tech-name">Agent</div>
906
- <h3>AI specialists</h3>
907
- <p>Like <strong>experts on your team</strong>. Each agent has a special skill: one fixes bugs, one writes tests, one makes plans.</p>
908
- <p><strong>How it works:</strong> Prompts call them automatically</p>
909
- <div>
910
- <span class="concept-tag purple">12 agents</span>
911
- <span class="concept-tag purple">Automatic</span>
912
- </div>
913
- </div>
914
-
915
- <!-- SKILL -->
916
- <div class="concept-card">
917
- <div class="concept-icon green">&#128218;</div>
918
- <div class="tech-name">Skill</div>
919
- <h3>Deep knowledge</h3>
920
- <p>Like a <strong>textbook</strong>. Teaches Copilot the right way to debug, review code, and plan &mdash; instead of guessing.</p>
921
- <p><strong>How it works:</strong> Turns on automatically based on what you're doing</p>
922
- <div>
923
- <span class="concept-tag green">23 skills</span>
924
- <span class="concept-tag green">Context-aware</span>
925
- </div>
926
- </div>
927
-
928
- <!-- INSTRUCTION -->
929
- <div class="concept-card">
930
- <div class="concept-icon orange">&#128220;</div>
931
- <div class="tech-name">Instruction</div>
932
- <h3>Auto coding rules</h3>
933
- <p>Like <strong>company rules</strong>. When Copilot edits a React file &rarr; frontend rules apply. Edits an API file &rarr; backend rules apply.</p>
934
- <p><strong>How it works:</strong> Applies automatically based on file type</p>
935
- <div>
936
- <span class="concept-tag orange">5 instructions</span>
937
- <span class="concept-tag orange">Auto-apply</span>
938
- </div>
939
- </div>
940
-
941
- <!-- COLLECTION -->
942
- <div class="concept-card">
943
- <div class="concept-icon pink">&#128230;</div>
944
- <div class="tech-name">Collection</div>
945
- <h3>Resource bundles</h3>
946
- <p>Like a <strong>combo meal</strong>. Groups prompts + agents + skills by topic: core development, git workflow, documentation...</p>
947
- <p><strong>How it works:</strong> Pick the bundle you need</p>
948
- <div>
949
- <span class="concept-tag" style="background: rgba(244,114,182,0.1); color: var(--pink);">5 collections</span>
950
- </div>
951
- </div>
952
- </div>
953
- </section>
954
-
955
- <div class="divider"></div>
956
-
957
- <!-- ===== HOW IT WORKS ===== -->
958
- <section class="section" id="how">
959
- <div class="section-header">
960
- <div class="label">How It Works</div>
961
- <h2>What happens when you type a command?</h2>
962
- <p>You just type the command. Everything else is automatic.</p>
963
- </div>
964
-
965
- <div class="flow-container">
966
- <div class="flow-steps">
967
- <div class="flow-step">
968
- <div class="step-num blue">1</div>
969
- <div class="step-label">You type</div>
970
- <div class="step-desc" style="color: var(--green); font-family: monospace;">/ck.fix</div>
971
- </div>
972
- <div class="flow-arrow">&#8594;</div>
973
- <div class="flow-step">
974
- <div class="step-num purple">2</div>
975
- <div class="step-label">Prompt starts</div>
976
- <div class="step-desc">Bug-fix workflow</div>
977
- </div>
978
- <div class="flow-arrow">&#8594;</div>
979
- <div class="flow-step">
980
- <div class="step-num green">3</div>
981
- <div class="step-label">Agent works</div>
982
- <div class="step-desc">Debugger expert</div>
983
- </div>
984
- <div class="flow-arrow">&#8594;</div>
985
- <div class="flow-step">
986
- <div class="step-num orange">4</div>
987
- <div class="step-label">Rules apply</div>
988
- <div class="step-desc">Auto code standards</div>
989
- </div>
990
- <div class="flow-arrow">&#8594;</div>
991
- <div class="flow-step">
992
- <div class="step-num pink">5</div>
993
- <div class="step-label">Skills help</div>
994
- <div class="step-desc">Deep knowledge</div>
995
- </div>
996
- <div class="flow-arrow">&#8594;</div>
997
- <div class="flow-step">
998
- <div class="step-num" style="background: rgba(52,211,153,0.5); color: white;">&#10003;</div>
999
- <div class="step-label" style="color: var(--green);">Done!</div>
1000
- <div class="step-desc">Bug fixed properly</div>
1001
- </div>
1002
- </div>
1003
- </div>
1004
-
1005
- <div class="tip-box" style="margin-top: 24px;">
1006
- <strong>&#128161; One-liner:</strong> You call a <strong>Prompt</strong> &rarr; Prompt calls an <strong>Agent</strong> &rarr; Agent gets <strong>Instructions</strong> by file type &rarr; Agent uses <strong>Skills</strong> when needed &rarr; All can be bundled in a <strong>Collection</strong>.
1007
- </div>
1008
- </section>
1009
-
1010
- <div class="divider"></div>
1011
-
1012
- <!-- ===== COMMANDS ===== -->
1013
- <section class="section" id="commands">
1014
- <div class="section-header">
1015
- <div class="label">Commands</div>
1016
- <h2>All CoKit Commands</h2>
1017
- <p>Click a tab to see each group of commands.</p>
1018
- </div>
1019
-
1020
- <div class="tab-container">
1021
- <div class="tab-header">
1022
- <button class="tab-btn active" onclick="switchTab(event, 'tab-daily')">&#128736; Daily Use</button>
1023
- <button class="tab-btn" onclick="switchTab(event, 'tab-plan')">&#128203; Planning</button>
1024
- <button class="tab-btn" onclick="switchTab(event, 'tab-spec')">&#128196; Spec-Driven</button>
1025
- <button class="tab-btn" onclick="switchTab(event, 'tab-util')">&#128295; Utilities</button>
1026
- </div>
1027
-
1028
- <!-- Daily -->
1029
- <div class="tab-content active" id="tab-daily">
1030
- <table class="cmd-table">
1031
- <tr><th>Command</th><th>What it does</th><th>Example</th></tr>
1032
- <tr>
1033
- <td><code>/ck.fix</code></td>
1034
- <td>Fix bugs, errors, issues</td>
1035
- <td class="desc">"Login button not working"</td>
1036
- </tr>
1037
- <tr>
1038
- <td><code>/ck.debug</code></td>
1039
- <td>Deep root-cause analysis</td>
1040
- <td class="desc">"App crashes on file upload"</td>
1041
- </tr>
1042
- <tr>
1043
- <td><code>/ck.cook</code></td>
1044
- <td>Implement a feature or plan</td>
1045
- <td class="desc">"Build the auth module" or path to plan</td>
1046
- </tr>
1047
- <tr>
1048
- <td><code>/ck.test</code></td>
1049
- <td>Run tests &amp; analyze results</td>
1050
- <td class="desc">"Test the auth module"</td>
1051
- </tr>
1052
- <tr>
1053
- <td><code>/ck.review</code></td>
1054
- <td>Review code quality</td>
1055
- <td class="desc">"Review the payment module"</td>
1056
- </tr>
1057
- <tr>
1058
- <td><code>/ck.ask</code></td>
1059
- <td>Ask technical questions</td>
1060
- <td class="desc">"Should we use JWT or sessions?"</td>
1061
- </tr>
1062
- </table>
1063
- </div>
1064
-
1065
- <!-- Planning -->
1066
- <div class="tab-content" id="tab-plan">
1067
- <table class="cmd-table">
1068
- <tr><th>Command</th><th>What it does</th><th>When to use</th></tr>
1069
- <tr>
1070
- <td><code>/ck.plan</code></td>
1071
- <td>Create plan (auto-detects complexity)</td>
1072
- <td class="desc">Medium features</td>
1073
- </tr>
1074
- <tr>
1075
- <td><code>/ck.plan.fast</code></td>
1076
- <td>Quick plan, no research</td>
1077
- <td class="desc">Small features &lt; 2 hours</td>
1078
- </tr>
1079
- <tr>
1080
- <td><code>/ck.plan.hard</code></td>
1081
- <td>Deep research + detailed plan</td>
1082
- <td class="desc">Complex features needing research</td>
1083
- </tr>
1084
- <tr>
1085
- <td><code>/ck.brainstorm</code></td>
1086
- <td>Brainstorm solutions</td>
1087
- <td class="desc">Not sure what to build</td>
1088
- </tr>
1089
- <tr>
1090
- <td><code>/ck.bootstrap</code></td>
1091
- <td>Start a new project</td>
1092
- <td class="desc">Create project from scratch</td>
1093
- </tr>
1094
- </table>
1095
- </div>
1096
-
1097
- <!-- Spec-Driven -->
1098
- <div class="tab-content" id="tab-spec">
1099
- <div class="warning-box" style="margin-bottom: 16px;">
1100
- <strong>&#128204; Note:</strong> Spec-Driven is for complex features (multi-day). It needs clear requirements. Use in order: specify &rarr; clarify &rarr; plan &rarr; tasks &rarr; implement.
1101
- </div>
1102
- <table class="cmd-table">
1103
- <tr><th>Command</th><th>What it does</th><th>Step</th></tr>
1104
- <tr>
1105
- <td><code>/ck.spec.specify</code></td>
1106
- <td>Write spec from an idea</td>
1107
- <td class="desc">Step 1 &mdash; Create requirements</td>
1108
- </tr>
1109
- <tr>
1110
- <td><code>/ck.spec.clarify</code></td>
1111
- <td>Ask questions to clear up unknowns</td>
1112
- <td class="desc">Step 2 &mdash; Confirm details</td>
1113
- </tr>
1114
- <tr>
1115
- <td><code>/ck.spec.plan</code></td>
1116
- <td>Create plan from spec</td>
1117
- <td class="desc">Step 3 &mdash; Make the plan</td>
1118
- </tr>
1119
- <tr>
1120
- <td><code>/ck.spec.tasks</code></td>
1121
- <td>Break plan into small tasks</td>
1122
- <td class="desc">Step 4 &mdash; Split into pieces</td>
1123
- </tr>
1124
- <tr>
1125
- <td><code>/ck.spec.implement</code></td>
1126
- <td>Execute the tasks</td>
1127
- <td class="desc">Step 5 &mdash; Write the code</td>
1128
- </tr>
1129
- <tr>
1130
- <td><code>/ck.spec.analyze</code></td>
1131
- <td>Check spec consistency</td>
1132
- <td class="desc">Optional</td>
1133
- </tr>
1134
- <tr>
1135
- <td><code>/ck.spec.checklist</code></td>
1136
- <td>Validate all requirements</td>
1137
- <td class="desc">Optional</td>
1138
- </tr>
1139
- <tr>
1140
- <td><code>/ck.spec.taskstoissues</code></td>
1141
- <td>Export tasks to GitHub Issues</td>
1142
- <td class="desc">Optional</td>
1143
- </tr>
1144
- </table>
1145
- </div>
1146
-
1147
- <!-- Utilities -->
1148
- <div class="tab-content" id="tab-util">
1149
- <table class="cmd-table">
1150
- <tr><th>Command</th><th>What it does</th></tr>
1151
- <tr>
1152
- <td><code>/ck.git</code></td>
1153
- <td>Commit, push, create PR &mdash; all Git operations</td>
1154
- </tr>
1155
- <tr>
1156
- <td><code>/ck.scout</code></td>
1157
- <td>Quick search across the codebase</td>
1158
- </tr>
1159
- <tr>
1160
- <td><code>/ck.watzup</code></td>
1161
- <td>See recent changes on your branch</td>
1162
- </tr>
1163
- <tr>
1164
- <td><code>/ck.docs</code></td>
1165
- <td>Create or update documentation</td>
1166
- </tr>
1167
- <tr>
1168
- <td><code>/ck.preview</code></td>
1169
- <td>Preview markdown files and plans</td>
1170
- </tr>
1171
- <tr>
1172
- <td><code>/ck.journal</code></td>
1173
- <td>Write dev journal entries</td>
1174
- </tr>
1175
- <tr>
1176
- <td><code>/ck.simplify</code></td>
1177
- <td>Simplify &amp; refine code for clarity</td>
1178
- </tr>
1179
- <tr>
1180
- <td><code>/ck.help</code></td>
1181
- <td>CoKit usage guide</td>
1182
- </tr>
1183
- </table>
1184
- </div>
1185
- </div>
1186
- </section>
1187
-
1188
- <div class="divider"></div>
1189
-
1190
- <!-- ===== WORKFLOWS ===== -->
1191
- <section class="section" id="workflows">
1192
- <div class="section-header">
1193
- <div class="label">Workflows</div>
1194
- <h2>2 Main Workflows</h2>
1195
- <p>Pick the workflow that matches how big the job is.</p>
1196
- </div>
1197
-
1198
- <div class="workflow-grid">
1199
- <!-- Quick workflow (ck.*) -->
1200
- <div class="workflow-card fast">
1201
- <div class="workflow-label fast">QUICK &mdash; ck.*</div>
1202
- <h3>Flexible, for daily work</h3>
1203
- <div class="when">Use for: bug fixes, small features, prototypes, quick experiments</div>
1204
- <div class="workflow-steps">
1205
- <div class="workflow-step-item">
1206
- <code>/ck.plan.fast</code> <span class="arrow-right">&rarr;</span> Quick plan
1207
- </div>
1208
- <div class="workflow-step-item">
1209
- <code>/ck.cook</code> <span class="arrow-right">&rarr;</span> Write the code
1210
- </div>
1211
- <div class="workflow-step-item">
1212
- <code>/ck.test</code> <span class="arrow-right">&rarr;</span> Run tests
1213
- </div>
1214
- <div class="workflow-step-item">
1215
- <code>/ck.fix</code> <span class="arrow-right">&rarr;</span> Fix if tests fail
1216
- </div>
1217
- <div class="workflow-step-item">
1218
- <code>/ck.review</code> <span class="arrow-right">&rarr;</span> Review code
1219
- </div>
1220
- <div class="workflow-step-item">
1221
- <code>/ck.git</code> <span class="arrow-right">&rarr;</span> Commit &amp; push
1222
- </div>
1223
- </div>
1224
- <div class="tip-box" style="margin-top: 16px;">
1225
- <strong>&#9201; Time:</strong> Minutes to hours
1226
- </div>
1227
- </div>
1228
-
1229
- <!-- Spec-driven workflow (ck.spec.*) -->
1230
- <div class="workflow-card spec">
1231
- <div class="workflow-label spec">SPEC-DRIVEN &mdash; ck.spec.*</div>
1232
- <h3>Rigorous, for big features</h3>
1233
- <div class="when">Use for: complex features, clear specs needed, team collaboration</div>
1234
- <div class="workflow-steps">
1235
- <div class="workflow-step-item">
1236
- <code>/ck.spec.specify</code> <span class="arrow-right">&rarr;</span> Write detailed requirements
1237
- </div>
1238
- <div class="workflow-step-item">
1239
- <code>/ck.spec.clarify</code> <span class="arrow-right">&rarr;</span> Clear up unknowns
1240
- </div>
1241
- <div class="workflow-step-item">
1242
- <code>/ck.spec.plan</code> <span class="arrow-right">&rarr;</span> Create plan from spec
1243
- </div>
1244
- <div class="workflow-step-item">
1245
- <code>/ck.spec.tasks</code> <span class="arrow-right">&rarr;</span> Split into small tasks
1246
- </div>
1247
- <div class="workflow-step-item">
1248
- <code>/ck.spec.implement</code> <span class="arrow-right">&rarr;</span> Build each task
1249
- </div>
1250
- <div class="workflow-step-item">
1251
- <code>/ck.test</code> <span class="arrow-right">&rarr;</span> Test everything
1252
- </div>
1253
- </div>
1254
- <div class="tip-box" style="margin-top: 16px;">
1255
- <strong>&#9201; Time:</strong> Days to weeks
1256
- </div>
1257
- </div>
1258
- </div>
1259
-
1260
- <div class="tip-box" style="margin-top: 24px; max-width: 700px; margin-left: auto; margin-right: auto;">
1261
- <strong>&#128161; Rule of thumb:</strong> If you can explain it in one sentence &rarr; use <strong>Quick workflow</strong> (<code>ck.*</code>). If you need a document &rarr; use <strong>Spec-Driven</strong> (<code>ck.spec.*</code>).
1262
- </div>
1263
- </section>
1264
-
1265
- <div class="divider"></div>
1266
-
1267
- <!-- ===== SCENARIOS ===== -->
1268
- <section class="section" id="scenarios">
1269
- <div class="section-header">
1270
- <div class="label">Real Examples</div>
1271
- <h2>When do I use what?</h2>
1272
- <p>Common everyday situations and which commands to use.</p>
1273
- </div>
1274
-
1275
- <div class="scenario-grid">
1276
- <div class="scenario-card">
1277
- <div class="scenario-header">
1278
- <span class="scenario-time">5 min</span>
1279
- <h4>&#128027; Quick bug fix</h4>
1280
- </div>
1281
- <div class="scenario-desc">Users can't login with email containing "+"</div>
1282
- <div class="scenario-cmd">
1283
- <span class="comment"># One command, done!</span><br>
1284
- /ck.fix "Users can't login with email containing +"
1285
- </div>
1286
- </div>
1287
-
1288
- <div class="scenario-card">
1289
- <div class="scenario-header">
1290
- <span class="scenario-time">30 min</span>
1291
- <h4>&#127763; Small feature</h4>
1292
- </div>
1293
- <div class="scenario-desc">Add a dark mode toggle button</div>
1294
- <div class="scenario-cmd">
1295
- /ck.plan.fast "Add dark mode toggle"<br>
1296
- <span class="comment"># Implement the plan...</span><br>
1297
- /ck.test<br>
1298
- /ck.fix <span class="comment"># if tests fail</span>
1299
- </div>
1300
- </div>
1301
-
1302
- <div class="scenario-card">
1303
- <div class="scenario-header">
1304
- <span class="scenario-time">2-4 hrs</span>
1305
- <h4>&#128179; Medium feature</h4>
1306
- </div>
1307
- <div class="scenario-desc">Integrate Stripe payments</div>
1308
- <div class="scenario-cmd">
1309
- /ck.plan.hard "Integrate Stripe payments"<br>
1310
- <span class="comment"># Implement phase by phase...</span><br>
1311
- /ck.test<br>
1312
- /ck.review
1313
- </div>
1314
- </div>
1315
-
1316
- <div class="scenario-card">
1317
- <div class="scenario-header">
1318
- <span class="scenario-time">Multi-day</span>
1319
- <h4>&#127959; Complex feature</h4>
1320
- </div>
1321
- <div class="scenario-desc">Multi-tenant SaaS billing system</div>
1322
- <div class="scenario-cmd">
1323
- /ck.spec.specify "Multi-tenant billing"<br>
1324
- /ck.spec.clarify<br>
1325
- /ck.spec.plan<br>
1326
- /ck.spec.tasks<br>
1327
- /ck.spec.implement<br>
1328
- /ck.test
1329
- </div>
1330
- </div>
1331
-
1332
- <div class="scenario-card">
1333
- <div class="scenario-header">
1334
- <span class="scenario-time">10 min</span>
1335
- <h4>&#128269; Explore codebase</h4>
1336
- </div>
1337
- <div class="scenario-desc">Just joined the project, need to understand the code</div>
1338
- <div class="scenario-cmd">
1339
- /ck.scout "auth handlers"<br>
1340
- /ck.ask "How does auth work in this project?"<br>
1341
- /ck.watzup <span class="comment"># see recent changes</span>
1342
- </div>
1343
- </div>
1344
-
1345
- <div class="scenario-card">
1346
- <div class="scenario-header">
1347
- <span class="scenario-time">15 min</span>
1348
- <h4>&#128640; New project</h4>
1349
- </div>
1350
- <div class="scenario-desc">Start a React project from scratch</div>
1351
- <div class="scenario-cmd">
1352
- /ck.bootstrap "New React app with auth"<br>
1353
- <span class="comment"># Copilot sets up everything!</span>
1354
- </div>
1355
- </div>
1356
- </div>
1357
- </section>
1358
-
1359
- <div class="divider"></div>
1360
-
1361
- <!-- ===== DECISION TREE ===== -->
1362
- <section class="section" id="decide">
1363
- <div class="section-header">
1364
- <div class="label">Pick a Command</div>
1365
- <h2>Not sure which command to use?</h2>
1366
- <p>Answer the question, find the right command. Click to expand.</p>
1367
- </div>
1368
-
1369
- <div class="decision-tree">
1370
- <div class="decision-node" onclick="toggleDecision(this)">
1371
- <div class="decision-q"><span class="q-icon">&#10067;</span> Have a bug to fix?</div>
1372
- <div class="decision-toggle">&#9660;</div>
1373
- </div>
1374
- <div class="decision-answer">
1375
- <div>&#8594; Use <code>/ck.fix</code> &mdash; analyzes and fixes it right away</div>
1376
- <div class="answer-desc">If the bug is complex and unclear: use <code>/ck.debug</code> instead</div>
1377
- </div>
1378
-
1379
- <div class="decision-node" onclick="toggleDecision(this)">
1380
- <div class="decision-q"><span class="q-icon">&#10067;</span> Small feature, done in a few hours?</div>
1381
- <div class="decision-toggle">&#9660;</div>
1382
- </div>
1383
- <div class="decision-answer">
1384
- <div>&#8594; Use <code>/ck.plan.fast</code> &mdash; quick plan, no research needed</div>
1385
- <div class="answer-desc">Good for: adding a button, changing layout, small refactors</div>
1386
- </div>
1387
-
1388
- <div class="decision-node" onclick="toggleDecision(this)">
1389
- <div class="decision-q"><span class="q-icon">&#10067;</span> Medium feature, need to research first?</div>
1390
- <div class="decision-toggle">&#9660;</div>
1391
- </div>
1392
- <div class="decision-answer">
1393
- <div>&#8594; Use <code>/ck.plan.hard</code> &mdash; deep research, then plan</div>
1394
- <div class="answer-desc">Good for: integrating a new API, adding a big module</div>
1395
- </div>
1396
-
1397
- <div class="decision-node" onclick="toggleDecision(this)">
1398
- <div class="decision-q"><span class="q-icon">&#10067;</span> Complex feature, need clear requirements?</div>
1399
- <div class="decision-toggle">&#9660;</div>
1400
- </div>
1401
- <div class="decision-answer">
1402
- <div>&#8594; Use <code>/ck.spec.specify</code> &mdash; start the Spec-Driven workflow</div>
1403
- <div class="answer-desc">Good for: new systems, multi-day features, needs documentation</div>
1404
- </div>
1405
-
1406
- <div class="decision-node" onclick="toggleDecision(this)">
1407
- <div class="decision-q"><span class="q-icon">&#10067;</span> Not sure what to build, need ideas?</div>
1408
- <div class="decision-toggle">&#9660;</div>
1409
- </div>
1410
- <div class="decision-answer">
1411
- <div>&#8594; Use <code>/ck.brainstorm</code> &mdash; discuss different approaches</div>
1412
- <div class="answer-desc">Copilot will analyze pros and cons of each option</div>
1413
- </div>
1414
-
1415
- <div class="decision-node" onclick="toggleDecision(this)">
1416
- <div class="decision-q"><span class="q-icon">&#10067;</span> Need to run tests?</div>
1417
- <div class="decision-toggle">&#9660;</div>
1418
- </div>
1419
- <div class="decision-answer">
1420
- <div>&#8594; Use <code>/ck.test</code> &mdash; runs tests and explains results</div>
1421
- <div class="answer-desc">Works with both workflows (Quick and Spec-Driven)</div>
1422
- </div>
1423
-
1424
- <div class="decision-node" onclick="toggleDecision(this)">
1425
- <div class="decision-q"><span class="q-icon">&#10067;</span> Code messy? Want to clean it up?</div>
1426
- <div class="decision-toggle">&#9660;</div>
1427
- </div>
1428
- <div class="decision-answer">
1429
- <div>&#8594; Use <code>/ck.simplify</code> &mdash; simplifies and refines code for clarity</div>
1430
- <div class="answer-desc">Reduces nesting, improves naming, removes redundancy &mdash; without changing behavior</div>
1431
- </div>
1432
-
1433
- <div class="decision-node" onclick="toggleDecision(this)">
1434
- <div class="decision-q"><span class="q-icon">&#10067;</span> Need to commit and push code?</div>
1435
- <div class="decision-toggle">&#9660;</div>
1436
- </div>
1437
- <div class="decision-answer">
1438
- <div>&#8594; Use <code>/ck.git</code> &mdash; commit, push, create PR</div>
1439
- <div class="answer-desc">Auto-generates clean commit messages</div>
1440
- </div>
1441
- </div>
1442
- </section>
1443
-
1444
- <div class="divider"></div>
1445
-
1446
- <!-- ===== COMMAND FINDER FLOWCHART ===== -->
1447
- <section class="section" id="flowchart" style="max-width: 100%; padding: 60px 16px;">
1448
- <div class="section-header" style="max-width: 1200px; margin: 0 auto 48px;">
1449
- <div class="label">Visual Map</div>
1450
- <h2>Command Finder Flowchart</h2>
1451
- <p>Interactive diagram &mdash; click any node to see the path. Click command buttons at the top to trace routes.</p>
1452
- </div>
1453
-
1454
- <div class="cf-wrapper" style="background: var(--bg-surface); border: 1px solid var(--border); border-radius: 16px; overflow: hidden;">
1455
-
1456
- <!-- Command Finder: Command buttons bar -->
1457
- <div class="cf-cmd-bar" id="cfCmdBar"></div>
1458
-
1459
- <!-- Command Finder: SVG flowchart -->
1460
- <div class="cf-flowchart-wrap">
1461
- <svg id="cfFlowchart" viewBox="0 0 1500 1120"></svg>
1462
- </div>
1463
-
1464
- <!-- Command Finder: Tooltip -->
1465
- <div class="cf-tooltip" id="cfTooltip"></div>
1466
-
1467
- <!-- Command Finder: Info bar -->
1468
- <div class="cf-info-bar">
1469
- Click any node or edge to highlight the path. Press <kbd>Esc</kbd> or click background to reset.
1470
- </div>
1471
- </div>
1472
- </section>
1473
-
1474
- <style>
1475
- /* ===== COMMAND FINDER SCOPED STYLES ===== */
1476
- .cf-wrapper {
1477
- --node-decision: #1e3a5f;
1478
- --node-decision-stroke: #38bdf8;
1479
- --node-command: #1a2e1a;
1480
- --node-command-stroke: #34d399;
1481
- --node-start: #2d1b4e;
1482
- --node-start-stroke: #818cf8;
1483
- --edge-color: #475569;
1484
- --edge-active: #38bdf8;
1485
- --fade-opacity: 0.12;
1486
- }
1487
-
1488
- .cf-cmd-bar {
1489
- padding: 14px 24px;
1490
- border-bottom: 1px solid var(--border);
1491
- display: flex;
1492
- flex-wrap: wrap;
1493
- gap: 8px;
1494
- background: var(--bg-surface);
1495
- }
1496
- .cf-cmd-btn {
1497
- padding: 6px 14px;
1498
- font-size: 12px;
1499
- font-family: 'SF Mono', 'Fira Code', monospace;
1500
- background: transparent;
1501
- border: 1px solid var(--border);
1502
- color: var(--text-muted);
1503
- border-radius: 6px;
1504
- cursor: pointer;
1505
- transition: all 0.2s;
1506
- white-space: nowrap;
1507
- }
1508
- .cf-cmd-btn:hover {
1509
- border-color: var(--accent);
1510
- color: var(--accent);
1511
- background: rgba(56,189,248,0.08);
1512
- }
1513
- .cf-cmd-btn.active {
1514
- border-color: var(--accent);
1515
- color: var(--accent);
1516
- background: rgba(56,189,248,0.15);
1517
- box-shadow: 0 0 8px rgba(56,189,248,0.3);
1518
- }
1519
- .cf-cmd-btn-reset {
1520
- padding: 6px 14px;
1521
- font-size: 12px;
1522
- font-weight: 600;
1523
- background: transparent;
1524
- border: 1px solid var(--border);
1525
- color: var(--orange);
1526
- border-radius: 6px;
1527
- cursor: pointer;
1528
- transition: all 0.2s;
1529
- }
1530
- .cf-cmd-btn-reset:hover {
1531
- border-color: var(--orange);
1532
- background: rgba(251,146,60,0.1);
1533
- }
1534
-
1535
- .cf-flowchart-wrap {
1536
- overflow: auto;
1537
- padding: 16px;
1538
- display: flex;
1539
- justify-content: center;
1540
- min-height: 500px;
1541
- }
1542
- .cf-flowchart-wrap svg {
1543
- width: 100%;
1544
- height: auto;
1545
- min-height: 480px;
1546
- max-height: 85vh;
1547
- }
1548
-
1549
- .cf-wrapper svg text {
1550
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
1551
- user-select: none;
1552
- }
1553
-
1554
- .cf-wrapper .cf-node { cursor: pointer; transition: filter 0.25s, opacity 0.25s; }
1555
- .cf-wrapper .cf-node:hover { filter: drop-shadow(0 0 8px var(--accent)); }
1556
- .cf-wrapper .cf-node.faded { opacity: var(--fade-opacity); }
1557
- .cf-wrapper .cf-node.active { filter: drop-shadow(0 0 12px var(--accent)); }
1558
-
1559
- .cf-wrapper .cf-edge { transition: opacity 0.25s, stroke 0.25s; }
1560
- .cf-wrapper .cf-edge.faded { opacity: var(--fade-opacity); }
1561
- .cf-wrapper .cf-edge.active line, .cf-wrapper .cf-edge.active path, .cf-wrapper .cf-edge.active polyline {
1562
- stroke: var(--edge-active) !important;
1563
- stroke-width: 2.5 !important;
1564
- }
1565
- .cf-wrapper .cf-edge.active text { fill: var(--accent) !important; }
1566
-
1567
- .cf-tooltip {
1568
- position: fixed;
1569
- padding: 8px 12px;
1570
- background: var(--bg-surface);
1571
- border: 1px solid var(--border);
1572
- border-radius: 6px;
1573
- font-size: 12px;
1574
- color: var(--text);
1575
- pointer-events: none;
1576
- opacity: 0;
1577
- transition: opacity 0.15s;
1578
- z-index: 100;
1579
- max-width: 280px;
1580
- box-shadow: 0 4px 16px rgba(0,0,0,0.4);
1581
- }
1582
- .cf-tooltip.show { opacity: 1; }
1583
- .cf-tooltip code {
1584
- color: var(--green);
1585
- font-family: 'SF Mono', 'Fira Code', monospace;
1586
- font-size: 12px;
1587
- }
1588
-
1589
- .cf-info-bar {
1590
- padding: 10px 24px;
1591
- border-top: 1px solid var(--border);
1592
- font-size: 12px;
1593
- color: var(--text-muted);
1594
- background: var(--bg-surface);
1595
- text-align: center;
1596
- }
1597
- </style>
1598
-
1599
- <script>
1600
- (function() {
1601
- // ========== COMMAND FINDER DATA ==========
1602
- // Flow logic:
1603
- // New project? → bootstrap
1604
- // Fix bug? → know cause? Yes→fix, No→debug→fix
1605
- // Build feature? → need spec? No→plan→cook→test, Yes→spec flow, Unsure→brainstorm
1606
- // Explore? → scout→watzup
1607
- // Git? → git
1608
- // Test? → test→fix (if fail)
1609
- // Docs/review? → review | docs | preview
1610
- // Help? → help | ask | journal
1611
-
1612
- const CF_NODES = [
1613
- // Start
1614
- { id: 'start', text: 'What do you\nwant to do?', type: 'start', x: 60, y: 420 },
1615
-
1616
- // Level 1 decisions (logical order)
1617
- { id: 'q_new', text: 'New\nproject?', type: 'decision', x: 240, y: 80 },
1618
- { id: 'q_bug', text: 'Fix a\nbug?', type: 'decision', x: 240, y: 200 },
1619
- { id: 'q_feature', text: 'Build\nfeature?', type: 'decision', x: 240, y: 370 },
1620
- { id: 'q_explore', text: 'Explore\ncodebase?', type: 'decision', x: 240, y: 530 },
1621
- { id: 'q_git', text: 'Git\nops?', type: 'decision', x: 240, y: 630 },
1622
- { id: 'q_test', text: 'Run\ntests?', type: 'decision', x: 240, y: 730 },
1623
- { id: 'q_docs', text: 'Code quality\nor docs?', type: 'decision', x: 240, y: 840 },
1624
- { id: 'q_help', text: 'Need\nhelp?', type: 'decision', x: 240, y: 1000 },
1625
-
1626
- // New project
1627
- { id: 'c_bootstrap', text: '/ck.bootstrap', type: 'command', x: 480, y: 80, desc: 'Start a new project from scratch' },
1628
-
1629
- // Bug fix branch
1630
- { id: 'q_knowcause', text: 'Know the\ncause?', type: 'decision', x: 480, y: 200 },
1631
- { id: 'c_fix', text: '/ck.fix', type: 'command', x: 700, y: 160, desc: 'Analyze and fix bugs, errors, issues' },
1632
- { id: 'c_debug', text: '/ck.debug', type: 'command', x: 700, y: 240, desc: 'Systematic root cause analysis' },
1633
-
1634
- // Feature branch
1635
- { id: 'q_formal', text: 'Need formal\nrequirements?', type: 'decision', x: 480, y: 370 },
1636
- { id: 'c_brainstorm', text: '/ck.brainstorm', type: 'command', x: 700, y: 300, desc: 'Collaborative ideation with expert advice' },
1637
- { id: 'c_plan', text: '/ck.plan', type: 'command', x: 700, y: 370, desc: 'Create implementation plan (auto-detect complexity)' },
1638
- { id: 'c_cook', text: '/ck.cook', type: 'command', x: 880, y: 370, desc: 'Smart feature implementation from plan or task' },
1639
- { id: 'c_test_after', text: '/ck.test', type: 'command', x: 1040, y: 370, desc: 'Run tests after implementation' },
1640
-
1641
- // Spec-driven flow
1642
- { id: 'c_spec_specify', text: '/ck.spec.specify', type: 'command', x: 700, y: 450, desc: 'Create formal specification from idea' },
1643
- { id: 'c_spec_clarify', text: '/ck.spec.clarify', type: 'command', x: 880, y: 450, desc: 'Ask clarification questions about spec' },
1644
- { id: 'c_spec_plan', text: '/ck.spec.plan', type: 'command', x: 1040, y: 450, desc: 'Generate plan from specification' },
1645
- { id: 'c_spec_tasks', text: '/ck.spec.tasks', type: 'command', x: 1200, y: 450, desc: 'Break plan into executable tasks' },
1646
- { id: 'c_spec_implement',text: '/ck.spec.implement', type: 'command', x: 1380, y: 450, desc: 'Execute tasks from spec plan' },
1647
-
1648
- // Spec extras
1649
- { id: 'c_spec_analyze', text: '/ck.spec.analyze', type: 'command', x: 1040, y: 525, desc: 'Check specification consistency' },
1650
- { id: 'c_spec_checklist', text: '/ck.spec.checklist', type: 'command', x: 1200, y: 525, desc: 'Validate all requirements covered' },
1651
- { id: 'c_spec_issues', text: '/ck.spec.taskstoissues', type: 'command', x: 1380, y: 525, desc: 'Export tasks to GitHub Issues' },
1652
-
1653
- // Explore
1654
- { id: 'c_scout', text: '/ck.scout', type: 'command', x: 480, y: 530, desc: 'Fast codebase search and exploration' },
1655
- { id: 'c_watzup', text: '/ck.watzup', type: 'command', x: 650, y: 530, desc: 'Review recent changes in current branch' },
1656
-
1657
- // Git
1658
- { id: 'c_git', text: '/ck.git', type: 'command', x: 480, y: 630, desc: 'Git operations: commit, push, PR, merge' },
1659
-
1660
- // Test (standalone)
1661
- { id: 'c_test', text: '/ck.test', type: 'command', x: 480, y: 730, desc: 'Run and analyze tests' },
1662
-
1663
- // Docs/Review/Simplify
1664
- { id: 'q_doctype', text: 'What\ntype?', type: 'decision', x: 480, y: 840 },
1665
- { id: 'c_review', text: '/ck.review', type: 'command', x: 700, y: 780, desc: 'Code review and quality check' },
1666
- { id: 'c_simplify', text: '/ck.simplify', type: 'command', x: 700, y: 830, desc: 'Simplify & refine code for clarity' },
1667
- { id: 'c_docs', text: '/ck.docs', type: 'command', x: 700, y: 880, desc: 'Generate/update project documentation' },
1668
- { id: 'c_preview', text: '/ck.preview', type: 'command', x: 700, y: 930, desc: 'Preview markdown files and plans visually' },
1669
-
1670
- // Help
1671
- { id: 'q_helptype', text: 'What\nkind?', type: 'decision', x: 480, y: 1000 },
1672
- { id: 'c_help', text: '/ck.help', type: 'command', x: 700, y: 960, desc: 'Interactive CoKit help and guidance' },
1673
- { id: 'c_ask', text: '/ck.ask', type: 'command', x: 700, y: 1000, desc: 'Technical & architectural questions' },
1674
- { id: 'c_journal', text: '/ck.journal', type: 'command', x: 700, y: 1040, desc: 'Write development journal entries' },
1675
- ];
1676
-
1677
- const CF_EDGES = [
1678
- // Start → all questions
1679
- { from: 'start', to: 'q_new', label: '' },
1680
- { from: 'start', to: 'q_bug', label: '' },
1681
- { from: 'start', to: 'q_feature', label: '' },
1682
- { from: 'start', to: 'q_explore', label: '' },
1683
- { from: 'start', to: 'q_git', label: '' },
1684
- { from: 'start', to: 'q_test', label: '' },
1685
- { from: 'start', to: 'q_docs', label: '' },
1686
- { from: 'start', to: 'q_help', label: '' },
1687
-
1688
- // New project
1689
- { from: 'q_new', to: 'c_bootstrap', label: 'Yes' },
1690
-
1691
- // Bug fix: know cause? → fix or debug→fix
1692
- { from: 'q_bug', to: 'q_knowcause', label: 'Yes' },
1693
- { from: 'q_knowcause', to: 'c_fix', label: 'Yes' },
1694
- { from: 'q_knowcause', to: 'c_debug', label: 'No' },
1695
- { from: 'c_debug', to: 'c_fix', label: 'Then\nfix' },
1696
-
1697
- // Feature: need formal spec?
1698
- { from: 'q_feature', to: 'q_formal', label: 'Yes' },
1699
- { from: 'q_formal', to: 'c_brainstorm', label: 'Unsure' },
1700
- { from: 'q_formal', to: 'c_plan', label: 'No' },
1701
- { from: 'c_plan', to: 'c_cook', label: '' },
1702
- { from: 'c_cook', to: 'c_test_after', label: '' },
1703
-
1704
- // Spec-driven flow
1705
- { from: 'q_formal', to: 'c_spec_specify', label: 'Yes' },
1706
- { from: 'c_spec_specify', to: 'c_spec_clarify', label: '' },
1707
- { from: 'c_spec_clarify', to: 'c_spec_plan', label: '' },
1708
- { from: 'c_spec_plan', to: 'c_spec_tasks', label: '' },
1709
- { from: 'c_spec_tasks', to: 'c_spec_implement', label: '' },
1710
- { from: 'c_spec_plan', to: 'c_spec_analyze', label: '' },
1711
- { from: 'c_spec_tasks', to: 'c_spec_checklist', label: '' },
1712
- { from: 'c_spec_tasks', to: 'c_spec_issues', label: '' },
1713
-
1714
- // Explore
1715
- { from: 'q_explore', to: 'c_scout', label: 'Yes' },
1716
- { from: 'c_scout', to: 'c_watzup', label: 'Recent\nchanges?' },
1717
-
1718
- // Git
1719
- { from: 'q_git', to: 'c_git', label: 'Yes' },
1720
-
1721
- // Test (standalone)
1722
- { from: 'q_test', to: 'c_test', label: 'Yes' },
1723
-
1724
- // Docs/Review
1725
- { from: 'q_docs', to: 'q_doctype', label: 'Yes' },
1726
- { from: 'q_doctype', to: 'c_review', label: 'Review' },
1727
- { from: 'q_doctype', to: 'c_simplify', label: 'Simplify' },
1728
- { from: 'q_doctype', to: 'c_docs', label: 'Docs' },
1729
- { from: 'q_doctype', to: 'c_preview', label: 'Preview' },
1730
-
1731
- // Help
1732
- { from: 'q_help', to: 'q_helptype', label: 'Yes' },
1733
- { from: 'q_helptype', to: 'c_help', label: 'CoKit' },
1734
- { from: 'q_helptype', to: 'c_ask', label: 'Tech' },
1735
- { from: 'q_helptype', to: 'c_journal', label: 'Journal' },
1736
- ];
1737
-
1738
- // ========== NODE DIMENSIONS ==========
1739
- const DECISION_SIZE = 55;
1740
- const CMD_W = 130;
1741
- const CMD_H = 32;
1742
- const START_W = 140;
1743
- const START_H = 50;
1744
-
1745
- // ========== ADJACENCY FOR PATH TRACING ==========
1746
- const adjForward = {};
1747
- const adjBackward = {};
1748
- CF_EDGES.forEach(function(e) {
1749
- if (!adjForward[e.from]) adjForward[e.from] = [];
1750
- adjForward[e.from].push(e.to);
1751
- if (!adjBackward[e.to]) adjBackward[e.to] = [];
1752
- adjBackward[e.to].push(e.from);
1753
- });
1754
-
1755
- function tracePathTo(nodeId) {
1756
- var path = new Set();
1757
- var edgesInPath = new Set();
1758
- function walkBack(id) {
1759
- if (path.has(id)) return;
1760
- path.add(id);
1761
- var parents = adjBackward[id] || [];
1762
- parents.forEach(function(pid) {
1763
- edgesInPath.add(pid + '->' + id);
1764
- walkBack(pid);
1765
- });
1766
- }
1767
- walkBack(nodeId);
1768
- function walkForward(id, depth) {
1769
- if (depth > 6) return;
1770
- var children = adjForward[id] || [];
1771
- children.forEach(function(cid) {
1772
- path.add(cid);
1773
- edgesInPath.add(id + '->' + cid);
1774
- walkForward(cid, depth + 1);
1775
- });
1776
- }
1777
- walkForward(nodeId, 0);
1778
- return { nodes: path, edges: edgesInPath };
1779
- }
1780
-
1781
- // ========== SVG RENDERING ==========
1782
- var svg = document.getElementById('cfFlowchart');
1783
- var NS = 'http://www.w3.org/2000/svg';
1784
-
1785
- function svgEl(tag, attrs) {
1786
- var el = document.createElementNS(NS, tag);
1787
- if (attrs) Object.keys(attrs).forEach(function(k) { el.setAttribute(k, attrs[k]); });
1788
- return el;
1789
- }
1790
-
1791
- // Arrow markers
1792
- var defs = svgEl('defs');
1793
- var marker = svgEl('marker', {
1794
- id: 'cf-arrow', viewBox: '0 0 10 10', refX: '10', refY: '5',
1795
- markerWidth: '6', markerHeight: '6', orient: 'auto-start-reverse', fill: 'var(--edge-color)'
1796
- });
1797
- marker.appendChild(svgEl('path', { d: 'M 0 0 L 10 5 L 0 10 z' }));
1798
- defs.appendChild(marker);
1799
-
1800
- var markerActive = svgEl('marker', {
1801
- id: 'cf-arrow-active', viewBox: '0 0 10 10', refX: '10', refY: '5',
1802
- markerWidth: '6', markerHeight: '6', orient: 'auto-start-reverse', fill: 'var(--edge-active)'
1803
- });
1804
- markerActive.appendChild(svgEl('path', { d: 'M 0 0 L 10 5 L 0 10 z' }));
1805
- defs.appendChild(markerActive);
1806
- svg.appendChild(defs);
1807
-
1808
- // Layers
1809
- var edgeLayer = svgEl('g', { id: 'cf-edges' });
1810
- var nodeLayer = svgEl('g', { id: 'cf-nodes' });
1811
- svg.appendChild(edgeLayer);
1812
- svg.appendChild(nodeLayer);
1813
-
1814
- // Node connection points
1815
- function getNodeRight(n) {
1816
- if (n.type === 'decision') return { x: n.x + DECISION_SIZE, y: n.y };
1817
- if (n.type === 'start') return { x: n.x + START_W / 2, y: n.y };
1818
- return { x: n.x + CMD_W / 2, y: n.y };
1819
- }
1820
- function getNodeLeft(n) {
1821
- if (n.type === 'decision') return { x: n.x - DECISION_SIZE, y: n.y };
1822
- if (n.type === 'start') return { x: n.x - START_W / 2, y: n.y };
1823
- return { x: n.x - CMD_W / 2, y: n.y };
1824
- }
1825
-
1826
- // Draw edges
1827
- var edgeElements = {};
1828
- var nodeMap = {};
1829
- CF_NODES.forEach(function(n) { nodeMap[n.id] = n; });
1830
-
1831
- CF_EDGES.forEach(function(e) {
1832
- var fromN = nodeMap[e.from];
1833
- var toN = nodeMap[e.to];
1834
- if (!fromN || !toN) return;
1835
-
1836
- var g = svgEl('g', { class: 'cf-edge', 'data-edge': e.from + '->' + e.to });
1837
- var fp = getNodeRight(fromN);
1838
- var tp = getNodeLeft(toN);
1839
- var dx = tp.x - fp.x;
1840
- var dy = tp.y - fp.y;
1841
- var d;
1842
-
1843
- if (Math.abs(dy) < 10) {
1844
- d = 'M ' + fp.x + ' ' + fp.y + ' L ' + tp.x + ' ' + tp.y;
1845
- } else {
1846
- var cx1 = fp.x + dx * 0.4;
1847
- var cx2 = tp.x - dx * 0.4;
1848
- d = 'M ' + fp.x + ' ' + fp.y + ' C ' + cx1 + ' ' + fp.y + ', ' + cx2 + ' ' + tp.y + ', ' + tp.x + ' ' + tp.y;
1849
- }
1850
-
1851
- var path = svgEl('path', {
1852
- d: d, fill: 'none', stroke: 'var(--edge-color)',
1853
- 'stroke-width': '1.5', 'marker-end': 'url(#cf-arrow)'
1854
- });
1855
- g.appendChild(path);
1856
-
1857
- if (e.label) {
1858
- var mx = (fp.x + tp.x) / 2;
1859
- var my = (fp.y + tp.y) / 2 - 8;
1860
- var lines = e.label.split('\n');
1861
- lines.forEach(function(line, i) {
1862
- var txt = svgEl('text', {
1863
- x: mx, y: my + i * 13,
1864
- 'text-anchor': 'middle', 'font-size': '10', fill: 'var(--text-muted)'
1865
- });
1866
- txt.textContent = line;
1867
- g.appendChild(txt);
1868
- });
1869
- }
1870
-
1871
- g.addEventListener('click', function(ev) {
1872
- ev.stopPropagation();
1873
- highlightNode(e.to);
1874
- });
1875
-
1876
- edgeLayer.appendChild(g);
1877
- edgeElements[e.from + '->' + e.to] = g;
1878
- });
1879
-
1880
- // Draw nodes
1881
- var nodeElements = {};
1882
-
1883
- CF_NODES.forEach(function(n) {
1884
- var g = svgEl('g', { class: 'cf-node', 'data-node': n.id });
1885
-
1886
- if (n.type === 'start') {
1887
- var rect = svgEl('rect', {
1888
- x: n.x - START_W / 2, y: n.y - START_H / 2,
1889
- width: START_W, height: START_H, rx: '25', ry: '25',
1890
- fill: 'var(--node-start)', stroke: 'var(--node-start-stroke)', 'stroke-width': '2'
1891
- });
1892
- g.appendChild(rect);
1893
- var lines = n.text.split('\n');
1894
- lines.forEach(function(line, i) {
1895
- var txt = svgEl('text', {
1896
- x: n.x, y: n.y + (i - (lines.length - 1) / 2) * 16,
1897
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
1898
- 'font-size': '13', 'font-weight': '600', fill: 'var(--accent2)'
1899
- });
1900
- txt.textContent = line;
1901
- g.appendChild(txt);
1902
- });
1903
-
1904
- } else if (n.type === 'decision') {
1905
- var s = DECISION_SIZE;
1906
- var poly = svgEl('polygon', {
1907
- points: n.x + ',' + (n.y - s) + ' ' + (n.x + s) + ',' + n.y + ' ' + n.x + ',' + (n.y + s) + ' ' + (n.x - s) + ',' + n.y,
1908
- fill: 'var(--node-decision)', stroke: 'var(--node-decision-stroke)', 'stroke-width': '1.5'
1909
- });
1910
- g.appendChild(poly);
1911
- var lines = n.text.split('\n');
1912
- lines.forEach(function(line, i) {
1913
- var txt = svgEl('text', {
1914
- x: n.x, y: n.y + (i - (lines.length - 1) / 2) * 14,
1915
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
1916
- 'font-size': '11', 'font-weight': '500', fill: 'var(--accent)'
1917
- });
1918
- txt.textContent = line;
1919
- g.appendChild(txt);
1920
- });
1921
-
1922
- } else {
1923
- var rect = svgEl('rect', {
1924
- x: n.x - CMD_W / 2, y: n.y - CMD_H / 2,
1925
- width: CMD_W, height: CMD_H, rx: '6', ry: '6',
1926
- fill: 'var(--node-command)', stroke: 'var(--node-command-stroke)', 'stroke-width': '1.5'
1927
- });
1928
- g.appendChild(rect);
1929
- var txt = svgEl('text', {
1930
- x: n.x, y: n.y,
1931
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
1932
- 'font-size': '11', 'font-weight': '600', fill: 'var(--green)',
1933
- 'font-family': "'SF Mono', 'Fira Code', monospace"
1934
- });
1935
- txt.textContent = n.text;
1936
- g.appendChild(txt);
1937
- }
1938
-
1939
- g.addEventListener('click', function(ev) {
1940
- ev.stopPropagation();
1941
- highlightNode(n.id);
1942
- });
1943
-
1944
- if (n.desc) {
1945
- g.addEventListener('mouseenter', function(ev) { cfShowTooltip(ev, n); });
1946
- g.addEventListener('mousemove', function(ev) { cfMoveTooltip(ev); });
1947
- g.addEventListener('mouseleave', cfHideTooltip);
1948
- }
1949
-
1950
- nodeLayer.appendChild(g);
1951
- nodeElements[n.id] = g;
1952
- });
1953
-
1954
- // ========== INTERACTION ==========
1955
- var activeHighlight = null;
1956
-
1957
- function clearHighlight() {
1958
- activeHighlight = null;
1959
- Object.values(nodeElements).forEach(function(el) { el.classList.remove('faded', 'active'); });
1960
- Object.values(edgeElements).forEach(function(el) {
1961
- el.classList.remove('faded', 'active');
1962
- var p = el.querySelector('path');
1963
- if (p) p.setAttribute('marker-end', 'url(#cf-arrow)');
1964
- });
1965
- document.querySelectorAll('.cf-cmd-btn').forEach(function(b) { b.classList.remove('active'); });
1966
- }
1967
-
1968
- function highlightNode(nodeId) {
1969
- if (activeHighlight === nodeId) { clearHighlight(); return; }
1970
- activeHighlight = nodeId;
1971
-
1972
- var result = tracePathTo(nodeId);
1973
- var nodes = result.nodes;
1974
- var edges = result.edges;
1975
-
1976
- Object.keys(nodeElements).forEach(function(id) {
1977
- var el = nodeElements[id];
1978
- if (nodes.has(id)) { el.classList.remove('faded'); el.classList.add('active'); }
1979
- else { el.classList.add('faded'); el.classList.remove('active'); }
1980
- });
1981
- Object.keys(edgeElements).forEach(function(key) {
1982
- var el = edgeElements[key];
1983
- if (edges.has(key)) {
1984
- el.classList.remove('faded'); el.classList.add('active');
1985
- var p = el.querySelector('path');
1986
- if (p) p.setAttribute('marker-end', 'url(#cf-arrow-active)');
1987
- } else {
1988
- el.classList.add('faded'); el.classList.remove('active');
1989
- var p = el.querySelector('path');
1990
- if (p) p.setAttribute('marker-end', 'url(#cf-arrow)');
1991
- }
1992
- });
1993
-
1994
- document.querySelectorAll('.cf-cmd-btn').forEach(function(b) {
1995
- b.classList.toggle('active', b.dataset.cmd === nodeId);
1996
- });
1997
- }
1998
-
1999
- // Background click to reset
2000
- svg.addEventListener('click', clearHighlight);
2001
- document.addEventListener('keydown', function(e) { if (e.key === 'Escape') clearHighlight(); });
2002
-
2003
- // ========== COMMAND BUTTONS ==========
2004
- var cmdBar = document.getElementById('cfCmdBar');
2005
- var commandNodes = CF_NODES.filter(function(n) { return n.type === 'command'; });
2006
-
2007
- var resetBtn = document.createElement('button');
2008
- resetBtn.className = 'cf-cmd-btn-reset';
2009
- resetBtn.textContent = 'Reset';
2010
- resetBtn.addEventListener('click', clearHighlight);
2011
- cmdBar.appendChild(resetBtn);
2012
-
2013
- commandNodes.forEach(function(n) {
2014
- var btn = document.createElement('button');
2015
- btn.className = 'cf-cmd-btn';
2016
- btn.textContent = n.text;
2017
- btn.dataset.cmd = n.id;
2018
- btn.addEventListener('click', function() { highlightNode(n.id); });
2019
- cmdBar.appendChild(btn);
2020
- });
2021
-
2022
- // ========== TOOLTIP ==========
2023
- var tooltipEl = document.getElementById('cfTooltip');
2024
-
2025
- function cfShowTooltip(ev, node) {
2026
- tooltipEl.innerHTML = '<code>' + node.text + '</code><br>' + node.desc;
2027
- tooltipEl.classList.add('show');
2028
- cfMoveTooltip(ev);
2029
- }
2030
- function cfMoveTooltip(ev) {
2031
- tooltipEl.style.left = (ev.clientX + 12) + 'px';
2032
- tooltipEl.style.top = (ev.clientY + 12) + 'px';
2033
- }
2034
- function cfHideTooltip() {
2035
- tooltipEl.classList.remove('show');
2036
- }
2037
- })();
2038
- </script>
2039
-
2040
- <div class="divider"></div>
2041
-
2042
- <!-- ===== COMMAND DEEP DIVE ===== -->
2043
- <section class="section" id="deepdive" style="max-width: 100%; padding: 60px 16px;">
2044
- <div class="section-header" style="max-width: 1200px; margin: 0 auto 48px;">
2045
- <div class="label">Under the Hood</div>
2046
- <h2>Command Deep Dive</h2>
2047
- <p>See what happens inside <strong>GitHub Copilot</strong> when you run a CoKit command &mdash; which agents, skills, and tools Copilot triggers.</p>
2048
- </div>
2049
-
2050
- <!-- Command selector tabs -->
2051
- <div class="dd-selector" id="ddSelector">
2052
- <button class="dd-tab active" data-cmd="cook" onclick="ddSwitchCmd('cook')">&#127859; /ck.cook</button>
2053
- <button class="dd-tab" data-cmd="fix" onclick="ddSwitchCmd('fix')">&#128295; /ck.fix</button>
2054
- <button class="dd-tab" data-cmd="plan" onclick="ddSwitchCmd('plan')">&#128203; /ck.plan</button>
2055
- <button class="dd-tab" data-cmd="test" onclick="ddSwitchCmd('test')">&#129514; /ck.test</button>
2056
- <button class="dd-tab" data-cmd="review" onclick="ddSwitchCmd('review')">&#128269; /ck.review</button>
2057
- <button class="dd-tab" data-cmd="debug" onclick="ddSwitchCmd('debug')">&#128375; /ck.debug</button>
2058
- </div>
2059
-
2060
- <!-- Pipeline container (shared) -->
2061
- <div class="dd-pipeline" id="dd-pipeline">
2062
-
2063
- <!-- Pipeline header -->
2064
- <div class="dd-header">
2065
- <div class="dd-title" id="ddPipeTitle">/ck.cook &mdash; Smart Feature Implementation</div>
2066
- <div class="dd-subtitle">How Copilot processes your request using CoKit resources. Click any phase to see details.</div>
2067
- </div>
2068
-
2069
- <!-- Mode bar (only for cook) -->
2070
- <div class="dd-modes" id="ddModes">
2071
- <div class="dd-mode-label">Modes:</div>
2072
- <button class="dd-mode active" data-mode="interactive">Interactive</button>
2073
- <button class="dd-mode" data-mode="fast">Fast</button>
2074
- <button class="dd-mode" data-mode="auto">Auto</button>
2075
- <button class="dd-mode" data-mode="parallel">Parallel</button>
2076
- <button class="dd-mode" data-mode="code">Code</button>
2077
- </div>
2078
-
2079
- <!-- SVG Pipeline -->
2080
- <div class="dd-svg-wrap">
2081
- <svg id="ddPipeline" viewBox="0 0 1500 520"></svg>
2082
- </div>
2083
-
2084
- <!-- Detail panel (shows on click) -->
2085
- <div class="dd-detail" id="ddDetail">
2086
- <div class="dd-detail-title" id="ddDetailTitle">Click a phase to see details</div>
2087
- <div class="dd-detail-body" id="ddDetailBody">
2088
- <div class="dd-detail-placeholder">Each phase triggers specific agents, skills, and VS Code tools. Click any phase node above to explore.</div>
2089
- </div>
2090
- </div>
2091
-
2092
- <!-- Legend -->
2093
- <div class="dd-legend">
2094
- <span class="dd-legend-item"><span class="dd-dot" style="background: var(--accent2);"></span> Phase</span>
2095
- <span class="dd-legend-item"><span class="dd-dot" style="background: var(--accent);"></span> Agent</span>
2096
- <span class="dd-legend-item"><span class="dd-dot" style="background: var(--green);"></span> Skill</span>
2097
- <span class="dd-legend-item"><span class="dd-dot" style="background: var(--orange);"></span> VS Code Tool</span>
2098
- <span class="dd-legend-item"><span class="dd-dot" style="background: var(--pink);"></span> Review Gate</span>
2099
- </div>
2100
- </div>
2101
- </section>
2102
-
2103
- <style>
2104
- /* ===== DEEP DIVE STYLES ===== */
2105
- .dd-selector {
2106
- display: flex;
2107
- justify-content: center;
2108
- gap: 8px;
2109
- margin-bottom: 24px;
2110
- flex-wrap: wrap;
2111
- }
2112
- .dd-tab {
2113
- padding: 8px 20px;
2114
- font-size: 14px;
2115
- font-weight: 600;
2116
- font-family: 'SF Mono', 'Fira Code', monospace;
2117
- background: var(--bg-surface);
2118
- border: 1px solid var(--border);
2119
- color: var(--text-muted);
2120
- border-radius: 8px;
2121
- cursor: pointer;
2122
- transition: all 0.2s;
2123
- }
2124
- .dd-tab:hover { border-color: var(--accent); color: var(--accent); }
2125
- .dd-tab.active {
2126
- border-color: var(--accent);
2127
- color: var(--accent);
2128
- background: rgba(56,189,248,0.1);
2129
- box-shadow: 0 0 12px rgba(56,189,248,0.2);
2130
- }
2131
-
2132
- .dd-pipeline {
2133
- background: var(--bg-surface);
2134
- border: 1px solid var(--border);
2135
- border-radius: 16px;
2136
- overflow: hidden;
2137
- max-width: 1400px;
2138
- margin: 0 auto;
2139
- }
2140
- .dd-header {
2141
- padding: 20px 24px 0;
2142
- text-align: center;
2143
- }
2144
- .dd-title {
2145
- font-size: 18px;
2146
- font-weight: 700;
2147
- color: var(--text);
2148
- }
2149
- .dd-subtitle {
2150
- font-size: 13px;
2151
- color: var(--text-muted);
2152
- margin-top: 4px;
2153
- }
2154
-
2155
- .dd-modes {
2156
- display: flex;
2157
- align-items: center;
2158
- justify-content: center;
2159
- gap: 6px;
2160
- padding: 16px 24px 8px;
2161
- flex-wrap: wrap;
2162
- }
2163
- .dd-mode-label {
2164
- font-size: 12px;
2165
- color: var(--text-dim);
2166
- font-weight: 600;
2167
- margin-right: 4px;
2168
- }
2169
- .dd-mode {
2170
- padding: 4px 12px;
2171
- font-size: 11px;
2172
- font-weight: 600;
2173
- background: transparent;
2174
- border: 1px solid var(--border);
2175
- color: var(--text-muted);
2176
- border-radius: 4px;
2177
- cursor: pointer;
2178
- transition: all 0.2s;
2179
- font-family: inherit;
2180
- }
2181
- .dd-mode:hover { border-color: var(--accent2); color: var(--accent2); }
2182
- .dd-mode.active {
2183
- border-color: var(--accent2);
2184
- color: var(--accent2);
2185
- background: rgba(129,140,248,0.12);
2186
- }
2187
-
2188
- .dd-svg-wrap {
2189
- padding: 16px;
2190
- overflow-x: auto;
2191
- display: flex;
2192
- justify-content: center;
2193
- }
2194
- .dd-svg-wrap svg {
2195
- width: 100%;
2196
- height: auto;
2197
- min-height: 300px;
2198
- }
2199
- .dd-svg-wrap svg text {
2200
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
2201
- user-select: none;
2202
- }
2203
-
2204
- .dd-phase { cursor: pointer; transition: filter 0.2s, opacity 0.2s; }
2205
- .dd-phase:hover { filter: drop-shadow(0 0 10px var(--accent2)); }
2206
- .dd-phase.active { filter: drop-shadow(0 0 14px var(--accent2)); }
2207
- .dd-phase.faded { opacity: 0.2; }
2208
- .dd-phase.skipped { opacity: 0.15; }
2209
- .dd-phase.skipped rect, .dd-phase.skipped polygon { stroke-dasharray: 6 4; }
2210
-
2211
- .dd-arrow { transition: opacity 0.2s; }
2212
- .dd-arrow.faded { opacity: 0.15; }
2213
-
2214
- .dd-sub-node { transition: opacity 0.3s, transform 0.3s; }
2215
-
2216
- .dd-detail {
2217
- margin: 0 24px 16px;
2218
- background: rgba(0,0,0,0.25);
2219
- border: 1px solid var(--border);
2220
- border-radius: 12px;
2221
- padding: 20px 24px;
2222
- min-height: 80px;
2223
- transition: all 0.3s;
2224
- }
2225
- .dd-detail-title {
2226
- font-size: 15px;
2227
- font-weight: 700;
2228
- color: var(--accent);
2229
- margin-bottom: 12px;
2230
- }
2231
- .dd-detail-body { font-size: 13px; color: var(--text-muted); line-height: 1.7; }
2232
- .dd-detail-placeholder { font-style: italic; color: var(--text-dim); }
2233
- .dd-detail-body .dd-agent { color: var(--accent); font-weight: 600; }
2234
- .dd-detail-body .dd-skill { color: var(--green); font-weight: 600; }
2235
- .dd-detail-body .dd-tool { color: var(--orange); font-weight: 600; }
2236
- .dd-detail-body .dd-gate { color: var(--pink); font-weight: 600; }
2237
- .dd-detail-body code {
2238
- font-family: 'SF Mono', 'Fira Code', monospace;
2239
- font-size: 12px;
2240
- color: var(--green);
2241
- background: rgba(52,211,153,0.1);
2242
- padding: 1px 6px;
2243
- border-radius: 3px;
2244
- }
2245
- .dd-detail-grid {
2246
- display: grid;
2247
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
2248
- gap: 12px;
2249
- margin-top: 12px;
2250
- }
2251
- .dd-detail-card {
2252
- background: rgba(0,0,0,0.2);
2253
- border: 1px solid var(--border);
2254
- border-radius: 8px;
2255
- padding: 12px;
2256
- }
2257
- .dd-detail-card h5 {
2258
- font-size: 11px;
2259
- text-transform: uppercase;
2260
- letter-spacing: 1px;
2261
- margin-bottom: 6px;
2262
- }
2263
- .dd-detail-card ul { list-style: none; padding: 0; }
2264
- .dd-detail-card li { font-size: 12px; padding: 2px 0; }
2265
-
2266
- .dd-legend {
2267
- display: flex;
2268
- justify-content: center;
2269
- gap: 16px;
2270
- padding: 12px 24px;
2271
- border-top: 1px solid var(--border);
2272
- font-size: 11px;
2273
- color: var(--text-dim);
2274
- flex-wrap: wrap;
2275
- }
2276
- .dd-legend-item { display: flex; align-items: center; gap: 4px; }
2277
- .dd-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
2278
- </style>
2279
-
2280
- <script>
2281
- (function() {
2282
- // ========== ALL PIPELINE DATA ==========
2283
- var DD_COMMANDS = {
2284
- cook: {
2285
- title: '/ck.cook — Smart Feature Implementation',
2286
- hasModes: true,
2287
- phases: [
2288
- {
2289
- id: 'detect', label: 'Intent\nDetect', x: 80, color: 'var(--accent2)',
2290
- desc: 'Analyzes your input to pick the right workflow mode.',
2291
- agents: [], skills: ['cook (intent-detection)'], tools: [],
2292
- detail: 'Reads your input and matches patterns:<br>- Plan path → <strong>code</strong> mode<br>- "fast" / "quick" → <strong>fast</strong> mode<br>- "trust me" / "auto" → <strong>auto</strong> mode<br>- 3+ features → <strong>parallel</strong> mode<br>- Default → <strong>interactive</strong> mode',
2293
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: true }
2294
- },
2295
- {
2296
- id: 'scout', label: 'Scout', x: 220, color: 'var(--accent)',
2297
- desc: 'Scans codebase to find relevant files.',
2298
- agents: ['scout'], skills: [], tools: ['search/codebase', 'search/changes'],
2299
- detail: '<span class="dd-agent">@scout</span> agent uses parallel search to locate all files related to your task.<br>Output: file list + architecture context for the planner.',
2300
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: false }
2301
- },
2302
- {
2303
- id: 'research', label: 'Research', x: 360, color: 'var(--accent)',
2304
- desc: 'Gathers technical context from docs and web.',
2305
- agents: ['researcher'], skills: ['docs-seeker', 'research'], tools: ['web/fetch', 'search/codebase'],
2306
- detail: '<span class="dd-agent">@researcher</span> agents run in parallel to gather info.<br>Uses <span class="dd-skill">docs-seeker</span> (context7) + web search.<br>Output: research report for planner.',
2307
- modes: { interactive: true, fast: false, auto: true, parallel: true, code: false }
2308
- },
2309
- {
2310
- id: 'review1', label: 'Review', x: 470, color: 'var(--pink)', type: 'gate',
2311
- desc: 'Human review gate: approve research findings.',
2312
- agents: [], skills: [], tools: [],
2313
- detail: '<span class="dd-gate">Review Gate</span>: You review research findings before planning begins.<br>In <strong>auto</strong> mode: skipped if quality score ≥ 9.5',
2314
- modes: { interactive: true, fast: false, auto: 'auto', parallel: true, code: false }
2315
- },
2316
- {
2317
- id: 'plan', label: 'Plan', x: 580, color: 'var(--accent)',
2318
- desc: 'Creates implementation plan with phases.',
2319
- agents: ['planner'], skills: ['planning', 'sequential-thinking'], tools: ['search/codebase', 'web/fetch'],
2320
- detail: '<span class="dd-agent">@planner</span> creates a detailed plan:<br>- Phase breakdown with TODO tasks<br>- Uses <span class="dd-skill">planning</span> + <span class="dd-skill">sequential-thinking</span> skills<br>- Saves to <code>plans/</code> directory',
2321
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: false }
2322
- },
2323
- {
2324
- id: 'review2', label: 'Review', x: 690, color: 'var(--pink)', type: 'gate',
2325
- desc: 'Human review gate: approve plan before coding.',
2326
- agents: [], skills: [], tools: [],
2327
- detail: '<span class="dd-gate">Review Gate</span>: You approve the plan before implementation starts.<br>In <strong>auto</strong> mode: auto-approved if score ≥ 9.5',
2328
- modes: { interactive: true, fast: true, auto: 'auto', parallel: true, code: false }
2329
- },
2330
- {
2331
- id: 'implement', label: 'Implement', x: 800, color: 'var(--green)',
2332
- desc: 'Writes the actual code, phase by phase.',
2333
- agents: ['fullstack-developer', 'ui-ux-designer'], skills: ['cook', 'frontend-dev', 'backend-dev'], tools: ['edit', 'create', 'runInTerminal'],
2334
- detail: 'Copilot writes code following the plan:<br>- <span class="dd-agent">@fullstack-developer</span> executes phases (parallel in parallel mode)<br>- <span class="dd-agent">@ui-ux-designer</span> for UI work<br>- Uses <span class="dd-skill">frontend-dev</span> / <span class="dd-skill">backend-dev</span> skills<br>- <span class="dd-tool">Instructions</span> auto-apply: <code>ck-frontend</code>, <code>ck-backend</code>, <code>ck-development</code>',
2335
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: true }
2336
- },
2337
- {
2338
- id: 'simplify', label: 'Simplify', x: 920, color: 'var(--accent2)',
2339
- desc: 'Refines code for clarity and maintainability.',
2340
- agents: ['code-simplifier'], skills: [], tools: ['edit', 'search/changes'],
2341
- detail: '<span class="dd-agent">@code-simplifier</span> refines implemented code:<br>- Reduces nesting, adds guard clauses<br>- Improves naming, removes redundancy<br>- Preserves all functionality<br>- Follows <code>code-standards.md</code> conventions',
2342
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: true }
2343
- },
2344
- {
2345
- id: 'review3', label: 'Review', x: 1030, color: 'var(--pink)', type: 'gate',
2346
- desc: 'Human review gate: approve code before testing.',
2347
- agents: ['code-reviewer'], skills: ['code-review'], tools: ['search/codebase', 'read/problems'],
2348
- detail: '<span class="dd-agent">@code-reviewer</span> scans for quality issues.<br>Uses <span class="dd-skill">code-review</span> skill.<br><span class="dd-gate">Review Gate</span>: You approve code before tests run.',
2349
- modes: { interactive: true, fast: true, auto: 'auto', parallel: true, code: true }
2350
- },
2351
- {
2352
- id: 'test', label: 'Test', x: 1150, color: 'var(--accent)',
2353
- desc: 'Runs tests and validates everything works.',
2354
- agents: ['tester', 'debugger'], skills: ['debugging'], tools: ['runTests', 'runInTerminal', 'testFailure'],
2355
- detail: '<span class="dd-agent">@tester</span> runs test suites + analyzes results.<br>If tests fail: <span class="dd-agent">@debugger</span> investigates root cause.<br>Uses <span class="dd-skill">debugging</span> skill + <span class="dd-tool">runTests</span> tool.<br><strong>Requirement:</strong> 100% tests must pass.',
2356
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: true }
2357
- },
2358
- {
2359
- id: 'finalize', label: 'Finalize', x: 1300, color: 'var(--green)',
2360
- desc: 'Updates docs, commits code, done!',
2361
- agents: ['docs-manager', 'git-manager'], skills: [], tools: ['search/changes'],
2362
- detail: '<span class="dd-agent">@docs-manager</span> updates project docs in <code>./docs/</code><br><span class="dd-agent">@git-manager</span> creates conventional commit + push.<br>Output: clean commit with all changes.',
2363
- modes: { interactive: true, fast: true, auto: true, parallel: true, code: true }
2364
- }
2365
- ]
2366
- },
2367
-
2368
- fix: {
2369
- title: '/ck.fix — Intelligent Bug Router',
2370
- hasModes: false,
2371
- phases: [
2372
- {
2373
- id: 'analyze', label: 'Analyze\nInput', x: 120, color: 'var(--accent2)',
2374
- desc: 'Reads your issue description and classifies it.',
2375
- agents: [], skills: [], tools: [],
2376
- detail: 'Copilot reads your issue description and checks:<br>- Is there an existing plan? → Route to <strong>/ck:code</strong><br>- Keyword matching to classify the issue type<br>- Complexity assessment for routing decision'
2377
- },
2378
- {
2379
- id: 'route', label: 'Route', x: 300, color: 'var(--accent2)',
2380
- desc: 'Picks the best sub-command for this issue type.',
2381
- agents: [], skills: [], tools: [],
2382
- detail: 'Smart routing by issue type:<br>- <strong>Type errors</strong> → <code>/ck:fix:types</code><br>- <strong>UI/UX issues</strong> → <code>/ck:fix:ui</code><br>- <strong>CI/CD issues</strong> → <code>/ck:fix:ci</code><br>- <strong>Test failures</strong> → <code>/ck:fix:test</code><br>- <strong>Log errors</strong> → <code>/ck:fix:logs</code><br>- <strong>Multiple issues</strong> → <code>/ck:fix:parallel</code><br>- <strong>Complex</strong> → <code>/ck:fix:hard</code><br>- <strong>Simple</strong> → <code>/ck:fix:fast</code>'
2383
- },
2384
- {
2385
- id: 'scout', label: 'Scout', x: 480, color: 'var(--accent)',
2386
- desc: 'Finds files related to the bug.',
2387
- agents: ['scout'], skills: [], tools: ['search/codebase', 'search/changes'],
2388
- detail: '<span class="dd-agent">@scout</span> locates all files related to the issue.<br>Searches for error patterns, related functions, and dependencies.'
2389
- },
2390
- {
2391
- id: 'diagnose', label: 'Diagnose', x: 660, color: 'var(--accent)',
2392
- desc: 'Root cause analysis before fixing.',
2393
- agents: ['debugger'], skills: ['debugging', 'sequential-thinking'], tools: ['read/problems', 'runInTerminal'],
2394
- detail: '<span class="dd-agent">@debugger</span> performs root cause analysis:<br>- Read error messages completely<br>- Reproduce the issue<br>- Check recent changes (<code>git diff</code>)<br>- Uses <span class="dd-skill">debugging</span> + <span class="dd-skill">sequential-thinking</span> skills'
2395
- },
2396
- {
2397
- id: 'fix', label: 'Fix', x: 840, color: 'var(--green)',
2398
- desc: 'Applies the fix at the root cause.',
2399
- agents: [], skills: ['frontend-dev', 'backend-dev'], tools: ['edit', 'create', 'runInTerminal'],
2400
- detail: 'Copilot writes the fix:<br>- Targets root cause, not symptoms<br>- Uses <span class="dd-skill">frontend-dev</span> / <span class="dd-skill">backend-dev</span> skills<br>- <span class="dd-tool">Instructions</span> auto-apply: <code>ck-development</code>'
2401
- },
2402
- {
2403
- id: 'verify', label: 'Verify', x: 1020, color: 'var(--accent)',
2404
- desc: 'Runs tests to confirm the fix works.',
2405
- agents: ['tester'], skills: [], tools: ['runTests', 'testFailure'],
2406
- detail: '<span class="dd-agent">@tester</span> verifies the fix:<br>- Runs existing test suite<br>- Confirms issue is resolved<br>- Checks for regressions<br><strong>If tests fail:</strong> loops back to diagnose'
2407
- }
2408
- ]
2409
- },
2410
-
2411
- plan: {
2412
- title: '/ck.plan — Intelligent Plan Creation',
2413
- hasModes: false,
2414
- phases: [
2415
- {
2416
- id: 'input', label: 'Analyze\nTask', x: 100, color: 'var(--accent2)',
2417
- desc: 'Reads task description and checks for existing plans.',
2418
- agents: [], skills: [], tools: [],
2419
- detail: 'Pre-creation checks:<br>- Active plan exists? → Ask to continue<br>- Branch-matched plan? → Ask to activate or create new<br>- No plan? → Create new using naming convention<br>- May ask clarifying questions via <span class="dd-tool">AskUserQuestion</span>'
2420
- },
2421
- {
2422
- id: 'research', label: 'Research', x: 320, color: 'var(--accent)',
2423
- desc: 'Multiple researchers gather context in parallel.',
2424
- agents: ['researcher'], skills: ['research', 'docs-seeker'], tools: ['web/fetch', 'search/codebase'],
2425
- detail: 'Multiple <span class="dd-agent">@researcher</span> agents run in parallel:<br>- Search docs, web, and codebase<br>- Uses <span class="dd-skill">docs-seeker</span> (context7) for library docs<br>- Uses <span class="dd-skill">research</span> skill for best practices<br>- Output: research reports (≤150 lines each)'
2426
- },
2427
- {
2428
- id: 'scout', label: 'Scout', x: 540, color: 'var(--accent)',
2429
- desc: 'Discovers relevant codebase files.',
2430
- agents: ['scout'], skills: [], tools: ['search/codebase', 'search/changes'],
2431
- detail: '<span class="dd-agent">@scout</span> maps the codebase:<br>- Finds all files related to the task<br>- Identifies architecture patterns<br>- Output: file list + context for planner'
2432
- },
2433
- {
2434
- id: 'plan', label: 'Create\nPlan', x: 760, color: 'var(--green)',
2435
- desc: 'Generates detailed implementation plan.',
2436
- agents: ['planner'], skills: ['planning', 'sequential-thinking'], tools: ['search/codebase'],
2437
- detail: '<span class="dd-agent">@planner</span> creates the plan:<br>- Analyzes research + scout reports<br>- Uses <span class="dd-skill">planning</span> + <span class="dd-skill">sequential-thinking</span><br>- Output: <code>plan.md</code> overview + <code>phase-XX-*.md</code> files<br>- Saves to <code>plans/</code> directory'
2438
- },
2439
- {
2440
- id: 'output', label: 'Output', x: 980, color: 'var(--accent2)',
2441
- desc: 'Plan ready for review. Does NOT implement.',
2442
- agents: [], skills: [], tools: [],
2443
- detail: 'Plan is saved and presented to user:<br>- Overview: <code>plan.md</code> (under 80 lines)<br>- Detailed phases: <code>phase-XX-name.md</code><br>- Each phase has: requirements, architecture, steps, TODOs<br><strong>Important:</strong> Does NOT start implementing.'
2444
- }
2445
- ]
2446
- },
2447
-
2448
- test: {
2449
- title: '/ck.test — Test Runner & Analyzer',
2450
- hasModes: false,
2451
- phases: [
2452
- {
2453
- id: 'detect', label: 'Detect\nFramework', x: 140, color: 'var(--accent2)',
2454
- desc: 'Identifies the testing framework and config.',
2455
- agents: [], skills: [], tools: ['search/codebase'],
2456
- detail: 'Copilot detects your test setup:<br>- Scans <code>package.json</code>, config files<br>- Identifies: Jest, Vitest, Mocha, Playwright, etc.<br>- Finds test scripts and commands'
2457
- },
2458
- {
2459
- id: 'run', label: 'Run\nTests', x: 400, color: 'var(--accent)',
2460
- desc: 'Executes the test suite.',
2461
- agents: ['tester'], skills: [], tools: ['runTests', 'runInTerminal', 'getTerminalOutput'],
2462
- detail: '<span class="dd-agent">@tester</span> runs the test suite:<br>- Uses <span class="dd-tool">runTests</span> for built-in test runner<br>- Or <span class="dd-tool">runInTerminal</span> for custom commands<br>- Captures all output and exit codes'
2463
- },
2464
- {
2465
- id: 'analyze', label: 'Analyze\nResults', x: 660, color: 'var(--accent)',
2466
- desc: 'Parses output, identifies failures.',
2467
- agents: ['tester'], skills: [], tools: ['testFailure', 'read/problems'],
2468
- detail: '<span class="dd-agent">@tester</span> analyzes results:<br>- Parses test output for pass/fail counts<br>- Identifies failing tests with stack traces<br>- Uses <span class="dd-tool">read/problems</span> for IDE diagnostics<br>- Generates summary report'
2469
- },
2470
- {
2471
- id: 'report', label: 'Report', x: 920, color: 'var(--green)',
2472
- desc: 'Summary with pass/fail counts and recommendations.',
2473
- agents: [], skills: [], tools: [],
2474
- detail: 'Test report includes:<br>- Pass/fail/skip counts<br>- Failing test details with root cause hints<br>- Coverage info (if available)<br>- Recommended next: <code>/ck.fix</code> or <code>/ck.review</code>'
2475
- }
2476
- ]
2477
- },
2478
-
2479
- review: {
2480
- title: '/ck.review — Codebase Scan & Analysis',
2481
- hasModes: false,
2482
- phases: [
2483
- {
2484
- id: 'research', label: 'Research', x: 100, color: 'var(--accent)',
2485
- desc: 'Researchers gather best practices in parallel.',
2486
- agents: ['researcher'], skills: ['research', 'docs-seeker'], tools: ['web/fetch', 'search/codebase'],
2487
- detail: '2 <span class="dd-agent">@researcher</span> agents run in parallel:<br>- Search up to 5 sources per agent<br>- Uses <span class="dd-skill">docs-seeker</span> + <span class="dd-skill">research</span> skills<br>- Output: concise reports (≤150 lines)'
2488
- },
2489
- {
2490
- id: 'scout', label: 'Scout', x: 300, color: 'var(--accent)',
2491
- desc: 'Finds all files relevant to review scope.',
2492
- agents: ['scout'], skills: [], tools: ['search/codebase', 'search/changes'],
2493
- detail: '<span class="dd-agent">@scout</span> maps the review scope:<br>- Uses <code>/scout:ext</code> (preferred) or <code>/scout</code> fallback<br>- Identifies files needing review<br>- Checks architecture patterns'
2494
- },
2495
- {
2496
- id: 'review', label: 'Code\nReview', x: 530, color: 'var(--accent)',
2497
- desc: 'Multiple reviewers scan code in parallel.',
2498
- agents: ['code-reviewer'], skills: ['code-review'], tools: ['search/codebase', 'read/problems'],
2499
- detail: 'Multiple <span class="dd-agent">@code-reviewer</span> agents in parallel:<br>- Uses <span class="dd-skill">code-review</span> skill<br>- Checks: quality, security, duplication, YAGNI/KISS/DRY<br>- Scans with <span class="dd-tool">read/problems</span> for IDE issues'
2500
- },
2501
- {
2502
- id: 'plan', label: 'Plan', x: 750, color: 'var(--accent)',
2503
- desc: 'Creates improvement plan from findings.',
2504
- agents: ['planner'], skills: ['planning'], tools: [],
2505
- detail: '<span class="dd-agent">@planner</span> creates improvement plan:<br>- Analyzes research + review findings<br>- Creates <code>plan.md</code> + <code>phase-XX-*.md</code> files<br>- Prioritizes issues by severity'
2506
- },
2507
- {
2508
- id: 'report', label: 'Report', x: 970, color: 'var(--green)',
2509
- desc: 'Summary of findings and next steps.',
2510
- agents: [], skills: [], tools: [],
2511
- detail: 'Final report includes:<br>- Summary of all findings<br>- Improvement plan with priorities<br>- Asks: commit and push to git?<br>- Uses <span class="dd-agent">@git-manager</span> if approved'
2512
- }
2513
- ]
2514
- },
2515
-
2516
- debug: {
2517
- title: '/ck.debug — Systematic Root Cause Analysis',
2518
- hasModes: false,
2519
- phases: [
2520
- {
2521
- id: 'reproduce', label: 'Reproduce', x: 100, color: 'var(--accent2)',
2522
- desc: 'Read error messages, reproduce consistently.',
2523
- agents: [], skills: ['debugging'], tools: ['runInTerminal', 'read/problems'],
2524
- detail: '<strong>Phase 1: Root Cause Investigation</strong><br>- Read error messages completely<br>- Reproduce the issue consistently<br>- Check recent changes (<code>git diff</code>, <code>git log</code>)<br>- Gather evidence before theorizing'
2525
- },
2526
- {
2527
- id: 'pattern', label: 'Pattern\nAnalysis', x: 340, color: 'var(--accent)',
2528
- desc: 'Compare working vs broken code.',
2529
- agents: [], skills: ['sequential-thinking'], tools: ['search/codebase'],
2530
- detail: '<strong>Phase 2: Pattern Analysis</strong><br>- Find working examples in codebase<br>- Compare working vs broken code<br>- Uses <span class="dd-skill">sequential-thinking</span> skill<br>- Document findings systematically'
2531
- },
2532
- {
2533
- id: 'hypothesis', label: 'Hypothesis', x: 580, color: 'var(--accent)',
2534
- desc: 'Form theory and test with minimal changes.',
2535
- agents: [], skills: ['debugging'], tools: ['runInTerminal'],
2536
- detail: '<strong>Phase 3: Hypothesis & Testing</strong><br>- Form theory based on evidence<br>- Test with minimal changes<br>- Verify hypothesis is correct<br>- Document confirmation<br><span class="dd-gate">Key rule</span>: Complete each phase before proceeding'
2537
- },
2538
- {
2539
- id: 'fix', label: 'Root\nCause Fix', x: 820, color: 'var(--green)',
2540
- desc: 'Fix at the source, not at the symptom.',
2541
- agents: [], skills: [], tools: ['edit', 'runInTerminal'],
2542
- detail: '<strong>Phase 4: Implementation</strong><br>- Create test that catches the bug<br>- Fix at the root cause (not symptom)<br>- Defense-in-depth: validate at every layer<br>- Entry validation → Business logic → Environment guards'
2543
- },
2544
- {
2545
- id: 'verify', label: 'Verify', x: 1020, color: 'var(--accent)',
2546
- desc: 'Fresh verification with evidence.',
2547
- agents: ['tester'], skills: [], tools: ['runTests', 'testFailure'],
2548
- detail: '<strong>Iron Law:</strong> No completion claims without fresh verification.<br>- <span class="dd-agent">@tester</span> runs full test suite<br>- Run the command → Read the output → Then claim result<br>- Output: Debug Report (Issue, Root Cause, Fix, Verification)'
2549
- }
2550
- ]
2551
- }
2552
- };
2553
-
2554
- // ========== RENDERING ENGINE ==========
2555
- var PIPE_Y = 100;
2556
- var NODE_W = 100;
2557
- var NODE_H = 48;
2558
- var SUB_Y_START = 200;
2559
- var NS = 'http://www.w3.org/2000/svg';
2560
-
2561
- var svg = document.getElementById('ddPipeline');
2562
- var activePhase = null;
2563
- var currentMode = 'interactive';
2564
- var currentCmd = 'cook';
2565
- var phaseEls = {};
2566
- var arrowEls = [];
2567
- var arrowLayer, nodeLayer, subLayer;
2568
-
2569
- function svgEl(tag, attrs) {
2570
- var el = document.createElementNS(NS, tag);
2571
- if (attrs) Object.keys(attrs).forEach(function(k) { el.setAttribute(k, attrs[k]); });
2572
- return el;
2573
- }
2574
-
2575
- function initSvg() {
2576
- svg.innerHTML = '';
2577
- var defs = svgEl('defs');
2578
- var m1 = svgEl('marker', { id: 'dd-arr', viewBox: '0 0 10 10', refX: '10', refY: '5', markerWidth: '5', markerHeight: '5', orient: 'auto', fill: 'var(--text-dim)' });
2579
- m1.appendChild(svgEl('path', { d: 'M0 0 L10 5 L0 10z' }));
2580
- defs.appendChild(m1);
2581
- var m2 = svgEl('marker', { id: 'dd-arr-a', viewBox: '0 0 10 10', refX: '10', refY: '5', markerWidth: '5', markerHeight: '5', orient: 'auto', fill: 'var(--accent2)' });
2582
- m2.appendChild(svgEl('path', { d: 'M0 0 L10 5 L0 10z' }));
2583
- defs.appendChild(m2);
2584
- svg.appendChild(defs);
2585
-
2586
- arrowLayer = svgEl('g');
2587
- nodeLayer = svgEl('g');
2588
- subLayer = svgEl('g');
2589
- svg.appendChild(arrowLayer);
2590
- svg.appendChild(nodeLayer);
2591
- svg.appendChild(subLayer);
2592
- }
2593
-
2594
- function renderPipeline(cmdKey) {
2595
- var cmd = DD_COMMANDS[cmdKey];
2596
- var phases = cmd.phases;
2597
- phaseEls = {};
2598
- arrowEls = [];
2599
- initSvg();
2600
-
2601
- // Calculate viewBox width
2602
- var maxX = 0;
2603
- phases.forEach(function(p) { if (p.x > maxX) maxX = p.x; });
2604
- svg.setAttribute('viewBox', '0 0 ' + (maxX + 120) + ' 520');
2605
-
2606
- // Draw arrows
2607
- for (var i = 0; i < phases.length - 1; i++) {
2608
- var p1 = phases[i], p2 = phases[i + 1];
2609
- var x1 = p1.x + NODE_W / 2 + 2;
2610
- var x2 = p2.x - NODE_W / 2 - 2;
2611
- var line = svgEl('line', {
2612
- x1: x1, y1: PIPE_Y, x2: x2, y2: PIPE_Y,
2613
- stroke: 'var(--text-dim)', 'stroke-width': '1.5', 'marker-end': 'url(#dd-arr)',
2614
- class: 'dd-arrow'
2615
- });
2616
- arrowLayer.appendChild(line);
2617
- arrowEls.push(line);
2618
- }
2619
-
2620
- // Draw nodes
2621
- phases.forEach(function(p, idx) {
2622
- var g = svgEl('g', { class: 'dd-phase', 'data-phase': p.id });
2623
- var isGate = p.type === 'gate';
2624
-
2625
- if (isGate) {
2626
- var s = 30;
2627
- var poly = svgEl('polygon', {
2628
- points: p.x + ',' + (PIPE_Y - s) + ' ' + (p.x + s) + ',' + PIPE_Y + ' ' + p.x + ',' + (PIPE_Y + s) + ' ' + (p.x - s) + ',' + PIPE_Y,
2629
- fill: 'rgba(244,114,182,0.12)', stroke: p.color, 'stroke-width': '2'
2630
- });
2631
- g.appendChild(poly);
2632
- var txt = svgEl('text', {
2633
- x: p.x, y: PIPE_Y + 1,
2634
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
2635
- 'font-size': '10', 'font-weight': '600', fill: p.color
2636
- });
2637
- txt.textContent = p.label;
2638
- g.appendChild(txt);
2639
- } else {
2640
- var rect = svgEl('rect', {
2641
- x: p.x - NODE_W / 2, y: PIPE_Y - NODE_H / 2,
2642
- width: NODE_W, height: NODE_H, rx: '8', ry: '8',
2643
- fill: 'rgba(129,140,248,0.08)', stroke: p.color, 'stroke-width': '2'
2644
- });
2645
- g.appendChild(rect);
2646
- var lines = p.label.split('\n');
2647
- lines.forEach(function(line, li) {
2648
- var txt = svgEl('text', {
2649
- x: p.x, y: PIPE_Y + (li - (lines.length - 1) / 2) * 14,
2650
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
2651
- 'font-size': '12', 'font-weight': '700', fill: p.color
2652
- });
2653
- txt.textContent = line;
2654
- g.appendChild(txt);
2655
- });
2656
- }
2657
-
2658
- // Number badge
2659
- if (!isGate) {
2660
- var badge = svgEl('circle', {
2661
- cx: p.x - NODE_W / 2 + 8, cy: PIPE_Y - NODE_H / 2 - 4,
2662
- r: '9', fill: 'var(--bg)', stroke: p.color, 'stroke-width': '1.5'
2663
- });
2664
- g.appendChild(badge);
2665
- var bTxt = svgEl('text', {
2666
- x: p.x - NODE_W / 2 + 8, y: PIPE_Y - NODE_H / 2 - 3,
2667
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
2668
- 'font-size': '9', 'font-weight': '700', fill: p.color
2669
- });
2670
- bTxt.textContent = idx + 1;
2671
- g.appendChild(bTxt);
2672
- }
2673
-
2674
- g.addEventListener('click', function(ev) {
2675
- ev.stopPropagation();
2676
- selectPhase(p.id);
2677
- });
2678
-
2679
- nodeLayer.appendChild(g);
2680
- phaseEls[p.id] = g;
2681
- });
2682
-
2683
- svg.addEventListener('click', clearPhase);
2684
- applyMode();
2685
- }
2686
-
2687
- function drawSubNodes(phaseId) {
2688
- while (subLayer.firstChild) subLayer.removeChild(subLayer.firstChild);
2689
- var phases = DD_COMMANDS[currentCmd].phases;
2690
- var phase = phases.find(function(p) { return p.id === phaseId; });
2691
- if (!phase) return;
2692
-
2693
- var items = [];
2694
- phase.agents.forEach(function(a) { items.push({ label: '@' + a, color: 'var(--accent)' }); });
2695
- phase.skills.forEach(function(s) { items.push({ label: s, color: 'var(--green)' }); });
2696
- phase.tools.forEach(function(t) { items.push({ label: t, color: 'var(--orange)' }); });
2697
- if (items.length === 0) return;
2698
-
2699
- var startY = SUB_Y_START;
2700
- var spacing = 36;
2701
- var centerX = phase.x;
2702
-
2703
- var conn = svgEl('line', {
2704
- x1: centerX, y1: PIPE_Y + NODE_H / 2,
2705
- x2: centerX, y2: startY - 8,
2706
- stroke: 'var(--border-light)', 'stroke-width': '1', 'stroke-dasharray': '4 3'
2707
- });
2708
- subLayer.appendChild(conn);
2709
-
2710
- items.forEach(function(item, i) {
2711
- var y = startY + i * spacing;
2712
- var g = svgEl('g', { class: 'dd-sub-node' });
2713
- var pill = svgEl('rect', {
2714
- x: centerX - 55, y: y - 12, width: 110, height: 24, rx: '12',
2715
- fill: 'rgba(0,0,0,0.3)', stroke: item.color, 'stroke-width': '1'
2716
- });
2717
- g.appendChild(pill);
2718
- var txt = svgEl('text', {
2719
- x: centerX, y: y,
2720
- 'text-anchor': 'middle', 'dominant-baseline': 'central',
2721
- 'font-size': '10', 'font-weight': '600', fill: item.color
2722
- });
2723
- txt.textContent = item.label.length > 14 ? item.label.substring(0, 13) + '…' : item.label;
2724
- g.appendChild(txt);
2725
- subLayer.appendChild(g);
2726
- });
2727
- }
2728
-
2729
- function selectPhase(phaseId) {
2730
- if (activePhase === phaseId) { clearPhase(); return; }
2731
- activePhase = phaseId;
2732
- var phases = DD_COMMANDS[currentCmd].phases;
2733
- var phase = phases.find(function(p) { return p.id === phaseId; });
2734
-
2735
- Object.keys(phaseEls).forEach(function(id) {
2736
- phaseEls[id].classList.remove('active', 'faded');
2737
- if (id === phaseId) phaseEls[id].classList.add('active');
2738
- else phaseEls[id].classList.add('faded');
2739
- });
2740
- arrowEls.forEach(function(el) { el.classList.add('faded'); });
2741
-
2742
- document.getElementById('ddDetailTitle').innerHTML = phase.label.replace('\n', ' ') + ' &mdash; ' + phase.desc;
2743
- document.getElementById('ddDetailBody').innerHTML = phase.detail;
2744
- drawSubNodes(phaseId);
2745
- applyMode();
2746
- }
2747
-
2748
- function clearPhase() {
2749
- activePhase = null;
2750
- Object.keys(phaseEls).forEach(function(id) { phaseEls[id].classList.remove('active', 'faded'); });
2751
- arrowEls.forEach(function(el) { el.classList.remove('faded'); });
2752
- while (subLayer.firstChild) subLayer.removeChild(subLayer.firstChild);
2753
- document.getElementById('ddDetailTitle').textContent = 'Click a phase to see details';
2754
- document.getElementById('ddDetailBody').innerHTML = '<div class="dd-detail-placeholder">Each phase triggers specific agents, skills, and VS Code tools. Click any phase node above to explore.</div>';
2755
- applyMode();
2756
- }
2757
-
2758
- function applyMode() {
2759
- var phases = DD_COMMANDS[currentCmd].phases;
2760
- phases.forEach(function(p) {
2761
- var el = phaseEls[p.id];
2762
- if (!el) return;
2763
- el.classList.remove('skipped');
2764
- if (p.modes) {
2765
- var modeVal = p.modes[currentMode];
2766
- if (modeVal === false) el.classList.add('skipped');
2767
- }
2768
- });
2769
- }
2770
-
2771
- // ========== COMMAND SWITCHING ==========
2772
- window.ddSwitchCmd = function(cmdKey) {
2773
- currentCmd = cmdKey;
2774
- currentMode = 'interactive';
2775
- var cmd = DD_COMMANDS[cmdKey];
2776
-
2777
- // Update tabs
2778
- document.querySelectorAll('.dd-tab').forEach(function(t) { t.classList.remove('active'); });
2779
- document.querySelector('.dd-tab[data-cmd="' + cmdKey + '"]').classList.add('active');
2780
-
2781
- // Update title
2782
- document.getElementById('ddPipeTitle').textContent = cmd.title;
2783
-
2784
- // Show/hide mode bar
2785
- var modesEl = document.getElementById('ddModes');
2786
- modesEl.style.display = cmd.hasModes ? 'flex' : 'none';
2787
- if (cmd.hasModes) {
2788
- document.querySelectorAll('.dd-mode').forEach(function(b) { b.classList.remove('active'); });
2789
- document.querySelector('.dd-mode[data-mode="interactive"]').classList.add('active');
2790
- }
2791
-
2792
- // Render pipeline
2793
- renderPipeline(cmdKey);
2794
- clearPhase();
2795
- };
2796
-
2797
- // Mode switching
2798
- document.querySelectorAll('.dd-mode').forEach(function(btn) {
2799
- btn.addEventListener('click', function() {
2800
- document.querySelectorAll('.dd-mode').forEach(function(b) { b.classList.remove('active'); });
2801
- btn.classList.add('active');
2802
- currentMode = btn.dataset.mode;
2803
- clearPhase();
2804
- });
2805
- });
2806
-
2807
- // Initial render
2808
- renderPipeline('cook');
2809
- })();
2810
- </script>
2811
-
2812
- <div class="divider"></div>
2813
-
2814
- <!-- ===== RESOURCES ===== -->
2815
- <section class="section" id="resources">
2816
- <div class="section-header">
2817
- <div class="label">Details</div>
2818
- <h2>What's included</h2>
2819
- <p>Full list of agents, skills, instructions, and collections.</p>
2820
- </div>
2821
-
2822
- <div class="resource-map">
2823
- <div class="resource-item">
2824
- <h4 style="color: var(--accent2);">&#129302; Agents (12)</h4>
2825
- <ul>
2826
- <li><strong>planner</strong> &mdash; Makes plans</li>
2827
- <li><strong>code-reviewer</strong> &mdash; Reviews code</li>
2828
- <li><strong>debugger</strong> &mdash; Investigates bugs</li>
2829
- <li><strong>tester</strong> &mdash; Writes &amp; runs tests</li>
2830
- <li><strong>researcher</strong> &mdash; Finds information</li>
2831
- <li><strong>scout</strong> &mdash; Searches files</li>
2832
- <li><strong>git-manager</strong> &mdash; Manages git</li>
2833
- <li><strong>brainstormer</strong> &mdash; Explores ideas</li>
2834
- <li><strong>docs-manager</strong> &mdash; Writes docs</li>
2835
- <li><strong>ui-ux-designer</strong> &mdash; Designs UI/UX</li>
2836
- <li><strong>code-simplifier</strong> &mdash; Simplifies code</li>
2837
- <li><strong>fullstack-developer</strong> &mdash; Implements features</li>
2838
- </ul>
2839
- </div>
2840
-
2841
- <div class="resource-item">
2842
- <h4 style="color: var(--green);">&#128218; Skills (top 7)</h4>
2843
- <ul>
2844
- <li><strong>debugging</strong> &mdash; Root cause analysis</li>
2845
- <li><strong>code-review</strong> &mdash; Review protocols</li>
2846
- <li><strong>planning</strong> &mdash; Research &rarr; design</li>
2847
- <li><strong>problem-solving</strong> &mdash; Solve hard problems</li>
2848
- <li><strong>sequential-thinking</strong> &mdash; Step-by-step logic</li>
2849
- <li><strong>backend-dev</strong> &mdash; Node/Python/Go</li>
2850
- <li><strong>frontend-dev</strong> &mdash; React/TypeScript</li>
2851
- </ul>
2852
- </div>
2853
-
2854
- <div class="resource-item">
2855
- <h4 style="color: var(--orange);">&#128220; Instructions (5)</h4>
2856
- <ul>
2857
- <li><strong>ck-backend</strong> &mdash; Backend rules</li>
2858
- <li><strong>ck-frontend</strong> &mdash; Frontend rules</li>
2859
- <li><strong>ck-testing</strong> &mdash; Testing standards</li>
2860
- <li><strong>ck-development</strong> &mdash; YAGNI/KISS/DRY</li>
2861
- <li><strong>ck-research</strong> &mdash; Research methods</li>
2862
- </ul>
2863
- </div>
2864
-
2865
- <div class="resource-item">
2866
- <h4 style="color: var(--pink);">&#128230; Collections (5)</h4>
2867
- <ul>
2868
- <li><strong>ck-core</strong> &mdash; Core workflows</li>
2869
- <li><strong>ck-dev-rules</strong> &mdash; Dev standards</li>
2870
- <li><strong>ck-documentation</strong> &mdash; Doc management</li>
2871
- <li><strong>ck-git-workflow</strong> &mdash; Git workflow</li>
2872
- <li><strong>ck-orchestration</strong> &mdash; Task coordination</li>
2873
- </ul>
2874
- </div>
2875
- </div>
2876
- </section>
2877
-
2878
- <div class="divider"></div>
2879
-
2880
- <!-- ===== INSTALL ===== -->
2881
- <section class="section" id="install">
2882
- <div class="section-header">
2883
- <div class="label">Get Started</div>
2884
- <h2>Install in 30 seconds</h2>
2885
- <p>Just one command. No extra setup needed.</p>
2886
- </div>
2887
-
2888
- <div class="install-box">
2889
- <div class="install-header">
2890
- <div class="install-dot red"></div>
2891
- <div class="install-dot yellow"></div>
2892
- <div class="install-dot green"></div>
2893
- <span>Terminal</span>
2894
- </div>
2895
- <div class="install-body">
2896
- <span class="comment"># Global install (recommended)</span><br>
2897
- <span class="prompt">$</span> <span class="cmd">npx cokit-cli init -g</span><br><br>
2898
- <span class="comment"># Or install for both project + personal</span><br>
2899
- <span class="prompt">$</span> <span class="cmd">npx cokit-cli init -a</span><br><br>
2900
- <span class="output">&#128640; CoKit Setup</span><br>
2901
- <span class="success">&#10003; 28 prompts installed</span><br>
2902
- <span class="success">&#10003; 12 agents configured</span><br>
2903
- <span class="success">&#10003; 23 skills activated</span><br>
2904
- <span class="success">&#10003; 5 instructions applied</span><br>
2905
- <span class="success">&#10003; 5 collections bundled</span><br><br>
2906
- <span class="output">&#127881; Done! Try /ck.fix in Copilot Chat.</span>
2907
- </div>
2908
- </div>
2909
-
2910
- <div style="max-width: 700px; margin: 24px auto 0;">
2911
- <table class="compare-table">
2912
- <tr>
2913
- <th>CLI Command</th>
2914
- <th>What it does</th>
2915
- </tr>
2916
- <tr>
2917
- <td><code style="color: var(--green);">npx cokit-cli init</code></td>
2918
- <td>Interactive setup (asks you questions)</td>
2919
- </tr>
2920
- <tr>
2921
- <td><code style="color: var(--green);">npx cokit-cli init -g</code></td>
2922
- <td>Global install (no questions)</td>
2923
- </tr>
2924
- <tr>
2925
- <td><code style="color: var(--green);">npx cokit-cli init -a</code></td>
2926
- <td>Install both global + project</td>
2927
- </tr>
2928
- <tr>
2929
- <td><code style="color: var(--green);">npx cokit-cli list</code></td>
2930
- <td>See what's installed</td>
2931
- </tr>
2932
- <tr>
2933
- <td><code style="color: var(--green);">npx cokit-cli doctor</code></td>
2934
- <td>Check for setup problems</td>
2935
- </tr>
2936
- <tr>
2937
- <td><code style="color: var(--green);">npx cokit-cli update</code></td>
2938
- <td>Update to latest version</td>
2939
- </tr>
2940
- </table>
2941
-
2942
- <div class="warning-box" style="margin-top: 16px;">
2943
- <strong>&#9888; Requirements:</strong> Node.js >= 18 and VS Code with GitHub Copilot installed.
2944
- </div>
2945
- </div>
2946
- </section>
2947
-
2948
- <!-- ===== FOOTER ===== -->
2949
- <footer class="footer">
2950
- <p>CoKit v1.1.0 &mdash; <a href="https://github.com/camping89/cokit" target="_blank">GitHub</a> &mdash; License: CC BY-NC 4.0</p>
2951
- <p style="margin-top: 8px;">Made with &#10084;&#65039; for developers who want smarter AI assistance.</p>
2952
- </footer>
2953
-
2954
- <!-- ===== SCRIPTS ===== -->
2955
- <script>
2956
- function switchTab(e, tabId) {
2957
- document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
2958
- document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
2959
- e.target.classList.add('active');
2960
- document.getElementById(tabId).classList.add('active');
2961
- }
2962
-
2963
- function toggleDecision(node) {
2964
- const answer = node.nextElementSibling;
2965
- const isOpen = node.classList.contains('expanded');
2966
- document.querySelectorAll('.decision-node').forEach(n => n.classList.remove('expanded'));
2967
- document.querySelectorAll('.decision-answer').forEach(a => a.classList.remove('show'));
2968
- if (!isOpen) {
2969
- node.classList.add('expanded');
2970
- answer.classList.add('show');
2971
- }
2972
- }
2973
-
2974
- function copyInstall() {
2975
- navigator.clipboard.writeText('npx cokit-cli init -g').then(() => {
2976
- const icon = document.getElementById('copyIcon');
2977
- icon.textContent = '\u2713 copied!';
2978
- icon.style.color = 'var(--green)';
2979
- setTimeout(() => {
2980
- icon.textContent = '\ud83d\udccb copy';
2981
- icon.style.color = '';
2982
- }, 2000);
2983
- });
2984
- }
2985
-
2986
- const sections = document.querySelectorAll('section[id]');
2987
- const navLinks = document.querySelectorAll('.nav-links a');
2988
- window.addEventListener('scroll', () => {
2989
- const scrollY = window.scrollY + 100;
2990
- sections.forEach(section => {
2991
- const top = section.offsetTop;
2992
- const height = section.offsetHeight;
2993
- const id = section.getAttribute('id');
2994
- if (scrollY >= top && scrollY < top + height) {
2995
- navLinks.forEach(link => {
2996
- link.classList.remove('active');
2997
- if (link.getAttribute('href') === `#${id}`) link.classList.add('active');
2998
- });
2999
- }
3000
- });
3001
- });
3002
- </script>
3003
- </body>
3004
- </html>