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

ドキュメント更新 (docs-update)

最近のコード変更に対応して、リポジトリのドキュメントが古くなっていないか確認し、更新するスキルです。最後にマージされたブランチ、最後のコミット、現在のセッションでの作業、またはリポジトリ全体をスコープとして選択できます。「ドキュメントを更新して」「ドキュメントを確認して」「ドキュメントはまだ正確?」「ドキュメント一斉確認」「ドキュメントをリフレッシュ」「/docs-update」などの指示で使用します。

ドキュメント更新 (docs-update) とは?

`docs-update` は、コード変更後にドキュメントが古くなっている箇所を自動的に検出し、更新する AI エージェントスキルです。これは、特に Claude Code や Cursor などの AI エージェント向けに設計されており、ユーザーが「ドキュメントを更新して」や「/docs-update」と指示した際に起動します。スキルはまず、更新範囲を決定します。ユーザーの明示的な指示、ドキュメント自体に記録された最終更新日、git の履歴(最後にマージされたブランチや最後のコミット)、または現在のセッションの作業からスコープを選択します。次に、変更されたコードファイルを具体的に参照しているドキュメントを特定し、主題に基づいて影響を受けるドキュメントを判断します。その後、リンク切れや存在しないファイルパスをチェックし、最後にドキュメントを更新します。特に重要なのは、すべての変更に `unslop` スキルを適用し、曖昧な表現や冗長な記述を排除して、正確で簡潔なドキュメントを維持することです。このスキルは、コード変更と同時にドキュメントを最新に保ち、リリース前に実行することで、ドキュメントが常にコードと同期していることを保証します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Arzaroth/skills/tree/HEAD/skills/docs-update

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

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

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

ドキュメント

docs-update(ドキュメント更新)

ドキュメントは静かに腐ります。何も壊れず、ただ文章が真実でなくなるだけです。このスキルは、最近の変更が触れるべきだったドキュメントを見つけ出し、それを最新の状態にします。

以下のコマンドは ~/.claude/skills/docs-update/scripts/ を完全な形で示しています。記述された通りにそのまま実行してください。先頭の ~ を保持し、展開しないでください。 許可ルールはリテラルのコマンド文字列と一致するため、/home/<ユーザ名>/.claude/...(チルダ展開後)、python3 ~/...、相対パス、または cd を先に実行するものは、それぞれ異なる文字列であり、それぞれが再プロンプトを引き起こします。チルダ付きのパスは「非形式的に書かれた絶対パス」ではありません。許可ルールにとって、それはそのパスそのものです。

ドキュメントは変更と同時にリリースされ、後追いではありません。 フィーチャーブランチで作業している場合は、そのブランチにドキュメントをコミットして、マージが自動的にドキュメントも運ぶようにしてください。ドキュメントのフォローアップPRは、誰も書かないドキュメントPRです。

1. スコープを選択する

優先順位は以下の通りです。

ユーザーが明示的に指示した場合。 「full sweep」「since v2.1」「just this branch」など。その指示を使用します。フルスイープは --full で、すべてのドキュメントを読み込みます。長い期間が空いた後や、このスキルをリポジトリに初めて導入する場合に適切な選択です。

ドキュメントに自身の最終更新ポイントが記録されている場合。

~/.claude/skills/docs-update/scripts/docscheck.py markers

ドキュメントに Last updated: <日付|sha> が含まれている場合、そのドキュメント をその時点からスコープします(--since)。ドキュメントごとに最終更新が異なる場合、それぞれに独自のスコープが設定されます。単一の答えはありません。

それ以外の場合、git からスコープを導出します。

~/.claude/skills/docs-update/scripts/docscheck.py scope

これは、最後にマージされたブランチを優先します(ブランチ単位の作業が人々が意図する単位であるため)、次に最後のコミットを使用します。--since <ref> で上書きできます。

このセッションで行われた作業 は、スクリプトでは認識できないケースです。このセッションで変更を行った場合、変更したファイルは既に把握しているはずです。セッション前のリファレンスを --since として渡すか、自身の編集リストから作業します。

scope は kind=code と kind=doc-already-touched を区別します。2番目のリストは重要です。それらのドキュメントは変更と同時に更新されたものであり、存在の有無ではなく、正確性をチェックする必要があります。

2. 変更が実際に影響するドキュメントを見つける

~/.claude/skills/docs-update/scripts/docscheck.py impacted

変更された各コードファイルについて、その正確なパスを名前として参照しているドキュメントを報告します。変更したファイルを引用しているドキュメントは、もはや真実でなくなっている可能性が最も高く、すべてのドキュメントを読み直すよりもはるかに優れた出発点となります。

これは意図的に完全パスのみを照合します。親ディレクトリも照合するのはより寛大に聞こえますが、実際には無価値です。モノレポで apps/web-nuxt/ が62のドキュメント中55に出現する場合、すべてがすべてに影響することになります。

result=none は正常であり、「何もすることがない」という意味ではありません。つまり、どのドキュメントもこれらのパスを名前として参照していないため、代わりに主題で判断する必要があるということです。それがステップ3です。

3. リポジトリ独自のドキュメント分類を使用して、主題で判断する

impacted はパスの引用を見つけます。ファイル名を挙げずに、変更した動作を説明するドキュメントを見つけることはできません。したがって、変更内容を読み、それが何を意味するのかを問いかけてください。

まず、このリポジトリがドキュメントをどのように整理しているか(brain/、docs/、CONTEXT.md、ADRディレクトリなど)を把握し、新しい構造をでっち上げるのではなく、その構造に従ってください。プロジェクトスキルがドキュメントをカバーしている場合(.claude/skills/*)、それがこのスキルよりも優先されます。

一般的なマッピングは以下の通りです。

変更内容該当ドキュメント
新しいユーザー向け機能機能ドキュメント + そのインデックス/カタログ行、READMEの機能リスト
既存の動作の変更その機能のドキュメント
スキーマ、認証、ビルド、ストレージ、リアルタイム、プロバイダー対応するアーキテクチャドキュメント
明白でない、またはレビューで表面化した判断決定事項/ADRログ。その理由と共に
新しい用語用語集
新規または変更された環境変数、コマンド、スクリプトREADME およびセットアップ/運用ドキュメント
新しい依存関係スタック/技術リストドキュメント(これらは手動で管理され、常に忘れられがちです。マニフェストとの差分を確認してください)
ユーザー向けの変更CHANGELOG [Unreleased]

二つの落とし穴があります。

  • 散文に埋め込まれた派生的な事実。「現在のバージョンは 2.16.2 です」やテクノロジースタックを列挙したドキュメントは、他の何かが移動したもののコピーです。散文を信頼するのではなく、真実のソース(マニフェスト、バージョンファイル)の差分を確認してください。
  • 歴史的または将来的な目的を持つドキュメント。 CHANGELOG エントリ、TODO、および ROADMAP は、削除されたか、または一度も書かれなかったファイルを引用します。これらを「修正」しないでください。

4. 引用がまだ解決可能か確認する

~/.claude/skills/docs-update/scripts/docscheck.py links

二種類あります。

  • kind=link - 対象が存在しない相対マークダウンリンク。常に実際の問題です。
  • kind=source - 存在しないインラインコードパス。通常、ファイルが移動または名前変更されたことが原因です。説明文書は除外され、ブレース展開、<プレースホルダー>、グロブ、および gitignored なビルド出力はフィルタリングされるため、残ったものは調査する価値があります。

スコープ内のものを修正してください。リポジトリ内の他の場所で見つかった問題は報告する価値がありますが、黙ってジョブをフルスイープに拡大しないでください。

5. 執筆

書いたものすべてに unslop を適用する

追加または変更したすべての行に unslop スキルを適用してください。 ドキュメントは、スロップが最も害を及ぼす場所です。何かを学ぼうとしている人に読まれ、新参者が最初に触れるものであり、チャットメッセージとは異なり、残り続けます。

特にドキュメントに現れる特徴は以下の通りです。

  • 前置きの枕詞。 「このドキュメントは~の概要を提供します...」「このセクションでは~を探求します...」。これらを削除し、事実から始めてください。
  • コードを散文で言い換える。 「getUser 関数はユーザーを取得します。」文が識別子を英語に展開しただけなら、それは無価値です。コードが言えない部分、つまり制約、理由、注意点を書いてください。
  • 空虚な強調表現:包括的、堅牢、シームレス、強力、柔軟、シンプルに、簡単に、ただ。「シンプルに X を実行する」は、X がシンプルでない場合には常に誤りです。
  • 答えが確定している場合の曖昧な表現:「一般的に」「通常」「通常は」。するか、名前を付けられる何かに依存するかのどちらかです。名前を付けてください。
  • 注意書きのパディング:「留意すべき重要な点は」「注意してください」「心に留めておいてください」。その後の文が内容です。それをそのまま書いてください。
  • ページ上の内容を要約する要約セクション。 ドキュメントに要約が必要なら、それは長すぎます。
  • 名前を繰り返す説明列。 テーブル行 | --verbose | 詳細な出力を有効にします | は一行を費やして何も教えません。
  • 3つのルールの埋め草 - 最初の2つと異なるからではなく、リズムのために追加された3番目の例。

ファイルに合わせる、スロップに合わせない

ファイルの既存のスタイルに合わせてください。時制、密度、エントリが一行なのか散文なのか。あるセクションが突然異なる文体で書かれているドキュメントは、一貫して簡潔なドキュメントよりも悪質です。

これらの二つのルールは、既存のドキュメント自体がずさんな場合にのみ衝突します。その場合は、その構造と密度に合わせ、パディングは合わせず、それ以外で触れていないセクションは書き換えないでください。 ドキュメント更新でファイル全体のスタイルも変更してしまうと、レビュー不可能な差分となり、実際に重要な変更が埋もれてしまいます。ドキュメント全体に散文のパスが必要な場合は、その旨を伝え、それを独立したジョブとして提案してください。

残りのルール

  • コードを言い換えるのではなく、ソースパスにリンクしてください。そうすれば、次の変更がリンクを壊し、静かに散文と矛盾する代わりになります。
  • 現在形で、今真実であることを記述してください。ドキュメントは変更履歴ではありません。「私たちはXをYに置き換えました」はCHANGELOGに、「システムはYを使用しています」がドキュメントに属します。
  • ドキュメントに最終更新マーカーがある場合は、それを更新してください。

6. 報告

  • 使用したスコープと、その理由
  • 更新したドキュメントと、それぞれで変更した内容
  • 確認したが、意図的に変更しなかったドキュメント
  • スコープ外で見つかった壊れたリンクや引用(リストアップするが修正はしない)
  • ユーザーなしでは判断できなかった事項

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Arzaroth/skills

Work one round of review comments on a pull/merge request: fetch every unresolved thread, verify each finding against the current code, fix what is still valid, reply with a justification to what is not, then commit, push and answer every thread. Use when a PR has review comments to deal with - from an AI reviewer (CodeRabbit and friends) or a human - and when asked to 'address the review', 'fix the review comments', 'respond to CodeRabbit', or 'handle the PR feedback'. The babysit-pr skill calls this for each of its rounds.

Arzaroth/skills

Fill a ticket's technical post-mortem - write the whole root cause + fix into one tracker field (no restating the initial symptom), then point the other analysis fields at it ("see dev notes"). Tracker, fields, language and headings come from the config. Invoke for a given ticket or the fix in progress. Triggers - "analyse des causes", "analyse technique", "root cause", "cause racine", "solution apportée", "/analyse-causes".

Arzaroth/skills

Open a pull/merge request and stay with it until it merges: trigger the reviewers, watch for their verdict, work each round of findings, push, re-trigger, and merge when it is clean. Handles AI reviewers (CodeRabbit) and human maintainers, on GitHub (gh) and GitLab (glab). Use when asked to 'open a PR and babysit it', 'ship this and see it through', 'get this PR merged', 'watch the PR until it lands', or '/babysit-pr'. Also the review-and-merge half of ship-feature-pipeline.

Arzaroth/skills

Cut a release on GitHub: update the changelog, bump the version (preferring the repo's own release task or script over a manual edit), tag, push, then watch the release workflow until the GitHub Release exists. Use when asked to 'cut a release', 'release version X', 'ship a new version', 'bump the version and tag', 'publish a release', or '/gh-release'. For repos where a tag push triggers a GitHub Actions workflow that creates the release.

関連スキル