Communitygithub.com

robcsaszar/prose

Claude Code向けの散文を作成・レビューします。新しいコンテンツを適切な文体で執筆したり、既存のテキストからAI的なパターンを検出し、人間らしい自然な文章に書き換えます。

prose とは?

このスキルは、AIエージェント(特にClaude Code)が高品質な散文を作成・レビューするための包括的なツールです。「下書きモード」と「レビュー/ヒューマナイズモード」の2つのモードで動作し、ユーザーのニーズに応じて適切なモードを自動検出します。下書きモードでは、ユーザーの「声」(文体プロファイル)を分析・学習し、そのスタイルに合わせたオリジナルコンテンツを生成します。レビューモードでは、テキスト内のAI特有のパターン(決まり文句、構造上の問題など)を検出し、より自然で人間らしい文章に書き換えます。各モードはチャンネル(メール、ソーシャルメディア、IM、ドキュメント、クリエイティブ、ブログ記事)を自動分類し、それぞれに最適化されたルールを適用します。スクリプトベースの決定論的スキャナーと、人間的な判断による評価を組み合わせることで、単なる文章の修正を超えた、深い品質管理を実現します。このスキルは、AIが生成したテキストを人間らしく洗練させたい開発者やコンテンツクリエイターに特に有用で、Claude Codeにインストールして使用します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add robcsaszar/prose

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

prose は何をしますか?

2つのモードがあります。他のことをする前に、正しいモードを検出してください。

モード検出

下書きモード — ユーザーがトピック、概要、またはアウトラインを持っており、新しいコンテンツを執筆したい場合。 レビューモード — ユーザーが既存のテキストを持っており、それを改善、ヒューマナイズ、またはスコアリングしたい場合。

曖昧な場合:質問してください — 「新しいコンテンツを書きましょうか、それとも既存のものをレビュー/書き換えましょうか?」 ユーザーが応答しない場合、デフォルトで下書きモードにします。


声の調整

下書きまたは書き換えを行う前に、ユーザーが声のサンプルを提供していない場合は、それを求めます。 短い形式のターゲット(IM、200語未満のメール)の場合:ユーザーがすでにサンプルを提供している場合を除き、声の調整をスキップします。

「あなたの文章で、最も自分らしいと感じる1〜3段落を共有してください。あなたの文のリズム、語彙選択、構造的な習慣に合わせます。」

サンプルを分析して以下の点を確認します:

  • 文の長さの傾向(パンチ効いた / 分析的な / 混合)
  • 書き出し方(主張ファースト、ストーリーファースト、データファースト、コンテキストファースト)
  • 句読法の癖(括弧、コロン、セミコロン)
  • 繰り返し使われるフレーズや言語上のクセ
  • 締めくくり方(原則、挑戦、未解決の質問、行動)
  • 決して使わない単語

プロファイルの永続化。 サンプル分析後、結果を保存して将来のセッションで再調整をスキップするオプションを提供します:references/voice-profile-template.mdに記入し、スキルフォルダ内のreferences/voice-profile.mdに書き込みます(フォルダが読み取り専用の場合は、完成したプロファイルをユーザーが保存できるように出力します)。references/voice-profile.mdがすでに存在する場合、下書きまたは書き換えの前にそれをすべて読み込みます — デフォルトの規則より優先されます(emダッシュ許容度、引用スタイル、決まりフレーズ、文体)。「このテキストからも学習する」の場合:日付付きの観察結果を既存のプロファイルに追加します;競合は新しいサンプルを優先します。プロファイルは、事実の規律、アクセシビリティ、またはNEVERルールを決して上書きできません。

サンプルも保存されたプロファイルもない場合:デフォルトの声で進みます — references/drafting-core.md § 「デフォルトの声」を参照。ブログ、エッセイ、意見、または個人的な文章の場合は、references/personality-and-soul.mdも参照してください — クリーンなデフォルトの声でも、それがないと魂のないものに読めます。テキストがユーザーの名前で公開される場合、未調整の出力には汎用的なデフォルトの声が含まれることを言及し、調整を申し出ます — 会話ごとに1回、その後はやめます。


下書きモード

フェーズ0 — 書く前に理解する

下書き前に質問します:

  1. 読者は読んだ後、何をしたり感じたりする必要がありますか? (媒体と対象読者の適合性を決定します)
  2. この読者が本当に驚くことは何ですか — 彼らがすでに知っていると思っていることで、不完全なものは何ですか?
  3. このテキストの唯一の仕事は何ですか — 情報提供、説得、指示、娯楽、それともコンバージョン?
  4. 文脈に合う文体はどれですか — フォーマル、カジュアル、テクニカル、会話調 — それは安定していますか?
  5. スルーライン — 実際の重みを持たせることができる、具体的な例、ケース、または結果

タスク指向の場合:回答または次のアクションを最初に。 長文の場合:下書き前に、スルーラインと1つの具体的なアンカーを選びます。

下書き前に質問します:この作品全体を支えることができる、具体的な例や結果は何ですか?それを挙げられなければ、下書きの準備はできていません。

200語を超えるものを下書きする前に必須の読み物: → references/drafting-core.md — コアルールと媒体固有のパターン

ドキュメントまたはクリエイティブターゲットの場合、下書き前にそのチャンネルの書き換えルールも読んでください — これらは他の場所に適用されるデフォルトを一時停止します: → references/channel-rules.md § ドキュメント / § クリエイティブ

下書き中にreferences/ai-patterns-universal.mdをロードしないでください — これはレビュー専用です。

フェーズ1 — 下書き

抽象的な「良い文章」の理想ではなく、実際の文脈に合うように書きます。

アクティブな原則:

  • 各実質的な段落には、少なくとも1つの具体的なアンカー(固有名詞、具体的な数字、直接引用、名前の付いた決定、確認可能な詳細)が含まれます。 ブログ、記事、ソーシャルメディアの場合。IMと短いメールの場合:メッセージごとに1つのアンカーで十分です。
  • 曖昧な主張は禁止:「多く」、「様々」、「広範な影響」、「意味のある変化」はアンカーテストに不合格です
  • 平易な言葉を使う;適切な単語である場合は、普通の単語を繰り返す;名詞化よりも動詞を好む
  • 文体を安定させ、形式を媒体に合わせる

フェーズ2 — 修正

必須:下書き後、必要なチェックを実行します。 → references/required-checks.md

シェルが利用可能な場合、下書きに対して決定論的スキャナーも実行します — アンチスロップはレビューだけでなく新しい文章にも適用されます:

python3 scripts/slop-scan.py --channel <媒体> draft.md

このスキルのすべてのスクリプトと参照パスは、作業ディレクトリではなくスキルディレクトリからの相対パスです。プラグインとしてインストールされた場合、この2つが同じになることはほとんどありません:このSKILL.mdがロードされたディレクトリからscripts/slop-scan.pyを解決します。「ファイルが見つかりません」は「シェルがない」ではなく、一度修正すべきパスの問題として扱います — 手動レイヤーにフォールスルーすると、決定論的パス全体が暗黙的にスキップされます。

デブリは無条件で修正します。変更する前に、各フレーズフラグを偽陽性ルールと照合して確認します(フラグされた単語が単に適切な単語である場合があります)。構造に関する指摘は、必須チェック5と同じ判断で処理します。

必須チェック後も作品がまだ違和感がある場合(長文作品のみ): → references/long-form-diagnostics.md

修正の例が役立つ場合: → references/examples.md


レビュー / ヒューマナイズモード

レビュー/ヒューマナイズモード中はreferences/drafting-core.mdをロードしないでください — これは下書き専用です。

ステップ0 — コンテンツタイプを自動検出

チェックを実行する前にチャンネルを分類します。レビューの先頭で検出結果を表示します。

メール — 次の要素を持つ:件名行 / 挨拶定型文(Hi Name, Dear Name) / 明示的な依頼 + 署名の構造 ソーシャルメディア — 次の要素を持つ:全体が一行一文 / ハッシュタグ / 最後にエンゲージメントCTA / 見出しなしで3,000文字未満 IM — 次の要素を持つ:@メンション / チャンネル参照 / カジュアルな口調 / 500文字未満 / 挨拶や署名なし ドキュメント — 次の要素を持つ:番号付き手順 / 命令形のステップ動詞 / コードブロック、CLIコマンド、設定キー / API、パラメータ、オプションテーブル / 一人称の語りなし クリエイティブ — 次の要素を持つ:発話句読点を含む会話 / シーン、スタンザ、脚本構造 / 名前付きキャラクターによる語り / リスト構造ではなくリズムのために使われる改行 ブログ記事 — 次の要素を持つ:見出し / 3,000文字以上の構造化された散文 / 複数の展開された段落

ドキュメントとクリエイティブはブログよりも先にチェックします。両方とも見出しと展開された段落を持つため、実行手順書やシーンもブログのシグナルに一致し、どちらに対してもブログは間違ったデフォルトになります。

1つのチャンネルが明確に一致する場合:検出結果を表示して処理を進めます。 曖昧な場合(シグナルが競合するか、どれも一致しない場合):質問します — 「これはどの形式ですか?ブログ記事、ソーシャルメディア、メール、IM、ドキュメント、それともクリエイティブですか?」 回答があるまで処理を進めません。

ステップ1 — AIパターンスキャン

最初に決定論的パス。 シェルが利用可能な場合、テキストをファイルに保存して実行します:

python3 scripts/slop-scan.py --channel <検出されたチャンネル> file.md

チャンネル名はフラグ値にマッピングされます:Blog post → blog、social media → social、Email → email、IM → im、Documentation → docs、Creative → creative。各チャンネルはその媒体が正当に破るルールを抑制するため、間違ったチャンネルを渡すと偽陽性と見逃しの両方が発生します。

スキャナーは機械的な兆候(デブリ、決まり文句、タイポグラフィ)と構造メトリクス(文の単調さ、均一な段落、均一な確信度、格言予算、照応連続、序数付き段落、造語概念ラベル、逐語的重複)を、安定した再現可能な出力で報告します。声のプロファイルや媒体が正当に許可するものには--allow <ルールID>を渡します。シェルがない場合:機械的レイヤーとしてreferences/formula-watchlist.mdを手動で適用します。

次に判断パス。 必須の読み物 — まず普遍的なマーカー: → references/ai-patterns-universal.md

次にチャンネル固有のマーカーをロードします: → references/ai-patterns-channels.md

普遍的なマーカーをすべてのコンテンツに適用します。チャンネル固有のマーカーは検出されたタイプにのみ適用します。 フラグが立てられたすべての項目 — スキャナーヒットと判断フラグ — を、正確な引用とその位置とともにリストします。

ステップ2 — 敵対的検証

ステップ1のすべてのフラグは、レポートに入る前に防御を生き残らなければなりません。各フラグについて、これが偽陽性であるという最も強いケースを主張します。ai-patterns-universal.mdの「フラグを立ててはいけないもの」ルールを使用します:

  • そのフレーズは引用、タイトル、固有名詞、または議論されている例(使用されているのではなく)の中にありますか?
  • それは明らかにここでは適切な単語で、1回だけ出現し、周りに他の兆候のクラスターはありませんか?
  • それは媒体の慣習(ドキュメントの構造、メールの挨拶)ですか、それとも声のプロファイルによって明示的に許可されていますか?
  • 「構造的」フラグは、このジャンル(仕様、実行手順書、リファレンスページ)にとって実際に正しい形状ですか?

フラグごとの評決:確認済み(防御が失敗)または 却下(一行の理由)。確認済みのフラグのみが処理を進めます。デブリヒット(チャットのアーティファクト、プレースホルダー、追跡フラグメント)は常に確認済みです — 正当な使用法はありません。

このステップは実際の散文を守るために存在します:問題のないテキストを過剰に編集することは、兆候を見逃すことと同じくらいの失敗です。

ステップ3 — オリジナリティチェック

以下の場合にフラグを立てます:

  • 検索エンジンを使える人なら誰でも書けた内容である(獲得された権威なし、特定の経験なし)
  • 直接の経験、顧客のストーリー、具体的な証拠がどこにもない
  • 同じことを深みを加えずに2回言っている
  • 業界の枠組みを再利用している(「Xの未来はY」)
  • 「私にしか書けない」要素が欠けている

ソーシャルメディア追加:教訓に見せかけた商品紹介、おみくじのような教訓が付いた個人的なストーリー。

ステップ4 — スコアリング

チャンネルごとのスコアリング次元のための必須の読み物: → references/channel-rules.md

各スコアに対して、一文で正当化を提供します。 AIらしさが低いが、実質次元も低い場合 — ドメインの信頼性(ブログ/ソーシャル)、明確さ(メール/IM)、タスク完了(ドキュメント)、または抑制(クリエイティブ) — 明示的にフラグを立てます。コンテンツはクリーンだが空虚です。

ステップ5 — 構造化レビューレポート

レポート構造のための必須の読み物: → references/review-report-template.md

確認済みのフラグのみを報告します;却下されたフラグの数は一行で述べます。

ステップ6 — 書き換え

まず編集範囲を選択します(ユーザーが指定しなかった場合は自分で選択します;それが重要な場合は、どちらを選んだかを述べます):

  • 自由編集(「これをヒューマナイズして」のデフォルト) — 空のフレーズは言い換えずに削除されます;長さは顕著に短くなる場合があります。
  • 注意深い編集(テキストが所定の枠を埋める必要がある:クライアント文書、固定フォーマット) — 構造は維持されます;長さはオリジナルの80〜110%の範囲内に収まります。
  • 最小限の編集(明示的な要求がある場合のみ) — 明白なAI構文のみに触れます。

普遍的な書き換えルール:

  1. オリジナルにないアイデアを決して追加しない;内容を決して削除しない
  2. フラグが立てられたすべてのAIフレーズを自然な言葉に置き換える
  3. 文の長さを変える:短いパンチの効いた行と長い分析的な行を混ぜる
  4. 一般的な書き出しを、特定のフック(ストーリー、データポイント、逆張りの主張)に置き換える
  5. 要約の結論を、挑戦、原則、または未解決の質問に置き換える
  6. 均一な段落リズムを崩す:短いものと長いものを混ぜる
  7. 具体的な例が不足している場合:[あなたの経験から具体的な例を追加] を残す — 決して発明しない
  8. 編集はファクトチェックではない:テキストが裏付けていない主張は必ずしも誤りではない — 著者はテキストを超えたデータを持っている可能性がある。文言をテキストが支えられる範囲に和らげるか、公開バージョンには裏付けが必要だとフラグを立てる。主張を未確認として黙って削除しない。

ルール3〜6に対するチャンネル例外。 これら4つは散文リズムのルールであり、2つのチャンネルはそれらを望みません:

  • ドキュメント — 文の長さを変えず、段落リズムを崩さず、書き出しをフックに置き換えず、締めくくりの要約を未解決の質問に変えない。均一な形状こそが手順を追跡可能にするものであり、挑発で終わる仕様は失敗です。ルール1、2、7、8は依然として適用されます。
  • クリエイティブ — ルール5は逆転します:作品の意味を述べる締めの行が兆候であるため、それを原則や挑戦に置き換えるのではなく、削除します。ルール3と6は著者の判断に委ねられ、あなたの判断ではありません。

ブログ、エッセイ、意見、または個人的な文章(百科事典的、技術的、法的、またはリファレンスコンテンツではない)の場合: 必須の読み物 → references/personality-and-soul.md — AIパターンを削除するとクリーンな散文が生成されます;このセクションはそれを誰かが書いたように聞こえさせるものです。

チャンネル固有の書き換えルールのための必須の読み物: → references/channel-rules.md

排除ループ。 一回の書き換えパスが最終状態ではありません。テキストが決定論的チェックと敵対的チェックの両方を生き残るまで、最大3ラウンド繰り返します:

  1. 書き換え — 確認済みのフラグと上記のルールを適用します。
  2. 再スキャン — 書き換えに対してscripts/slop-scan.pyを実行します(同じ--allowセット)。デブリがあれば即座に修正します。新しいフレーズヒットがあれば修正するか正当化します。
  3. 告発 — 立場を切り替えます:書き換えがまだAI生成であるという最も強いケースを主張します。特にreferences/ai-patterns-universal.md § パート5の二次的な兆候をチェックします — クリーンアップパスはそれらを生成する傾向があります:均一な確信度、すべての段落の格言的な締めくくり、「それはXではない。それはYだ。」、どこにもたるみがない、パフォーマティブな脆弱性(著者に何のコストもかけない告白)、そして削除したばかりのフックの代わりとなる作為的なサスペンス。それぞれ一行で証拠を引用します。
  4. 告発に根拠がある場合:修正して2から繰り返します。根拠がない場合、または3ラウンド後:停止します。

終了条件:スキャナーがデブリ0を報告;残りのスキャナーフラグはそれぞれ一行の正当化(媒体の慣習または声のプロファイル)を持つ;告発が新しい発見を生まない。書き換えを出力します。

関連スキル