これはClaude Codeが従う指示書です。プロジェクトの概要・背景・人間向けの使い方は README.md にあります。
このリポジトリには性質の異なる2種類の作業がある。「音声原稿(ノート)を作る」(下記セクション)と「リポジトリ自体のファイルを編集する」(コード・設定を変更するときの開発ルールセクション)は手順もルールも別物なので、混同しないこと。
これがこのリポジトリでの標準タスクです。以下を順番に、断りなく最後まで実行してください(途中で確認を挟む必要はありません)。
topic-to-audio-script スキルの指示に従い、指定されたトピックを調査し、音声読み上げ用に最適化したMarkdown原稿を作成します。
oku-no-hosomichi.md)。日本語のトピック名からローマ字化します。notes/ ディレクトリの直下に保存します(リポジトリのルート直下には置きません)。ノートが増えるたびにリポジトリのルートが散らかるのを防ぐためです。python3 build_note.py <ファイル名>.md "<記事タイトル>"
<ファイル名>.md は notes/ ディレクトリの直下にあるものとして指定します(notes/ というプレフィックスは付けません)。スクリプトが自動的に notes/ 配下を読み書きします。<記事タイトル> は原稿の内容にふさわしい短いタイトルを自分で決めて渡します。原稿本文と違い、タイトルにはアルファベットを使ってかまいません(例: Appshots(アップショッツ)とは何か)。タイトルは耳で聞くより目で見て識別するものなので、カタカナだけだと読みにくくなるためです。pandoc が入っていなければ apt-get install -y pandoc(または環境に応じた方法)でインストールします。note-template.html と build_note.py の中身は、iPhoneのEdgeで読み上げが確実に動くことを検証済みの形式なので、書き換えません。コミットしてmainへ直接pushします
生成された notes/<ファイル名>.md と notes/<ファイル名>.html の両方を git add → git commit → git push で、ブランチを切らず、PRも作らずに main ブランチへ直接pushします。これは下記「コード・設定を変更するときの開発ルール」のPR必須ルールの対象外となる、この手順専用の例外運用です。
https://soh-arch.github.io/audio-notes/notes/<ファイル名>.html
AUDIO_NOTES_SLACK_CHANNEL_ID の値に従います。この値はワークスペース固有の情報のため、公開リポジトリのどのファイルにもコミットせず、実行環境(セッション/CI)の環境変数として渡します。
このセッションで使えるSlack向けのツール・連携(Slack MCP、Incoming Webhookなど、環境にあるもの)を使って、そのチャンネルへ上記URLを短いメッセージと共に投稿します。例:「『<記事タイトル>』を公開しました: AUDIO_NOTES_SLACK_CHANNEL_ID が設定されていない、または使えるSlack手段が見当たらない場合は、その旨と生成済みのURLを最終応答にはっきり書き、投稿だけは諦めます。note-template.html(デザイン・DOM構造とも、Edgeの読み上げ動作を実機検証済みのため。本文がJavaScriptで後から差し込まれる形に戻すと読み上げが壊れる)build_note.py の変換方針そのもの(Markdown→HTML変換はpandoc経由のスクリプトに固定し、エージェントが毎回HTMLを手書きしない)この2つを固定している理由(他の配信形式ではEdgeの読み上げが動かないこと)は、README.mdの「なぜこの構成なのか」に書いてある。変更を検討する前に必ずそちらを読むこと。
これは上記の「音声原稿の作成・公開」手順(1〜6)とは別物のルールである。build_note.py や note-template.html、CLAUDE.md、.claude/ 配下のスキルなど、音声原稿そのものではなくリポジトリ自体のコードや設定を変更する場合にのみ、以下に従う。
mainなど)へは直接pushせず、PR経由でmergeする。ノート公開手順3で .md/.html をmainへ直接pushするのは、この規約の対象外の既存運用とする。