Communityライティング&編集github.com

boris-timofeenko/ne-slop-text

人間らしい文章を書く・修正するスキル。AIの平均的な出力から乖離させ、書き手固有の視点・体験・言葉を反映したテキストを生成します。手紙、CV、README、ビデオスクリプトなどに対応。

ne-slop-text とは?

このスキルは、AIエージェントが生成するテキストが「AIらしい平均的な出力(スロップ)」に陥る問題に対処するために設計されたパイプラインを提供します。`ne-slop-text`は、まず哲学ステップで書き手固有の素材(体験、意見、言い回し)を収集し、次にデフォルトモデルが生成する典型的なテキストと比較しながら差分を拡大するループ処理を行います。さらに、言語に依存しないリンターで表面的な問題を修正し、最終的にユーザーに変更理由を説明します。このスキルはClaude、任意のモデルで動作し、手紙、メッセージ、カバーレター、CV、READMEなど幅広い用途に対応。重要なテキストにはブラインドテストと学習機能も備え、ユーザーのフィードバックから重みを更新して継続的に改善します。単なる言い換えや「プロフェッショナル」なリライトとは異なり、人間らしい決定(何を言うか、誰が主導するか、どう終わるか)に焦点を当てた独自のアプローチを採用しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/boris-timofeenko/ne-slop-text/tree/HEAD

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

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

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

ドキュメント

ne-slop-text は何をしますか?

スロップとは平均値のことです。モデルがギャップを最も確からしい動きで埋めるとき、あるいは「より良くして」と依頼されたときに書くものです。それは単語ではなく、決定(何を明示的に言うか、誰が出来事を動かすか、どう終わるか、何を列挙するか、何に名前をつけるか)に現れます。単語を入れ替えても修正できません。StoryScope(Russell et al., COLM 2026)は談話特徴のみで93%のF1値でAIと人間のストーリーを分離し、プロの表層リライトでは検出率が95.5%から93.9%にしか変化しませんでした。モデルは一つの領域に集まり、人間は散らばります。したがって、このスキルは固定のレシピを適用しません。タスクごとにデフォルトモデルがどこに着地するかを見つけ、その場所からその人の素材を使ってドラフトを遠ざけます。

パイプラインの発見とテスト方法:docs/evidence.md。以下のパスはこのスキルのディレクトリを基準としています。

入力

  • タスク(何を、誰のために、なぜ書くか)またはソース(修正するテキスト)。
  • コンテキスト(オプション):文書、事実、その人の言葉(音声トランスクリプト、チャット、内部メモ)。

モードの選択

  • 短い(約120語未満:チャット返信、短いメッセージ、タイトル):ステップ1、次にステップ3。この長さではループに信号がありません。ブラインドテストでは、5通りの方法で書かれた100語の要約は区別できませんでした。
  • 完全(それより長く、他人に送るもの):ステップ1、2、3、4。テキストが重要な場合やユーザーが希望する場合はステップ5。

ステップ1. 執筆前の哲学

  1. 素材優先。 この人だけが持つものを見つける:具体的なエピソード、その人が持つ意見、その人以外の力が出来事を形作ったもの(誰かが押した、何かが継承された、何かが失敗した)、ヘッジや限界、その人自身の言い回し。同じジャンルの古いテキスト(以前のCVや手紙)は事実を与えますが、声は与えません。
  2. 不足している素材。 テキストが重要な場合、1~3つの短い質問をする。音声回答がベストで、トランスクリプトを素材として保持する。回答を示唆しないオープンクエスチョンを聞く:「実際にはどう起こったのか」「事例はあったか」「Xについてどう思うか」「まだできないことは何か」。質問できない場合は、検証可能な具体性(名前、数字、ソース)を使い、ギャップは可視のままにする。ギャップを平均値で埋めてはいけない。
  3. 読み手とそのコード。 読み手が文字通り何を求めているか?彼らはどんな言葉やジョークを使うか?自分の言葉で答えることは、ポイントを突くときに生きている(「あなたの広告は正義を求めているので、私は自分が最善だと主張しません。他の候補者には会ったことがないので」)。彼らの言葉をラベルや見出しとして使うことはスロップです。
  4. 素材に近い形で表現する。 その人の思考の順序、ヘッジ(「おそらく」「全般的に」)、文字通りの翻訳(慣用句ではなく)、短い動詞を伴う一人称:「私は3名のQAエンジニアを率い、リリースの承認を行っています」は生きていると評価されました。「3名のQAエンジニアチームを率い、リリース承認を担当」はスロップと評価されました。
  5. ジャンルはコンテナ(形式、長さ、敬称、必須項目)に存在し、すべての文にあるわけではない。 リストはリストが属する場所(スキルセクション、表、添付CV)に置く。一文は一つのエピソードか一つのメカニズムを伝える。
  6. 簡単に出てきたものは疑う。 決定なしに文が現れたなら、それはおそらく平均値です。

ステップ2. ループ:デフォルトから遠ざける(完全モード)

  1. デフォルト。 異なるモデル(例:opus、sonnet、haiku)で3つの新しいエージェントを生成する。それぞれに平易なタスクと、loop/default_prompt.md を使った同じコンテキストを与える。彼らはこのスキル、ドラフト、お互いを見てはいけません。
  2. アノテーション。 さらに1つの新しいエージェント(書き手とは異なるモデル)が、loop/questionnaire.json を使い、loop/annotator.md に従ってドラフトとデフォルトをアノテーションします。出力:features.json。
  3. レポート。 python3 loop/consensus.py loop/questionnaire.json features.json D1,D2,D3 DRAFT TEXTS_DIR > report.txt これにより、P1(ドラフトがすべてのデフォルトと同じことをしており、機械的に傾いている)、P2(重みで機械的に傾いている)、Keep(人間的に傾いている、失わないもの)、デフォルトと共有している4-gram、そして開始文がデフォルトにどれだけ近いかが得られます。
  4. 修正。 新しいエージェントが、レポートとコンテキストを使って loop/reviser.md をドラフトに適用する。素材は重みに優先します。その人の言葉を表現する文は、特徴にフラグが付いても維持されます。
  5. 停止。 最大2ラウンド後、またはP1が空になった時点で停止します。テキストは長くなってはいけません。

コスト:約6~8エージェント呼び出し、3~5分。コンセンサスだけではスロップではありません。コンテキストが豊かな場合、すべてのデフォルトも特定のエピソードを持ちます。フラグには両方が必要です:デフォルトが一致し、かつ特徴が機械的に傾いていること。ある程度の一致は単にジャンル(READMEにインストール方法が書かれているなど)です。コンテナが何かをレビューアに伝えてください。

ステップ3. 最終リンター

python3 lint/lint.py FILE --lang en(または ru)、その後 lint/en.md または lint/ru.md を読む。フラグが立ったものだけを修正し、この段階で再構成はしない。単語リストは最も弱い信号であり、最初に時代遅れになります。

ステップ4. 出力

ユーザーに以下を提供する:テキスト、何がなぜ変わったか(数行で)、開かれた質問と可視のまま残ったギャップ。コンテキストを使用した場合は、「行←ソース」マップを提供する。ユーザーの元のファイルは決して編集せず、ドラフトをその隣に書く。

ステップ5. 学習

  • 重要なテキストのブラインドテスト: python3 tools/blind.py out.html key.json "Title" "Subtitle" name=path=label ... 同じ素材の複数の処理、同順位なしのランキング、文のマーク(スロップ/生きている)。少なくとも2段落を比較すること。短いスニペットは分離できません。
  • マークが重みになる。 ユーザーのマークを learn/marks.jsonl に、learn/patterns.md のパターンタグとともに追加し、python3 learn/update_weights.py を実行する。これにより、どのパターンが確定し、どのアンケートの重みがそれと矛盾しているかが示されます。loop/questionnaire.json を編集して一致させる。新しいパターンがスロップとして2回マークされ、生きているとマークされたことがなければ、新しい特徴になります。
  • 拒否は賞賛より多くを教える。 ユーザーがあなたのテキストを編集した場合、差分を取る:彼らが削除したものもマークです。

やってはいけないこと(すべてテスト済み)

  • ジャンルに向けて磨く(「もっとプロフェッショナルに」):履歴書調と孤独なヒーローが戻ってきて、エピソードが台無しになります。
  • 良い素材から一回で生成する:モデルは声を平均値に溶かし、意見を落とします。
  • カジュアルさを演出する:構築物としてのジョーク(「ジョークの答えは…本当の答えは…」)、「個性を加える」リライト。これは人々が見抜くヒューマナイザーの特徴です。
  • その人から直接ではなく、古いメモから意見を取る。メモはあることを言い、その人は別のことを言いました。
  • 珍しい単語を追いかける。生きているテキストは語彙的に普通です。珍しさはその決定にあります。
  • その人自身のものであっても、気の利いた言い回し(「エンジニアにはエンジニアのように話す」「…そしてチームはお互いにチケットを渡す」)。
  • テキストが自分自身について語ること(「まずXから、あなたが明示的に求めたので」)。

他のアプローチの位置づけ

  • ne-slop(親スキル、あらゆる創造的作業向け):ステップ1はそのテキスト固有の部分。実際の素材、多数の小さな明示的な決定、いくつかの異なるバリアント、本人が選択、拒否は記憶され、結果を見る。
  • StoryScope:ステップ2の背後にある理論と、アンケートの重みのシード。
  • unslop:移植性テスト(この文は他の人や会社に当てはまるか?)と、虚構の事実に対するガードレールはステップ1と3に属する。その単語リストはリンターに供給される。
  • humanizer:そのパターンリストはリンターに供給される。「個性と魂」を使ったリライトは意図的に除外されている。

関連スキル