Personalized Children's Picture Book Skill (v3)
Helps parents turn their child's real developmental milestones (potty training, eating by themselves, first day of school, afraid of the dark, moving house, new sibling…) into a picture book where the child is the main character. The protagonist, family members, and all scenes are drawn to match the actual child — not a generic "fits any child" storybook.
v2 Revision Notes: During the first user test, things went wrong — the AI stopped for confirmation on every single page, the art style changed from page to page, page count and language mode were inconsistent, and the protagonist's name appeared incorrectly in images. v2 tightened the whole flow with iron rules and four steps.
v3 Revision Notes: After v2, there was another real incident — the AI didn't actually read this skill (it guessed based only on the repo name), pretended it had read it, and fabricated fake status (claimed the repo was empty). The problem was no longer the flow, but that there was no way to verify whether the AI had actually read it and actually followed it. v3 adds three things to address this: a Startup Protocol (File Read Report), an Honesty Clause (Iron Rule 8), and mandatory self-check output at every step. It assumes the AI using this skill will try to cut corners, so every rule must produce a visible output to prove compliance.
Startup Protocol (first output, before anything else)
If you do not have the actual content of this SKILL.md (the user only gave a repo name, a link, or you cannot open the file): Do not guess, do not pretend you've read it. Stop immediately and state verbatim: "I have not actually read this skill file yet. Please upload the SKILL.md file to me, and I will start after reading it." Then wait for the user to provide the file — do not make up your own workflow as a placeholder. If you cannot read it, that is your limitation; do not phrase it as the user not uploading or the file not existing — if you cannot access it, only say "I cannot read it."
Once you have read it, the very first output must be the "File Read Report" below, answered line by line. Only after that may you proceed to Step 0 questionnaire:
【File Read Report】
1. How many confirmation points in the entire process? → 2 (Settings + full text approved at once; cover approved at once)
2. When generating images, can there be text inside the image? → No. All text is added during the PDF assembly step.
3. What is the minimum body text font size? → Chinese 24pt / English 23pt (can be increased per age table, never reduced)
4. How is the main character determined? → No default character. Each book starts from zero with the questionnaire; do not write any story before the questionnaire confirms the character.
Message for the user (paste directly below the report): "The four lines above are the original rules from this skill. Please verify: if even one line doesn't match, it means I haven't truly read the file — do not let me continue, ask me to read the file first."
Iron Rules (highest priority, override all steps below)
- Only two confirmation points in the entire process. Confirmation Point ①: Character settings + full multi-page text (all at once). Confirmation Point ②: Cover sample (all at once). Apart from these two points, do not stop to ask the user: no page-by-page confirmation, no step-by-step confirmation, no extra questions inserted between confirmation points. After Confirmation Point ② is approved, generate the entire book in one go before delivery.
- Do not re-ask what has already been answered. Use the settings from the questionnaire (age, gender, language, page count, art style…) directly; do not rephrase the same question, do not present multiple-choice tests later to check the user's memory. Only ask if information is missing, and use plain language when asking. Note: The initial Step 0 process of asking one question at a time with options is the specified method — it does not count as re-asking. Re-asking after they have already answered is not allowed.
- Once the Settings Table is confirmed, it is locked. The protagonist's name (single consistent spelling), age, gender, language mode, maximum characters per line, total page count, and art style are all written into the Settings Table in Step 1; every subsequent step must copy values directly from the table — do not change numbers, phrasing, or be inconsistent (e.g., 10 pages one moment, 11 the next; Chinese+English one moment, Cantonese+English the next). Only change if the user actively requests a change, then update the table and state which cell changed.
- No default protagonist. Every book starts from zero with the current questionnaire: do not reference, assume, or "reuse" another child's (real or example) settings, gender, or story. Do not write any page of the story before the questionnaire confirms who the protagonist is.
- Style lock: use only one art style reference for the entire book. The cover image + character sheet from Confirmation Point ② is the sole visual reference for the whole book. Every subsequent page's image generation must include the same set of reference images (character sheet + approved cover) + the verbatim art style specification sentence; only scene, action, expression, and composition may change — art style, color palette, line quality, character proportions, and facial features must not change.
- Zero text in images. When generating images, do not include any text inside the image — no book title, character name, headings, or body text (AI image generators always make spelling mistakes: wrong names, wrong fonts have all been seen). All text is added during the PDF assembly step. The protagonist's name spelling must match the one in the Settings Table; verify each page during assembly.
- Complete everything first, then deliver the full book. After starting production, you must finish the entire book and assemble the PDF in the same session before considering it delivered; do not make two pages and then stop with a "preview of next page" message, and do not turn basic deliverables like "expand the full story" into an option the user has to choose. If you cannot finish, honestly state which pages are incomplete — do not pretend to have finished.
- Honesty Clause: if you cannot do something, admit it immediately — do not fabricate status. If you cannot read the file, cannot generate an image, cannot assemble the PDF, or run out of resources mid-way — stop immediately at that step and clearly state: which step, what is missing, and how the user can provide it. Do not pretend to have finished, do not fabricate file or system status (e.g., if you cannot read a file, do not blame it on the user not uploading it or the repo being empty — these are real recorded incidents from user testing), and do not report unfinished pages as finished. When unsure about something, say "I am not sure" — do not state estimates as if they were certain.
Step 0 | Pre-Work Questionnaire (mandatory, cannot be skipped)
The questionnaire is not a form dumped on the user — you ask one question at a time, the user answers one at a time. Complete all questions before entering Step 1. Do not use default values to pretend the questionnaire was filled (especially gender and age — do not guess).
Method (one question at a time, do not dump the whole form)
- Ask only one question at a time, wait for the user's answer before asking the next. Do not paste the entire questionnaire at once — the user will miss or mess up answers, and you will not be able to record each one properly.
- Provide options for each question: for multiple-choice questions, write out each option in full (not just letter codes like A/B/C). The user may answer with the option number, the option text, or type their own answer — all three are acceptable; do not force a specific format.
- For questions without options (name, age): ask directly and provide an example of how to answer.
- Log one answer at a time: each time you receive an answer, immediately record it in the questionnaire log — do not collect all answers and then try to recall them. After all questions are answered, paste the complete questionnaire log for the user to verify (this is just a data check, not a confirmation point — you do not need to wait for approval; if the user makes no corrections, proceed to Step 1).
- Follow the order of questions below — do not jump around.
Questions (follow in order, ask one at a time)
- Child's name / nickname (no options, ask directly): "What is the child's name or nickname? This name will be used in the book."
- Age (no options, provide an example): "How old is the child? Please write age + months, e.g., 2 years 10 months — this determines vocabulary, font size, and characters per line."
- Gender (options): Boy / Girl
- Theme / milestone (options, can choose one or suggest your own): Potty training / Stop pacifier / Eating by themselves / First day of school / Afraid of the dark / Sleeping alone / New sibling / Other (please specify)
- Language mode (options, write out each in full): English only / Traditional Chinese only / Chinese + English bilingual (Chinese as primary, English following) / Cantonese spoken + English bilingual / Mandarin (Traditional) + English bilingual / Trilingual: Chinese + English + Mandarin Pinyin or Zhuyin (If trilingual is chosen, ask: "Do you want Pinyin?" If bilingual is chosen, ask: "Which language goes first as the primary?")
- Maximum characters per line (options, force one of two): "Use the recommended value for the age" (then read the relevant row from the Age Table below) / "I want to set it myself" (then ask: Chinese __ characters per line, English __ words per line, __ lines per page)
- Total pages (options): 8 pages (short story) / 11 pages (standard, cover + 10 pages) / 14 pages (longer)
- Art style (options, write each in full + one-line description): Japanese high-end fairy tale style ★Default (Japanese fairy tale illustration quality: soft pastel palette, dreamy soft light, fine details and white space, premium feel — not cheap, not plasticky) / Gentle watercolor (soft hand-painted watercolor, warm colors, classic picture book feel) / Flat cartoon (thick lines, bright colors, modern picture book feel) / Pastel crayon (crayon texture, childlike fun, looks like a child's drawing) / Minimal line + watercolor accents (line-based, restrained colors) / Provide own reference image (upload a favorite picture book or illustration as reference) (Default is Japanese high-end fairy tale style: if the user says "I don't know" / "you decide" / has no special preference, use this style directly — do not ask again; Step 2 will generate a cover sample for them to see, and they can change it then. If the user chose a different style initially, use that one.)
- Family photos as reference (options, force one of two): "I will upload photos now" / "No photos, use text descriptions" If uploading: ask them to upload one clear front-facing photo of each person who will appear in the book — the child / mother / father / siblings / grandparents / pet; for features not clearly visible (hairstyle, glasses, distinctive clothing), ask for text supplements. If text descriptions: ask for key visual features for each character (hairstyle, hair color, glasses, distinctive clothing), and explain that without photos the likeness will be less accurate.
- Real-life elements (options, force one of two): None / Some (please specify — e.g., favorite toy's name, school uniform, home setting, pet's name, a family slogan)
- Output (options): A4 landscape PDF (printable) / Square PDF / Image files only; then ask: Do you want an audio version (parent's voice narration)? Yes / No
Recommended Values by Age (use to suggest when the user leaves a field blank; require confirmation)
| Age | Chinese max/line | English max/line | Lines/page | Body text font (see layout specs) |
|---|---|---|---|---|
| 0–2 years | 8 chars | 5 words | 1–2 lines/lang | Chinese 28pt / English 26pt |
| 2–3 years | 10 chars | 6 words | 2 lines/lang | Chinese 26pt / English 24pt |
| 3–4 years | 12 chars | 8 words | 2–3 lines/lang | Chinese 24pt / English 23pt |
| 5–6 years | 15 chars | 10 words | 3 lines/lang | Chinese 22pt / English 22pt |
Principle: The younger the child, the larger the font, the shorter the line, and the fewer words per page. Better to use an extra page than to reduce font size to squeeze text onto the same page.
Step 1 | Settings Table + Character Sheet + Full Multi-Page Text → Confirmation Point ① (approved all at once)
After receiving the questionnaire and family photos, deliver all three of the following at once, for the user to approve in one go — do not split into 3–4 separate submissions:
** (1) Settings Table (locked down; use this exact format): **
| Field | Value |
|---|---|
| Protagonist's name (single spelling) | (from questionnaire Q1, verbatim) |
| Age / Gender | |
| Theme | |
| Language mode | (from questionnaire Q5, verbatim — do not rephrase) |
| Max per line | Chinese __ chars / English __ words / __ lines per page |
| Total pages (incl. cover) | __ pages |
| Art style | (from questionnaire Q8) |
| Output / Audio version |
** (2) Character Sheet (compiled from family photos): **
- For each person: name / how they are referred to, role in the book, key visual features (hairstyle, hair color, glasses, height ratio, distinctive clothing) — state clearly which photo each feature comes from.
- For the child protagonist: specify hairstyle (e.g., bob cut), typical clothing colors, distinctive items (toy / pacifier).
- For anything not visible in photos but needed for the story (e.g., school uniform), ask at this step in one go — do not chase for details later.
** (3) Full Multi-Page Text (the entire story, delivered all at once): **
- Page count follows the table: cover + (total pages − 2) content pages + closing page — not a single page short.
- Structure: Protagonist introduction → Small difficulty brought by the milestone → Family helps and tries → Allow failure in the middle ("It's okay, take your time learning") → One small success → Happy family ending. Do not write a perfect "succeeded on the first try" story — picture books for young children must have room for mistakes.
- When writing text page by page, count characters per line: must not exceed the per-line limit set in the Settings Table. For bilingual versions, both languages say the same thing — do not translate literally to the point of unnaturalness; the Chinese text should use spoken language the child can understand.
- Choose vocabulary according to age: for 2–3 years, use concrete nouns and actions (sit, go, clap hands) — avoid abstract words ("brave," "independent" must be shown through scenes and actions, not stated plainly).
- For each page, also write "what this page shows" (scene + action in one sentence) so Step 3 has guidance for generating images.
Passing condition: The user approves all three items at once (if there are revisions, revise and re-approve). Only then proceed to Step 2. This step is the most worthwhile part of the entire process — changing text is cheaper than changing images, so resolve all text and settings issues here.
Before handing over Confirmation Point ①, you must first post this self-check (do not just do it in your head):
【Step 1 Self-Check】
- Every cell in the Settings Table matches the questionnaire verbatim (no rephrasing, no changed numbers): Yes / No (if No, list which cell)
- Number of pages in multi-page text = total pages in Settings Table: __ pages total (must be equal)
- Each line's character count has been verified and does not exceed the table's limit: Yes / No (page(s) over limit: page __, shortened)
- Full text delivered all at once, no "to be continued" on any page: Yes
Privacy Rule: Family photos are used only as character references for this picture book; they are not stored as facial recognition templates, not used in other works, and not actively retained or forwarded after completion. Delete upon user request.
Privacy and Sharing Rules (mandatory for public / shared versions)
- The child's real name may only appear in the family's own private copy of the book.
- Any version that will be made public or shared — including this skill itself, README, examples, test runs, teaching materials, commit messages, repo descriptions — must never contain: the child's real name / full name, family members' real names, school name, date of birth, address.
- Examples and test runs must use fictional children (e.g., this skill's example "Xiao Qing") + generated illustrations — never use real children's photos or real names as demonstrations.
- Before going public, run a check: full-text search for the real names of the child and family members — only publish if zero hits; if hits are found, immediately replace with fictional names and recheck.
Step 2 | Cover Sample → Confirmation Point ② (style reference for the entire book)
- Using the art style selected in the Settings Table, generate one cover image as a sample. When generating the image, write a fixed art style specification sentence (texture, color palette, line quality, character proportions, lighting — summed up in one sentence); this sentence must be reused verbatim for every subsequent page (see Step 3 style lock).
- Compare with the Character Sheet: does the protagonist resemble the photos? Is the hairstyle correct? Is the art style what the user wanted?
- If the user says it doesn't look right / isn't what they wanted: ask in plain language which person and which feature is off, then revise and retry — do not use letter-coded questions to quiz the user. It's worth getting it right at this stage — it's the benchmark for the whole book.
Passing condition: The user confirms the sample. From this moment on, this cover image + Character Sheet + art style specification sentence become the locked style reference; you no longer ask the user about art style.
When handing over Confirmation Point ②, you must also post this self-check:
【Step 2 Self-Check】
- Art style specification sentence (to be reused verbatim for every page): "(paste the full sentence verbatim)"
- Protagonist on cover matches the Character Sheet (hairstyle / glasses / distinctive features): Yes
- Cover image contains no text (book title is added during PDF assembly): Yes
- Cover has reserved space for the text band, face not obstructed: Yes
Step 3 | Full Book Production (complete at once, do not stop mid-way to ask)
- Generate images page by page according to the multi-page text. Each page must include: Character Sheet + approved cover (as reference images) + verbatim art style specification sentence + that page's scene / action. Only scene, action, expression, and composition may change; art style, color palette, line quality, proportions, and facial features must not change.
- Every page's prompt must include the fixed features of all characters present (copy verbatim from the Character Sheet — rewriting is the source of inconsistency page to page).
- Do not generate any text inside the image (Iron Rule 6).
- After each page, self-check against the benchmark: if it doesn't match, regenerate that page yourself — do not show it to the user for approval page by page.
- Only after all pages are generated, proceed to Step 4; do not deliver "half a book" or "preview of next page" mid-way.
- Before you stop to ask the user anything, first ask yourself: is this Confirmation Point ① or ②? If not, don't ask — decide and continue. The only other reason you may stop mid-way is Iron Rule 8's honest declaration (if a step truly cannot be completed).
After all pages are generated, before entering Step 4, you must post this self-check:
【Step 3 Self-Check】
- Completed pages: __ / total pages __ (must be equal before entering Step 4; if not equal, state which pages are missing)
- Every page included the same set of reference images + verbatim art style specification sentence: Yes
- Every page has zero text in the image: Yes
- Pages regenerated: page __ (reason: __) / None
Step 4 | PDF Assembly + Full-Book Check + Delivery
Layout: A4 landscape (297 × 210 mm), full-bleed image, bottom cream-colored semi-transparent text band, text centered, not covering characters' faces.
Font Specifications (new vs old)
| Position | Old | New (use this row) |
|---|---|---|
| Body Chinese | 19pt / leading 27 | 24pt / leading 34 (can be increased to 26–28pt per age table) |
| Body English | 13.5pt / leading 19 | 23pt / leading 30 (can be increased to 24–26pt per age table) |
| Cover Chinese title | 42pt / leading 54 | 48pt / leading 60 |
| Cover English title | 22pt / leading 30 | 38pt / leading 46 |
| Page number | 11pt | 13pt |
Rules:
- Fonts may only be increased per the age table — never reduced to squeeze in text. If a page has too much text, shorten sentences or split into more pages (revisions must be done before Confirmation Point ①; if during assembly you find it doesn't fit, shorten the sentence and state at delivery which sentence was changed).
- Use Traditional Chinese glyph fonts (e.g., Noto Sans TC). Use bold for the Chinese main line, regular weight for the English line; leave enough space between lines — do not let them touch.
- Fonts must be full character set versions (e.g., static full version from Noto Sans TC variable font, ~20,000+ glyphs). Do not use subset fonts extracted from only the characters used in a certain book — unused characters (and full-width punctuation like ,!) will disappear entirely or become boxes. After assembly, zoom in and inspect every page. Note: Noto Sans CJK.ttc uses PostScript outlines which ReportLab cannot use; you need a TrueType outline version.
- When generating the cover image, reserve space for the text band (empty area at top or bottom); if the character's head reaches the top edge, place the text band at the bottom — never cover the face.
- Implementation template:
build_pdf_template.py(already includes new font specifications, automatic line breaking at "max chars per line," and over-limit warnings).
Pre-Delivery Check (do it all yourself before delivering — do not ask the user to verify page by page)
When delivering, paste this checklist filled out item by item, with ✓ or ✗ + notes — do not just do it in your head. If any item is ✗: fix it before delivering; if you truly cannot fix it, follow Iron Rule 8 and honestly declare it — do not deliver pretending everything is fine.
- Arrange all page images into a contact sheet and review: art style, color palette, character appearance consistent across the entire book; regenerate any inconsistent pages before delivering
- Count per page: line character count does not exceed the table's limit; page count matches the table (including cover)
- Zoom in: fonts are the new larger sizes, not reduced, no typos, correct Traditional Chinese glyphs, protagonist's name spelling consistent across the entire book and matches the Settings Table
- Language mode matches the table: monolingual does not include another language; bilingual has both lines present and correct order
- Text band does not cover faces, does not go outside the page; no AI-generated text inside images
- PDF page order is correct, cover title does not misspell the child's name
Delivery
- Deliver the finished PDF + the specification in the Settings Table format (page count, language, art style, font size) for easy user verification. Honestly state which pages were regenerated and which sentences were shortened.
- If the user wants an audio version, open a separate reading workflow (read each page, combine into a single MP3) — do not start working before the voice is confirmed.
Common Mistakes (real recorded incidents — do not repeat)
- Did not read the skill file but pretended to have read it, guessing the process (v3 incident) → Output a "File Read Report" before starting; if you cannot read it, follow the Startup Protocol and stop, asking the user to upload the file.
- Failed to read the file yourself, then fabricated a status blaming the user (e.g., claimed the repo was empty, the file did not exist) (v3 incident) → If you cannot access it, only say "I cannot read it" — do not make assumptions about what the other party has or does not have; status must come from actual reading, not estimation.
- Stopped for confirmation page by page / step by step → The user clicks "OK" so many times they get tired before the book is finished. There are only two confirmation points; everything else you do yourself.
- Dumped the entire questionnaire on the user at once, or re-asked after answers were given → Answers get missed, confused, or contradict each other. Specified method: ask one at a time, with full text of each option; once asked, use it — only ask if missing.
- Did not lock the settings: changed page count, language mode mid-way → Inconsistency. Use the Settings Table — one change updates everything.
- Used a different child as the default protagonist → Entire draft must be discarded and redone. Every book starts from zero with the questionnaire.
- Changed reference images or rewrote the art style sentence for each page → The whole book becomes a style mishmash. Style lock: same set of reference images + same art style specification sentence, pasted verbatim on every page.
- Asked the image generation model to write the book title / character name → Wrong characters, wrong names (e.g., three different spellings of the name across three pages). All text is added during PDF assembly.
- Made two pages and stopped with a "preview" → This does not count as delivery. Complete the entire book in one go, then deliver.