fp-review について
fpコマンドラインでコミットをイシューに関連付け、コード変更をレビューするスキルです。イシューへのコメント、デスクトップでの差分レビュー、変更を説明するストーリーに対応します。
主な機能
- 01コミットの確認とイシューへの割り当て
- 02ファイルや行を指定したレビューコメント
- 03作業コピーとイシュー差分のレビュー
- 04変更ストーリーの作成と管理
- 05フィードバックへの重要度ラベル付け
活用シーン
- 01関連コミットのイシューへの紐付け
- 02未コミットの作業コピーのレビュー
- 03変更ファイルへの具体的なフィードバック
- 04差分を含むストーリーで変更を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fiberplane/ claude-code-plugins --skill fp-reviewインストール後、Claude Code で/fp-reviewを入力して読み込まれたか確認します。
詳細
FP Review Skill
コミットが適切にイシューに紐付けられていることを確認し、レビューのフィードバックを提供します。
前提条件
fp コマンドを使用する前に、セットアップを確認してください。
# Check if fp is installed
fp --version
fp がインストールされていない場合、ユーザーに次のように伝えます。
fpCLI がインストールされていません。次のコマンドでインストールしてください。curl -fsSL https://setup.fp.dev/install.sh | sh -s
# Check if project is initialized
fp tree
プロジェクトが初期化されていない場合、初期化するかどうかをユーザーに尋ねます。
このプロジェクトは fp で初期化されていません。初期化しますか?
はいの場合:
fp init
主な目的
- コミットが適切なイシューに割り当てられていることを確認する
- イシューにレビューコメントを残す
- デスクトップアプリでインタラクティブなレビューを開く
- コード変更を順を追って説明するナラティブ形式のドキュメントであるストーリーを作成する
コミットをイシューに割り当てる
現在の割り当てを確認する
fp issue files <PREFIX>-X
何も表示されない場合、そのイシューにはコミットが割り当てられていません。
関連するコミットを見つける
jj log --limit 20 # Jujutsu
git log --oneline -20 # Git
コミットの詳細を表示する
jj show <commit-id> # Jujutsu
git show <hash> --stat # Git
コミットをイシューと照合する
次の項目を比較します。
- コミットで変更されたファイルとイシューの説明
- コミットメッセージの内容とイシューのタイトル
- コード変更とイシューの要件
コミットを割り当てる
コミットを割り当てる前に、ユーザーに確認してください。 作業が終わるまでコミットせずに進めたいユーザーや、コミットをイシューに紐付けたくないユーザーもいます。
AskUserTool を使用して、次のように尋ねます。
<PREFIX>-Xに関連していると思われる次のコミットが見つかりました。
abc123- ユーザーモデルを追加def456- 認証ミドルウェアを実装これらをイシューに割り当てますか?(コミットしていない変更をレビューする場合は、作業コピーに対して
fp reviewを実行できます。)
確認が取れた場合:
# Single commit
fp issue assign <PREFIX>-X --rev abc123
# Multiple commits
fp issue assign <PREFIX>-X --rev abc123,def456,ghi789
# Current HEAD
fp issue assign <PREFIX>-X
# Reset and reassign
fp issue assign <PREFIX>-X --reset
fp issue assign <PREFIX>-X --rev abc123,def456
割り当てを確認する
fp issue files <PREFIX>-X
fp issue diff <PREFIX>-X --stat
レビューコメントを残す
レビューのフィードバックには fp comment を使用します。具体的に伝えるため、ファイルと行を指定してください。
ファイルに関するコメント
fp comment <PREFIX>-X "**src/utils/parser.ts**: Consider extracting the validation logic into a separate function for testability."
fp comment <PREFIX>-X "**src/api/handler.ts:45-60**: This error handling could swallow important exceptions. Suggest re-throwing after logging."
重要度のプレフィックス
重要度を示すプレフィックスを使用します。
fp comment <PREFIX>-X "[blocker] **src/auth.ts**: Missing input sanitization creates SQL injection risk."
fp comment <PREFIX>-X "[suggestion] **src/utils.ts:23**: Could use optional chaining here for cleaner code."
fp comment <PREFIX>-X "[nit] **README.md**: Typo in setup instructions."
[blocker]- マージ前に必ず修正が必要です[suggestion]- 改善を推奨します[nit]- 軽微な問題、または表記上の問題です
全般的なコメント
fp comment <PREFIX>-X "Overall looks good. Main concern is the error handling in the API layer - see specific comments above."
インタラクティブレビュー(デスクトップアプリ)
fp review は Fiberplane デスクトップアプリを開き、差分をインタラクティブにレビューできます。
デスクトップアプリが必要です。 インストールされていない場合:https://setup.fp.dev/desktop/latest/
作業コピーをレビューする(コミット不要)
ユーザーがまだコミットしていない場合(または作業中はコミットしないことを希望する場合):
fp review
作業ディレクトリ内の未コミットの変更がすべて表示されます。コミットの割り当ては必要ありません。
イシュー別にレビューする
fp review <PREFIX>-X
注: イシュー別のレビューを行うには、イシューにコミットが割り当てられている必要があります。コミットが割り当てられていない場合は、次のいずれかを行います。
- 先に
fp issue assignでコミットを割り当てる、または - 代わりに
fp reviewを使用して作業コピーをレビューする
ストーリーと一緒にレビューする
fp review <PREFIX>-X --with-story
差分の横にストーリーパネルを表示してレビューを開きます。そのイシューのストーリーが作成されている必要があります。
その他のレビュー対象
fp review git:abc123 # Specific git commit
fp review jj:abc123 # Specific jj revision
fp review git:abc123..def456 # Range of commits
レビューワークフロー
ステップ 1:割り当てを確認する
fp issue files <PREFIX>-X
ステップ 2:未割り当てのコミットを割り当てる
jj log --limit 20
fp issue assign <PREFIX>-X --rev abc,def
ステップ 3:差分を表示する
fp issue diff <PREFIX>-X --stat # Overview
fp issue diff <PREFIX>-X # Full diff
fp review <PREFIX>-X # Open in desktop app
ステップ 4:コメントを残す
fp comment <PREFIX>-X "**file.ts:line**: feedback"
ストーリー
ストーリーは、コード変更を順を追ってレビュー担当者に説明するナラティブ形式のドキュメントです。Markdown の文章に、埋め込みの差分、ファイル抜粋、チャットの記録を組み合わせます。
experimental_story 機能フラグが必要です。
fp feature enable experimental_story
ストーリーを作成する
# From a file
fp story create <PREFIX>-X --file story.md
# From stdin
cat story.md | fp story create <PREFIX>-X
Markdown 内で最初に現れる ## 見出しがストーリーのタイトルになります。
ストーリーの形式
ストーリーは、ディレクティブを使用してコードの成果物を埋め込む Markdown ドキュメントです。
差分ディレクティブ
イシューに割り当てられたコミットによるファイルの変更を表示します。
## Moved validation to a shared module
The old approach duplicated validation in each handler.
:::diff{file="src/validation.ts"}
Extracted from handler.ts and api.ts into a single module.
:::
file(必須):変更されたファイルへの相対パス:::diffと:::の間のテキストは注釈です。1~2 文に収めてください
ファイルディレクティブ
ファイルの内容(またはその一部)を表示します。
:::file{path="src/config.ts" lines="10-25"}
The new defaults that drive the behavior change.
:::
path(必須):ファイルへの相対パスlines(任意):行範囲。例:"10-25"
チャット指示
AI コーディングセッションの抜粋を埋め込みます。
:::chat{source="claude" session="/path/to/session.jsonl" messages="msg1,msg2"}
The key design discussion that led to this approach.
:::
source:"claude"、"pi"、または"opencode"session:セッションファイルのフルパスmessages:コンマ区切りのメッセージ ID
作成ガイドライン
- 見出しは過去形の動詞にします — 何をすべきかではなく、何を行ったかを説明します(例:「検証を共有モジュールに移動しました」)
- ユーザーの問題から始めます — 冒頭の文章で、変更が必要な理由を説明します
- 差分を示してから説明します —
:::diffディレクティブを先頭に置き、その後に注釈を続けます - 注釈は1~2文にします — 詳細な説明ではなく、簡潔な背景情報にします
UI サポート
現在、デスクトップアプリで完全にレンダリングされるのは :::diff のみです。:::file は動作しますが、collapsed 属性は無視されます。:::diff の hunks 属性も無視されます。
ストーリーの管理
fp story list # List all stories in the project
fp story get <story-id> # Get story details (supports ID prefix)
fp story get <PREFIX>-X # Get story by issue ID
fp story delete <story-id> # Delete a story (supports ID prefix)
fp story delete <story-id> --yes # Skip confirmation
課題ごとにストーリーを1つ作成します。課題に対して新しいストーリーを作成すると、以前のストーリーが置き換えられます。
クイックリファレンス
コマンド
# Check assignments
fp issue files <PREFIX>-X
# Assign commits
fp issue assign <PREFIX>-X --rev <commits>
# View changes
fp issue diff <PREFIX>-X --stat
fp issue diff <PREFIX>-X
# Leave comments
fp comment <PREFIX>-X "message"
# Interactive review (desktop app)
fp review <PREFIX>-X
# Stories
fp story create <PREFIX>-X --file story.md
fp story list
fp story get <PREFIX>-X
fp story delete <story-id>
fp review <PREFIX>-X --with-story
コメント形式
**filepath**: general comment about file
**filepath:line**: comment about specific line
**filepath:start-end**: comment about line range
[severity] **filepath**: prefixed comment
重大度レベル
[blocker]- 必ず修正してください[suggestion]- 検討してください[nit]- 軽微な問題