mindforge-cc 11.5.1 → 11.6.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 (170) hide show
  1. package/.agent/mindforge/skill-tdd.md +53 -0
  2. package/.agent/mindforge/skills-index.md +118 -0
  3. package/.agent/mindforge/systematic-debug.md +60 -0
  4. package/.agent/skills/1password-skill/SKILL.md +156 -0
  5. package/.agent/skills/1password-skill/references/cli-examples.md +31 -0
  6. package/.agent/skills/1password-skill/references/get-started.md +21 -0
  7. package/.agent/skills/article-illustrator/SKILL.md +199 -0
  8. package/.agent/skills/article-illustrator/references/prompt-construction.md +426 -0
  9. package/.agent/skills/article-illustrator/references/style-presets.md +80 -0
  10. package/.agent/skills/article-illustrator/references/styles.md +224 -0
  11. package/.agent/skills/article-illustrator/references/usage.md +50 -0
  12. package/.agent/skills/article-illustrator/references/workflow.md +332 -0
  13. package/.agent/skills/arxiv/SKILL.md +275 -0
  14. package/.agent/skills/blogwatcher/SKILL.md +130 -0
  15. package/.agent/skills/code-wiki/SKILL.md +438 -0
  16. package/.agent/skills/code-wiki/templates/README.md +31 -0
  17. package/.agent/skills/code-wiki/templates/architecture.md +30 -0
  18. package/.agent/skills/code-wiki/templates/getting-started.md +47 -0
  19. package/.agent/skills/code-wiki/templates/module.md +38 -0
  20. package/.agent/skills/codebase-inspection/SKILL.md +109 -0
  21. package/.agent/skills/comic-creator/SKILL.md +240 -0
  22. package/.agent/skills/comic-creator/references/analysis-framework.md +176 -0
  23. package/.agent/skills/comic-creator/references/auto-selection.md +71 -0
  24. package/.agent/skills/comic-creator/references/base-prompt.md +98 -0
  25. package/.agent/skills/comic-creator/references/character-template.md +180 -0
  26. package/.agent/skills/comic-creator/references/ohmsha-guide.md +85 -0
  27. package/.agent/skills/comic-creator/references/partial-workflows.md +106 -0
  28. package/.agent/skills/comic-creator/references/storyboard-template.md +143 -0
  29. package/.agent/skills/comic-creator/references/workflow.md +401 -0
  30. package/.agent/skills/concept-diagrams/SKILL.md +355 -0
  31. package/.agent/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
  32. package/.agent/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
  33. package/.agent/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
  34. package/.agent/skills/creative-ideation/SKILL.md +144 -0
  35. package/.agent/skills/creative-ideation/references/full-prompt-library.md +110 -0
  36. package/.agent/skills/devops-cli/SKILL.md +149 -0
  37. package/.agent/skills/devops-cli/references/app-discovery.md +112 -0
  38. package/.agent/skills/devops-cli/references/authentication.md +59 -0
  39. package/.agent/skills/devops-cli/references/cli-reference.md +104 -0
  40. package/.agent/skills/devops-cli/references/running-apps.md +171 -0
  41. package/.agent/skills/devops-watchers/SKILL.md +103 -0
  42. package/.agent/skills/docker-management/SKILL.md +273 -0
  43. package/.agent/skills/domain-intel/SKILL.md +96 -0
  44. package/.agent/skills/duckduckgo-search/SKILL.md +230 -0
  45. package/.agent/skills/github-auth/SKILL.md +240 -0
  46. package/.agent/skills/github-code-review/SKILL.md +474 -0
  47. package/.agent/skills/github-code-review/references/review-output-template.md +74 -0
  48. package/.agent/skills/github-issues/SKILL.md +363 -0
  49. package/.agent/skills/github-issues/templates/bug-report.md +35 -0
  50. package/.agent/skills/github-issues/templates/feature-request.md +31 -0
  51. package/.agent/skills/github-pr-workflow/SKILL.md +360 -0
  52. package/.agent/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
  53. package/.agent/skills/github-pr-workflow/references/conventional-commits.md +71 -0
  54. package/.agent/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
  55. package/.agent/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
  56. package/.agent/skills/github-repo-management/SKILL.md +509 -0
  57. package/.agent/skills/github-repo-management/references/github-api-cheatsheet.md +161 -0
  58. package/.agent/skills/godmode/SKILL.md +396 -0
  59. package/.agent/skills/godmode/references/jailbreak-templates.md +128 -0
  60. package/.agent/skills/godmode/references/refusal-detection.md +142 -0
  61. package/.agent/skills/hyperframes/SKILL.md +182 -0
  62. package/.agent/skills/hyperframes/references/cli.md +185 -0
  63. package/.agent/skills/hyperframes/references/composition.md +129 -0
  64. package/.agent/skills/hyperframes/references/features.md +289 -0
  65. package/.agent/skills/hyperframes/references/gsap.md +136 -0
  66. package/.agent/skills/hyperframes/references/troubleshooting.md +137 -0
  67. package/.agent/skills/hyperframes/references/website-to-video.md +145 -0
  68. package/.agent/skills/jupyter-live-kernel/SKILL.md +160 -0
  69. package/.agent/skills/kanban-orchestrator/SKILL.md +209 -0
  70. package/.agent/skills/kanban-worker/SKILL.md +188 -0
  71. package/.agent/skills/llm-wiki/SKILL.md +499 -0
  72. package/.agent/skills/meme-generation/SKILL.md +122 -0
  73. package/.agent/skills/node-inspect-debugger/SKILL.md +312 -0
  74. package/.agent/skills/obsidian/SKILL.md +60 -0
  75. package/.agent/skills/osint-investigation/SKILL.md +269 -0
  76. package/.agent/skills/osint-investigation/templates/source-template.md +59 -0
  77. package/.agent/skills/oss-forensics/SKILL.md +422 -0
  78. package/.agent/skills/oss-forensics/references/evidence-types.md +89 -0
  79. package/.agent/skills/oss-forensics/references/github-archive-guide.md +184 -0
  80. package/.agent/skills/oss-forensics/references/investigation-templates.md +131 -0
  81. package/.agent/skills/oss-forensics/references/recovery-techniques.md +164 -0
  82. package/.agent/skills/oss-forensics/templates/forensic-report.md +151 -0
  83. package/.agent/skills/oss-forensics/templates/malicious-package-report.md +43 -0
  84. package/.agent/skills/parallel-cli/SKILL.md +384 -0
  85. package/.agent/skills/pinggy-tunnel/SKILL.md +302 -0
  86. package/.agent/skills/pixel-art/SKILL.md +209 -0
  87. package/.agent/skills/pixel-art/references/palettes.md +49 -0
  88. package/.agent/skills/plan/SKILL.md +331 -0
  89. package/.agent/skills/polymarket/SKILL.md +75 -0
  90. package/.agent/skills/polymarket/references/api-endpoints.md +220 -0
  91. package/.agent/skills/python-debugpy/SKILL.md +368 -0
  92. package/.agent/skills/requesting-code-review/SKILL.md +273 -0
  93. package/.agent/skills/research-paper-writing/SKILL.md +2367 -0
  94. package/.agent/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
  95. package/.agent/skills/research-paper-writing/references/checklists.md +434 -0
  96. package/.agent/skills/research-paper-writing/references/citation-workflow.md +563 -0
  97. package/.agent/skills/research-paper-writing/references/experiment-patterns.md +728 -0
  98. package/.agent/skills/research-paper-writing/references/human-evaluation.md +476 -0
  99. package/.agent/skills/research-paper-writing/references/paper-types.md +481 -0
  100. package/.agent/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
  101. package/.agent/skills/research-paper-writing/references/sources.md +191 -0
  102. package/.agent/skills/research-paper-writing/references/writing-guide.md +474 -0
  103. package/.agent/skills/research-paper-writing/templates/README.md +251 -0
  104. package/.agent/skills/rest-graphql-debug/SKILL.md +507 -0
  105. package/.agent/skills/s6-container-supervision/SKILL.md +171 -0
  106. package/.agent/skills/scrapling/SKILL.md +328 -0
  107. package/.agent/skills/sherlock/SKILL.md +186 -0
  108. package/.agent/skills/simplify-code/SKILL.md +168 -0
  109. package/.agent/skills/skill-authoring/SKILL.md +158 -0
  110. package/.agent/skills/spike/SKILL.md +190 -0
  111. package/.agent/skills/subagent-driven-development/SKILL.md +345 -0
  112. package/.agent/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
  113. package/.agent/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
  114. package/.agent/skills/systematic-debugging/SKILL.md +360 -0
  115. package/.agent/skills/test-driven-development/SKILL.md +336 -0
  116. package/.agent/skills/video-orchestrator/SKILL.md +194 -0
  117. package/.agent/skills/video-orchestrator/references/examples.md +227 -0
  118. package/.agent/skills/video-orchestrator/references/intake.md +166 -0
  119. package/.agent/skills/video-orchestrator/references/kanban-setup.md +278 -0
  120. package/.agent/skills/video-orchestrator/references/monitoring.md +180 -0
  121. package/.agent/skills/video-orchestrator/references/role-archetypes.md +298 -0
  122. package/.agent/skills/video-orchestrator/references/tool-matrix.md +317 -0
  123. package/.agent/skills/web-pentest/SKILL.md +332 -0
  124. package/.agent/skills/web-pentest/references/bypass-techniques.md +133 -0
  125. package/.agent/skills/web-pentest/references/exploitation-techniques.md +204 -0
  126. package/.agent/skills/web-pentest/references/scope-enforcement.md +110 -0
  127. package/.agent/skills/web-pentest/references/vuln-taxonomy.md +81 -0
  128. package/.agent/skills/web-pentest/templates/authorization.md +69 -0
  129. package/.agent/skills/web-pentest/templates/pentest-report.md +178 -0
  130. package/.claude/commands/mindforge/skill-tdd.md +53 -0
  131. package/.claude/commands/mindforge/skills-index.md +118 -0
  132. package/.claude/commands/mindforge/systematic-debug.md +60 -0
  133. package/.mindforge/config.json +2 -2
  134. package/.mindforge/memory/sync-manifest.json +1 -1
  135. package/.mindforge/skills/arxiv/SKILL.md +294 -0
  136. package/.mindforge/skills/blogwatcher/SKILL.md +147 -0
  137. package/.mindforge/skills/code-wiki/SKILL.md +457 -0
  138. package/.mindforge/skills/codebase-inspection/SKILL.md +126 -0
  139. package/.mindforge/skills/concept-diagrams/SKILL.md +373 -0
  140. package/.mindforge/skills/creative-ideation/SKILL.md +162 -0
  141. package/.mindforge/skills/domain-intel/SKILL.md +116 -0
  142. package/.mindforge/skills/duckduckgo-search/SKILL.md +249 -0
  143. package/.mindforge/skills/github-code-review/SKILL.md +493 -0
  144. package/.mindforge/skills/github-issues/SKILL.md +382 -0
  145. package/.mindforge/skills/github-pr-workflow/SKILL.md +379 -0
  146. package/.mindforge/skills/jupyter-live-kernel/SKILL.md +179 -0
  147. package/.mindforge/skills/kanban-orchestrator/SKILL.md +227 -0
  148. package/.mindforge/skills/kanban-worker/SKILL.md +206 -0
  149. package/.mindforge/skills/meme-generation/SKILL.md +141 -0
  150. package/.mindforge/skills/obsidian/SKILL.md +80 -0
  151. package/.mindforge/skills/osint-investigation/SKILL.md +288 -0
  152. package/.mindforge/skills/oss-forensics/SKILL.md +421 -0
  153. package/.mindforge/skills/pixel-art/SKILL.md +228 -0
  154. package/.mindforge/skills/plan/SKILL.md +350 -0
  155. package/.mindforge/skills/requesting-code-review/SKILL.md +292 -0
  156. package/.mindforge/skills/research-paper-writing/SKILL.md +2384 -0
  157. package/.mindforge/skills/scrapling/SKILL.md +345 -0
  158. package/.mindforge/skills/sherlock/SKILL.md +203 -0
  159. package/.mindforge/skills/simplify-code/SKILL.md +187 -0
  160. package/.mindforge/skills/spike/SKILL.md +209 -0
  161. package/.mindforge/skills/subagent-driven-development/SKILL.md +364 -0
  162. package/.mindforge/skills/systematic-debugging/SKILL.md +379 -0
  163. package/.mindforge/skills/test-driven-development/SKILL.md +355 -0
  164. package/.mindforge/skills/web-pentest/SKILL.md +327 -0
  165. package/CHANGELOG.md +43 -0
  166. package/MINDFORGE.md +2 -2
  167. package/README.md +39 -3
  168. package/RELEASENOTES.md +55 -0
  169. package/docs/getting-started.md +42 -5
  170. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ ---
2
+ name: pixel-art
3
+ description: "Pixel art w/ era palettes (NES, Game Boy, PICO-8)."
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # Pixel Art
8
+
9
+ Convert any image into retro pixel art, then optionally animate it into a short
10
+ MP4 or GIF with era-appropriate effects (rain, fireflies, snow, embers).
11
+
12
+ Two scripts ship with this skill:
13
+
14
+ - `scripts/pixel_art.py` — photo → pixel-art PNG (Floyd-Steinberg dithering)
15
+ - `scripts/pixel_art_video.py` — pixel-art PNG → animated MP4 (+ optional GIF)
16
+
17
+ Each is importable or runnable directly. Presets snap to hardware palettes
18
+ when you want era-accurate colors (NES, Game Boy, PICO-8, etc.), or use
19
+ adaptive N-color quantization for arcade/SNES-style looks.
20
+
21
+ ## When to Use
22
+
23
+ - User wants retro pixel art from a source image
24
+ - User asks for NES / Game Boy / PICO-8 / C64 / arcade / SNES styling
25
+ - User wants a short looping animation (rain scene, night sky, snow, etc.)
26
+ - Posters, album covers, social posts, sprites, characters, avatars
27
+
28
+ ## Workflow
29
+
30
+ Before generating, confirm the style with the user. Different presets produce
31
+ very different outputs and regenerating is costly.
32
+
33
+ ### Step 1 — Offer a style
34
+
35
+ Call `clarify` with 4 representative presets. Pick the set based on what the
36
+ user asked for — don't just dump all 14.
37
+
38
+ Default menu when the user's intent is unclear:
39
+
40
+ ```python
41
+ clarify(
42
+ question="Which pixel-art style do you want?",
43
+ choices=[
44
+ "arcade — bold, chunky 80s cabinet feel (16 colors, 8px)",
45
+ "nes — Nintendo 8-bit hardware palette (54 colors, 8px)",
46
+ "gameboy — 4-shade green Game Boy DMG",
47
+ "snes — cleaner 16-bit look (32 colors, 4px)",
48
+ ],
49
+ )
50
+ ```
51
+
52
+ When the user already named an era (e.g. "80s arcade", "Gameboy"), skip
53
+ `clarify` and use the matching preset directly.
54
+
55
+ ### Step 2 — Offer animation (optional)
56
+
57
+ If the user asked for a video/GIF, or the output might benefit from motion,
58
+ ask which scene:
59
+
60
+ ```python
61
+ clarify(
62
+ question="Want to animate it? Pick a scene or skip.",
63
+ choices=[
64
+ "night — stars + fireflies + leaves",
65
+ "urban — rain + neon pulse",
66
+ "snow — falling snowflakes",
67
+ "skip — just the image",
68
+ ],
69
+ )
70
+ ```
71
+
72
+ Do NOT call `clarify` more than twice in a row. One for style, one for scene if
73
+ animation is on the table. If the user explicitly asked for a specific style
74
+ and scene in their message, skip `clarify` entirely.
75
+
76
+ ### Step 3 — Generate
77
+
78
+ Run `pixel_art()` first; if animation was requested, chain into
79
+ `pixel_art_video()` on the result.
80
+
81
+ ## Preset Catalog
82
+
83
+ | Preset | Era | Palette | Block | Best for |
84
+ |--------|-----|---------|-------|----------|
85
+ | `arcade` | 80s arcade | adaptive 16 | 8px | Bold posters, hero art |
86
+ | `snes` | 16-bit | adaptive 32 | 4px | Characters, detailed scenes |
87
+ | `nes` | 8-bit | NES (54) | 8px | True NES look |
88
+ | `gameboy` | DMG handheld | 4 green shades | 8px | Monochrome Game Boy |
89
+ | `gameboy_pocket` | Pocket handheld | 4 grey shades | 8px | Mono GB Pocket |
90
+ | `pico8` | PICO-8 | 16 fixed | 6px | Fantasy-console look |
91
+ | `c64` | Commodore 64 | 16 fixed | 8px | 8-bit home computer |
92
+ | `apple2` | Apple II hi-res | 6 fixed | 10px | Extreme retro, 6 colors |
93
+ | `teletext` | BBC Teletext | 8 pure | 10px | Chunky primary colors |
94
+ | `mspaint` | Windows MS Paint | 24 fixed | 8px | Nostalgic desktop |
95
+ | `mono_green` | CRT phosphor | 2 green | 6px | Terminal/CRT aesthetic |
96
+ | `mono_amber` | CRT amber | 2 amber | 6px | Amber monitor look |
97
+ | `neon` | Cyberpunk | 10 neons | 6px | Vaporwave/cyber |
98
+ | `pastel` | Soft pastel | 10 pastels | 6px | Kawaii / gentle |
99
+
100
+ Named palettes live in `scripts/palettes.py` (see `references/palettes.md` for
101
+ the complete list — 28 named palettes total). Any preset can be overridden:
102
+
103
+ ```python
104
+ pixel_art("in.png", "out.png", preset="snes", palette="PICO_8", block=6)
105
+ ```
106
+
107
+ ## Scene Catalog (for video)
108
+
109
+ | Scene | Effects |
110
+ |-------|---------|
111
+ | `night` | Twinkling stars + fireflies + drifting leaves |
112
+ | `dusk` | Fireflies + sparkles |
113
+ | `tavern` | Dust motes + warm sparkles |
114
+ | `indoor` | Dust motes |
115
+ | `urban` | Rain + neon pulse |
116
+ | `nature` | Leaves + fireflies |
117
+ | `magic` | Sparkles + fireflies |
118
+ | `storm` | Rain + lightning |
119
+ | `underwater` | Bubbles + light sparkles |
120
+ | `fire` | Embers + sparkles |
121
+ | `snow` | Snowflakes + sparkles |
122
+ | `desert` | Heat shimmer + dust |
123
+
124
+ ## Invocation Patterns
125
+
126
+ ### Python (import)
127
+
128
+ ```python
129
+ import sys
130
+ sys.path.insert(0, "/home/teknium/.hermes/skills/creative/pixel-art/scripts")
131
+ from pixel_art import pixel_art
132
+ from pixel_art_video import pixel_art_video
133
+
134
+ # 1. Convert to pixel art
135
+ pixel_art("/path/to/photo.jpg", "/tmp/pixel.png", preset="nes")
136
+
137
+ # 2. Animate (optional)
138
+ pixel_art_video(
139
+ "/tmp/pixel.png",
140
+ "/tmp/pixel.mp4",
141
+ scene="night",
142
+ duration=6,
143
+ fps=15,
144
+ seed=42,
145
+ export_gif=True,
146
+ )
147
+ ```
148
+
149
+ ### CLI
150
+
151
+ ```bash
152
+ cd /home/teknium/.hermes/skills/creative/pixel-art/scripts
153
+
154
+ python pixel_art.py in.jpg out.png --preset gameboy
155
+ python pixel_art.py in.jpg out.png --preset snes --palette PICO_8 --block 6
156
+
157
+ python pixel_art_video.py out.png out.mp4 --scene night --duration 6 --gif
158
+ ```
159
+
160
+ ## Pipeline Rationale
161
+
162
+ **Pixel conversion:**
163
+ 1. Boost contrast/color/sharpness (stronger for smaller palettes)
164
+ 2. Posterize to simplify tonal regions before quantization
165
+ 3. Downscale by `block` with `Image.NEAREST` (hard pixels, no interpolation)
166
+ 4. Quantize with Floyd-Steinberg dithering — against either an adaptive
167
+ N-color palette OR a named hardware palette
168
+ 5. Upscale back with `Image.NEAREST`
169
+
170
+ Quantizing AFTER downscale keeps dithering aligned with the final pixel grid.
171
+ Quantizing before would waste error-diffusion on detail that disappears.
172
+
173
+ **Video overlay:**
174
+ - Copies the base frame each tick (static background)
175
+ - Overlays stateless-per-frame particle draws (one function per effect)
176
+ - Encodes via ffmpeg `libx264 -pix_fmt yuv420p -crf 18`
177
+ - Optional GIF via `palettegen` + `paletteuse`
178
+
179
+ ## Dependencies
180
+
181
+ - Python 3.9+
182
+ - Pillow (`pip install Pillow`)
183
+ - ffmpeg on PATH (only needed for video — the agent installs package this)
184
+
185
+ ## Pitfalls
186
+
187
+ - Pallet keys are case-sensitive (`"NES"`, `"PICO_8"`, `"GAMEBOY_ORIGINAL"`).
188
+ - Very small sources (<100px wide) collapse under 8-10px blocks. Upscale the
189
+ source first if it's tiny.
190
+ - Fractional `block` or `palette` will break quantization — keep them positive ints.
191
+ - Animation particle counts are tuned for ~640x480 canvases. On very large
192
+ images you may want a second pass with a different seed for density.
193
+ - `mono_green` / `mono_amber` force `color=0.0` (desaturate). If you override
194
+ and keep chroma, the 2-color palette can produce stripes on smooth regions.
195
+ - `clarify` loop: call it at most twice per turn (style, then scene). Don't
196
+ pepper the user with more picks.
197
+
198
+ ## Verification
199
+
200
+ - PNG is created at the output path
201
+ - Clear square pixel blocks visible at the preset's block size
202
+ - Color count matches preset (eyeball the image or run `Image.open(p).getcolors()`)
203
+ - Video is a valid MP4 (`ffprobe` can open it) with non-zero size
204
+
205
+ ## Attribution
206
+
207
+ Named hardware palettes and the procedural animation loops in `pixel_art_video.py`
208
+ are ported from [pixel-art-studio](https://github.com/Synero/pixel-art-studio)
209
+ (MIT). See `ATTRIBUTION.md` in this skill directory for details.
@@ -0,0 +1,49 @@
1
+ # Named Palettes
2
+
3
+ 28 hardware-accurate and artistic palettes available to `pixel_art()`.
4
+ Palette values are sourced from `pixel-art-studio` (MIT) — see ATTRIBUTION.md in the skill root.
5
+
6
+ Usage: pass the palette name as `palette=` or let a preset select it.
7
+
8
+ ```python
9
+ pixel_art("in.png", "out.png", preset="nes") # preset selects NES
10
+ pixel_art("in.png", "out.png", preset="custom", palette="PICO_8", block=6)
11
+ ```
12
+
13
+ ## Hardware Palettes
14
+
15
+ | Name | Colors | Source |
16
+ |------|--------|--------|
17
+ | `NES` | 54 | Nintendo NES |
18
+ | `C64` | 16 | Commodore 64 |
19
+ | `COMMODORE_64` | 16 | Commodore 64 (alt) |
20
+ | `ZX_SPECTRUM` | 8 | Sinclair ZX Spectrum |
21
+ | `APPLE_II_LO` | 16 | Apple II lo-res |
22
+ | `APPLE_II_HI` | 6 | Apple II hi-res |
23
+ | `GAMEBOY_ORIGINAL` | 4 | Game Boy DMG (green) |
24
+ | `GAMEBOY_POCKET` | 4 | Game Boy Pocket (grey) |
25
+ | `GAMEBOY_VIRTUALBOY` | 4 | Virtual Boy (red) |
26
+ | `PICO_8` | 16 | PICO-8 fantasy console |
27
+ | `TELETEXT` | 8 | BBC Teletext |
28
+ | `CGA_MODE4_PAL1` | 4 | IBM CGA |
29
+ | `MSX` | 15 | MSX |
30
+ | `MICROSOFT_WINDOWS_16` | 16 | Windows 3.x default |
31
+ | `MICROSOFT_WINDOWS_PAINT` | 24 | MS Paint classic |
32
+ | `MONO_BW` | 2 | Black and white |
33
+ | `MONO_AMBER` | 2 | Amber monochrome |
34
+ | `MONO_GREEN` | 2 | Green monochrome |
35
+
36
+ ## Artistic Palettes
37
+
38
+ | Name | Colors | Feel |
39
+ |------|--------|------|
40
+ | `PASTEL_DREAM` | 10 | Soft pastels |
41
+ | `NEON_CYBER` | 10 | Cyberpunk neon |
42
+ | `RETRO_WARM` | 10 | Warm 70s |
43
+ | `OCEAN_DEEP` | 10 | Blue gradient |
44
+ | `FOREST_MOSS` | 10 | Green naturals |
45
+ | `SUNSET_FIRE` | 10 | Red to yellow |
46
+ | `ARCTIC_ICE` | 10 | Cool blues and whites |
47
+ | `VINTAGE_ROSE` | 10 | Rose mauves |
48
+ | `EARTH_CLAY` | 10 | Terracotta browns |
49
+ | `ELECTRIC_VIOLET` | 10 | Violet gradient |
@@ -0,0 +1,331 @@
1
+ ---
2
+ name: plan
3
+ description: "Plan mode: write an actionable markdown plan to .hermes/plans/, no execution. Bite-sized tasks, exact paths, complete code."
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # Plan Mode
8
+
9
+ Use this skill when the user wants a plan instead of execution.
10
+
11
+ ## Core behavior
12
+
13
+ For this turn, you are planning only.
14
+
15
+ - Do not implement code.
16
+ - Do not edit project files except the plan markdown file.
17
+ - Do not run mutating terminal commands, commit, push, or perform external actions.
18
+ - You may inspect the repo or other context with read-only commands/tools when needed.
19
+ - Your deliverable is a markdown plan saved inside the active workspace under `.hermes/plans/`.
20
+
21
+ ## Output requirements
22
+
23
+ Write a markdown plan that is concrete and actionable.
24
+
25
+ Include, when relevant:
26
+ - Goal
27
+ - Current context / assumptions
28
+ - Proposed approach
29
+ - Step-by-step plan
30
+ - Files likely to change
31
+ - Tests / validation
32
+ - Risks, tradeoffs, and open questions
33
+
34
+ If the task is code-related, include exact file paths, likely test targets, and verification steps.
35
+
36
+ ## Save location
37
+
38
+ Save the plan with `write_file` under:
39
+ - `.hermes/plans/YYYY-MM-DD_HHMMSS-<slug>.md`
40
+
41
+ Treat that as relative to the active working directory / backend workspace. the agent file tools are backend-aware, so using this relative path keeps the plan with the workspace on local, docker, ssh, modal, and daytona backends.
42
+
43
+ If the runtime provides a specific target path, use that exact path.
44
+ If not, create a sensible timestamped filename yourself under `.hermes/plans/`.
45
+
46
+ ## Interaction style
47
+
48
+ - If the request is clear enough, write the plan directly.
49
+ - If no explicit instruction accompanies `/plan`, infer the task from the current conversation context.
50
+ - If it is genuinely underspecified, ask a brief clarifying question instead of guessing.
51
+ - After saving the plan, reply briefly with what you planned and the saved path.
52
+
53
+ ---
54
+
55
+ # Writing the Plan Well
56
+
57
+ The rest of this skill is the craft of authoring a *good* implementation plan — the content that goes inside the markdown file above.
58
+
59
+ ## Overview
60
+
61
+ Write comprehensive implementation plans assuming the implementer has zero context for the codebase and questionable taste. Document everything they need: which files to touch, complete code, testing commands, docs to check, how to verify. Give them bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
62
+
63
+ Assume the implementer is a skilled developer but knows almost nothing about the toolset or problem domain. Assume they don't know good test design very well.
64
+
65
+ **Core principle:** A good plan makes implementation obvious. If someone has to guess, the plan is incomplete.
66
+
67
+ ## When a Full Implementation Plan Helps
68
+
69
+ **Always use before:**
70
+ - Implementing multi-step features
71
+ - Breaking down complex requirements
72
+ - Delegating to subagents via subagent-driven-development
73
+
74
+ **Don't skip when:**
75
+ - Feature seems simple (assumptions cause bugs)
76
+ - You plan to implement it yourself (future you needs guidance)
77
+ - Working alone (documentation matters)
78
+
79
+ ## Bite-Sized Task Granularity
80
+
81
+ **Each task = 2-5 minutes of focused work.**
82
+
83
+ Every step is one action:
84
+ - "Write the failing test" — step
85
+ - "Run it to make sure it fails" — step
86
+ - "Implement the minimal code to make the test pass" — step
87
+ - "Run the tests and make sure they pass" — step
88
+ - "Commit" — step
89
+
90
+ **Too big:**
91
+ ```markdown
92
+ ### Task 1: Build authentication system
93
+ [50 lines of code across 5 files]
94
+ ```
95
+
96
+ **Right size:**
97
+ ```markdown
98
+ ### Task 1: Create User model with email field
99
+ [10 lines, 1 file]
100
+
101
+ ### Task 2: Add password hash field to User
102
+ [8 lines, 1 file]
103
+
104
+ ### Task 3: Create password hashing utility
105
+ [15 lines, 1 file]
106
+ ```
107
+
108
+ ## Plan Document Structure
109
+
110
+ ### Header (Required)
111
+
112
+ Every plan MUST start with:
113
+
114
+ ```markdown
115
+ # [Feature Name] Implementation Plan
116
+
117
+ > **For the agent:** Use subagent-driven-development skill to implement this plan task-by-task.
118
+
119
+ **Goal:** [One sentence describing what this builds]
120
+
121
+ **Architecture:** [2-3 sentences about approach]
122
+
123
+ **Tech Stack:** [Key technologies/libraries]
124
+
125
+ ---
126
+ ```
127
+
128
+ ### Task Structure
129
+
130
+ Each task follows this format:
131
+
132
+ ````markdown
133
+ ### Task N: [Descriptive Name]
134
+
135
+ **Objective:** What this task accomplishes (one sentence)
136
+
137
+ **Files:**
138
+ - Create: `exact/path/to/new_file.py`
139
+ - Modify: `exact/path/to/existing.py:45-67` (line numbers if known)
140
+ - Test: `tests/path/to/test_file.py`
141
+
142
+ **Step 1: Write failing test**
143
+
144
+ ```python
145
+ def test_specific_behavior():
146
+ result = function(input)
147
+ assert result == expected
148
+ ```
149
+
150
+ **Step 2: Run test to verify failure**
151
+
152
+ Run: `pytest tests/path/test.py::test_specific_behavior -v`
153
+ Expected: FAIL — "function not defined"
154
+
155
+ **Step 3: Write minimal implementation**
156
+
157
+ ```python
158
+ def function(input):
159
+ return expected
160
+ ```
161
+
162
+ **Step 4: Run test to verify pass**
163
+
164
+ Run: `pytest tests/path/test.py::test_specific_behavior -v`
165
+ Expected: PASS
166
+
167
+ **Step 5: Commit**
168
+
169
+ ```bash
170
+ git add tests/path/test.py src/path/file.py
171
+ git commit -m "feat: add specific feature"
172
+ ```
173
+ ````
174
+
175
+ ## Writing Process
176
+
177
+ ### Step 1: Understand Requirements
178
+
179
+ Read and understand:
180
+ - Feature requirements
181
+ - Design documents or user description
182
+ - Acceptance criteria
183
+ - Constraints
184
+
185
+ ### Step 2: Explore the Codebase
186
+
187
+ Use tools to understand the project:
188
+
189
+ ```python
190
+ # Understand project structure
191
+ search_files("*.py", target="files", path="src/")
192
+
193
+ # Look at similar features
194
+ search_files("similar_pattern", path="src/", file_glob="*.py")
195
+
196
+ # Check existing tests
197
+ search_files("*.py", target="files", path="tests/")
198
+
199
+ # Read key files
200
+ read_file("src/app.py")
201
+ ```
202
+
203
+ ### Step 3: Design Approach
204
+
205
+ Decide:
206
+ - Architecture pattern
207
+ - File organization
208
+ - Dependencies needed
209
+ - Testing strategy
210
+
211
+ ### Step 4: Write Tasks
212
+
213
+ Create tasks in order:
214
+ 1. Setup/infrastructure
215
+ 2. Core functionality (TDD for each)
216
+ 3. Edge cases
217
+ 4. Integration
218
+ 5. Cleanup/documentation
219
+
220
+ ### Step 5: Add Complete Details
221
+
222
+ For each task, include:
223
+ - **Exact file paths** (not "the config file" but `src/config/settings.py`)
224
+ - **Complete code examples** (not "add validation" but the actual code)
225
+ - **Exact commands** with expected output
226
+ - **Verification steps** that prove the task works
227
+
228
+ ### Step 6: Review the Plan
229
+
230
+ Check:
231
+ - [ ] Tasks are sequential and logical
232
+ - [ ] Each task is bite-sized (2-5 min)
233
+ - [ ] File paths are exact
234
+ - [ ] Code examples are complete (copy-pasteable)
235
+ - [ ] Commands are exact with expected output
236
+ - [ ] No missing context
237
+ - [ ] DRY, YAGNI, TDD principles applied
238
+
239
+ ## Principles
240
+
241
+ ### DRY (Don't Repeat Yourself)
242
+
243
+ **Bad:** Copy-paste validation in 3 places
244
+ **Good:** Extract validation function, use everywhere
245
+
246
+ ### YAGNI (You Aren't Gonna Need It)
247
+
248
+ **Bad:** Add "flexibility" for future requirements
249
+ **Good:** Implement only what's needed now
250
+
251
+ ```python
252
+ # Bad — YAGNI violation
253
+ class User:
254
+ def __init__(self, name, email):
255
+ self.name = name
256
+ self.email = email
257
+ self.preferences = {} # Not needed yet!
258
+ self.metadata = {} # Not needed yet!
259
+
260
+ # Good — YAGNI
261
+ class User:
262
+ def __init__(self, name, email):
263
+ self.name = name
264
+ self.email = email
265
+ ```
266
+
267
+ ### TDD (Test-Driven Development)
268
+
269
+ Every task that produces code should include the full TDD cycle:
270
+ 1. Write failing test
271
+ 2. Run to verify failure
272
+ 3. Write minimal code
273
+ 4. Run to verify pass
274
+
275
+ See `test-driven-development` skill for details.
276
+
277
+ ### Frequent Commits
278
+
279
+ Commit after every task:
280
+ ```bash
281
+ git add [files]
282
+ git commit -m "type: description"
283
+ ```
284
+
285
+ ## Common Mistakes
286
+
287
+ ### Vague Tasks
288
+
289
+ **Bad:** "Add authentication"
290
+ **Good:** "Create User model with email and password_hash fields"
291
+
292
+ ### Incomplete Code
293
+
294
+ **Bad:** "Step 1: Add validation function"
295
+ **Good:** "Step 1: Add validation function" followed by the complete function code
296
+
297
+ ### Missing Verification
298
+
299
+ **Bad:** "Step 3: Test it works"
300
+ **Good:** "Step 3: Run `pytest tests/test_auth.py -v`, expected: 3 passed"
301
+
302
+ ### Missing File Paths
303
+
304
+ **Bad:** "Create the model file"
305
+ **Good:** "Create: `src/models/user.py`"
306
+
307
+ ## Execution Handoff
308
+
309
+ After saving the plan, offer the execution approach:
310
+
311
+ **"Plan complete and saved. Ready to execute using subagent-driven-development — I'll dispatch a fresh subagent per task with two-stage review (spec compliance then code quality). Shall I proceed?"**
312
+
313
+ When executing, use the `subagent-driven-development` skill:
314
+ - Fresh `delegate_task` per task with full context
315
+ - Spec compliance review after each task
316
+ - Code quality review after spec passes
317
+ - Proceed only when both reviews approve
318
+
319
+ ## Remember
320
+
321
+ ```
322
+ Bite-sized tasks (2-5 min each)
323
+ Exact file paths
324
+ Complete code (copy-pasteable)
325
+ Exact commands with expected output
326
+ Verification steps
327
+ DRY, YAGNI, TDD
328
+ Frequent commits
329
+ ```
330
+
331
+ **A good plan makes implementation obvious.**
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: polymarket
3
+ description: "Query Polymarket: markets, prices, orderbooks, history."
4
+ version: 1.0.0
5
+ tags: [polymarket, prediction-markets, market-data, trading]
6
+ ---
7
+
8
+ # Polymarket — Prediction Market Data
9
+
10
+ Query prediction market data from Polymarket using their public REST APIs.
11
+ All endpoints are read-only and require zero authentication.
12
+
13
+ See `references/api-endpoints.md` for the full endpoint reference with curl examples.
14
+
15
+ ## When to Use
16
+
17
+ - User asks about prediction markets, betting odds, or event probabilities
18
+ - User wants to know "what are the odds of X happening?"
19
+ - User asks about Polymarket specifically
20
+ - User wants market prices, orderbook data, or price history
21
+ - User asks to monitor or track prediction market movements
22
+
23
+ ## Key Concepts
24
+
25
+ - **Events** contain one or more **Markets** (1:many relationship)
26
+ - **Markets** are binary outcomes with Yes/No prices between 0.00 and 1.00
27
+ - Prices ARE probabilities: price 0.65 means the market thinks 65% likely
28
+ - `outcomePrices` field: JSON-encoded array like `["0.80", "0.20"]`
29
+ - `clobTokenIds` field: JSON-encoded array of two token IDs [Yes, No] for price/book queries
30
+ - `conditionId` field: hex string used for price history queries
31
+ - Volume is in USDC (US dollars)
32
+
33
+ ## Three Public APIs
34
+
35
+ 1. **Gamma API** at `gamma-api.polymarket.com` — Discovery, search, browsing
36
+ 2. **CLOB API** at `clob.polymarket.com` — Real-time prices, orderbooks, history
37
+ 3. **Data API** at `data-api.polymarket.com` — Trades, open interest
38
+
39
+ ## Typical Workflow
40
+
41
+ When a user asks about prediction market odds:
42
+
43
+ 1. **Search** using the Gamma API public-search endpoint with their query
44
+ 2. **Parse** the response — extract events and their nested markets
45
+ 3. **Present** market question, current prices as percentages, and volume
46
+ 4. **Deep dive** if asked — use clobTokenIds for orderbook, conditionId for history
47
+
48
+ ## Presenting Results
49
+
50
+ Format prices as percentages for readability:
51
+ - outcomePrices `["0.652", "0.348"]` becomes "Yes: 65.2%, No: 34.8%"
52
+ - Always show the market question and probability
53
+ - Include volume when available
54
+
55
+ Example: `"Will X happen?" — 65.2% Yes ($1.2M volume)`
56
+
57
+ ## Parsing Double-Encoded Fields
58
+
59
+ The Gamma API returns `outcomePrices`, `outcomes`, and `clobTokenIds` as JSON strings
60
+ inside JSON responses (double-encoded). When processing with Python, parse them with
61
+ `json.loads(market['outcomePrices'])` to get the actual array.
62
+
63
+ ## Rate Limits
64
+
65
+ Generous — unlikely to hit for normal usage:
66
+ - Gamma: 4,000 requests per 10 seconds (general)
67
+ - CLOB: 9,000 requests per 10 seconds (general)
68
+ - Data: 1,000 requests per 10 seconds (general)
69
+
70
+ ## Limitations
71
+
72
+ - This skill is read-only — it does not support placing trades
73
+ - Trading requires wallet-based crypto authentication (EIP-712 signatures)
74
+ - Some new markets may have empty price history
75
+ - Geographic restrictions apply to trading but read-only data is globally accessible