Comic Sol is a pure installable Codex Skill that turns a short prompt, pasted story,
or .txt/.md file into an original manga/anime comic. One natural-language
invocation drives planning, character consistency, image generation, visual QA,
selective repair, deterministic lettering and composition, and PDF export. It is
not a web app or hosted product. No build service is required.
Requirements are Python 3.11 and Pillow==11.3.0. Image creation additionally
requires an image-generation capability exposed to the active agent session; Comic
Sol never embeds provider credentials.
Clone the public repository directly into the Codex skills directory, then install the one pinned dependency:
git clone https://github.com/wenn-id/comic-sol.git \
"${CODEX_HOME:-$HOME/.codex}/skills/comic-sol"
cd "${CODEX_HOME:-$HOME/.codex}/skills/comic-sol"
python3.11 -m pip install -r requirements.txtThe host-agnostic rule is: install this repository as one comic-sol folder beneath
the Codex skills directory configured by your Codex installation. Keep SKILL.md,
scripts/, references/, templates/, and assets/ together.
Windows PowerShell:
git clone https://github.com/wenn-id/comic-sol.git `
"$env:USERPROFILE\.codex\skills\comic-sol"
Set-Location "$env:USERPROFILE\.codex\skills\comic-sol"
py -3.11 -m pip install -r requirements.txtSupported environments are Linux, macOS, Windows, and WSL with Python 3.11 and Pillow 11.3.0. The deterministic test suite does not need an image provider.
Open Codex with the skill installed and say, for example:
Make a 2-page manga about a courier delivering sunlight to an underground city.
That is the complete user invocation. Comic Sol detects prompt, pasted-story,
source-file, or resume mode; applies documented defaults; and asks only materially
missing questions. It reports an explicit error if the agent session cannot return
a local raster image. See
references/capability-detection.md for the
exact capability check and preserved-project recovery procedure.
For deterministic diagnostics:
python3.11 scripts/comic_sol.py doctor --output-root /tmp/comic-sol-doctorEach run preserves editable semantic and visual intermediates beneath its generated project directory. The important outputs are:
project.json project manifest and current state
plan/ story plan, character bible, and storyboard
prompts/ editable reference and panel prompts
references/ canonical character and scene images
panels/raw/ generated panel PNGs
panels/clean/ accepted clean panel PNGs
panels/*/lettered.png deterministic lettered panel PNGs
pages/page-001.png ordered 1600×2400 page PNGs
exports/<project-id>.pdf ordered comic PDF
qa/panels/*.json seven-check panel QA records
qa/report.md human-readable QA report
logs/ sanitized events, cache, and retry accounting
The committed one-page synthetic fixture provides sample-output inspection without an external provider. Its three geometric panel PNGs are deterministic test data, not generated art or a claimed live sample.
SKILL.md orchestrates ten agent stages and progressively loads guidance from
references/. Agent reasoning creates the editable story, character, storyboard,
prompt, and QA decisions. Python scripts handle only deterministic project state,
validation, resume planning, lettering, page composition, PDF export, and report
rendering. Provider access remains in the agent capability plane; secrets and
provider SDKs do not enter deterministic scripts.
Dialogue uses bundled Comic Neue Regular, and inline **bold** emphasis uses Comic
Neue Bold with wrapping and centering measured across the mixed runs. Font selection
is per-character: bundled Noto Sans covers Greek and Cyrillic when Comic Neue does not,
while a character absent from both fonts is preserved as Noto Sans .notdef rather
than silently dropped. The --font option still overrides the regular dialogue font;
its bold counterpart may fall back to Comic Neue Bold.
Pillow fits dialogue into adaptive oval balloons, attaches each tail at the nearest oval boundary toward its target, and draws compact light caption strips sized to their text. Authored SFX takes the other half of the hybrid pipeline: the image model draws the exact SFX into the artwork, and visual QA verifies spelling, count, and authorization. Pillow validates and counts SFX but reserves no placement and changes no pixels for it.
Run the complete offline suite:
python3.11 -m unittest discover -s tests -v
python3.11 scripts/comic_sol.py doctorClean-room Linux/macOS/WSL check:
tmp_dir=$(mktemp -d)
python3.11 -m venv "$tmp_dir/venv"
"$tmp_dir/venv/bin/python" -m pip install Pillow==11.3.0
"$tmp_dir/venv/bin/python" scripts/comic_sol.py doctor --output-root "$tmp_dir/output"Windows clean-room equivalent:
$TempRoot = Join-Path $env:TEMP "comic-sol-clean-room"
py -3.11 -m venv "$TempRoot\venv"
& "$TempRoot\venv\Scripts\python.exe" -m pip install Pillow==11.3.0
& "$TempRoot\venv\Scripts\python.exe" scripts\comic_sol.py doctor --output-root "$TempRoot\output"| Area | Supported | Notes |
|---|---|---|
| Inputs | Short prompt, pasted prose, UTF-8 .txt and .md, resume |
Source limit and defaults are documented in the workflow reference. |
| Output | Panel PNGs, page PNGs, comic PDF, manifest, QA report | Editable intermediate artifacts remain local. |
| Lettering | Comic Neue Regular/Bold; per-character Noto Sans fallback | Adaptive oval dialogue, actual inline bold emphasis, compact captions, and hybrid authored SFX are supported. Font licenses and digests are in assets/README.md. |
| Image generation | Agent-exposed image model returning a local raster | References and exact dimensions are used when supported; exact authored SFX is checked by visual QA. |
| Deterministic scripts | Python 3.11 and Pillow 11.3.0 | Offline and provider-neutral. |
Project artifacts stay in the selected local output directory. Prompts and reference images sent to a selected image tool are governed by its external provider policies. Minimize private source material and never place secrets in story text or prompts. Logs contain sanitized paths, hashes, categories, and state changes rather than raw credentials or story content.
Comic Sol requests original manga/anime direction and translates disallowed artist
or franchise imitation into high-level visual traits. It does not promise perfect
character continuity: results depend on the available image capability, especially
its reference-image and dimension support. The bundled font set does not cover CJK;
characters absent from both bundled fonts are preserved as visible .notdef fallback boxes
unless a compatible regular --font override covers them. Image-model SFX
spelling is not deterministic, so visual QA and bounded retries remain required.
Offline fixtures prove deterministic stages, not live image quality. Large projects
beyond four pages or twelve panels require an explicit scope decision.
For support, run doctor, retain the printed project path, and inspect
project.json plus qa/report.md. A BLOCKED project is intentionally resumable;
restore the missing capability or correct the reported artifact, then ask Codex to
resume that Comic Sol project.
The judging demo is designed to finish under three minutes:
- Show the installed
comic-solskill and issue one natural-language request. - Open the character bible, storyboard, one prompt, and seven-check panel QA.
- Show selective resume/repair, then the lettered panel and composed page PNGs.
- Open the comic PDF and
qa/report.md; finish on the manifest status and paths.
The following T12 evidence records the reviewed live run; no unreviewed variants or provider response payloads are included.
The accepted samples/sunlight-courier project was
created from the one-shot prompt shown above in a ChatGPT-authenticated Codex
session using built-in gpt-image-2 generation. It contains one canonical character
reference, four reviewed panels, two composed pages, a two-page PDF, editable plans
and prompts, seven-check QA records, the manifest, resume cache, and QA report. All
four panels passed on their first generation attempt, so the run used 0 retries and
finished COMPLETE.
A second live run used the exact bytes of tests/fixtures/demo-story.md, produced
four panels and two pages with 0 retries, validated at the final stage, and finished
COMPLETE. It remains local because the committed courier sample is the concise
judge artifact.
The unavailable-capability rehearsal stopped after editable planning and
storyboarding, wrote zero panel files, set BLOCKED, and emitted the exact preserved-
project recovery error. Resuming reused the four reviewed courier panels and
completed. A second resume returned 10 reuse actions and preserved the hashes and
nanosecond mtimes of all 33 files exactly.
The rendered demo is 1:46.905 (1920×1080, H.264/AAC), below the three-minute
limit. It uses only committed Comic Sol artifacts and deterministic evidence. The
/feedback command was run in the final Codex session and confirmed uploaded
("Feedback uploaded. Thanks for the feedback!"), returning the real feedback
Session ID (Thread ID): 019f7392-22ba-73f0-aa71-2d4a9cc1fdce.
A fresh native Windows 11 clean-room run used Python 3.11.9, installed Pillow
11.3.0 in a new virtual environment, cloned the public repository, passed doctor,
and ran 137 tests successfully (OK, one symlink-privilege test skipped). Linux/WSL
also runs 137/137 tests successfully.
Comic Sol was built with Codex and GPT-5.6 Sol for OpenAI Build Week 2026. Codex collaboration produced the design specification, implementation plan, TDD tests, deterministic scripts, portable agent workflow, and documentation. The committed history is the evidence trail; live acceptance evidence remains reserved for T12.
Before submission:
- Confirm all submitted work was created after the July 13, 2026 cutoff.
- Make this a public repository and verify its clone/install flow while logged out.
- Run the full suite and clean-room doctor on Linux or WSL and Windows.
- Rehearse the demo and confirm its elapsed time is under three minutes.
- Run
/feedbackin the final Codex session, verify the recorded real Session ID resolves, and copy it into the submission materials. (Done: feedback uploaded; Thread ID019f7392-22ba-73f0-aa71-2d4a9cc1fdce.) - Confirm the repository contains installation, invocation, testing, support, privacy/IP, license, and limitation information but no private prompts or secrets.
Comic Sol's original code and documentation are available under the MIT License in
LICENSE. The bundled Comic Neue and Noto Sans fonts remain separately
licensed under the SIL Open Font License 1.1; see
assets/README.md.