← NovelistCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Novelist
Snapshot Sep 30, 2026 · 23:13 UTC · version 0.2.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Create character source files for this novel project. Use when the user wants to invent, refine, name, or save a fictional character into characters/ as Markdown with YAML frontmatter, especially from role, personality, setting, era, region, language, relationships, motives, secrets, or plot function.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 182
},
{
"relative_path": "scripts/write_character.py",
"size_in_bytes": 6383
}
],
"name": "create-character",
"skill_md_contents": "---\nname: create-character\ndescription: Create character source files for this novel project. Use when the user wants to invent, refine, name, or save a fictional character into characters/ as Markdown with YAML frontmatter, especially from role, personality, setting, era, region, language, relationships, motives, secrets, or plot function.\n---\n\n# Create Character\n\n## Overview\n\nUse this skill to turn a rough character brief into a complete `characters/*.md` source file for this novel project.\n\nAlways follow the project's `AGENTS.md` and `characters/_template.md`. Keep the process interactive: refine the character first, then run a naming loop, then write the file only after the user confirms the final direction.\n\nBefore running a bundled command, resolve `<skill-dir>` to the absolute directory\ncontaining this `SKILL.md`. This keeps the same skill usable from either the\nrepository-local skill tree or the Novelist plugin.\n\n## Workflow\n\n### 1. Gather And Reflect The Brief\n\nRead existing context before asking questions:\n\n- `AGENTS.md`\n- `project.md`\n- `characters/_template.md`\n- Existing files in `characters/`\n- Relevant `plot/`, `outlines/`, `world/`, `materials/`, or `macguffins/` files when the user references them\n\nRestate the supplied role, character traits, and setting in Korean. Include:\n\n- story role\n- social role or occupation\n- personality and behavioral texture\n- era, region, class, language, nationality, and cultural background\n- gender, including whether the character is gender-neutral\n- relationship or plot function\n- secrets, desires, conflicts, or contradictions if present\n\nAsk what the user wants to add, remove, or sharpen. Continue this prompt loop until the user says it is enough or gives enough detail to proceed.\n\nDo not create the character file during this stage.\n\n### 2. Recommend Names\n\nAfter the brief is sufficiently refined, propose about 10 names with short reasons.\n\nNaming rules:\n\n- If the character is Korean or lives as a Korean character in South Korea, recommend plausible Korean names in Hangul with family name and given name.\n- If the setting gives a specific Korean era, region, class, or dialect background, reflect that context in the name choice and explain the reasoning.\n- If the character is not Korean, keep both the original-language name and the Korean reading for use in the novel.\n- If the original script is relevant, include it. Example: `Aleksandr Mikhailov / 알렉산드르 미하일로프`.\n- If only a romanized original is appropriate, still include a Korean reading.\n- Avoid copying the exact identity of a real living person unless the user explicitly requests a real person.\n- Avoid joke names, overly symbolic names, and famous-name collisions unless the user asks for them.\n\nFor each option, show:\n\n- displayed Korean name or Korean reading\n- original name when non-Korean\n- name language or cultural context\n- reason it fits the role, personality, and setting\n\nAsk the user to choose a name, request revisions, or provide a new naming direction. Continue this prompt loop until one final name is selected.\n\n### 3. Build The Character Sheet\n\nCreate a complete character sheet using the selected name and refined brief.\n\nRequired frontmatter keys:\n\n```yaml\nid: char-ascii-slug\ntype: character\nname: \"김하나\"\noriginal_name: \"김하나\"\nkorean_reading: \"김하나\"\nname_language: ko\nname_context: \"현대 대한민국\"\naliases: []\nrole: \"\"\nstatus: seed\nage: \"\"\ngender: \"\"\npronouns: \"\"\nfirst_appearance: \"\"\nlast_seen: \"\"\nrelationships: []\nwants: []\nneeds: []\nconflicts: []\nsecrets: []\nrelated_materials: []\nrelated_macguffins: []\nplot_threads: []\ncreated: YYYY-MM-DD\nupdated: YYYY-MM-DD\ntags: []\n```\n\nUse an ASCII filesystem slug, such as `kim-hana`, `alexandr-mikhailov`, or `old-palace-guard`. The file path must be `characters/<slug>.md`, and `id` must be `char-<slug>`.\n\nSet `gender` explicitly when the user provides or confirms it. If the character is gender-neutral, use `gender: \"성별 중립\"` and keep pronouns or honorific usage consistent with the setting. If gender is intentionally undecided, ask once before writing; only use `gender: \"미정\"` when the user wants it left undecided.\n\nThe Markdown body must include these sections:\n\n- `# <name>`\n- `## Function`\n- `## Surface`\n- `## Interior`\n- `## Relationships`\n- `## Continuity`\n\nKeep unknown values as empty strings or empty arrays instead of inventing hard canon.\n\n### 4. Write The File\n\nPrefer the bundled script:\n\n```bash\npython3 \"<skill-dir>/scripts/write_character.py\" --input /path/to/character.json --project-root .\n```\n\nUse a temporary JSON file containing the final agreed character data. The script writes `characters/<slug>.md`, refuses invalid slugs, and refuses to overwrite existing files unless `--force` is passed.\n\nIf the script is unavailable, create the Markdown file manually with the same frontmatter and body shape.\n\n### 5. Verify\n\nAfter writing:\n\n- Confirm the file starts and ends frontmatter with `---`.\n- Confirm `type: character`.\n- Confirm `id` matches the filename slug.\n- Confirm non-Korean characters include both `original_name` and `korean_reading`.\n- Run `git status --short` and report the changed files.\n\nDo not commit unless the user asks.\n"
}SHA-256 of public snapshot: b2e0d40db43475af50ed5359aca647dcd5d08219f6e951a3ac5fe17606373263