ワークフロー&基本ツール · vibeshotclub/vsc-skills

codex-image-to-eagle

現在のユーザーの Codex generated_images ディレクトリから Codex が生成した画像を、プロンプトをアノテーションとして保存しながら Eagle にアーカイブします。ユーザーがプロンプト、タグ、フォルダー付きで Codex 生成画像を Eagle に保存、アーカイブ、インポート、同期したい場合に使用します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author vibeshotclubGitHub vibeshotclub/vsc-skills ↗Stars 832License 仓库未提供 LICENSE 文件(find 全仓无 LICENSE*;GitHub API license 字段为 null)Commit fcee81beb6
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

コアは Node スクリプトです。Codex の生成画像ディレクトリをスキャンし、画像を選択して item_add ペイロードを組み立て、画像パスとプロンプトを Eagle ライブラリに書き込みます。

codex-image-to-eagle/SKILL.md
Archive images generated by Codex into Eagle and preserve the prompt as searchable metadata.
スクリプトは 822 行で、Node 組み込みの fs/path/http/os/child_process のみを使用し、npm 依存関係はありません。

Eagle への接続経路は 2 つあります。デフォルトではローカル HTTP ループバックエンドポイントを使用し、ローカルの Codex 設定に Eagle stdio MCP エントリがある場合は自動的に stdio(子プロセスの spawn)に切り替わります。

codex-image-to-eagle/SKILL.md
Stdio mode: the script reads the current user's `~/.codex/config.toml`, prefers `[mcp_servers.eagle]`, and can auto-detect other Eagle-like stdio MCP entries. Use `--transport http` to force the legacy HTTP path.
transportName() は、--transport が明示的に指定されていない場合、config.toml に Eagle エントリが存在するかどうかに基づいて自動判定します。

HTTP 経路は、ローカルループバックアドレスに対して POST /api/tools/call を行い、リクエストボディは {tool, params} の JSON です。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
path: '/api/tools/call',
デフォルトアドレスは定数 DEFAULT_SERVER に由来し、EAGLE_SERVER_URL で上書き可能です。

stdio 経路は child_process.spawn を使用して設定内のコマンドを起動し、ホストの process.env 全体を子プロセスに透過させます(設定内の env をさらに重畳)。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
this.child = spawn(this.config.command, this.config.args || [], {
直後の行に `env: { ...process.env, ...(this.config.env || {}) },` が記述されています。

フォルダーの解決は名前ではなく「正確な親子パス」に基づいて行われます。まずルートディレクトリを上方向へ解決し、次にルートの直下でのみ name+parentId で日付ディレクトリを検索することで、同名フォルダー間の混同を防ぎます。

codex-image-to-eagle/SKILL.md
- Folder safety: resolve folders by exact parent-child path, not by name alone.
SKILL.md では別途 5 つの番号付きルールを用いて、この規則を「Eagle MCP ツールの直接呼び出し」シナリオに適用しています。

並行処理の安全性にはローカルファイルロック(os.tmpdir 配下のパラメータハッシュ名を持つ lock ディレクトリ)を使用し、「ディレクトリ確認 → ディレクトリ作成」のクリティカルセクションを直列化します。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
const lockDir = path.join(os.tmpdir(), `codex-image-to-eagle-${hashKey(key)}.lock`);
デフォルトは 15 秒タイムアウト、150ms ポーリング間隔で、EAGLE_FOLDER_LOCK_TIMEOUT_MS / EAGLE_FOLDER_LOCK_POLL_MS で上書き可能です。

プロンプトと来歴情報は固定テキストテンプレートとして Eagle の annotation フィールドに書き込まれ、検索可能な振り返り用メタデータを構成します。

codex-image-to-eagle/scripts/archive-codex-image-to-eagle.js
'- source: Codex',
buildAnnotation() は Prompt: … / Archive: - source/- original_path/- archived_at の 3 セクションを生成します。

冪等性と重複防止:同一ルートディレクトリ下に同名の日付ディレクトリが既に複数存在する場合、新しく作成するのではなく最も古いものを再利用し、重複を報告します。

codex-image-to-eagle/SKILL.md
If more than one matching date folder already exists under the same root, reuse the oldest existing folder ID and report the duplicate instead of creating another one.
コード側では findFolderByNameAndParent() が createdAt の昇順でソートし、最初の 1 件を取得します。

2コア機能

013 択の画像選択戦略:--latest(最新の 1 枚)/ --latest-session(最新セッションディレクトリの全画像)/ --path(指定ファイル)
02プロンプトの引き継ぎ:Eagle の annotation に書き込み、--prompt / --prompt-file / --prompt-stdin をサポート
03デフォルトタグ Codex / AI生成 / Prompt、および --tags による追加をサポート(JSON 配列またはカンマ区切り)
04ローカルの生成日に応じて ルートディレクトリ/YYYY-M-D サブディレクトリにアーカイブ、--no-date-subfolders でフラットなアーカイブへのフォールバックが可能
05自動化に適した設計:folder id を固定することで folder_get/folder_create の権限確認をスキップ可能
06--dry-run プレビューと --check-connection 接続セルフチェック
07クロスプラットフォーム対応のデフォルトパス:~/.codex/generated_images(CODEX_GENERATED_IMAGES_DIR で上書き可能)

3外部依存関係

KindDependency / Endpoint
packageNode.js(无 npm 依赖,仅内置 fs/path/http/os/child_process)
networkEagle MCP Server(本地回环 HTTP)
networkEagle MCP Server(本地回环,README 侧写为 localhost 同端口)
cliEagle 桌面应用 + Eagle MCP 插件(第三方,必须运行才能写入)
clistdio MCP 代理子进程(从 ~/.codex/config.toml 解析出的 command/args,如 mcp-proxy.js)

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

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: node scripts/archive-codex-image-to-eagle.js(パッケージ同梱スクリプト、エージェントが Bash(node *) 経由で実行)
  • 网络端点: 宣言された外部ネットワークアクセス: ローカルループバックのみ: HTTP POST http://127.0.0.1:41596/api/tools/call(EAGLE_SERVER_URL で変更可能)
  • 本地工作目录: ファイルの読み書きと成果物の出力: ローカルのみ: ディレクトリ作成を直列化するために os.tmpdir() 配下に <hash>.lock ディレクトリを作成/削除するのみ。画像書き込みや元ファイルの変更は行わない
監査ノート: トリガー条件と根拠:① デフォルトパスではユーザー設定ファイル ~/.codex/config.toml を読み込み、それに基づいて子プロセスを spawn します。その際、ホストの全 process.env が子プロセスに透過されます(端末設定に依存して実行内容を決定するコード実行面が存在);② サードパーティ製ソフトウェアおよびプラグイン(Eagle + Eagle MCP プラグイン + 必要に応じて mcp-proxy.js)への強い依存があり、サードパーティ依存チェーンに該当;③ ローカル素材ライブラリへのディレクトリおよび素材の書き込みを実行。緩和要因:インターネットへの外部発信呼び出しは皆無(127.0.0.1 ループバックのみ)、元ファイルの削除や変更なし、--dry-run プレビューのサポート、ローカルロックと正確な親子パス照合によるディレクトリ操作。共有マシン環境や設定が第三者に書き換えられた場合はリスクが上昇します。

5二重目の独立検証

  • [ok] 每条外部依赖的反查 — Node 依赖:脚本 require 仅 fs/path/http/os/child_process,无 node_modules、无 package.json;Eagle 回环端点:DEFAULT_SERVER 常量 + callTool() 的 http.request 两处互证;stdio 子进程:spawn 调用点 + README 的 mcp-proxy.js 示例互证。
  • [ok] 是否有被遗漏的网络调用 — 全文件仅 import http 一处,唯一 http.request 出现在 httpRequest(),被 callTool() 以 DEFAULT_SERVER 构造的 hostname/port 使用;无 fetch/https/axios/WebSocket。
  • [ok] 凭证读取结论的反例搜索 — process.env 命中集中在配置项(图片目录/服务地址/文件夹 ID/MCP 参数/锁超时),未见读取密钥文件、keychain、.env 或打印敏感值;但 spawn 透传全量 env 确认成立,故归入橙档依据之一。
  • [ok] 文件夹安全规则 vs 代码实现 — SKILL 第 1–5 条规则均可在代码定位:fixedFolderId 短路、folder_get(getAllHierarchy/fullDetails)、findFolderByNameAndParent(name+parentId)、folder_create(parentId)、复用最旧(按 createdAt 升序取 matches[0])。
  • [ok] 默认服务地址描述一致性 — SKILL.md/脚本为 127.0.0.1:41596 并说明优先 IPv4 回环的原因;README 写 localhost:41596。二者同端口不同写法,已分别作为独立条目取证,不视为出入。
  • [ok] 功能声明与实现相符度 — description 承诺的 save/archive/import/sync + prompt/tags/folders 全部有对应实现(item_add 载荷含 tags/items、annotation、folders);『不泛化为任意素材库迁移』与代码仅面向 Eagle 相符。
  • [ok] dry-run 是否真的不写库 — resolveFolderPath() 在 dryRun 时直接返回伪造的 folder-path 字符串,main() 在 dryRun 分支提前 return,未调用 item_add —— 预览路径无写入,结论成立。

6結論

  • 「生成画像+元プロンプト」をまとめてアーカイブし、プロンプトを Eagle の annotation に格納して検索可能にすることで、AIGC の振り返りで最も失われやすい要素を保護します。
  • 堅牢なエンジニアリング詳細:ローカルファイルロックにより並行実行時の重複日付ディレクトリ作成を回避し、親子パスによる正確なディレクトリ解決を行います。
  • --dry-run や「元ファイルを削除/移動しない」明確な安全規定を備えており、誤操作のコストが低いです。
  • デュアルチャネル(ループバック HTTP / stdio MCP)で Eagle プラグインの 2 つの接続方式を網羅し、シェルサンドボックス環境下で子プロセスが制限を継承する可能性についても誠実に説明しています。
  • 最適な用途: Codex で画像をバッチ生成し、すでに Eagle で素材を管理しているクリエイターに最適です。「画像+元プロンプト+タグ+日付ディレクトリ」を一括アーカイブし、以後の検索やプロンプト再利用を容易にします。また、無人自動アーカイブにも適しています(EAGLE_CODEX_FOLDER_ID/ROOT_FOLDER_ID を固定して権限確認ダイアログを削減可能)。
    不向きな用途: Eagle を使用していない、または MCP プラグインの導入を望まないユーザー(本スキルに代替経路はありません);Codex 以外の画像ソースや他の素材ライブラリの移行(vsc-distinction により一般化しない方針を明記);「とりあえず試す」感覚で本番インポートを何度も実行するシナリオ(重複素材でライブラリが汚染されるため、まずは --dry-run を行うべきです)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload codex-image-to-eagle.tar.gz
    sha256: 5914cacc5fbf46dc…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit fcee81beb6.