## 概要 [[Agent Skills (Codex CLI)|Agent Skills]]を試してみた。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://developers.openai.com/favicon.png" /> <span class="link-card-v2-site-name">developers.openai.com</span> </div> <div class="link-card-v2-title"> Agent Skills </div> <div class="link-card-v2-content"> Give Codex new capabilities and expertise </div> <img class="link-card-v2-image" src="https://developers.openai.com/open-graph.png" /> <a href="https://developers.openai.com/codex/skills/"></a> </div> ### 環境 | 対象 | バージョン | | ------------- | ---------- | | [[Codex CLI]] | 0.101.0 | ### 対象環境 [[Minerva]]の[[📰Weekly Report]]配下で試してみる。 ## スキルの作成 [[Codex CLI]]を起動して `$skill-creator` を実行してみる。 > [!left-bubble] ![[chappy.webp]] > • skill-creator を使って進めます。目的が「新規作成」か「既存更新」かで手順が変わるので、まず次を教えてください。 > > 1. 作りたいのは 新規スキル と 既存スキル更新 のどちらですか? > 2. そのスキルが反応すべきユーザー入力の具体例を 2〜4 個ください。 > 3. スキルの配置先はどこにしますか?(例: ./skills/private) > [!right-bubble] ![[minerva-face-right.webp]] > 1. 新規スキル > 2. Monthly Reportをつくって > 3. ./.agents/skills/ 配下 > [!left-bubble] ![[chappy.webp]] > • 了解です。新規スキルを ./.agents/skills/ 配下に作る前に、仕様を最小限だけ固めます。 > > 1. スキル名は monthly-report で進めてよいですか? > 2. 想定トリガー例をあと2〜3個ください(例: 先月の売上月報を作って, 2026年1月の月次レポートをMarkdownで出して)。 > 3. 月報の出力形式は何にしますか?(Markdown / Google Docs向けテキスト / HTML など) > 4. 入力データはどこから取りますか?(手入力のみ / CSV / 特定DB・API) > > これが決まったら、実装プランを提示して承諾後にファイル作成します。 > [!right-bubble] ![[minerva-face-right.webp]] > 1. はい > 2. 『◯月のMonthly Reportを書いて』『先月のレポートを書いて』 > 3. Markdown > 4. `📰Weekly Report/` 配下のMarkdownファイル > [!left-bubble] ![[chappy.webp]] > • skill-creator を使った実装プランを確定しました。まだファイル編集はしていません。 > > 実装プラン > > 1. init_skill.py で ./.agents/skills/monthly-report を初期化する > 2. 生成された SKILL.md を月報作成向けに全面更新する > 3. references/ に月報テンプレートと集約ルールを追加する > 4. agents/openai.yaml を要件に合わせて設定する > 5. quick_validate.py でバリデーションする > > 作成・更新予定ファイル > > 1. ./.agents/skills/monthly-report/SKILL.md > 2. ./.agents/skills/monthly-report/references/template.md > 3. ./.agents/skills/monthly-report/agents/openai.yaml > > 仕様として反映する内容 > > 1. トリガー: Monthly Reportをつくって / ◯月のMonthly Reportを書いて / 先月のレポートを書いて > 2. 出力: Markdown > 3. 入力: 📰Weekly Report/ 配下の週報 .md を参照 > 4. 対象週の選定: 各週報 frontmatter の description にある期間(YYYY-MM-DDからYYYY-MM-DDまで)と対象月の重なりで判定 > > このプランで実装を進めてよいですか? > なるほど...。開発環境改善を[[AI]]にやらせる感じに似ている。 > [!right-bubble] ![[minerva-face-right.webp]] > ok これは1つの機能実装みたいなものだなと思った。 ## できたもの `.agents/skills/monthly-report/SKILL.md` ```markdown --- name: monthly-report description: Weekly Report 配下の週報Markdownを集約して月次レポート(Markdown)を作成するスキル。`Monthly Reportをつくって`、`◯月のMonthly Reportを書いて`、`先月のレポートを書いて` のように、対象月を指定した月報作成依頼で使用する。 --- # Monthly Report ## Overview `📰Weekly Report/` 配下の週報Markdownを読み取り、対象月に重なる週報だけを集約して月次レポートを作成する。 ## Workflow 1. 対象月を確定する。 - `◯月` 指定があればその月を採用する。 - `先月` 指定があれば、実行時点の前月を採用する。 - 年が省略された場合は、文脈上もっとも自然な年を採用し、曖昧なら確認する。 2. 週報ファイル候補を列挙する。 - リポジトリ直下で `rg --files -g '📰*Weekly Report.md'` を実行して候補を取得する。 - `attachments/` 配下は対象外にする。 3. 対象月に重なる週報だけを抽出する。 - 各週報の frontmatter `description` から期間を抽出する。 - 期間抽出には `description:\s*YYYY-MM-DDからYYYY-MM-DDまで` 形式を優先する。 - 週報期間と対象月の期間が1日でも重なれば採用する。 - `description` から期間を抽出できない週報は集計対象外とし、必要ならユーザーに明示する。 4. 週報内容を集約する。 - 各週報の主要セクション(例: `# 🗞️Topics`, `# 👀Reading`, `# 🚀Releases`)を読み、重複を除いて要点を統合する。 - 事実ベースで記述し、週報にない情報を補完しない。 - 内容が曖昧な箇所には `要確認` を付ける。 5. 月報Markdownを作成する。 - `references/template.md` を読み、テンプレートに沿って出力する。 - `対象週報` セクションに、採用した週報ファイル名と週報期間を列挙する。 - 主要トピックは時系列よりもテーマ単位のまとまりを優先する。 ## Output Rules - 出力形式は Markdown に固定する。 - 見出し構造はテンプレートに合わせる。 - 週報の表現を要約する際は、意味を変えない。 - 根拠が追えるよう、必要に応じて `source: <filename>` を追記する。 ## References - 月報テンプレートと記述ルール: `references/template.md` ``` `.agents/skills/monthly-report/references/template.md` ````markdown # Monthly Report Template ## テンプレート ```markdown # 🗓️{{year}}年{{month}}月 Monthly Report ## 対象期間 - {{period_start}} から {{period_end}} ## 対象週報 - `📰{{yyyy}}年{{ww}}週 Weekly Report.md`({{start}} から {{end}}) - `📰{{yyyy}}年{{ww}}週 Weekly Report.md`({{start}} から {{end}}) ## Highlights - {{月全体の要点を3-5件}} ## Topics ### {{テーマ1}} - {{重要な出来事・進捗・判断}} - {{必要なら source: ファイル名}} ### {{テーマ2}} - {{重要な出来事・進捗・判断}} ## Releases / Deliverables - {{リリースや公開物を箇条書き}} ## Reading / Learning - {{学び・気づきを箇条書き}} ## Next Month Focus - {{次月の注力ポイントを2-4件}} ``` ## 記述ルール 1. 週報に書かれていない事実を追加しない。 2. 同じ内容は重複して書かない。 3. 断定できない内容は `要確認` を付ける。 4. 迷った場合は詳細より可読性を優先し、簡潔に書く。 ```` `.agents/skills/monthly-report/agents/openai.yaml` ```yaml interface: display_name: "Monthly Report 作成" short_description: "週報Markdownを集約して月次Markdownレポートを作成" default_prompt: "Use $monthly-report to write a monthly Markdown report from weekly notes under 📰Weekly Report/." ``` ## 実行してみる ![[2026-02-15-15-27-25.avif]] > [!left-bubble] ![[chappy.webp]] > • monthly-report スキルを使って月報作成を進めます。まず対象月を判断するために、既存の週報・月報ファイル構成を確認します。 > > • Explored > └ List rg --files -g '📰*Weekly Report.md' -g '!attachments/**' > > ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── > > • 週報一覧は取得できました。次に既存の月報がどこまで作成済みかを確認し、未作成の最新月(文脈上自然な対象月)を特定します。 > > • Explored > └ List rg --files -g '*Monthly*Report*.md' -g '!attachments/**' > List ls -1 > Search Monthly|月報|月次 > List monthly-report > List references > > ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── > > • テンプレート定義を読み、出力フォーマットを合わせます。そのうえで対象月を自動判定できるか確認します。 > > • Explored > └ Read template.md > Search ^# 🗓[0-9]{4}年[0-9]{1,2}月 Monthly Report > > ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── > > • 対象月は文脈上もっとも自然な「先月(2026年1月)」として進めます。まず frontmatter の期間を抽出し、1月と重なる週報を機械的 > に選別します。 > > > Would you like to run the following command? > > $ for f in '📰2025年52週 Weekly Report.md' '📰2026年1週 Weekly Report.md' '📰2026年2週 Weekly Report.md' '📰2026年3週 > Weekly Report.md' '📰2026年4週 Weekly Report.md' '📰2026年5週 Weekly Report.md' '📰2026年6週 Weekly Report.md'; do echo > "--- $f"; rg -n "^description:" "$f"; done > 途中は割愛するが、こんな感じで作業は進んでいく。 ## できたMonthly Report ```` # 🗓️2026年1月 Monthly Report ## 対象期間 - 2026-01-01 から 2026-01-31 ## 対象週報 - `📰2026年1週 Weekly Report.md`(2025-12-29 から 2026-01-04) - `📰2026年2週 Weekly Report.md`(2026-01-05 から 2026-01-11) - `📰2026年3週 Weekly Report.md`(2026-01-12 から 2026-01-18) - `📰2026年4週 Weekly Report.md`(2026-01-19 から 2026-01-25) - `📰2026年5週 Weekly Report.md`(2026-01-26 から 2026-02-01) ## Highlights - Another Quick Switcher の機能改善が連続し、v13.26.0 / v13.27.0 / v14 / v14.1 / v14.2 / v14.3 と大きく進展。設定UXと検索性が特に向上。source: `📰2026年1週 Weekly Report.md`, `📰2026年2週 Weekly Report.md`, `📰2026年3週 Weekly Report.md`, `📰2026年4週 Weekly Report.md`, `📰2026年5週 Weekly Report.md` - Various Complements v11.0.0 をリリースし、Internal Link Complement の実用機能を強化。source: `📰2026年4週 Weekly Report.md` - Neovim / Yazi / Serie 周辺の課題解消と運用改善が進み、日常作業の摩擦を削減。source: `📰2026年2週 Weekly Report.md`, `📰2026年3週 Weekly Report.md` - Minerva 5周年記事・2025年ふりかえり記事を公開し、発信基盤(Weekly Report OGP、Bluesky埋め込み、日報集約コマンド)も拡充。source: `📰2026年1週 Weekly Report.md` - Django REST framework + Pyright、Vue Language Tools、shadcn-vue/CVA など実務寄りの学習投資を実施。source: `📰2026年2週 Weekly Report.md`, `📰2026年4週 Weekly Report.md`, `📰2026年5週 Weekly Report.md` ## Topics ### Obsidianプラグイン開発 - Another Quick Switcher でプレビュー時スクロール、プロパティソート、相対更新時刻表示、Custom Searches自動保存、設定全体検索を段階的に実装。source: `📰2026年1週 Weekly Report.md`, `📰2026年2週 Weekly Report.md`, `📰2026年3週 Weekly Report.md`, `📰2026年4週 Weekly Report.md`, `📰2026年5週 Weekly Report.md` - Various Complements v11.0.0 で Internal Link Complement の表記揺れ吸収と aliases 追加導線を強化。source: `📰2026年4週 Weekly Report.md` - created/updated プロパティへ時刻情報を含める方針に変更し、関連コマンド側も追随。source: `📰2026年4週 Weekly Report.md` ### 開発環境・ツールチェーン強化 - Django REST framework と Pyright 系(basedpyright含む)の型安全運用を検証し、sandbox生成や補完課題の対処を実施。source: `📰2026年2週 Weekly Report.md` - Yazi v26.1.4 への更新で発生した互換問題(clipboard/opener/rules)を個別に解消。source: `📰2026年2週 Weekly Report.md` - Neovim では undo-glow.nvim 導入、snacks.picker表示不具合の回避、Diffview/conform 運用改善を実施。source: `📰2026年2週 Weekly Report.md`, `📰2026年3週 Weekly Report.md` - Serie を再検証し、大規模repo対応や外部diff連携改善を issue として提案。source: `📰2026年2週 Weekly Report.md`, `📰2026年3週 Weekly Report.md` - Zellij は再評価したうえで現時点では導入見送り(将来の再検証余地あり)。source: `📰2026年5週 Weekly Report.md` ### 発信・ナレッジ運用 - Minerva 5周年記事と2025年ふりかえり記事を執筆し、活動の棚卸しを実施。source: `📰2026年1週 Weekly Report.md` - Weekly Report のOGPをインフォグラフィック化し、共有時の視認性を改善。source: `📰2026年1週 Weekly Report.md` - Bluesky埋め込み手順の公開と Carnelian コマンド化、Daily notes集約コマンド追加で運用を省力化。source: `📰2026年1週 Weekly Report.md` ## Releases / Deliverables - `obsidian-another-quick-switcher` v13.26.0 / v13.27.0 / v14 / v14.1.0 / v14.2.0 / v14.3.0 - `obsidian-various-complements-plugin` v11.0.0 - `silhouette.nvim` v0.9.0(Denops v8対応) - 記事: Minerva 5周年、2025年ふりかえり、AQS v14リリース解説、Vue Language Tools整理、DRF+Pyright調査、CVA設計例拡充 ## Reading / Learning - AI時代の開発では「要件定義・レビュー・責任分担」の重要性が相対的に上がる認識が強化された。source: `📰2026年1週 Weekly Report.md`, `📰2026年3週 Weekly Report.md`, `📰2026年4週 Weekly Report.md` - Agentic Coding の活用は有効だが、並列運用やコンテキスト管理にはワークフロー設計が必要という示唆を得た。source: `📰2026年5週 Weekly Report.md` - 休養/メンタル管理の知見を継続的に吸収し、生産性維持の前提として再認識。source: `📰2026年1週 Weekly Report.md`, `📰2026年5週 Weekly Report.md` ## Next Month Focus - AQS設定UX(検索・表示・保存周り)の継続改善と安定化 - Neovim/Git参照環境(差分閲覧・履歴探索)の実戦運用強化 - CVAを含むVueコンポーネント設計パターンの拡充 - Zellijはユースケース発生時に限定して再評価 ```` ## Skillの内容を修正する 個人的には以下の点で不満があったので再調整してみる。 - [[Obsidian]]の[[内部リンク]]になっていない - `source: ` の表示がうざい - 箇条書きが1レベルのみで読みにくい 基本的には `SKILL.md` と `template.md` を調整する感じ。面白いものでもないので詳細は割愛するが、成果物は以下のようになった。 ```` # 🗓️2026年1月 Monthly Report ## 対象期間 - 2026-01-01 から 2026-01-31 ## 対象週報 - `📰2026年1週 Weekly Report.md`(2025-12-29 から 2026-01-04) - `📰2026年2週 Weekly Report.md`(2026-01-05 から 2026-01-11) - `📰2026年3週 Weekly Report.md`(2026-01-12 から 2026-01-18) - `📰2026年4週 Weekly Report.md`(2026-01-19 から 2026-01-25) - `📰2026年5週 Weekly Report.md`(2026-01-26 から 2026-02-01) ## Highlights - [[Minerva]]・[[Obsidian]]5周年の節目として、[[📘Minerva・Obsidian 5周年記念 -1st-]] と [[📘2025年 ふりかえり]] を公開。 - [[🦉Another Quick Switcher]] を中心に、v13系からv14系へ継続的に改善し、設定体験を大きく前進。 - [[🦉Various Complements]] v11.0.0 と [[🦉Silhouette.nvim]] v0.9.0 をリリースし、Obsidian/Neovim周辺を強化。 - [[Django REST framework]] + [[basedpyright]]、[[TanStack Query]]、[[shadcn-vue]]/[[Class Variance Authority]] など、実装と設計の検証を集中的に実施。 - [[Zellij]] は再検証したうえで、現行ワークフローとの整合性から導入見送りを判断。 ## Topics ### 発信とナレッジ整備 - 5周年記念記事と年次ふりかえり記事を執筆し、活動の棚卸しと発信を強化。 - Weekly ReportのOGPを固定画像からAI生成インフォグラフィックへ変更。 - [[📗Blueskyの投稿を埋め込みたい]] につながる形で、Bluesky埋め込み手順を [[📒Obsidian逆引きレシピ]] に追加。 - [[🦉Carnelian]] に、Daily notesの特定見出し集約コマンドを追加して週報作成フローを効率化。 ### プラグイン開発とリリース - [[🦉Another Quick Switcher]] でプレビュー体験、プロパティソート、v14メジャーアップデート、相対更新日時表示、Custom Searches自動保存、設定全体検索を段階的に実装。 - [[🦉Various Complements]] v11.0.0 で Internal Link Complement を強化。 - クエリ先頭文字ケースに合わせた挿入制御を追加。 - custom alias 操作の拡張機能を追加。 - [[🦉Silhouette.nvim]] v0.9.0 で Denops v8 対応を実施。 ### 開発環境と技術検証 - [[Vue Language Tools]] v3.2 の挙動差分を整理し、Nuxt/Neovim環境を更新。 - [[Django REST framework]] と型環境(django-types / basedpyright)を検証し、補完・警告の運用方針を整備。 - [[Yazi]] 更新時の互換差分(プラグイン・設定)を検証して対処。 - [[TanStack Query]] は検証したうえで、現時点では導入見送り判断。 - [[undo-glow.nvim]] 導入、[[snacks.picker]] の長年課題解消、Neovim呼び出し導線の改善を実施。 - [[Class Variance Authority]] の設計例を拡充し、Vueコンポーネント設計の整理を前進。 ## Releases / Deliverables - 記事公開 - [[📘Minerva・Obsidian 5周年記念 -1st-]] - Minerva / Obsidian 5周年の節目記事を公開 - [[📘2025年 ふりかえり]] - 2025年の活動と学びを整理して公開 - [[📘Another Quick Switcher v14リリース]] - v14の主要変更をまとめた記事を公開 - Obsidianプラグインリリース - [[🦉Another Quick Switcher]] - v13.26.0: プレビュー時のスクロール機能を追加 - v13.27.0: プロパティ値ソートに対応 - v14.1.0: 相対最終更新日時表示を追加 - v14.2.0: Custom Searches の自動保存に対応 - v14.3.0: 設定全体を対象にした検索を追加 - [[🦉Various Complements]] v11.0.0 - Internal Link Complement の先頭文字ケース調整を追加 - custom alias の拡張機能を追加 - Neovim関連リリース - [[🦉Silhouette.nvim]] v0.9.0 - Denops v8 に対応 - ドキュメント・運用改善 - [[📒Obsidian逆引きレシピ]] - Bluesky投稿の埋め込み手順を追加 - [[🦉Carnelian]] - Daily notes の特定見出しを集約するコマンドを追加 - created/updatedプロパティ運用 - 日付のみから時刻込み運用へ拡張 ## Reading / Learning - 学びの定着 - 🙆‍♀️GOOD - AI時代の開発体験、コードレビュー、要件定義の重要性に関するインプットを継続。 - 休養・メンタルマネジメントの知見を取り込み、開発継続性の観点を強化。 - Vim/Neovim、Obsidian、Git周辺の知見を実運用に接続。 - 🙅‍♀️BAD - ツール更新に伴う互換差分(例: Yazi周辺)への追随コストが高い。 - [[Zellij]] は再検証したが、現行ワークフローへの全面導入は見送り。 - 新規採用候補(例: [[TanStack Query]])は検証段階が中心で、即時導入まで至らないテーマが残る。 ## Next Month Focus - [[Minerva]]・[[Obsidian]]5周年記事の後半執筆を進める。 - [[🦉Another Quick Switcher]] と [[🦉Various Complements]] の改善を継続し、設定体験と運用性を高める。 - [[Django REST framework]] + 型安全運用の実践密度を上げる。 - [[Class Variance Authority]] を含む設計知見を実装へ反映し、再利用可能なUI設計を固める。 ## AI Feedback 1月は「発信」「プロダクト改善」「検証」が分断されず、相互に循環していた月でした。特にAQS周辺は、機能追加だけでなく運用時の摩擦を減らす改善が多く、継続開発の質が一段上がっています。 ```` ## 感想 - 🙅‍♀️ **自分の情報をまとめる**という用途では、実用的ではないと感じた - 自分の意思とは別に情報がまとめられてしまうから - ハルシネーションは少なめだが意思が弱い - 指示をしても人間の意思はそうそう一貫性があるものではない - こういうレポートはまとめるプロセスのふりかえりに価値があるので - 意外と関係ない寄り道から思わぬ報酬をえられることがある - [[AI]]を使うとそれがない - 👍 **他人の情報をまとめる** という用途では実用的 - 他人の意思は分からないので、自分でやる必要性がないため - 目的がふりかえりではなく表面的な情報収集なので利害が一致する - ただ、**普通にお願いしたり[[Deep Research (Gemini)|Deep Research]]でいい気もする** - [[Agent Skills (Codex CLI)|Agent Skills]]の用途にあうか次第 - 🤔 [[Agent Skills]]はいわゆる**ライブラリのエコシステム[[AI]]版**だと思った - 各プラットフォームの[[パッケージマネージャー]]、それの[[AI]]版がしっくりくる - 特定の用途に特化した機能を委譲の形で利用する感じ - かたや[[カスタムエージェント (VSCode)|カスタムエージェント]]はプラットフォームに近い印象 - **世の中の平均値とは逸脱する処理** に向いてそう - 普通に[[AI]]に頼んだら、まずその手順ではやらんだろ的な - 逆に **世の中の平均値な手順なら使わなくていい** と思った - 🤖 **完全に確定的ではない** - 基本的なワークフローやルールに準拠はしてくれる - ......が、**無視されることもあるし、手順が変わることもある** - この辺は普通にプロンプトで投げるときと似てる - 確定的な要件ならスクリプトを書いたほうがいい - [[Agent Skills]]の `scripts/` 配下で担保はできるけど、それが呼ばれるか、スキルが使われるかはまた別の話 - [[Codex CLI]]の[[Agent Skills (Codex CLI)|Agent Skills]]なら `lt;skill_name>` で呼び出しは確定できるけど、手順やルールが守られるかは別 - なので、リリースは[[semantic-release]]のように全自動でできるに越したことはない - 📍 **従来の仕組みとのマッピング (個人的なイメージであってるかは分からない)** - 3つの紐づけ - [[MCP]]/[[MCPサーバー]] - [[REST API]]などの外部API - [[Agent Skills]] - [[パッケージマネージャー]]でインストールするライブラリ - [[カスタムエージェント (VSCode)|カスタムエージェント]] - プロジェクト設定やフレームワーク - この関係性のイメージがあれば、適材適所に使い分けられそうな気がする