6.9 KiB
recurring-character-diary-comic
An experimental Agent Skill for creating, auditing, and locally repairing 4–8 panel page-native diary comics around an existing authorized recurring character.
It is more than a style prompt: the workflow locks story facts, recurring identity, cross-panel states, directional relations, and exact dialogue before generation, compares three story-directed page structures, and generates the selected complete page as one image by default.
Status: v0.2 experimental. Technical acceptance, showcase readiness, user acceptance, and publication authority remain separate states.
When to use it
Use it when an original, public-domain, or explicitly authorized recurring character already has a usable identity reference, and the input can become a self-contained 4–8 panel anecdote, conversation, dream, or viewpoint.
Do not use it for standalone character design, educational explainers, infographics, one-off illustrations, generic memes, imitation of a named living artist, unauthorized franchise characters, watermarking, or social publishing.
Modes
| Mode | Result |
|---|---|
Create |
Lock story and visual contracts, compare three page structures, generate the complete page, and inspect its exact pixels on two axes. |
Audit |
Inspect an existing artifact and report evidence without silently editing it. |
Repair |
Audit first, prefer one constrained page-local edit, and reconstruct panels only after the disclosed fallback gate. |
Install
git clone https://github.com/ZSeven-W/craft-skills.git
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R craft-skills/skills/recurring-character-diary-comic \
"${CODEX_HOME:-$HOME/.codex}/skills/"
Optional deterministic composition requires Python 3.10+ and the pinned Pillow version:
python3 -m pip install -r \
craft-skills/skills/recurring-character-diary-comic/scripts/requirements.txt
python3 \
craft-skills/skills/recurring-character-diary-comic/scripts/self_test_compositor.py
A suitably licensed local CJK font is required for Chinese lettering; fonts are not distributed in this repository.
Quick start
Use $recurring-character-diary-comic in Create mode.
I own the generation and editing rights for the attached recurring character.
Turn this anecdote into a five-panel diary comic. Lock the story, identity
invariants, speakers, and exact dialogue first. Compare three structurally
different page skeletons at working size and 25%, then generate the selected
complete page as one image. Increase prompt and QA attention for risky hands,
directional objects, and state changes without silently splitting the page.
Do not add a logo, watermark, or publish anything.
What the workflow enforces
- A premise gate favors visible behavior and a small reveal over slogans.
- A character profile separates identity invariants, episode variables, and forbidden drift.
- Story and visual contracts classify story-critical
S0, identity-criticalS1, and replaceable compositionS2requirements. - Three structurally different page skeletons are compared at working size and exactly 25%; the story fit is selected instead of a default grid.
- Risk controls prompt specificity, enlarged QA, and stopping. It does not automatically decompose the page.
page-nativegenerates panel topology, scenery, cast, props, bubbles, exact dialogue, paper, palette, and negative space together.- QA inspects the exact final hash at original resolution and 25% on separate contract-fidelity and editorial-layout axes.
- Prefer one local edit. Use full-page deterministic lettering only when text fails, and panel reconstruction only after its explicit fallback gate.
Generation budgets are lineage-wide: starting a new run does not reset the page-wide or no-improvement limits. Per-panel limits exist only after an accepted reconstruction fallback.
Two independent acceptance axes
contract_fidelitycovers story, identity, anatomy, relations, continuity, exact text, and final artifact hashes.editorial_layoutcovers reading path, beat hierarchy, panel-shape rhythm, border language, reaction panels, negative space, ending emphasis, and the thumbnail silhouette.
A technically correct page may still be rejected as a public showcase when it looks like a uniform card grid, contains accidental dead space, or gives the ending insufficient visual weight.
Deterministic composition
The optional compositor normally renders approved closed soft-tail bubbles and
exact Simplified Chinese text onto one accepted full-canvas unlettered page.
Only an explicitly accepted panel-reconstruction route assembles independent
panels. It binds source hashes, geometry, protected regions, font bytes, and
exact strings; unknown manifest keys fail closed.
Start from templates/page-native-lettering-manifest.example.json for the
default text fallback. The older compositor template is reconstruction-only.
python3 \
"${CODEX_HOME:-$HOME/.codex}/skills/recurring-character-diary-comic/scripts/compose_panels.py" \
--manifest /path/to/compositor-manifest.json
Byte-identical claims are limited to the same recorded OS/runtime build, Python, Pillow, raster stack, font bytes, manifest, and panel bytes.
Validation
python3 -m pip install -r \
evals/recurring-character-diary-comic/requirements.txt
python3 evals/recurring-character-diary-comic/self_test_validate_cases.py
python3 evals/recurring-character-diary-comic/validate_cases.py \
evals/recurring-character-diary-comic/cases.yaml
python3 skills/recurring-character-diary-comic/scripts/self_test_compositor.py
python3 scripts/check_release.py
Artifact-bound public eval cases remain deferred when their internal raster
fixtures are intentionally not distributed. Deferred is neither pass nor fail.
Rights and publication boundary
Users must have the required generation, editing, and publication rights for all character references, marks, fonts, text, portraits, brands, and outputs. This repository does not include private profiles, held-out pages, generation history, downloaded source media, or private stories.

