소스 정보
- 저장소
- team-mirai/mirai-gikai
- 최근 소스 활동
- 2026년 4월 7일 05:40
- 감지된 SKILL.md 언어
- 일본어
- 스타
- 214
- 포크
- 45
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/team-mirai/mirai-gikai --skill pr-screenshot명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | pr-screenshot |
| description | UI変更を含むPRで、agent-browserでスクリーンショットを撮影し、R2にアップロードしてPR本文に貼り付ける |
UI変更を含むPRのスクリーンショットを自動で撮影・アップロード・PR本文更新するスキル。
/pr-screenshot
/pr-screenshot "ホバー状態も撮って"
引数なしで実行すると、変更差分からUI変更対象ページを自動判断する。
R2の接続情報はローカル設定ファイル .claude/skills/pr-screenshot/config.local.json から読み取る(gitignore対象)。
{
"r2AccountId": "your-cloudflare-account-id",
"r2Bucket": "your-bucket-name",
"r2PublicUrl": "https://pub-xxx.r2.dev"
}
初回セットアップ: このファイルが存在しない場合、スキル実行時にユーザーに値を聞いて作成する。
SCREENSHOT_DIR=/tmp/pr-screenshots
現在のブランチとPR番号を特定する:
git branch --show-current
gh pr list --head "$(git branch --show-current)" --json number --jq '.[0].number'
git diff --name-only develop...HEAD
変更されたファイルパスから、影響を受けるUI画面を推定する:
推定ルール:
web/src/features/{feature}/ → その feature に対応するページweb/src/app/(main)/bills/ → 議案詳細ページ (/bills/{id})web/src/app/(main)/page.tsx → トップページ (/)web/src/app/(main)/kokkai/ → 国会会期ページweb/src/components/ → 影響範囲が広い。トップページ + 議案詳細を撮るadmin/src/features/bills-edit/ → admin 議案編集ページadmin/src/features/bills/ → admin 議案一覧ページweb/src/app/globals.css → トップページ + 議案詳細を撮るadmin/src/app/ 配下 → 対応する admin ページfeature名からページを特定する対応表:
bills → /bills/{id} (議案詳細)interview-config → /bills/{id}/interview (インタビューLP)interview-session → /bills/{id}/interview/chat (チャット)interview-report → /report/{reportId} (レポート)bill-difficulty → /bills/{id} (議案詳細)UIに関係しない変更のみの場合(migration, test, server-only logic等)はスキップして終了。
worktreeのパスを特定し(現在のディレクトリが worktree であることを前提)、devサーバーを起動する:
# Supabase が起動中か確認
npx supabase status 2>&1 | head -5
# シードデータを投入(新カラム等を反映)
pnpm seed
# devサーバー起動(バックグラウンド)
# web のみ: ポート3000
# admin も必要なら: ポート3001
npx dotenv -e .env -- pnpm --filter web run dev &
# admin が必要な場合:
# npx dotenv -e .env -- pnpm --filter admin run dev &
# サーバー起動待ち
sleep 8
サーバーが起動したら、使用するポートを確認する(3000が使用中なら別ポートが割り当てられる):
# 起動ログからポートを確認するか、curl で確認
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 || curl -s -o /dev/null -w "%{http_code}" http://localhost:3002
seed投入後、DBから議案IDを取得してURLを構築する:
# 公開済み議案のIDを1件取得
npx supabase db query "SELECT id::text FROM bills WHERE publish_status = 'published' LIMIT 1;"
取得したIDを使い、Step 1 で特定したページのURLリストを作る。
admin ページが対象の場合:
# admin にログインが必要(session cookie取得)
# admin は Basic Auth やメールログインが必要なので、URL直アクセスで取れない場合がある
# → admin はログインフローを agent-browser で実行してからスクショを撮る
agent-browser でモバイルビューポート (390x844) でスクリーンショットを撮る。
mkdir -p /tmp/pr-screenshots
# セッション名はPR番号を使う
SESSION="pr-${PR_NUMBER}"
# ビューポートをモバイルに設定
agent-browser --session $SESSION set viewport 390 844
# 各URLを開いてスクショ
agent-browser --session $SESSION open "$URL"
agent-browser --session $SESSION wait 3000
agent-browser --session $SESSION screenshot /tmp/pr-screenshots/screenshot-1.png
注意点:
wait 3000 で安定を待つopen がタイムアウトしたらリトライするhover してから撮るscroll down してから撮るRead ツールで画像を確認し、正しく表示されているか検証するadmin ページのログインフロー:
agent-browser --session $SESSION open "http://localhost:3001/login"
agent-browser --session $SESSION snapshot -i
# メールとパスワードを入力
agent-browser --session $SESSION fill "@eX" "admin@example.com"
agent-browser --session $SESSION fill "@eY" "admin123456"
agent-browser --session $SESSION click "@eZ" # ログインボタン
agent-browser --session $SESSION wait 3000
# ログイン後、目的のページに遷移
まず wrangler の認証状態を確認する:
npx wrangler whoami 2>&1
「Not authenticated」等のエラーが出た場合、ユーザーに ! npx wrangler login の実行を促す(ブラウザでのOAuth認証が必要なため、Claude側では実行できない)。認証が完了するまでこのステップを中断する。
config.local.json から設定を読み取ってアップロードする。
# config.local.json から値を取得(Bash の jq または Read ツールで読む)
R2_ACCOUNT_ID=$(cat .claude/skills/pr-screenshot/config.local.json | jq -r '.r2AccountId')
R2_BUCKET=$(cat .claude/skills/pr-screenshot/config.local.json | jq -r '.r2Bucket')
R2_PUBLIC_URL=$(cat .claude/skills/pr-screenshot/config.local.json | jq -r '.r2PublicUrl')
export CLOUDFLARE_ACCOUNT_ID=$R2_ACCOUNT_ID
# PR番号ベースのパスでアップロード
npx wrangler r2 object put "${R2_BUCKET}/pr-${PR_NUMBER}/screenshot-1.png" \
--file /tmp/pr-screenshots/screenshot-1.png --remote
# 複数ファイルがある場合はそれぞれアップロード
公開URLのパターン:
${R2_PUBLIC_URL}/pr-${PR_NUMBER}/screenshot-1.png
gh pr edit でPR本文を更新する。既存の本文を取得し、スクリーンショットセクションを追加/更新する。
スクリーンショットが3枚以下の場合はテーブルで横並び(33%幅):
## スクリーンショット
| 説明1 | 説明2 | 説明3 |
|:---:|:---:|:---:|
| <img src="URL1" width="250" /> | <img src="URL2" width="250" /> | <img src="URL3" width="250" /> |
4枚以上の場合は2列テーブル:
## スクリーンショット
| 説明1 | 説明2 |
|:---:|:---:|
| <img src="URL1" width="350" /> | <img src="URL2" width="350" /> |
| <img src="URL3" width="350" /> | <img src="URL4" width="350" /> |
既存のPR本文に ## スクリーンショット セクションがある場合は置換する。ない場合は ## Test plan の直前に挿入する。
# devサーバーを停止
pkill -f "next dev.*turbopack" 2>/dev/null
# 一時ファイル削除
rm -rf /tmp/pr-screenshots
agent-browser CLI がインストール済みであることnpx wrangler が認証済みであること(未認証の場合、ユーザーに ! npx wrangler login を促す)npx supabase start)unstable_cache により、seed直後でもキャッシュが効く場合がある。.next フォルダ削除 + サーバー再起動で解決するadmin@example.com / admin123456 でログインするSOC 직업 분류 기준