| name | review-post |
| description | ブログ記事(_posts/*.mdx)の執筆スタイルレビューと校正を行うスキル。文体・トーン、記事構成、可読性、textlintの4観点でサブエージェントを並列起動してレビューし、統合結果を表示してからユーザーの確認を経て修正を適用する。「記事をレビューして」「ポストをチェック」「文体確認」「記事の校正」「公開前チェック」「レビュー」「推敲」「文章チェック」「記事のスタイルチェック」などのリクエストで使用する。記事を書き終えた後や公開前の品質チェックにも積極的に活用すること。_posts/ディレクトリ内のMDXファイルが対象。
|
ブログ記事レビュー
筆者の執筆スタイルに基づいてブログ記事をレビューし、修正を適用するスキル。
文体・トーン、記事構成、可読性、textlintの4つの観点で並列にサブエージェントを起動してレビューし、結果を統合して表示した後にユーザーの確認を経て修正を適用する。
対象ファイルの特定
ユーザーがファイルパスを指定した場合はそのファイルを対象とする。指定がない場合:
git diff --name-only および git status で最近変更された _posts/*.mdx ファイルを探す
- 複数見つかった場合はユーザーに選択を求める
- 見つからない場合はユーザーにパスを尋ねる
ワークフロー概要
3つのフェーズで実行する:
- 並列レビュー: 4つのサブエージェントを同時起動して各観点からレビュー
- 結果の統合・表示: 全サブエージェントの結果を統合してユーザーに提示
- 修正の適用: ユーザーの確認を得てから記事を修正
Phase 1: 並列レビュー
Agent toolを使って4つのサブエージェントを1回のメッセージで同時に起動する。
全サブエージェント共通:
subagent_type: general-purpose
- リサーチ専任(ファイル編集は行わない旨をプロンプトに明記する)
- スタイルガイドのパス:
{プロジェクトルート}/.claude/skills/review-post/references/writing-style-guide.md
サブエージェント1: 文体・トーンチェッカー
以下のプロンプトでAgent toolを呼び出す(パスは実際の絶対パスに置き換える):
以下のブログ記事を「文体・トーン」の観点からレビューしてください。
リサーチのみ行い、ファイルの編集は絶対に行わないでください。
対象記事: {対象ファイルの絶対パス}
スタイルガイド: {スタイルガイドの絶対パス}
手順:
1. スタイルガイドの「文体・トーン」セクションを読む
2. 対象記事を読む
3. 以下の観点でスタイルへの準拠をチェックする
チェック観点:
- 「です・ます」調の一貫性(「だ・である」調が混在していないか)
- 一人称の使い方(「私」を基本とし、「自分」も文脈に応じて許容。ただし不自然な混在がないか)
- 主張の仕方(控えめな表現が使われているか、不必要な断定がないか)
- 口語的ニュアンスの適切さ(全体のトーンを崩さない範囲で使われているか)
- 率直な自己開示(弱みや課題を素直に書くスタイルが維持されているか)
- 語尾の単調さ(同じ語尾が3回以上連続していないか)
結果は以下の形式のみで報告してください(余計な見出しやセクション名を追加しないこと):
### 指摘事項
(指摘がない場合は「指摘事項なし」と記載)
1. **[重要度: 高/中/低]** (行XX付近)
- 現在: 「該当テキスト」
- 提案: 「修正案」
- 理由: なぜ修正が必要か
### 総評
[1-2文で全体の評価をまとめる]
サブエージェント2: 記事構成チェッカー
以下のブログ記事を「記事構成」の観点からレビューしてください。
リサーチのみ行い、ファイルの編集は絶対に行わないでください。
対象記事: {対象ファイルの絶対パス}
スタイルガイド: {スタイルガイドの絶対パス}
手順:
1. スタイルガイドの「記事構成パターン」セクションを読む
2. 対象記事を読む
3. 記事がどの構成パターンに該当するか判定する
4. そのパターンに必要な構成要素が含まれているかチェックする
チェック観点:
- 記事タイプの判定(技術移行、ツール作成、学習記録、問題解決、アップデート報告、振り返りのいずれか)
- 導入部分での動機・背景の説明が十分か(「なぜやったか」は「何をやったか」と同等以上に重要)
- 記事タイプに応じた構成要素が含まれているか
- 見出し階層が適切か(h2 → h3の順。h1は不使用)
- 過去の関連記事への参照があるべきか
- フロントマターの必須項目(title, description, publishedTime)が揃っているか
注意: まとめセクションの展望の有無や厚さは指摘しないこと。展望は筆者が自然に書くものであり、レビューで強制すべきものではない。
結果は以下の形式のみで報告してください(余計な見出しやセクション名を追加しないこと):
### 判定した記事タイプ
[タイプ名]: [判定理由を1文で]
### 指摘事項
(指摘がない場合は「指摘事項なし」と記載)
1. **[重要度: 高/中/低]** (該当セクション)
- 現状: ...
- 提案: ...
- 理由: ...
### 総評
[1-2文で全体の評価をまとめる]
サブエージェント3: 可読性チェッカー
以下のブログ記事を「可読性」の観点からレビューしてください。
リサーチのみ行い、ファイルの編集は絶対に行わないでください。
対象記事: {対象ファイルの絶対パス}
このチェッカーの役割は「読みやすさ」の改善提案です。誤字脱字や表記統一、技術用語のスペルチェックはtextlintが担当するため、ここでは扱いません。
チェック観点:
- 一文の長さ(目安として80文字以上の文は分割を検討)
- 同一語・同一表現の近接繰り返し(近い位置で同じ単語やフレーズが繰り返されていないか)
- 冗長な表現(より簡潔に書ける箇所がないか)
- 読点の過不足(読点がなく読みにくい箇所、または読点が多すぎる箇所)
- 主語と述語のねじれ(文が長くなることで主述が対応しなくなっていないか)
- 助詞の不自然な使用(「に」「を」「が」などの使い方が不自然でないか)
- 同じ語尾の3回以上の連続(段落内で語尾のバリエーションが乏しくないか)
- 文構造の複雑さ(入れ子が深い文や、修飾関係が曖昧な文がないか)
結果は以下の形式のみで報告してください(余計な見出しやセクション名を追加しないこと):
### 指摘事項
(指摘がない場合は「指摘事項なし」と記載)
1. **[重要度: 高/中/低]** (行XX付近)
- 現在: 「該当テキスト」
- 提案: 「修正案」
- 理由: ...
### 総評
[1-2文で全体の評価をまとめる]
サブエージェント4: textlintチェッカー
以下のブログ記事に対してtextlint MCPを使用してlintを実行し、ルール違反を報告してください。
リサーチのみ行い、ファイルの編集は絶対に行わないでください。
対象記事: {対象ファイルの絶対パス}
手順:
1. ToolSearchツールで「textlint」を検索してtextlint MCPツールをロードする
2. ロードされた mcp__textlint__lintFile ツールで対象記事をlintする
3. もしToolSearchでtextlintツールが見つからない場合は、その旨を報告して終了する
4. 検出されたルール違反を整理して報告する
結果は以下の形式のみで報告してください(余計な見出しやセクション名を追加しないこと):
### 検出されたルール違反
(違反がない場合は「ルール違反なし」と記載)
(ツールが利用不可の場合は「textlint MCPが利用できませんでした」と記載)
1. **[ルール名]** (行XX, 列XX)
- メッセージ: [textlintのエラーメッセージ]
- 該当テキスト: 「...」
- 修正案: 「...」(自動修正提案がある場合)
### 総評
[検出された違反の概要を1-2文でまとめる]
Phase 2: レビュー結果の統合・表示
全サブエージェントの結果が揃ったら、重複排除を行った上で以下の形式でユーザーに表示する。
重複排除ルール
複数の観点から同じ行・同じテキストに対して指摘が出た場合(例: 同一表現の繰り返しが文体・トーンと可読性の両方で指摘される場合):
- 1件として統合する
- 重要度は最も高いものを採用する
- 最も詳細な説明をしている観点の内容を残す
- サマリーの件数は重複排除後の正味件数で表示する
# 記事レビュー結果: {記事タイトル}
## 1. 文体・トーン
{サブエージェント1の結果}
## 2. 記事構成
{サブエージェント2の結果}
## 3. 可読性
{サブエージェント3の結果}
## 4. textlint
{サブエージェント4の結果}
---
## サマリー
- 指摘事項合計: X件(高: X件, 中: X件, 低: X件)
結果を表示したら、修正方針についてユーザーに確認する:
- すべての指摘を修正する
- 高・中の重要度のみ修正する
- 個別に修正する指摘を選択する
- 修正をスキップする
Phase 3: 修正の適用
ユーザーが修正を承認したら:
- 承認された指摘事項を重要度順(高→中→低)に整理する
- Edit toolを使って記事ファイルを修正する
- 修正完了後に
pnpm lint:post を実行してtextlintが通ることを確認する
- 修正の差分サマリーをユーザーに表示する
修正時の注意
- フロントマターの
modifiedTime は更新しない(公開時に別途設定するため)
- 筆者の意図が明確な表現は、スタイルに厳密に合致しなくてもその意図を尊重する
- 口語的な表現やくだけた言い回しは筆者の個性として許容する(過度でない限り)
- textlintの自動修正が利用可能な場合は優先的に適用する
- 技術的な内容の正確性が疑わしい場合は修正せず、ユーザーに確認を促す