9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実装ログ】AntiGravityでデイリータスク自動抽出スキル(daily_briefing)を作った手順と設計思想

9
Last updated at Posted at 2026-02-28

2026-02-28_qiita.png

はじめに

「毎朝PCを開いて、今日やるべきことを確認するまでに10分かかる」

これ、地味にストレスじゃないですか?

カレンダーを開いて、Slackを確認して、昨日のログを開いて…という時点で、もう集中力のゴールデンタイムを食っている。

今回は、AIエージェント(AntiGravity)のスキル機能を使って、「毎朝の5分ブリーフィング」を自動化した話です。設計の狙い、YAMLベースのタスク判定ロジック、テスト実行で得た知見などを詳しく書きます。

解決したい課題

Obsidianにデイリーログを半年以上毎日つけています。量は十分。

ところが、「昨日何をして、何が残っているか」を毎朝手動で確認するのは5日分×3ファイル/日 ≒ 15ファイルを遡る作業になり、現実的じゃない。

結果、「たぶんこれだったよな…」という記憶頼りの優先順位づけになりがちでした。

スキルの概要

入力

  • daily_log/ フォルダから直近5日分のMarkdownファイルを自動取得

出力

  1. 未完了タスク一覧
    → YAML frontmatterの statusIn Progress のログを抽出
  2. 今日公開予定記事のX投稿テンプレート
    archives/note_posts/, archives/qiita_posts/ の日付と照合

実行方法

AntiGravityのチャットに「今日のブリーフィングお願い」と一言投げるだけです。

設計のポイント

1. ログ読み込み範囲は「5日」

テスト実行を繰り返して決めた値です。

範囲 メリット デメリット
3日 軽い 週をまたぐと文脈が途切れる
5日 ちょうどいい **── **
7日 網羅的 トークン消費が増える

5日だと、月曜朝に実行しても水曜くらいまでのコンテキストが残るので、週末に仕掛かりにしたタスクも拾えます。

2. 未完了判定はYAML status フィールドベース

デイリーログのYAML frontmatterには、必ず status フィールドがあります。

---
task_id: 2026-02-12-001
date: 2026-02-12
status: In Progress
---

スキルはこの status 値を見て判定します。

  • In Progress未完了タスクとして一覧に含める
  • Complete → 一覧に含めない

テキスト本文中の「TODO」「やり残し」等の自然言語表現を解析するのではなく、構造化されたメタデータで判定する方針です。

理由:自然言語ベースだと「これはTODOなのか感想なのか」の判定が曖昧になるため。YAMLなら機械的に確実。

3. X投稿の忘れ防止機能

create_articles スキルで記事を事前生成すると、公開日にX(Twitter)で告知するのを忘れがちです。

daily_briefing では、archives/note_posts/archives/qiita_posts/ の中から今日の日付と一致するファイルを探し、見つかったら

📢 今日公開予定の記事があります:
- note: 【開発ログ】○○○
- Qiita: なし
→ X投稿テンプレート:
「今日の記事を公開しました!○○○についてまとめています #Python #自動化」

のようなテンプレートを出力します。

4. 出力はMarkdownファイルとして保存

ブリーフィング結果はターミナル表示だけでなく、daily_log/YYYY-MM-DD-briefing.md として保存します。

daily_log/
├── 2026-02-13-001.md  ← 通常のログ
├── 2026-02-13-002.md  ← 通常のログ
└── 2026-02-13-briefing.md  ← ブリーフィング結果

Obsidian上で通常ログとブリーフィングがリンクでつながり、「なぜこのタスクを今日やったのか」の文脈が追えるようになります。

テスト実行の結果

結果1:気づけなかったタスクの発見

テスト実行で、独自ドメインのCloudflare追加設定が「未完了」として拾われました。

自分では「完了した」と思い込んでいたタスクでしたが、YAML上は In Progress のまま。結果的に、転送設定の追加が必要だったことに気づけました。

→ YAMLベースの判定が「思い込み」を防いでくれた実例。

結果2:Codexでも動作確認

AntiGravityだけでなく、Codex(GitHub上のAIエージェント)でも同じスキル定義を実行できることを確認しました。

ただし、Codexはサンドボックスでの実行のため、リポジトリパスの明示指定が必要です。

# AntiGravity(ローカル実行)
daily_log/ → そのまま相対パスで読める

# Codex(サンドボックス実行)
/workspace/obsidian-vault/daily_log/ → 絶対パスで指定

結果3:無料モデルでの実用性

5日分のログは入力トークンとしてはコンパクトで、無料モデルでも十分実用できそうな手応えを得ました。

これは、将来的にPC環境構築代行サービス(松プラン)のユーザーにも「課金なしで使えるスキル」として提供できる可能性を意味します。

create_articles との棲み分け

同じ「ログを読んで何かを出力するスキル」ですが、用途が全く違います。

daily_briefing create_articles
目的 今日のタスク確認 1週間分の記事生成
実行頻度 毎朝 週1回
入力量 5日分(軽い) 7日分(重い)
出力 タスク一覧 + X投稿テンプレ note/Qiita/Discord記事群
モデル要件 無料枠OK見込み 分割実行推奨

SKILL.md の構造(抜粋)

実際のスキル定義ファイルは以下のような構造です。

# スキル定義:daily_briefing

## 入力
- daily_log/ から直近5日分のファイルを読み込む

## 処理
1. 各ログのYAML frontmatterから status を抽出
2. status: In Progress のログを未完了タスクとして一覧化
3. archives/note_posts/ と archives/qiita_posts/ から今日の日付のファイルを検索
4. 見つかった場合、X投稿テンプレートを生成

## 出力
- daily_log/YYYY-MM-DD-briefing.md として保存

まとめ

  • YAML frontmatterのstatusフィールドを活用した機械的なタスク判定で、自然言語解析の曖昧さを回避
  • 5日間という読み込み範囲が、トークン消費と文脈保持のバランスポイント
  • X投稿の忘れ防止機能で、記事公開日の「うっかり」をシステム的に防止
  • 入力が軽いため、無料モデルでの運用も現実的
  • create_articles(出力)とdaily_briefing(入力確認)の2軸スキル体制が完成

📢 お知らせ
この実装に使用したスキル指示書の全文や、具体的なAIプロンプト(成功例・失敗例)は、Discordコミュニティで限定公開しています。
医療×データサイエンスの実装に興味がある方は、ぜひご参加ください。
[Discord参加リンク]

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?