mcpField
S
story-init

story-init

github.com/danjdewhurstクリエイティブ・メディア363794 回インストール1 日前に更新
リポジトリ

story-init について

story-init は、小説などの創作プロジェクトを始めるためのライティングスキルです。相互参照する Markdown 構成やストーリーバイブルを整え、前提の記録や検証まで案内します。

主な機能

  1. 01構造化されたフォルダーの作成
  2. 02ストーリーバイブルとレジストリー
  3. 03前提と反対前提の記録
  4. 04形式別の目標分量設定
  5. 05CLI と手動セットアップ

活用シーン

  1. 01小説や短編の立ち上げ
  2. 02既存の物語案の整理
  3. 03執筆前のプロジェクト準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/danjdewhurst/story-skills --skill story-init

インストール後、Claude Code で/story-initを入力して読み込まれたか確認します。

同梱ファイルreferences/manual-setup.mdreferences/title-logline.md

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

ストーリーの初期化

概要

構造化された Markdown のフォルダー構成で、新しいストーリープロジェクトを初期化します。ストーリーバイブル、レジストリ、シーンの追跡、連続性の状態、用語集、世界設定のフォルダー、プロット構成、章のトラッカーを作成します。すべて相互参照された Markdown ファイルとして、YAML フロントマター付きで作成されます。

使用する場面

  • 新しいストーリー、本、フィクションプロジェクトを始めるとき
  • 既存のストーリーのアイデア用にフォルダー構成を設定するとき
  • 既存のストーリープロジェクトに追加する場合には使用しないでください(代わりに分野別のスキルを使用してください)
  • 既存の本の続編、前日譚、関連作品には使用しないでください。プロジェクトをリンクし、正史を引き継ぐ series-continuity を使用してください
  • アイデア自体を見つけるためには使用しないでください。ユーザーに漠然とした着想(「灯台にまつわる何か」など)しかない場合、複数のアイデアで迷っている場合、またはまだ筋書きがない場合は、まず premise-workshop スキルを実行し、選んだ筋書き、ログライン、ジャンル、形式を用意してからここに戻ってください
  • 既存の原稿や章の草稿を変換する場合には使用しないでください。代わりに story import '<source>' --title '{Title}' を実行し、出力されたエンティティ候補からバイブルを作成してください。インポートでは --form を指定できないため、実行後に story.md の form と target-words を手動で設定してください(形式の一覧とデフォルト値は以下を参照)。これらがないと story validate は長さを確認せず、story progress にも目標値が表示されません

ワークフロー

  1. ストーリーの基本情報を尋ねます(premise-workshop セッションで筋書き、ログライン、ジャンル、形式が得られている場合は、再度尋ねずにそれらを使用します)。
    • タイトル
    • 形式:novel、novella、novelette、short-story、flash、serial、picture-book、または chapter-book。--form を指定しないと、story init は form も target-words も書き込みません。ユーザーが選ばない場合は、--form novel を渡してください
    • ジャンルとサブジャンル
    • 簡単なあらすじ(2~3文)
    • 舞台となる時代・時期
    • 主なテーマ(2~4個)
    • 視点のスタイル(一人称、三人称限定視点、三人称全知視点)
    • 時制(過去、現在、未来、混合)
    • 本が書かれている言語を BCP 47 タグで指定します:en、en-GB、fr、es-MX、pt-BR、de、ja、zh-Hans。綴り、句読点、市場などの違いが重要な場合にのみ地域を追加してください。ユーザーが英語以外の言語で話しかけてきた場合は、推測せずに確認してください。デフォルトは en です

Story CLI が利用可能な場合は、それを使ってスタータープロジェクトを作成し、必要に応じて生成されたファイルを確認して調整してください。

story init '{Title}' --form '{form}' --genre '{genre}' --sub-genre '{sub-genre}' --setting-era '{era}' --pov '{pov-style}' --tense '{tense}' --synopsis '{synopsis}' --theme '{theme-1}' --theme '{theme-2}'

値はユーザー自身の言葉なので、それぞれシングルクォートで囲んでください。$(...)、バッククォート、" が依然として展開されるダブルクォートには値を貼り付けないでください。値にシングルクォートが含まれる場合の扱いはシェルによって異なります。POSIX シェル(bash、zsh、sh、Git Bash)では '\'' と記述し、PowerShell では '' と記述してください。シングルクォートがなく、値の中の & が実行される cmd.exe では、絶対にコマンドを実行しないでください。PowerShell または POSIX シェルを使用してください。

--form は story.md に form を記録し、目標値が指定されていない場合は、その形式のデフォルトの target-words を設定します(novel は 80,000、novella は 30,000、novelette は 12,000、short story は 5,000、flash は 1,000、chapter book は 10,000、picture book は 500。serial には本全体のデフォルト値は設定されません)。その後、story validate は target-words が形式の一般的な範囲を外れている場合に警告します。短い形式については、plot-structure スキルの references/short-story-form.md を案内してください。

初期化の直後に言語を記録してください。story init には言語のフラグがないため、ユーザーが指定した正確なタグを使って、story.md のフロントマターに language: {tag} を手動で追加してください。en-GB や en-AU などの地域別バリエーションも含めます。英語の本にも記述してください。手間はかからず、項目がない場合は en とみなされるだけです。言語は単なるメタデータではありません。執筆、編集、批評のスキルはその言語で文章を書き、評価します。story validate はタグを検証し、ビルドにも言語が宣言されます。英語以外の本では、style-sheet.md に dialect: unspecified を設定してください(イギリス式とアメリカ式の綴りの違いは英語に関するものです)。また、最初の章を書く前に、voice-style スキルを使って会話文の句読点を決めてください。 中国語(zh)または日本語(ja)の書籍は単語数ではなく文字数で数えます。story wordcount、story progress、各レジストリ、フォームのチェックはすべて、target-charactersを基準に文字数を測定します。言語は初期化後に追加されるため、--formではtarget-wordsが書き込まれています。フォームではこれをtarget-charactersに置き換えてください(中国語:長編小説200,000、中編小説60,000、短編小説10,000、掌編1,500、日本語:長編小説150,000、中編小説80,000、短編小説20,000、掌編4,000)。または、ユーザーが指定した数値を使ってください。原稿では、中短編小説、絵本、児童向けチャプターブックの文字数は設定されていないため、これらの形式にはデフォルト値も範囲チェックもありません。ユーザーに目標値を尋ねてください。設定するまでは、story validateがunused-targetの警告を表示します。ユーザーが別の数え方を求めた場合に限り、count-unit: wordsまたはcount-unit: charactersを設定してください。その後、story reindex .、story wordcount . --write、story check .を実行します。

その他の出版メタデータ(isbn、publisher、publication-date、description、keywords、subjects、copyright、cover-alt、ai-disclosure)は任意で、書籍の出版準備が整うまで後回しにできます。これらはpublishingスキルで入力します。初期化時に尋ねないでください。

各レジストリに記録されるストーリーIDは、タイトルをケバブケースにしたものです(--dirで設定するのはディレクトリだけです)。タイトルにASCII英字または数字が含まれない場合、ストーリーIDにはフォルダー名が使われます。キリル文字またはギリシャ文字のタイトルは、デフォルトのフォルダー名ではラテン文字に翻字されます(Война и мирはvoyna-i-mirになります)。中国語のように翻字テーブルのない文字体系のタイトルでは、ASCII文字のフォルダー名を--dirで指定する必要があります。IDは実行のたびにタイトルから再計算されるため、タイトルが変わるとIDも変わります。story.mdのtitleを編集した後は、story reindex .を実行して、各レジストリ、plot/timeline.md、continuity/state.mdのIDを書き換えてください。そうしないと、story validateでstory must be <new-id>というエラーになります。フォルダー名由来のIDの場合、ASCII英字または数字を含む新しいタイトル(Война и мир — том 2)を付けると、そちらがIDに使われます(この例では2)。そのため、そうした文字を含まないタイトルを使うか、後から再インデックスしてください。initは--forceを渡さない限り、既存のディレクトリを拒否します。--forceを指定した場合は、不足しているスターターファイルだけを作成し、既存のstory.md、レジストリ、タイムライン、continuity/state.mdは上書きしません。

initは、ビルド出力のdist/、.story.lock、残存する.*.story-*.tmpおよび.story-*.tmpファイル、OSやエディターのスワップファイルを列挙した.gitignoreも書き込みます。ただし、プロジェクトに.gitignoreがまだない場合に限ります。既存の.gitignoreは編集しません。note: .gitignore was kept and does not ignore dist/と表示された場合は、ユーザーに伝え、dist/の行を追加するか(または!dist/...の除外解除を削除するか)提案してください。

storyがインストールされていない場合は、同じ引数を指定して、同梱の代替スクリプトnode ../story-maintenance/scripts/story.jsを使ってください。ユーザーがStory Skillsリポジトリのチェックアウトを指定した場合、またはその中で作業している場合に限り、代わりにnode <checkout>/bin/story.jsを使ってください。スクリプトのパスは絶対パスで記述し(代替スクリプトのパスはこのスキルのフォルダーを基準に解決します)、storyを実行するフォルダーから実行してください。そうすることで、.などの相対パスが意図したとおりに解釈されます。Bunやパッケージスクリプトではなく、Nodeを使ってください。Bunはそのフォルダーのbunfig.toml(コードを実行する可能性があります)と.envを読み込みます。また、パッケージスクリプトはチェックアウトのルートから実行されます。スキルの場所はエージェントやインストール方法によって異なるため、パスを推測しないでください。../story-maintenance/scripts/story.jsは、このSKILL.mdを含むフォルダーを基準に解決してください。<skills>をこのスキルのフォルダーを含むフォルダーの絶対パスとし、上記と同様に各値を引用符で囲んで、新しいプロジェクトを置くフォルダーから同じinitを実行します。

node <skills>/story-maintenance/scripts/story.js init '{Title}' --form '{form}' --genre '{genre}' --sub-genre '{sub-genre}' --setting-era '{era}' --pov '{pov-style}' --tense '{tense}' --synopsis '{synopsis}' --theme '{theme-1}' --theme '{theme-2}'

storyも同梱の代替スクリプトも実行できない場合(Nodeがない、またはstory-maintenanceスキルがインストールされていない場合)は、references/manual-setup.mdを参照して手作業でファイルを作成し、ステップ2に進んでください。

  1. 作業用の前提を作成します。 story init では premise も counter-premise も書き込まれないため、story.md のフロントマターに両方を手動で追加するか、値を入力してください(手動セットアップでキーがすでに書き込まれている場合は、2組目を追加しないでください)。文字列を引用符で囲み(premise: "...")、premise-workshop で作成した前提があれば、それを再利用してください。premise: フィールドと counter-premise: フィールドには、確定事項ではなく仮説を入力してください。前提は物語全体を導く一文のアイデアであり、価値観+原因を示します。たとえば、「主人公がシステムの裏をかくことで正義が勝利する」です。対立前提は、敵役が体現する主張、つまり敵役が信じているであろう形で述べた、物語で対立する価値観です。あらすじと並行して早い段階で両方の草案を作成しますが、テーマを無理に決めつけないでください。作業用の前提は監査すべき推測であり、押しつける結論ではありません。改稿時に見直してください。revision-continuity のテーマ監査パス(詳細な監査については theme-craft スキルを参照)では、結末が結果を通じて前提を実際にドラマ化しているかを確認します。草稿が別の前提を主張しているなら、草稿ではなく前提を更新してください。

  2. 作成した内容の概要を示し、次のステップを提案します:

    • 前提がまだ推測の段階なら、「前提を練り上げる」(premise-workshop スキルを起動)
    • 「最初のキャラクターを追加する」(character-management スキルを起動)
    • 「世界構築を始める」(worldbuilding スキルを起動)
    • 「プロット構成を定義する」(plot-structure スキルを起動)
    • 執筆サンプルができたら、「スタイルシートを設定する」(voice-style スキルを起動)
    • 「story next . を実行する」と、次に行う決定的なアクションを表示できます
  3. CLI が利用できる場合は、新しいプロジェクトフォルダー({story-title-kebab}/、または --dir で指定したフォルダー)内からメンテナンスコマンドを実行してください。レジストリを手動で作成した場合は、特に重要です:

story reindex .
story wordcount . --write
story check .

story がインストールされていない場合は、同じ引数を指定して、同梱の代替手段 node ../story-maintenance/scripts/story.js を使用してください。node <checkout>/bin/story.js を使用するのは、ユーザーが Story Skills リポジトリのチェックアウトを指定した場合、またはその中で作業している場合に限ります。スクリプトは絶対パスで記述してください(代替手段のパスは、このスキルフォルダーを基準に解決します)。また、story を実行するフォルダーからスクリプトを実行し、. やその他の相対パスが意図どおりに解釈されるようにしてください。Bun やパッケージスクリプトではなく Node を使用してください。Bun はそのフォルダーの bunfig.toml(コードを実行する可能性があります)と .env を読み込み、パッケージスクリプトはチェックアウトのルートから実行されるためです。

参考ファイル

  • references/title-logline.md - タイトルの作り方(類似作品、フックの表現、約束としてのタイトル)とログラインの作成手順
  • references/manual-setup.md - フォルダー構成、story.md のバイブル、Story CLI を実行できない場合に手動で作成する空のレジストリ

共通規約

すべてのストーリースキルは、../story-maintenance/references/conventions.md に記載された共通規約に従います。このスキルフォルダーを基準にパスを解決し、ストーリーファイルを作成、名前変更、リンクする前に、このファイルを読んでください。story-maintenance を含めずにこのスキルをインストールしたためにそのファイルが見つからない場合は、以下が基本ルールです。ID とファイル名には kebab-case を使用すること、すべてのストーリープロジェクトファイルに YAML フロントマターを付けること、story reindex で再構築される _index.md のレジストリテーブルは手動で編集しないこと、エンティティ間に双方向リンクを張ること、ページに登場する人物には characters、言及されるだけの人物には mentions を使用すること、死亡には status: deceased と died-in: chapter-{NN} を指定すること、プロジェクト内にジェネレーターやビルドスクリプトを置かないこと(インストール済みまたは同梱の Story CLI のみを実行すること)。

コメント