diff --git a/assets/themes/nms/coloring-pages/coloring1.png b/assets/themes/nms/coloring-pages/coloring1.png new file mode 100644 index 0000000..1abed39 Binary files /dev/null and b/assets/themes/nms/coloring-pages/coloring1.png differ diff --git a/assets/themes/nms/coloring-pages/coloring2.png b/assets/themes/nms/coloring-pages/coloring2.png new file mode 100644 index 0000000..7b046aa Binary files /dev/null and b/assets/themes/nms/coloring-pages/coloring2.png differ diff --git a/assets/themes/nms/coloring-pages/coloring3.png b/assets/themes/nms/coloring-pages/coloring3.png new file mode 100644 index 0000000..89380cc Binary files /dev/null and b/assets/themes/nms/coloring-pages/coloring3.png differ diff --git a/output/pdf/space-coloring-1.pdf b/output/pdf/space-coloring-1.pdf new file mode 100644 index 0000000..045ee03 Binary files /dev/null and b/output/pdf/space-coloring-1.pdf differ diff --git a/tasks/index.html b/tasks/index.html index 14c8977..17d17f9 100644 --- a/tasks/index.html +++ b/tasks/index.html @@ -232,6 +232,20 @@ + +
+ Space Coloring +
+
+

Space Coloring

+

Grab your crayons! Full-page line-art coloring scenes from deep space — gunships, mining dropships, and lone explorers among asteroid belts and ringed planets.

+
+ 1 worksheet + Coloring +
+
+
+
Crystal Battery diff --git a/tasks/space-coloring/CLAUDE.md b/tasks/space-coloring/CLAUDE.md new file mode 100644 index 0000000..d617304 --- /dev/null +++ b/tasks/space-coloring/CLAUDE.md @@ -0,0 +1,76 @@ +# Space Coloring Task Type + +**Theme:** nms (`assets/themes/nms/`) + +Full-page line-art coloring worksheets for kids. Each page is a single A4 portrait scene from a No Man's Sky-inspired universe: a detailed spaceship surrounded by asteroids, planets, and floating space artifacts. Header and footer are kept minimal so the coloring image dominates. + +## Layout + +- **Page:** A4 (210mm x 297mm), portrait, white background +- **Header:** 16mm — small uppercase wordmark left, title centered, scene number right (`NN / NN`) +- **Main:** flex-1, image centered with `object-contain`, 8mm side padding, 3mm vertical padding +- **Footer:** 32mm — `footers/planet{1-9}.jpeg` with linear-gradient mask (transparent at top, solid at bottom), scene legend overlaid (italic, centered) + +## Coloring Image Assets + +- **Path:** `assets/themes/nms/coloring-pages/coloring{N}.png` +- **Raw originals:** `assets/themes/nms/coloring-pages/raw/` +- **Dimensions:** 864 x 1184 (ratio ~0.73). Fit cleanly inside a ~190mm x ~260mm area on A4. +- **Style:** clean black bold outlines, no shading, no gray fills, pure white background, kid-friendly cartoon detail. + +## Image Generation + +Each coloring image is generated via the gen-image skill (Banatie API). Per-scene prep folders live in `temp/scene{N}/` with: +- `prompt.md` — full prompt + legend + CLI command +- `ref-ship-*.jpeg` — spaceship reference (from `hero-images/`) +- `ref-asteroid*.png` — asteroid reference (from `items/asteroids/`) + +### Composition rules (every scene) + +- Main subject: one spaceship in the center foreground, lots of mechanical detail +- 2-3 large detailed asteroids in the foreground +- 5-10 smaller asteroids in the background +- A planet (full or partial) in one corner as background +- A few floating space artifacts (crystals, debris, alien orbs, satellite shards) +- Action context (firing, mining, scanning, hiding, exploring) +- 3D depth, like a video-game screenshot +- Clean bold outlines only — no shading, hatching, or gray fills +- White background + +### Settings + +- `--aspect-ratio 4:3` (portrait, fits A4) +- `--template minimalist` +- `--ref ` + `--ref ` (two refs, max) + +## Scene Legends + +Every page has a story legend in the footer (e.g. "Last Stand at Veridian Belt — a heavy gunship fires its twin cannons..."). The first phrase (scene title) is shown in `text-indigo-700` Fredoka, the rest in italic `text-indigo-950`. Keep legends to 1-2 short sentences. + +## Color Palette + +| Element | Class | +|---------|-------| +| Title | `text-indigo-950` | +| Wordmark | `text-indigo-300` | +| Page indicator | `text-indigo-400` | +| Legend body | `text-indigo-950` (italic) | +| Legend title | `text-indigo-700` (Fredoka) | +| Header divider | `border-indigo-100` | + +## Scripts + +- `scripts/generate.mjs` — copies template -> output, runs `postGenerate()`. No data layer (coloring pages have no editable parameters). + +## Editor + +None. Coloring pages have no editable data — nothing to move, scale, or rotate inside a printed line-art page. + +## Adding a Page + +1. Drop a new prep folder in `temp/scene{N}/` with `prompt.md` + ref images +2. Generate the line-art via gen-image skill into `assets/themes/nms/coloring-pages/coloring{N}.png` +3. Update `.md` with the new scene legend +4. Duplicate a page block in `.template.html`, swap the image path, footer planet, page indicator, and legend +5. Run `generate.mjs` and verify screenshot +6. Update `index.html` doc card (page count) diff --git a/tasks/space-coloring/docs/space-coloring-1.md b/tasks/space-coloring/docs/space-coloring-1.md new file mode 100644 index 0000000..99d19e3 --- /dev/null +++ b/tasks/space-coloring/docs/space-coloring-1.md @@ -0,0 +1,32 @@ +# Space Coloring 1 + +**Theme:** nms +**Type:** space-coloring +**Pages:** 3 + +## Concept + +Full-page line-art coloring worksheets. Each page is one A4 portrait scene from the No Man's Sky universe: a spaceship surrounded by asteroids, planets, and floating space artifacts. Minimal header (title) and minimal footer (planet strip + scene legend). + +## Pages + +### Page 1 — Last Stand at Veridian Belt +**Image:** `assets/themes/nms/coloring-pages/coloring1.png` +**Legend:** "Last Stand at Veridian Belt — a heavy gunship fires its twin cannons at incoming asteroids before they smash into the planet below." +**Footer asset:** `assets/themes/nms/footers/planet3.jpeg` + +### Page 2 — Ore Hunter's Catch +**Image:** `assets/themes/nms/coloring-pages/coloring2.png` +**Legend:** "Ore Hunter's Catch — a rugged mining dropship reaches out with its grappling claw to crack open a giant asteroid rich with crystal ore." +**Footer asset:** `assets/themes/nms/footers/planet6.jpeg` + +### Page 3 — The Whispering Cluster +**Image:** `assets/themes/nms/coloring-pages/coloring3.png` +**Legend:** "The Whispering Cluster — a sleek explorer sweeps its scanner across a spire-shaped asteroid field hiding the ruins of an ancient alien satellite." +**Footer asset:** `assets/themes/nms/footers/planet8.jpeg` + +## Notes + +- All images are 864x1184 (ratio ~0.73), fit A4 portrait cleanly inside a 190mm × ~260mm area. +- No `data.json` layer — the template is the final output. +- Header uses Fredoka font for a friendly title. diff --git a/tasks/space-coloring/docs/space-coloring-1.template.html b/tasks/space-coloring/docs/space-coloring-1.template.html new file mode 100644 index 0000000..bc0e775 --- /dev/null +++ b/tasks/space-coloring/docs/space-coloring-1.template.html @@ -0,0 +1,96 @@ + + + + + + + + + + Space Coloring — Adventures of the Asteroid Belt + + + + + + +
+
+ No Man's Coloring +

Space Coloring — Asteroid Belt Adventures

+ 01 / 03 +
+
+ Last Stand at Veridian Belt +
+
+ +
+

+ Last Stand at Veridian Belt — + a heavy gunship fires its twin cannons at incoming asteroids before they smash into the planet below. +

+
+
+
+ + +
+
+ No Man's Coloring +

Space Coloring — Asteroid Belt Adventures

+ 02 / 03 +
+
+ Ore Hunter's Catch +
+
+ +
+

+ Ore Hunter's Catch — + a rugged mining dropship reaches out with its grappling claw to crack open a giant asteroid rich with crystal ore. +

+
+
+
+ + +
+
+ No Man's Coloring +

Space Coloring — Asteroid Belt Adventures

+ 03 / 03 +
+
+ The Whispering Cluster +
+
+ +
+

+ The Whispering Cluster — + a sleek explorer sweeps its scanner across a spire-shaped asteroid field hiding the ruins of an ancient alien satellite. +

+
+
+
+ + + diff --git a/tasks/space-coloring/index.html b/tasks/space-coloring/index.html new file mode 100644 index 0000000..e6cbbef --- /dev/null +++ b/tasks/space-coloring/index.html @@ -0,0 +1,155 @@ + + + + + + Space Coloring — Space Math Adventures + + + + + + +
+
+ ← All Categories + + +

Full-page line-art coloring worksheets. Each page is a single scene from a No Man’s Sky-inspired universe — a detailed spaceship surrounded by asteroids, planets, and mysterious space artifacts. Grab your crayons!

+ +
+ +
+
Preview
+
+

Asteroid Belt Adventures

+
+ 3 pages + Coloring
+ Three full-page line-art scenes: a gunship’s last stand, a mining dropship’s catch, and an explorer’s mysterious cluster. +
+
+ Preview + PDF +
+
+
+ +
+
+
+ + + + + diff --git a/tasks/space-coloring/scripts/generate.mjs b/tasks/space-coloring/scripts/generate.mjs new file mode 100644 index 0000000..464dbd3 --- /dev/null +++ b/tasks/space-coloring/scripts/generate.mjs @@ -0,0 +1,38 @@ +#!/usr/bin/env node + +/** + * Generate output HTML from template for space-coloring documents. + * + * Usage: node generate.mjs + * Example: node generate.mjs space-coloring-1 + * + * Coloring pages have no editable data layer — the template IS the output. + * If a data.json exists in the future, it's currently ignored. + */ + +import { readFileSync, writeFileSync, existsSync } from 'fs'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { postGenerate } from '../../../src/scripts/post-generate.mjs'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const docsDir = join(__dirname, '..', 'docs'); + +const docId = process.argv[2]; +if (!docId) { + console.error('Usage: node generate.mjs '); + process.exit(1); +} + +const templatePath = join(docsDir, `${docId}.template.html`); +const outputPath = join(docsDir, `${docId}.output.html`); + +if (!existsSync(templatePath)) { + console.error(`Template not found: ${templatePath}`); + process.exit(1); +} + +const html = readFileSync(templatePath, 'utf-8'); +writeFileSync(outputPath, html); +console.log(`Generated: ${outputPath}`); +await postGenerate(outputPath);