---
name: halftone-ink
version: 0.1.0
description: Turn a content brief into an original, airy 16:9 editorial line illustration: black ink outlines, restrained halftone texture, generous negative space and one accent color. Runs through SandBase with one image at 16:9 PNG per approved brief, recoverable execution state and bilingual reports.
---

# Halftone Ink Illustration

## Example and deliverable

The bundled brief describes a newsletter issue about small daily habits compounding into change. The Skill renders one airy black-ink illustration with a single coral accent and an optional short title. A successful execution produces `artwork.png`,
`report.json`, `report.en.html` and `report.zh-CN.html` in the selected
language. Reports show the actual dimensions, execution ID, recorded cost and
the remaining human review.

No official real run is bundled for this release; the sample reports are labelled
mock fixtures and no image was generated for them.

## When this fits

- a writer, educator or marketer needs a calm editorial illustration for an article header, newsletter, social post, course visual or simple explainer;
- one visual metaphor in black ink with a single accent color can carry the message.
- The user invokes `/halftone-ink`.

Do not use this Skill for photorealism, dense text layouts or imitation of a named brand or illustrator.

## Prepare the content

Use the bundled [English brief](assets/sample-brief.en.json) or
[Chinese brief](assets/sample-brief.zh-CN.json):

```json
{
  "subject": "Small daily habits quietly add up: one page a day becomes a finished book by the end of the year.",
  "title": "Small Steps Add Up",
  "accent": "coral",
  "language": "en"
}
```

- `subject` (required, at most 600 characters): The one message the illustration should carry, or a short passage to visualize.
- `title` (optional, at most 40 characters (Chinese: at most 12 characters)): At most four words, drawn exactly. Leave empty for no text. Drawn on the image exactly as supplied.
- `accent` (optional, one of `coral`, `ochre`, `cobalt`, `sage`): The single accent hue. Defaults to coral.
- `series_note` (optional, at most 400 characters): Style decisions to repeat across a series, such as line weight or halftone density.

`language` sets the language of any on-image text and of the brief; `--lang`
chooses CLI and report copy. Both default to `en`; `zh` maps to `zh-CN`, and
unsupported locales fall back to English. Chinese limits apply only when
`language` is exactly `zh-CN`.

Read the [visual workflow](references/workflow.md) and
[runtime boundaries](references/runtime.md) before submitting. One approved brief
allows one submission. Never purchase an automatic replacement.

## Execute in isolation

Use Node.js 18+ in SandBase Sandbox; no dependencies need installation. Local
commands read `SANDBASE_API_KEY` only from the process environment. Optionally
set `SANDBASE_API_BASE` to an allowed SandBase HTTPS address. Never put a model
key in a brief, command argument or file.

```sh
node scripts/generate.mjs plan --brief assets/sample-brief.en.json --out /tmp/halftone-plan
node scripts/generate.mjs run --brief assets/sample-brief.en.json --out /tmp/halftone-run --lang en --budget 0.30
node scripts/generate.mjs resume --brief assets/sample-brief.en.json --out /tmp/halftone-run --lang zh-CN
```

`plan` makes no network call. `run` uses `openai/gpt-image-2.5-flare` with high
quality, 2k resolution, 16:9 and PNG. The inspected estimate is USD 0.15 per image;
default and maximum preflight budget is USD 0.30. This cannot guarantee an
upstream transactional limit. Unknown cost remains `null`.

Existing output directories reuse their execution. A changed brief, version or
model is rejected. A submission interrupted before saving its ID requires
reconciliation in SandBase before a new approved output directory is created.
Do not erase the state to force another purchase.

## Review the result

PNG checks cover signature, chunks, CRCs, decompressed pixel stream, size and
dimensions. Native model rounding may differ from exact 16:9 by up to 2%; the
report states actual dimensions. There is no silent resize, crop or fixed text
overlay.

Compare every supplied line of on-image text character by character with the
approved brief. Only the supplied text may appear; anything else is a defect. Inspect composition, palette and
contrast at full resolution and at 320 × 180. `validation.ok` verifies the
file contract; `text_accuracy: needs_review` preserves the human review. File
integrity is not visual approval, and no generated image may carry a logo,
mascot, signature, watermark, real person or trademarked silhouette.

## Hosted execution

The [hosted entrypoint](references/hosted.md) claims an ephemeral credential,
runs the same pipeline, uploads the PNG and returns both report languages.
Lab owns orchestration and storage; it does not duplicate the prompt.

## FAQ and failure boundaries

- **Exact result?** The visual direction is requested, not guaranteed. Review it.
- **Real people, brands or artists?** Not as subjects or style shortcuts. Invent
  new artwork; never reproduce a logo, mascot, campaign, interface or known work.
- **Resume cost?** Resume polls the same execution and downloads its result.
- **Broken output?** Keep state and ID. Resume transient downloads; a terminal
  model failure requires a decision before another approved attempt.
- **Secret storage?** None persistently. Reports, state and errors are redacted;
  model keys go only to allowed SandBase hosts, never media downloads.
- **Image branding?** No watermark is added. SandBase identity belongs to the
  package, Lab interface and reports.

See [report schema](references/report-format.md).
