ドキュメント&知識ベース · daymade/claude-code-skills

capture-screen

macOS上でのプログラムによるスクリーンショット撮影。SwiftのCGWindowListCopyWindowInfoによるウィンドウIDの検索、AppleScriptを介したアプリケーションウィンドウの制御(ズーム、スクロール、選択)、screencaptureによるキャプチャを実行します。スクリーンショットの自動化、ドキュメント作成のためのアプリケーションウィンドウの撮影、またはマルチショットのビジュアルワークフローの構築時に使用します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ファイル書き込みDual-pass Audit
Author daymadeGitHub daymade/claude-code-skills ↗Stars 1385License MIT(仓库根 LICENSE,Copyright (c) 2025 daymade;GitHub API spdx MIT)Commit d5c4678cb5
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

macOSネイティブツールのみで完結する3ステップのワークフロー:Swift + CoreGraphicsでウィンドウを列挙してWIDを取得 → AppleScript/osascriptでビューを制御 → screencapture -l <WID> で高精度にキャプチャ。

daymade-macos/capture-screen/SKILL.md
1. Find Window → Swift CGWindowListCopyWindowInfo → get numeric Window ID 2. Control View → AppleScript (osascript) → zoom, scroll, select 3. Capture → screencapture -l <WID> → PNG/JPEG output
独自のスクリーンショットエンジンは持たず、全工程でmacOSのシステム機能を再利用:screencaptureはシステム標準の画面キャプチャCLI、osascriptは標準のAppleScriptインタプリタであり、Swiftスクリプトはウィンドウ列挙のみを担当します。

ウィンドウの検索にはSwiftスクリプト get_window_id.swift からCoreGraphicsのCGWindowListCopyWindowInfo(.optionOnScreenOnly)を呼び出し、アプリ名/タイトルキーワードでフィルタリングして WID=… | App=… | Title=… を出力。

daymade-macos/capture-screen/scripts/get_window_id.swift
CGWindowListCopyWindowInfo( .optionOnScreenOnly, kCGNullWindowID ) as? [[String: Any]] else {
SKILL.mdでは、これがmacOS上で唯一信頼できる手法であると明記されています(System Eventsの `id of window` はscreencaptureが要求するCGWindowIDではなく、PyObjC Quartzは未インストールで失敗することが多いため。『Failed Approaches (DO NOT USE)』表を参照)。

ビュー制御層:Excelは完全なAppleScriptディクショナリに対応(アクティブ化、ズーム zoom、行/列のスクロール、範囲 range の選択、シート切り替え、ファイルオープン)。任意のアプリは基本的な activate / System Events AXRaise を利用し、制限のあるアプリはキーボードシミュレーションにフォールバック。

daymade-macos/capture-screen/SKILL.md
osascript -e 'tell application "Microsoft Excel" set scroll row of active window to 45 end tell'
ドキュメントの「サポート対象アプリケーション」表で制御の深度を区別:Excelが最も充実、Chromeは基本機能、その他の汎用アプリは activate + screencapture で確実に動作。AppleScriptがハングする可能性があるため、常にtimeoutでラップすることを推奨。

キャプチャ層:screencapture -l <WID> で指定ウィンドウを正確に撮影(-x で消音、-t jpg、-T で遅延、-R で領域指定)。Retina 2x出力はsipsで1xに縮小。

daymade-macos/capture-screen/SKILL.md
# Silent capture (no camera shutter sound) screencapture -x -l <WID> output.png
物理的ワークフローの例:長い表を複数回スクロールして分割撮影(各スクロール後に sleep 1 を挟んでから撮影。CGWindowIDは無効化されるため、アプリ再起動やウィンドウ再オープン時にはWIDの再取得が必要)。

権限トラブルシューティングの3ステップテンプレート:Screen Recording権限は必須。ヘルパーバイナリ(swift/python/terminal)とパッケージ化された.appではTCC認証アイデンティティが異なるため、スクリプトは --permission-hint screen/microphone を備え診断手順を出力。

daymade-macos/capture-screen/SKILL.md
`swift scripts/get_window_id.swift` reads on-screen windows via CoreGraphics, so it needs Screen Recording permission on macOS.
get_window_id.swift 内の printPermissionContextHint() はinvoker/runtime/scriptの候補アイデンティティを列挙し、「In most cases the entry shown in TCC is the helper process」と提示。実際の権限トラブルシューティングの経験を再利用可能なトリアージとしてテンプレート化しています。

失敗ルートの文書化(DO NOT USE):System Events の `id of window` (-1728)、Python PyObjC Quartz (ModuleNotFoundError)、osascript の `window id` (形式不一致)——実行モデルが同じ失敗を繰り返すのを防ぎます。

daymade-macos/capture-screen/SKILL.md
| `System Events` → `id of window` | Error -1728 | System Events cannot access window IDs in the format screencapture needs |
このような「検証済みの実行不可能」リストはこのskillの特徴です。試行錯誤のコストを前もって排除し、モデルが確実に成功する経路を直接選択できるようにします。

2コア機能

01画面上のウィンドウを全列挙またはキーワードでフィルタリングし、CGWindowIDを出力(WID=12345 | App=… | Title=…)
02AppleScriptによるExcelビューの精密制御:ズーム / 行・列のスクロール / 範囲選択 / シート切り替え / ファイルオープン
03任意アプリの activate / インデックス指定によるAXRaise最前面表示(System Events)
04WID指定によるウィンドウキャプチャ(PNG/JPEG、消音、遅延、領域キャプチャ)
05Retina 2x→1x 縮小(sips)とキャプチャ画像のピクセル検証(ls/file)
06マルチセグメント撮影ワークフロー:長い表や複数シートのスクロールページネーション撮影(sleep同期 + WID再取得の徹底)
07権限トリアージ:--permission-hint screen|microphone により「設定」のパスとアイデンティティ確認チェックリストを出力

3外部依存関係

KindDependency / Endpoint
cliswift(运行 get_window_id.swift 或 -e 内联执行 CoreGraphics 枚举)
cliscreencapture(macOS 系统自带,窗口/区域截图)
cliosascript / System Events(AppleScript 控制 app 窗口)
clisips / ls / file / timeout(可选缩放与校验、超时保护)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: swift scripts/get_window_id.swift(または swift -e によるインラインのウィンドウ列挙)
  • 本地工作目录: ファイルの読み書きと成果物出力: スクリーンショット出力ファイル(output.png/output.jpg など、呼び出し元が指定したパス)
監査ノート: 純粋なmacOSローカルツールチェーン:OS標準の swift/screencapture/osascript/sips を実行し、外部ネットワーク通信、認証情報の読み取り、サードパーティ製依存関係は一切なく、ローカルに画像ファイルを出力します。注意点:Screen Recordingのプライバシー権限付与が必要です。画面キャプチャ内容およびウィンドウタイトルは機微なローカルデータ(外部送信面なし)に該当し、System Eventsのキーボードシミュレーションは任意のアプリを操作可能ですが、すべてホストのローカル権限境界内で完結します。

5二重目の独立検証

  • [ok] Swift 脚本只做窗口枚举(无隐藏行为) — get_window_id.swift 逻辑 = 参数解析 + CGWindowListCopyWindowInfo(.optionOnScreenOnly) + 过滤打印 + 权限提示文本;无文件写/网络/进程执行调用。
  • [ok] 三步工作流与 description 声明一致 — Find Window/Control View/Capture 三步概览代码块、Step1-3 正文、Quick Start 命令逐字对应;Excel 控制命令含 zoom/scroll/select/sheet。
  • [ok] screencapture -l 兼容 CGWindowID 的说法有失败表佐证 — Failed Approaches 表记录 System Events id of window 报 -1728 等三个失败路径,反向支持『Swift 枚举 + screencapture -l』为主路径。
  • [ok] 无网络/无凭证(安全结论基础) — 全目录 token 扫描零网络/凭证命中;依赖全部是 macOS 系统自带 CLI。
  • [ok] TCC/Screen Recording 依赖表述准确 — SKILL.md Permission Troubleshooting 与脚本 --permission-hint 均明示 Screen Recording 为前置条件,并处理 helper binary 身份问题。
  • [ok] 元数据(commit/license/stars) — 本地 HEAD == pin d5c4678cb5d4fd6acc9c922690df035dbd33d247;GitHub API:MIT、stars 1385(2026-09-09 实采)、pushed_at 2026-09-09T12:33:29Z。

6結論

  • 依存関係ゼロで即座に利用可能:全工程でmacOS標準ツールを使用し、pip/npm/コンパイル手順が不要。コマンドをコピーするだけで実行可能。
  • 失敗知見のドキュメント化:Failed Approaches表と権限トリアージテンプレートにより、実行モデルが無駄な試行錯誤を回避。
  • Excelシナリオへの高度な最適化:ズーム/スクロール/選択/シート切り替えを網羅したマルチセグメント撮影例があり、レポートや財務モデルのドキュメント自動化に直結。
  • 権限問題への体系的アプローチ:ヘルパーバイナリと.appにおけるTCCアイデンティティの違いを識別・テンプレート化。
  • 最適な用途: macOS上でプログラムによるスクリーンショットが必要なシーンに最適:Excelの財務モデルやレポートを分割撮影してドキュメント化、Chrome等のアプリウィンドウのキャプチャ、マルチショットのビジュアルワークフロー構築、全画面ではなくウィンドウ単位で正確に撮影する必要がある自動化。製品ドキュメント作成、財務モデルのアーカイブ、UI検証を行う開発者やアナリストに最適です。
    不向きな用途: macOS以外のプラットフォームには不向き。ウィンドウ制御が不要で単に全画面や指定領域を手軽に撮影したいだけの場合(本skillを使わず標準のscreencaptureで十分)。クロスプラットフォームなキャプチャソリューションや、アプリ内のピクセルレベルのコンテンツ(パスワードマネージャーのマスク表示など)が必要なケースには不向き。Screen Recording権限を付与できない制限環境には不向き。
    Install Agent-Ready
    ① Verified Mirror 2026-09-09
    Option A · Direct DownloadDownload capture-screen.tar.gz
    sha256: fb587255b81bdc81…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit d5c4678cb5.