@iowarp/clio-coder 0.3.0

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 (226) hide show
  1. package/CHANGELOG.md +407 -0
  2. package/CODE_OF_CONDUCT.md +21 -0
  3. package/CONTRIBUTING.md +224 -0
  4. package/LICENSE +202 -0
  5. package/NOTICE +9 -0
  6. package/README.md +798 -0
  7. package/SECURITY.md +72 -0
  8. package/assets/clio-coder-logo-128.webp +0 -0
  9. package/damage-control-rules.yaml +419 -0
  10. package/dist/acp-UMLFVA3F.js +92 -0
  11. package/dist/agents-Q4MYPMUW.js +91 -0
  12. package/dist/auth-O6HYIJ6J.js +521 -0
  13. package/dist/chunk-262G75JS.js +35 -0
  14. package/dist/chunk-26BZQOAD.js +1281 -0
  15. package/dist/chunk-2J63S4SF.js +508 -0
  16. package/dist/chunk-3DANZDGR.js +717 -0
  17. package/dist/chunk-4UQA7NCT.js +29 -0
  18. package/dist/chunk-527KG6XR.js +497 -0
  19. package/dist/chunk-5LDRNKX2.js +1063 -0
  20. package/dist/chunk-5N2FG33Q.js +25 -0
  21. package/dist/chunk-67MTHP2E.js +135 -0
  22. package/dist/chunk-6CWDTGUC.js +20 -0
  23. package/dist/chunk-7BHLZB3A.js +2115 -0
  24. package/dist/chunk-7RBKDI66.js +348 -0
  25. package/dist/chunk-AMFR5YA3.js +541 -0
  26. package/dist/chunk-BBUH4VAA.js +1224 -0
  27. package/dist/chunk-BYEU76JP.js +899 -0
  28. package/dist/chunk-CLJ5HLUD.js +458 -0
  29. package/dist/chunk-D5YD55AR.js +116 -0
  30. package/dist/chunk-DXQNI4PC.js +61 -0
  31. package/dist/chunk-E3NYWENM.js +1004 -0
  32. package/dist/chunk-GNGDQYDU.js +34688 -0
  33. package/dist/chunk-GOTUR54M.js +9 -0
  34. package/dist/chunk-HBU5MTAM.js +41 -0
  35. package/dist/chunk-HMYNFFY4.js +28 -0
  36. package/dist/chunk-JPOWPFCU.js +1010 -0
  37. package/dist/chunk-JWHCJDCI.js +1215 -0
  38. package/dist/chunk-KBR4MZZR.js +41 -0
  39. package/dist/chunk-KKKPTZLM.js +93 -0
  40. package/dist/chunk-ME6DNWIU.js +66 -0
  41. package/dist/chunk-NI4DEJMC.js +88 -0
  42. package/dist/chunk-O4EJEDHO.js +659 -0
  43. package/dist/chunk-PIDUD6M2.js +31 -0
  44. package/dist/chunk-PS4PFJQP.js +29459 -0
  45. package/dist/chunk-QV47YRF4.js +48 -0
  46. package/dist/chunk-RQDWMVRB.js +279 -0
  47. package/dist/chunk-TFSSEXL6.js +136 -0
  48. package/dist/chunk-TKHQ4DGZ.js +8290 -0
  49. package/dist/chunk-TPOCL34A.js +2876 -0
  50. package/dist/chunk-UGYAX5YI.js +565 -0
  51. package/dist/chunk-UHTSULZS.js +461 -0
  52. package/dist/chunk-UU3R62TT.js +128 -0
  53. package/dist/chunk-UWIJNAOB.js +3906 -0
  54. package/dist/chunk-VOO7NYPP.js +914 -0
  55. package/dist/chunk-VPAWTYLY.js +117 -0
  56. package/dist/chunk-WD6AJM35.js +1216 -0
  57. package/dist/chunk-X3BR7HWV.js +115 -0
  58. package/dist/chunk-X3NE4WVW.js +120 -0
  59. package/dist/chunk-XNISANGE.js +1395 -0
  60. package/dist/chunk-XV4ZJ6ZM.js +3177 -0
  61. package/dist/cli/index.js +236 -0
  62. package/dist/clio-KIQ5SNDS.js +53 -0
  63. package/dist/components-JVHMUBEB.js +653 -0
  64. package/dist/config-ZFCDBMDC.js +372 -0
  65. package/dist/configure-G4E3A2PG.js +27 -0
  66. package/dist/context-CDXTP2MP.js +293 -0
  67. package/dist/context-E3KIFVXI.js +185 -0
  68. package/dist/context-clear-3F4PLXOS.js +102 -0
  69. package/dist/context-index-Q7YSYTR3.js +106 -0
  70. package/dist/docs-YIETIWZI.js +280 -0
  71. package/dist/doctor-M5HJJZOL.js +61 -0
  72. package/dist/domains/agents/builtins/architect.md +33 -0
  73. package/dist/domains/agents/builtins/coder.md +31 -0
  74. package/dist/domains/agents/builtins/context-bootstrap.md +38 -0
  75. package/dist/domains/agents/builtins/debugger.md +30 -0
  76. package/dist/domains/agents/builtins/documenter.md +31 -0
  77. package/dist/domains/agents/builtins/git-master.md +30 -0
  78. package/dist/domains/agents/builtins/provenance.md +30 -0
  79. package/dist/domains/agents/builtins/researcher.md +71 -0
  80. package/dist/domains/agents/builtins/scout.md +42 -0
  81. package/dist/domains/agents/builtins/tester.md +31 -0
  82. package/dist/domains/agents/builtins/verifier.md +30 -0
  83. package/dist/domains/agents/builtins/wiki-writer.md +41 -0
  84. package/dist/eval-B3KZZESM.js +2674 -0
  85. package/dist/evidence-V67CHM35.js +233 -0
  86. package/dist/evolve-YDZSUQYA.js +518 -0
  87. package/dist/extensions-SRG7XCAH.js +207 -0
  88. package/dist/fleet-CA2CRTVG.js +760 -0
  89. package/dist/fleet-preflight-CLIAX7YR.js +21 -0
  90. package/dist/init-2OZDJE2D.js +227 -0
  91. package/dist/memory-3PIQQAKX.js +207 -0
  92. package/dist/models-DY35XI7Y.js +237 -0
  93. package/dist/paths-5OMXW7Z4.js +57 -0
  94. package/dist/preload-KZVHET2B.js +11 -0
  95. package/dist/reset-PIFYNOS3.js +216 -0
  96. package/dist/run-3VSPP24F.js +735 -0
  97. package/dist/share-D36RQCXM.js +241 -0
  98. package/dist/skills-F2MRLELY.js +445 -0
  99. package/dist/skills-eval-E2ZTW4PL.js +932 -0
  100. package/dist/targets-DZMEZAH4.js +977 -0
  101. package/dist/trace-7NYCUI2J.js +250 -0
  102. package/dist/uninstall-AD3JWHBB.js +322 -0
  103. package/dist/upgrade-WYYBKGDY.js +301 -0
  104. package/dist/usage-ULIDAGFF.js +755 -0
  105. package/dist/version-ROZ6CZKH.js +16 -0
  106. package/dist/wiki-generate-PKFIX6OB.js +377 -0
  107. package/dist/worker/entry.js +1739 -0
  108. package/docs/README.md +93 -0
  109. package/docs/acp.md +120 -0
  110. package/docs/alcf-provider.md +72 -0
  111. package/docs/architecture.md +172 -0
  112. package/docs/artifact-versions.md +54 -0
  113. package/docs/built-in-agents.md +265 -0
  114. package/docs/capacity-and-scheduling.md +97 -0
  115. package/docs/commands-and-modes.md +554 -0
  116. package/docs/config-knobs-audit.md +115 -0
  117. package/docs/configuration-and-targets.md +812 -0
  118. package/docs/context-engine.md +236 -0
  119. package/docs/dispatch-architecture-rationale.md +126 -0
  120. package/docs/documentation-coverage.md +46 -0
  121. package/docs/documentation-guide.md +166 -0
  122. package/docs/environment-variables.md +105 -0
  123. package/docs/eval-runner.md +205 -0
  124. package/docs/evals-internal.md +298 -0
  125. package/docs/evidence-and-memory.md +243 -0
  126. package/docs/evolution.md +143 -0
  127. package/docs/exit-codes-and-output.md +74 -0
  128. package/docs/extensions-and-sharing.md +306 -0
  129. package/docs/fleet-demo-runbook.md +179 -0
  130. package/docs/fleet-dispatch.md +591 -0
  131. package/docs/glossary.md +75 -0
  132. package/docs/html/agents_blueprint.html +936 -0
  133. package/docs/html/alcf_blueprint.html +324 -0
  134. package/docs/html/architecture_blueprint.html +850 -0
  135. package/docs/html/commands_blueprint.html +794 -0
  136. package/docs/html/config_knobs_audit_blueprint.html +178 -0
  137. package/docs/html/configuration_blueprint.html +1080 -0
  138. package/docs/html/context_blueprint.html +603 -0
  139. package/docs/html/documentation_blueprint.html +832 -0
  140. package/docs/html/environment_blueprint.html +404 -0
  141. package/docs/html/eval_blueprint.html +743 -0
  142. package/docs/html/evals_internal_blueprint.html +190 -0
  143. package/docs/html/evolution_blueprint.html +674 -0
  144. package/docs/html/extensions_blueprint.html +2065 -0
  145. package/docs/html/fleet_dispatch_blueprint.html +286 -0
  146. package/docs/html/index.html +919 -0
  147. package/docs/html/lifecycle_blueprint.html +723 -0
  148. package/docs/html/memory_blueprint.html +699 -0
  149. package/docs/html/middleware_blueprint.html +664 -0
  150. package/docs/html/models_blueprint.html +2366 -0
  151. package/docs/html/observability_blueprint.html +683 -0
  152. package/docs/html/provider_adapter_blueprint.html +245 -0
  153. package/docs/html/safety_blueprint.html +1386 -0
  154. package/docs/html/shared.css +571 -0
  155. package/docs/html/shared.js +143 -0
  156. package/docs/html/skills_blueprint.html +671 -0
  157. package/docs/html/soak_blueprint.html +182 -0
  158. package/docs/html/tool_usage_blueprint.html +350 -0
  159. package/docs/html/tools_blueprint.html +2249 -0
  160. package/docs/html/trace_blueprint.html +235 -0
  161. package/docs/html/tui_design_blueprint.html +314 -0
  162. package/docs/html/validation_blueprint.html +961 -0
  163. package/docs/html/worker_dispatch_blueprint.html +231 -0
  164. package/docs/installation-and-lifecycle.md +308 -0
  165. package/docs/middleware-and-components.md +148 -0
  166. package/docs/model-catalog.md +189 -0
  167. package/docs/observability.md +233 -0
  168. package/docs/proactive-memory.md +452 -0
  169. package/docs/prompt-envelope-and-tools.md +142 -0
  170. package/docs/provider-adapter-cookbook.md +148 -0
  171. package/docs/release-cut-checklist.md +138 -0
  172. package/docs/safety-model.md +357 -0
  173. package/docs/scientific-validation.md +105 -0
  174. package/docs/session-lifecycle.md +156 -0
  175. package/docs/skills-marketplace.md +46 -0
  176. package/docs/tool-usage.md +527 -0
  177. package/docs/trace-store.md +132 -0
  178. package/docs/troubleshooting.md +33 -0
  179. package/docs/tui-design.md +239 -0
  180. package/docs/worker-dispatch-mechanics.md +242 -0
  181. package/package.json +132 -0
  182. package/skills/README.md +408 -0
  183. package/skills/git/commit-crafting/SKILL.md +79 -0
  184. package/skills/git/commit-crafting/evals.md +92 -0
  185. package/skills/git/create-pr/SKILL.md +116 -0
  186. package/skills/git/create-pr/evals.md +114 -0
  187. package/skills/git/investigate-issue/SKILL.md +139 -0
  188. package/skills/git/investigate-issue/evals.md +94 -0
  189. package/skills/git/resolve-merge-conflicts/SKILL.md +96 -0
  190. package/skills/git/resolve-merge-conflicts/evals.md +58 -0
  191. package/skills/git/review-changes/SKILL.md +103 -0
  192. package/skills/git/review-changes/evals.md +85 -0
  193. package/skills/git/worktree-create/SKILL.md +92 -0
  194. package/skills/git/worktree-create/evals.md +97 -0
  195. package/skills/git/worktree-create/references/worktree-setup.md +66 -0
  196. package/skills/git/worktree-merge/SKILL.md +95 -0
  197. package/skills/git/worktree-merge/evals.md +114 -0
  198. package/skills/skill-marketplace.json +261 -0
  199. package/skills/workflow/cut-it/SKILL.md +86 -0
  200. package/skills/workflow/cut-it/evals.md +42 -0
  201. package/src/domains/agents/builtins/architect.md +33 -0
  202. package/src/domains/agents/builtins/coder.md +31 -0
  203. package/src/domains/agents/builtins/context-bootstrap.md +38 -0
  204. package/src/domains/agents/builtins/debugger.md +30 -0
  205. package/src/domains/agents/builtins/documenter.md +31 -0
  206. package/src/domains/agents/builtins/git-master.md +30 -0
  207. package/src/domains/agents/builtins/provenance.md +30 -0
  208. package/src/domains/agents/builtins/researcher.md +71 -0
  209. package/src/domains/agents/builtins/scout.md +42 -0
  210. package/src/domains/agents/builtins/tester.md +31 -0
  211. package/src/domains/agents/builtins/verifier.md +30 -0
  212. package/src/domains/agents/builtins/wiki-writer.md +41 -0
  213. package/src/domains/agents/fleets/build-review.md +34 -0
  214. package/src/domains/agents/fleets/build-test.md +35 -0
  215. package/src/domains/agents/fleets/sdlc.md +86 -0
  216. package/src/domains/prompts/fragments/identity/clio-worker.md +11 -0
  217. package/src/domains/prompts/fragments/identity/clio.md +26 -0
  218. package/src/domains/prompts/fragments/operating/contract.md +64 -0
  219. package/src/domains/prompts/fragments/safety/auto-edit.md +14 -0
  220. package/src/domains/prompts/fragments/safety/full-auto.md +14 -0
  221. package/src/domains/prompts/fragments/safety/read-only.md +13 -0
  222. package/src/domains/prompts/fragments/safety/suggest.md +13 -0
  223. package/src/domains/prompts/fragments/wiki/page.md +75 -0
  224. package/src/domains/prompts/fragments/wiki/plan.md +48 -0
  225. package/src/domains/providers/models/cloud-models/alcf.yaml +40 -0
  226. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +993 -0
@@ -0,0 +1,671 @@
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>Clio Coder Skills Hub & Marketplace</title>
7
+
8
+ <!-- Fonts -->
9
+
10
+ <style>
11
+ :root {
12
+ --bg-dark: #090d16;
13
+ --bg-card: rgba(17, 24, 39, 0.7);
14
+ --border-card: rgba(255, 255, 255, 0.08);
15
+ --text-main: #f3f4f6;
16
+ --text-muted: #9ca3af;
17
+ --text-dark: #4b5563;
18
+
19
+ /* Glowing Neon Colors */
20
+ --color-cyan: #00f0ff;
21
+ --color-cyan-rgb: 0, 240, 255;
22
+ --color-purple: #bd00ff;
23
+ --color-purple-rgb: 189, 0, 255;
24
+ --color-emerald: #10b981;
25
+ --color-emerald-rgb: 16, 185, 129;
26
+ --color-amber: #f59e0b;
27
+ --color-amber-rgb: 245, 158, 11;
28
+ --color-rose: #ef4444;
29
+ --color-rose-rgb: 239, 68, 68;
30
+
31
+ --font-sans: "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Arial, sans-serif;
32
+ --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
33
+ }
34
+
35
+ * {
36
+ box-sizing: border-box;
37
+ margin: 0;
38
+ padding: 0;
39
+ }
40
+
41
+ body {
42
+ background-color: var(--bg-dark);
43
+ background-image:
44
+ radial-gradient(circle at 10% 15%, rgba(var(--color-cyan-rgb), 0.04) 0%, transparent 35%),
45
+ radial-gradient(circle at 90% 85%, rgba(var(--color-purple-rgb), 0.04) 0%, transparent 35%),
46
+ radial-gradient(circle at 50% 50%, #0c1220 0%, var(--bg-dark) 100%);
47
+ color: var(--text-main);
48
+ font-family: var(--font-sans);
49
+ min-height: 100vh;
50
+ display: flex;
51
+ flex-direction: column;
52
+ overflow-x: hidden;
53
+ }
54
+
55
+ .container {
56
+ max-width: 1400px;
57
+ margin: 0 auto;
58
+ padding: 2rem;
59
+ flex: 1;
60
+ display: flex;
61
+ flex-direction: column;
62
+ width: 100%;
63
+ }
64
+
65
+ /* Header styling */
66
+ header {
67
+ border-bottom: 1px solid var(--border-card);
68
+ padding-bottom: 1.5rem;
69
+ margin-bottom: 2rem;
70
+ display: flex;
71
+ justify-content: space-between;
72
+ align-items: center;
73
+ flex-wrap: wrap;
74
+ gap: 1rem;
75
+ }
76
+
77
+ .header-logo {
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 1rem;
81
+ }
82
+
83
+ .logo-box {
84
+ width: 48px;
85
+ height: 48px;
86
+ background: rgba(255, 255, 255, 0.02);
87
+ border: 1px solid var(--border-card);
88
+ border-radius: 10px;
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ box-shadow: 0 0 15px rgba(var(--color-cyan-rgb), 0.1);
93
+ }
94
+
95
+ h1 {
96
+ font-size: 1.6rem;
97
+ font-weight: 800;
98
+ letter-spacing: -0.02em;
99
+ }
100
+
101
+ .subtitle {
102
+ font-size: 0.85rem;
103
+ color: var(--text-muted);
104
+ margin-top: 0.15rem;
105
+ }
106
+
107
+ .version-tag {
108
+ background: rgba(255, 255, 255, 0.03);
109
+ border: 1px solid var(--border-card);
110
+ padding: 0.4rem 0.8rem;
111
+ border-radius: 8px;
112
+ font-size: 0.8rem;
113
+ font-family: var(--font-mono);
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.5rem;
117
+ }
118
+
119
+ .version-dot {
120
+ width: 6px;
121
+ height: 6px;
122
+ background-color: var(--color-cyan);
123
+ border-radius: 50%;
124
+ box-shadow: 0 0 8px var(--color-cyan);
125
+ }
126
+
127
+ .back-link {
128
+ color: var(--text-muted);
129
+ text-decoration: none;
130
+ font-size: 0.85rem;
131
+ display: flex;
132
+ align-items: center;
133
+ gap: 0.35rem;
134
+ transition: color 0.2s;
135
+ }
136
+ .back-link:hover {
137
+ color: var(--color-cyan);
138
+ }
139
+
140
+ /* Split Hub Layout */
141
+ .skills-hub {
142
+ display: grid;
143
+ grid-template-columns: 1fr 1fr;
144
+ gap: 2rem;
145
+ flex: 1;
146
+ min-height: 550px;
147
+ }
148
+
149
+ .list-side {
150
+ display: flex;
151
+ flex-direction: column;
152
+ gap: 1.25rem;
153
+ }
154
+
155
+ .search-panel {
156
+ background: var(--bg-card);
157
+ border: 1px solid var(--border-card);
158
+ border-radius: 12px;
159
+ padding: 1.25rem;
160
+ backdrop-filter: blur(12px);
161
+ }
162
+
163
+ .search-input-wrapper {
164
+ position: relative;
165
+ display: flex;
166
+ gap: 0.75rem;
167
+ }
168
+
169
+ .search-input {
170
+ flex: 1;
171
+ padding: 0.6rem 1rem;
172
+ background: rgba(0, 0, 0, 0.3);
173
+ border: 1px solid var(--border-card);
174
+ border-radius: 8px;
175
+ color: #fff;
176
+ font-size: 0.9rem;
177
+ font-family: var(--font-sans);
178
+ }
179
+ .search-input:focus {
180
+ outline: none;
181
+ border-color: var(--color-cyan);
182
+ box-shadow: 0 0 10px rgba(var(--color-cyan-rgb), 0.15);
183
+ }
184
+
185
+ .skills-list-container {
186
+ background: var(--bg-card);
187
+ border: 1px solid var(--border-card);
188
+ border-radius: 12px;
189
+ padding: 1rem;
190
+ flex: 1;
191
+ overflow-y: auto;
192
+ max-height: 450px;
193
+ display: flex;
194
+ flex-direction: column;
195
+ gap: 1rem;
196
+ }
197
+
198
+ .group-title {
199
+ font-size: 0.75rem;
200
+ font-weight: 800;
201
+ text-transform: uppercase;
202
+ letter-spacing: 0.05em;
203
+ color: var(--text-dark);
204
+ margin-bottom: 0.5rem;
205
+ border-bottom: 1px solid rgba(255, 255, 255, 0.03);
206
+ padding-bottom: 0.25rem;
207
+ }
208
+
209
+ .skill-card {
210
+ background: rgba(255, 255, 255, 0.01);
211
+ border: 1px solid var(--border-card);
212
+ border-radius: 8px;
213
+ padding: 0.75rem 1rem;
214
+ cursor: pointer;
215
+ transition: all 0.2s;
216
+ display: flex;
217
+ justify-content: space-between;
218
+ align-items: center;
219
+ }
220
+ .skill-card:hover {
221
+ background: rgba(255, 255, 255, 0.03);
222
+ border-color: rgba(var(--color-cyan-rgb), 0.3);
223
+ }
224
+ .skill-card.active {
225
+ background: rgba(var(--color-cyan-rgb), 0.03);
226
+ border-color: var(--color-cyan);
227
+ box-shadow: 0 0 12px rgba(var(--color-cyan-rgb), 0.1);
228
+ }
229
+
230
+ .skill-name {
231
+ font-size: 0.85rem;
232
+ font-weight: 600;
233
+ font-family: var(--font-mono);
234
+ color: #fff;
235
+ }
236
+ .skill-card.active .skill-name {
237
+ color: var(--color-cyan);
238
+ }
239
+
240
+ .skill-desc-short {
241
+ font-size: 0.75rem;
242
+ color: var(--text-muted);
243
+ margin-top: 0.15rem;
244
+ }
245
+
246
+ .scope-badge {
247
+ font-size: 0.65rem;
248
+ padding: 0.15rem 0.45rem;
249
+ border-radius: 4px;
250
+ font-weight: 700;
251
+ text-transform: uppercase;
252
+ }
253
+ .scope-project { background: rgba(0, 240, 255, 0.1); border: 1px solid var(--color-cyan); color: var(--color-cyan); }
254
+ .scope-user { background: rgba(189, 0, 255, 0.1); border: 1px solid var(--color-purple); color: var(--color-purple); }
255
+ .scope-market { background: rgba(245, 158, 11, 0.1); border: 1px solid var(--color-amber); color: var(--color-amber); }
256
+
257
+ .detail-side {
258
+ background: var(--bg-card);
259
+ border: 1px solid var(--border-card);
260
+ border-radius: 12px;
261
+ padding: 1.5rem;
262
+ backdrop-filter: blur(12px);
263
+ display: flex;
264
+ flex-direction: column;
265
+ gap: 1.25rem;
266
+ }
267
+
268
+ .detail-header {
269
+ border-bottom: 1px solid var(--border-card);
270
+ padding-bottom: 1rem;
271
+ display: flex;
272
+ justify-content: space-between;
273
+ align-items: flex-start;
274
+ }
275
+
276
+ .detail-title {
277
+ font-size: 1.15rem;
278
+ font-weight: 700;
279
+ font-family: var(--font-mono);
280
+ color: #fff;
281
+ }
282
+
283
+ .detail-provenance {
284
+ font-size: 0.75rem;
285
+ color: var(--text-muted);
286
+ margin-top: 0.25rem;
287
+ display: flex;
288
+ align-items: center;
289
+ gap: 0.35rem;
290
+ }
291
+
292
+ .provenance-dot {
293
+ width: 6px;
294
+ height: 6px;
295
+ border-radius: 50%;
296
+ }
297
+ .provenance-live { background-color: var(--color-emerald); }
298
+ .provenance-cached { background-color: var(--color-cyan); }
299
+ .provenance-pinned { background-color: var(--color-amber); }
300
+
301
+ .metadata-grid {
302
+ display: grid;
303
+ grid-template-columns: 1fr 1fr;
304
+ gap: 0.75rem;
305
+ background: rgba(0, 0, 0, 0.15);
306
+ border: 1px solid var(--border-card);
307
+ border-radius: 8px;
308
+ padding: 0.75rem;
309
+ font-size: 0.8rem;
310
+ }
311
+
312
+ .metadata-item span {
313
+ color: var(--text-muted);
314
+ }
315
+ .metadata-item strong {
316
+ color: #fff;
317
+ font-family: var(--font-mono);
318
+ }
319
+
320
+ .detail-body {
321
+ flex: 1;
322
+ background: #05080e;
323
+ border: 1px solid var(--border-card);
324
+ border-radius: 8px;
325
+ padding: 1rem;
326
+ font-family: var(--font-sans);
327
+ font-size: 0.85rem;
328
+ line-height: 1.5;
329
+ overflow-y: auto;
330
+ white-space: pre-wrap;
331
+ color: #e5e7eb;
332
+ }
333
+
334
+ .hud-actions {
335
+ display: flex;
336
+ gap: 0.75rem;
337
+ }
338
+
339
+ .btn {
340
+ background: rgba(255, 255, 255, 0.03);
341
+ border: 1px solid var(--border-card);
342
+ color: var(--text-main);
343
+ padding: 0.5rem 1rem;
344
+ border-radius: 6px;
345
+ font-size: 0.85rem;
346
+ cursor: pointer;
347
+ transition: all 0.2s;
348
+ display: inline-flex;
349
+ align-items: center;
350
+ gap: 0.35rem;
351
+ }
352
+ .btn:hover {
353
+ background: rgba(255, 255, 255, 0.08);
354
+ border-color: var(--color-cyan);
355
+ }
356
+ .btn-action {
357
+ background: rgba(var(--color-cyan-rgb), 0.1);
358
+ border-color: var(--color-cyan);
359
+ color: var(--color-cyan);
360
+ }
361
+ .btn-action:hover {
362
+ background: rgba(var(--color-cyan-rgb), 0.2);
363
+ }
364
+
365
+ .hud-console {
366
+ background: #05080e;
367
+ border: 1px solid var(--border-card);
368
+ border-radius: 8px;
369
+ padding: 0.75rem 1rem;
370
+ font-family: var(--font-mono);
371
+ font-size: 0.75rem;
372
+ color: var(--color-emerald);
373
+ min-height: 40px;
374
+ display: flex;
375
+ align-items: center;
376
+ }
377
+
378
+ footer {
379
+ text-align: center;
380
+ margin-top: 3rem;
381
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
382
+ padding-top: 1.5rem;
383
+ color: var(--text-dark);
384
+ font-size: 0.8rem;
385
+ }
386
+ </style>
387
+ </head>
388
+ <body>
389
+
390
+ <div class="container">
391
+ <!-- Header -->
392
+ <header>
393
+ <div class="header-logo">
394
+ <div class="logo-box">
395
+ <svg viewBox="0 0 64 64" width="32" height="32" role="img" aria-label="Clio Coder logo"><title>Clio Coder logo</title><rect x="8" y="8" width="48" height="48" rx="12" fill="rgba(0,240,255,0.12)" stroke="rgba(0,240,255,0.65)"/><path d="M32 14 16 23l16 9 16-9-16-9Z" fill="none" stroke="#00f0ff" stroke-width="3" stroke-linejoin="round"/><path d="M16 32l16 9 16-9M16 41l16 9 16-9" fill="none" stroke="#bd00ff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>
396
+ </div>
397
+ <div>
398
+ <h1>Skills Marketplace</h1>
399
+ <div class="subtitle">Interactive Skills Hub Explorer & Package Installer</div>
400
+ </div>
401
+ </div>
402
+ <div style="display:flex; align-items:center; gap: 1rem;">
403
+ <a href="index.html" class="back-link">
404
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>Icon</title><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg>
405
+ Back to Hub
406
+ </a>
407
+ <div class="version-tag">
408
+ <div class="version-dot"></div>
409
+ Clio Coder v0.3.0
410
+ </div>
411
+ </div>
412
+ </header>
413
+
414
+ <!-- Skills Hub Split Pane -->
415
+ <div class="skills-hub">
416
+
417
+ <!-- Left side: List and search -->
418
+ <div class="list-side">
419
+ <div class="search-panel">
420
+ <div class="search-input-wrapper">
421
+ <input type="text" class="search-input" id="search-box" placeholder="Search skills by name or description..." oninput="filterSkills()">
422
+ </div>
423
+ </div>
424
+
425
+ <div class="skills-list-container">
426
+ <!-- Project Group -->
427
+ <div>
428
+ <div class="group-title">Project Skills (.clio-coder/skills)</div>
429
+ <div id="group-project"></div>
430
+ </div>
431
+ <!-- User Group -->
432
+ <div style="margin-top: 1rem;">
433
+ <div class="group-title">User Skills (configDir/skills)</div>
434
+ <div id="group-user"></div>
435
+ </div>
436
+ <!-- Marketplace Group -->
437
+ <div style="margin-top: 1rem;">
438
+ <div class="group-title">Marketplace (local catalog or skill-marketplace.json)</div>
439
+ <div id="group-market"></div>
440
+ </div>
441
+ </div>
442
+ </div>
443
+
444
+ <!-- Right side: Detail pane & Simulator actions -->
445
+ <div class="detail-side">
446
+ <div class="detail-header">
447
+ <div>
448
+ <div class="detail-title" id="det-title">hdf5-review</div>
449
+ <div class="detail-provenance">
450
+ <span class="provenance-dot" id="det-provenance-dot"></span>
451
+ <span id="det-provenance-text">Loaded from Cache</span>
452
+ </div>
453
+ </div>
454
+ <span class="scope-badge" id="det-scope-badge">Project</span>
455
+ </div>
456
+
457
+ <div class="metadata-grid">
458
+ <div class="metadata-item"><span>License:</span> <strong id="det-license">MIT</strong></div>
459
+ <div class="metadata-item"><span>Version:</span> <strong id="det-version">1.0.0</strong></div>
460
+ <div class="metadata-item"><span>Allowed Tools:</span> <strong id="det-tools">Read, Grep</strong></div>
461
+ <div class="metadata-item"><span>Integrity Hash:</span> <strong id="det-hash">sha256-4b684...</strong></div>
462
+ </div>
463
+
464
+ <div class="detail-body" id="det-body">
465
+ Loading...
466
+ </div>
467
+
468
+ <!-- CLI Console Simulation -->
469
+ <div class="hud-console" id="console-output">
470
+ System idle. Select a skill or install packages.
471
+ </div>
472
+
473
+ <div class="hud-actions">
474
+ <button type="button" class="btn btn-action" onclick="simulateSelectSkill()">
475
+ Insert to Editor (Enter)
476
+ </button>
477
+ <button type="button" class="btn" id="install-btn" onclick="simulateInstallSkill()">
478
+ Install Eagerly (i)
479
+ </button>
480
+ </div>
481
+ </div>
482
+
483
+ </div>
484
+
485
+ <footer>
486
+ <p>Clio Coder Visual Specification Blueprint. Product Version v0.3.0. Designed with high-performance dark aesthetics.</p>
487
+ </footer>
488
+ </div>
489
+
490
+ <script>
491
+ const SKILLS = {
492
+ "hdf5-review": {
493
+ name: "hdf5-review",
494
+ scope: "project",
495
+ scopeClass: "scope-project",
496
+ provenance: "Local Disk (.clio-coder/skills/hdf5-review)",
497
+ provDot: "provenance-cached",
498
+ license: "MIT",
499
+ version: "1.0.0",
500
+ tools: "Read, Grep",
501
+ hash: "sha256-abc482fd8f9a93012ff1875e",
502
+ description: "Review HDF5/NetCDF validation logic and output assumptions.",
503
+ body: `When asked to review scientific array output:
504
+ - identify expected dimensions and attributes;
505
+ - ask for validation data when absent;
506
+ - prefer deterministic scripts over visual inspection;
507
+ - cite files and commands used.`
508
+ },
509
+ "sys-bench": {
510
+ name: "sys-bench",
511
+ scope: "user",
512
+ scopeClass: "scope-user",
513
+ provenance: "User Directory (~/.config/clio-coder/skills/sys-bench)",
514
+ provDot: "provenance-cached",
515
+ license: "Apache-2.0",
516
+ version: "1.2.0",
517
+ tools: "Bash, Verify",
518
+ hash: "sha256-d8f92ea4b78712ab870c99a0",
519
+ description: "Execute baseline benchmarks on target serving matrices.",
520
+ body: `When benchmarking local model presets:
521
+ - build the binaries in release target;
522
+ - request single-file CLI output generation;
523
+ - verify model context parameters and record output TTFT.`
524
+ },
525
+ "netcdf-check": {
526
+ name: "netcdf-check",
527
+ scope: "market",
528
+ scopeClass: "scope-market",
529
+ provenance: "Local marketplace catalog (installs on i)",
530
+ provDot: "provenance-pinned",
531
+ license: "MIT",
532
+ version: "1.0.1",
533
+ tools: "Read, Bash",
534
+ hash: "sha256-ff7a391c12df8bfa982a01f4",
535
+ description: "Run metadata inspections on NetCDF climate files.",
536
+ body: `When inspecting .nc file dimensions:
537
+ - invoke 'ncdump -h' to read variables schema;
538
+ - check CF conventions version tag attributes;
539
+ - verify latitude and longitude grids spacing invariants.`
540
+ },
541
+ "vtk-render": {
542
+ name: "vtk-render",
543
+ scope: "market",
544
+ scopeClass: "scope-market",
545
+ provenance: "GitHub contents API listing",
546
+ provDot: "provenance-live",
547
+ license: "BSD-3-Clause",
548
+ version: "2.0.0",
549
+ tools: "Bash, Read",
550
+ hash: "sha256-829afc87ffea1029ba87eddf",
551
+ description: "Generate ParaView state files from local scientific meshes.",
552
+ body: `When visualizing VTK mesh coordinates:
553
+ - verify cell arrays formatting;
554
+ - validate coordinate system bounds against scientific tolerances;
555
+ - execute local python export pipelines scripts.`
556
+ }
557
+ };
558
+
559
+ let activeSkill = "hdf5-review";
560
+
561
+ function renderList() {
562
+ document.getElementById("group-project").innerHTML = "";
563
+ document.getElementById("group-user").innerHTML = "";
564
+ document.getElementById("group-market").innerHTML = "";
565
+
566
+ Object.keys(SKILLS).forEach(key => {
567
+ const sk = SKILLS[key];
568
+ const card = document.createElement("div");
569
+ card.className = `skill-card ${key === activeSkill ? 'active' : ''}`;
570
+ card.id = `skill-card-${key}`;
571
+ card.onclick = () => selectSkill(key);
572
+
573
+ card.innerHTML = `
574
+ <div>
575
+ <div class="skill-name">${sk.name}</div>
576
+ <div class="skill-desc-short">${sk.description}</div>
577
+ </div>
578
+ <span class="scope-badge ${sk.scopeClass}">${sk.scope}</span>
579
+ `;
580
+
581
+ document.getElementById(`group-${sk.scope}`).appendChild(card);
582
+ });
583
+ }
584
+
585
+ function selectSkill(key) {
586
+ activeSkill = key;
587
+ document.querySelectorAll(".skill-card").forEach(c => { c.classList.remove("active"); });
588
+ document.getElementById(`skill-card-${key}`).classList.add("active");
589
+
590
+ const sk = SKILLS[key];
591
+ document.getElementById("det-title").innerText = sk.name;
592
+ document.getElementById("det-scope-badge").innerText = sk.scope;
593
+ document.getElementById("det-scope-badge").className = `scope-badge ${sk.scopeClass}`;
594
+ document.getElementById("det-provenance-text").innerText = sk.provenance;
595
+ document.getElementById("det-provenance-dot").className = `provenance-dot ${sk.provDot}`;
596
+
597
+ document.getElementById("det-license").innerText = sk.license;
598
+ document.getElementById("det-version").innerText = sk.version;
599
+ document.getElementById("det-tools").innerText = sk.tools;
600
+ document.getElementById("det-hash").innerText = sk.hash;
601
+ document.getElementById("det-body").textContent = sk.body;
602
+
603
+ const installBtn = document.getElementById("install-btn");
604
+ if (sk.scope === "market") {
605
+ installBtn.style.display = "inline-flex";
606
+ } else {
607
+ installBtn.style.display = "none";
608
+ }
609
+ }
610
+
611
+ function simulateSelectSkill() {
612
+ const sk = SKILLS[activeSkill];
613
+ const cmd = `/skill:${sk.name} `;
614
+ document.getElementById("console-output").innerText = `[TUI Editor] Inserted: "${cmd}"`;
615
+
616
+ const cons = document.getElementById("console-output");
617
+ cons.style.color = "var(--color-cyan)";
618
+ setTimeout(() => { cons.style.color = "var(--color-emerald)"; }, 2000);
619
+ }
620
+
621
+ function simulateInstallSkill() {
622
+ const sk = SKILLS[activeSkill];
623
+ document.getElementById("console-output").innerText = `[CLI] Eagerly installing skill '${sk.name}' into project scope at '.clio-coder/skills/${sk.name}'...`;
624
+
625
+ setTimeout(() => {
626
+ // Upgrade scope to project
627
+ sk.scope = "project";
628
+ sk.scopeClass = "scope-project";
629
+ sk.provenance = `Eagerly Installed (.clio-coder/skills/${sk.name})`;
630
+ sk.provDot = "provenance-cached";
631
+
632
+ renderList();
633
+ selectSkill(activeSkill);
634
+
635
+ document.getElementById("console-output").innerText = `[SUCCESS] Installed skill '${sk.name}' successfully.`;
636
+ }, 1500);
637
+ }
638
+
639
+ function filterSkills() {
640
+ const q = document.getElementById("search-box").value.toLowerCase();
641
+
642
+ Object.keys(SKILLS).forEach(key => {
643
+ const sk = SKILLS[key];
644
+ const card = document.getElementById(`skill-card-${key}`);
645
+ if (sk.name.toLowerCase().includes(q) || sk.description.toLowerCase().includes(q) || sk.body.toLowerCase().includes(q)) {
646
+ card.style.display = "flex";
647
+ } else {
648
+ card.style.display = "none";
649
+ }
650
+ });
651
+ }
652
+
653
+ // Keybindings support
654
+ document.addEventListener("keydown", (e) => {
655
+ if (e.key === "Enter") {
656
+ simulateSelectSkill();
657
+ } else if (e.key === "i" || e.key === "I") {
658
+ const sk = SKILLS[activeSkill];
659
+ if (sk.scope === "market") {
660
+ simulateInstallSkill();
661
+ }
662
+ }
663
+ });
664
+
665
+ window.onload = () => {
666
+ renderList();
667
+ selectSkill(activeSkill);
668
+ };
669
+ </script>
670
+ </body>
671
+ </html>