| name | mystery-world |
| description | 推理SF小説ハーネスのフェーズ1。ユーザーから受け取った世界観設定(舞台種別・時代・国・SF度のヒント)をもとに、クローズドサークルが成立する具体的なSF世界を構築し world.json を生成する。温泉旅館・無人島・列車・当主の館・宇宙ステーション等のクローズド舞台でミステリの起点となる状況を設計する。単体でも mystery-novel オーケストレータからでも実行可能。 |
mystery-world — 世界観構築(フェーズ1)
ユーザーの世界観設定を起点に、クローズドサークルが成立する具体的な推理SF世界を
構築し world.json を生成する。この世界の中で後続フェーズが殺人事件を展開する。
入力
- ユーザーの世界観設定(必須・自由文)。舞台種別の指定が中心。
例: 「温泉旅館」「無人島」「寝台列車」「当主の館」「軌道エレベーター」「海底ホテル」。
時代・国・SF度・トーンのヒントが添えられることもある。
- 出力先(任意)。未指定なら
~/mystery-novels/<slug>/。
ユーザー入力が舞台種別のみなど最小限でも、不足分はエージェントが自律的に決定する
(ユーザーへ質問して埋めない)。ただしユーザーが明示した要素は最優先で尊重する。
事前に必ず読むもの
~/.claude/skills/mystery-novel/references/data-contract.md(ファイル契約・slug・ネタバレ境界)
~/.claude/skills/mystery-novel/references/knox-and-fairplay.md(SFフェアプレイ則 F1〜F5)
~/.claude/skills/mystery-world/references/world-schema.json(出力スキーマ)
~/.claude/skills/mystery-world/references/setting-archetypes.md(舞台アーキタイプ集・未来/SF寄り)
- 歴史モード時のみ(1800年代後半・科学捜査黎明期を指定された場合は必読):
~/.claude/skills/mystery-world/references/period-forensics-1890s.md(実在の黎明期科学捜査=novum・その限界・死体現象の時刻表)
~/.claude/skills/mystery-world/references/historical-settings-1890s.md(19世紀末のクローズド舞台)
モード判定
ユーザー指定の時代で分岐する:
- 歴史科学捜査モード(1800年代後半など、史実の捜査黎明期):
sf_level: low。
novum は その時代に実在した最新の科学捜査技術(指紋・ベルティヨン法・毒物学・血痕・
法医学)とし、period-forensics-1890s.md の 史実の限界をそのまま rules/limits に使う。
1900年以降の技術を出さない(アナクロニズム禁止)。
- SF/近未来モード(既定): setting-archetypes.md に従い、speculative な novum を設計。
プロトコル
-
最新の創作・本格ミステリ作法の確認(CLAUDE.md原則: 自分の知識だけで決めない)。
舞台種別とSF設定について不確かな点があれば WebSearch で現代の作例・考証を軽く確認する。
-
世界の確定(自律設計)。次を一貫性をもって決める:
- 時代(era) と 国(nation): ユーザー指定がなければ舞台に最も映える組合せを選ぶ。
- locale: クローズドな具体舞台。物理レイアウト(zones)を最低3つ、動線(connects_to)込みで。
- closed_circle: なぜ外に出られず救援も来ないか。SFならではの隔離機構も可
(通信途絶/軌道隔離/隔壁封鎖 等)。
- sf_premise.novum: SF設定を1〜2個。各 novum に rules(規則)・limits(限界)・
how_disclosed_to_reader(読者開示法) を必ず付ける(F1〜F3)。
できれば最低1つは
load_bearing: true(事件成立の必要条件, F4)にする。
- inciting_situation: 人々が一堂に会し事件が起こり得る起点状況。
- social_context / atmosphere / timeframe を埋める。
-
SF×フェアプレイの自己点検:
- 解決に使い得る novum は、限界・規則が手掛かりとして機能するよう設計したか(F3)。
- 「超常・魔法・霊能力」を novum に混ぜていないか(Knox#2)。混入していたら科学的機構に置換。
-
slug 決定とディレクトリ準備:
- 暫定タイトルから slug を作る(data-contract.md の規則)。
mkdir -p ~/mystery-novels/<slug> し、既存なら meta.json を尊重。
-
world.json 出力。world-schema.json に厳密準拠した JSON を
~/mystery-novels/<slug>/world.json に書く。additionalProperties:false なので
未定義キーを足さない。配列の最小要素数(zones≥3, novum≥1)を満たす。
-
meta.json 更新/作成。phases.world.status="done"、title/slug/language="ja"/
sf_level を記録。created_at は date -u +%Y-%m-%dT%H:%M:%SZ の実値を使う(捏造禁止)。
-
要約報告。舞台・時代・国・novum・クローズド機構・想定される事件の方向性を
数行で報告する。world.json のパスを明示。
完了条件
world.json が world-schema.json に適合し、zones≥3 と novum≥1 を満たす。
- 各 novum に rules/limits/how_disclosed_to_reader が揃っている。
- meta.json の
phases.world.status == "done"。
単体実行時の次の一手
オーケストレータ外で単体実行した場合、続けて mystery-characters を案内する。