COPS NPC Generator
This skill creates complete, table-ready NPCs for COPS.
Use it when the user wants:
- a brand-new NPC
- a rewrite of an NPC that feels too generic or out of universe
- an NPC sheet that must follow a fixed format
- a COPS NPC that may later be inserted into Notion
- a COPS NPC with a portrait workflow attached
Core promise
The NPC must feel like it belongs in a gritty semi-futurist Los Angeles in 2033,
with the atmosphere of a tense TV cop show rather than generic cyberpunk.
Do not collapse the character into clichés, placeholders, or thin archetypes.
Source discipline
Before drafting, read references/npc-generation-rules.md.
If the user provides additional canon, notes, or COPS campaign context, use that too. If canon sources disagree, prefer the most specific source in the current task.
For age and birth-year math, use 2033 as the reference year.
Required workflow
- Start from the user's seed if one exists. If not, invent an original concept.
- Follow the mandatory creation order from the rules reference.
- After each step, sanity-check all previous steps against the new decision.
- If the new decision improves the NPC, revise earlier choices before moving on.
- If the request includes a Notion publish flow, publish the NPC first with
$cops-npc-to-notion. - After a successful Notion insert for a new NPC, default to an immediate first portrait proposal with
$cops-npc-photounless the user explicitly skips portraits. - If the user explicitly wants prompt approval before generation, keep the prompt-first loop; otherwise the post-publish proposal may generate one first image automatically.
- Do not consider the NPC fully done until the written sheet is coherent and the portrait step is either approved, explicitly skipped, or deliberately parked by the user.
This is an iterative build loop, not a one-pass fill-in form.
Hard rules
- Keep the exact section order from the reference template.
- Include every required block:
Quote,Items,Cool,Uncool,Photo, and the stat blocks. - Verify the characteristic total explicitly.
- Verify the skill distribution against the NPC level explicitly.
- Make the stat line and skill picks reflect the NPC's life, job, and behavior.
- Do not invent sourcebook page numbers. If criminal affiliations require a book and page but you cannot ground them in an actual source available to you, say that the page citation still needs verification.
- Do not invent music links. Use a real link only when one is available; otherwise keep the track in plain text markdown with no hyperlink.
- Never use placeholder URLs such as
example.com, fake YouTube links, or guessed music URLs. - For music links, prefer this order:
YouTube Music, thenYouTube, thenSpotify. - The residence must use a district logic anchored in
Amitié de Los Angeles, not generic real-world Los Angeles assumptions. - When a portrait is part of the request, use
$cops-npc-photorather than improvising a loose one-off image prompt.
Validation
For a final answer that will be reused, stored, or inserted into Notion, validate the markdown before sending it.
If you can use the shell, write the NPC markdown to a temp file and run:
python3 scripts/validate_npc_markdown.py /tmp/npc.md
If you cannot run the script, perform the same checks manually using the rules reference.
Output
- Default output language: French
- Output format: the exact markdown template from the rules reference
- Tone: vivid, grounded, flavorful, never parody
Portrait handoff
When the user wants a portrait:
- finish the NPC sheet
- if publication is requested, create or update the Cast page with
$cops-npc-to-notion - immediately continue into
$cops-npc-photofor a first proposal unless the user opted out - if the user asked for prompt-first review, validate the prompt before generating
- otherwise generate one first proposal image automatically after the Notion write
- iterate until the user validates one image or explicitly stops