やることリストを AI と共有する — Claude Code スキル「gtasks」

Blog
やることリストを AI と共有する — Claude Code スキル「gtasks」
2026.09.18
仕組み, 技術紹介, AI
代表取締役社長 中根 茂雄

私の会社では、日々の仕事の段取りを AI(Claude Code)にかなり任せています。この記事では、その土台になっている自作スキル「gtasks」についてお話しします。Google ToDo(Google Tasks)を AI から直接読み書きする、小さなスキルです。

結論を先に書きますと、会話で「見積を送るタスクを金曜締切で追加して」と頼めばそのまま ToDo に入り、毎朝6時には「今日やること」がチャットに届くようになります。導入から3か月で AI が ToDo を読み書きした回数は71セッションになり、私が ToDo の一覧を手で写す作業はゼロになりました。

作った動機は、AI に仕事を任せて最初にぶつかった問題にあります。私はスマホの Google ToDo を見て動きます。一方、AI はファイルの中の一覧を見て動く。そうすると同じ「今日やること」が2か所にあり、同期がうまくいかなくなると、私と AI で課題の認識がずれてしまいます。この二重管理をなくすには、AI に私と同じ ToDo を読ませるしかない、と考えました。

gtasks の全体像:会話・定期実行・メールやチャットからの流入が Google ToDo に集まり、毎朝ダイジェストとして届く

会話で頼む

使い方は、普段の言葉で頼むだけです。たとえば「◯◯社へ見積を送るタスクを 9月25日締切で追加して」「これ完了にして」「締切を来週にして」「この作業は展示会の準備の下に入れて」といった具合です。AI はそれを Google Tasks API のコマンドに直して実行し、結果を返してくれます。追加・完了・締切の変更・サブタスク化・並び替えまで、アプリでできることは一通りできます。

頼み方で気をつけていることは1つだけです。日付は AI が確定した形(2026-09-25)に直してからツールに渡し、ツールの側は曖昧な日付を受け付けないようにしています。「来週の月曜」を日付にするのは AI の仕事、日付の形式を検査するのはツールの仕事、というように役割を分けているわけです。こうしておくと、後になって「なぜこの日になったのか」を追えるようになります。

私が見ている画面は、Claude Code の会話そのものです。裏でツールが動いて ID 付きの一覧を返しているのですが、それは AI が読むためのもので、私にはこのように整えて見せてくれます。

追加を頼み、一覧を見せてもらったところ(サンプル)

ツールが返すタスクの ID は、AI が「これ完了にして」を実行するときの手がかりになるものです。私は ID を見ませんし、覚えません。「見積のやつ完了」と言えば、AI が直前の一覧から ID を引いてくれます。

リストは4本に分けています。すぐ終わる用事、相手の返事待ち、着手済みの塊、先送り中の塊、という分け方です。AI に「これ登録して」と頼むと、AI はこの順に判定して行き先を決めてくれます。判定の規則は説明書に書いてありますので、私が毎回リスト名を言う必要はありません。

毎朝6時、今日やることが届く

もう1つの使い方は定期実行です。毎朝6時に digest というコマンドが走り、全リストを走査して社内チャットに1通投げてくれます。私は起きてスマホでそれを見るところから1日を始めています。通知の配信は社内チャットの Webhook で、実行は macOS の launchd に任せています(cron でも同じことができます)。

並びには順番を付けています。先頭に「今日やること」を端的に出し、それ以外は期限で4区分(期限切れ・本日・明日・この先1週間)にしています。この形にたどり着くまでには、私が朝スマホで見て「上から順に片づければよい」と感じるまで、何度か作り直しました。というのも、最初の版は全リストを一緒くたに期限順に並べていたため、目が滑ってしまったからです。

毎朝チャットに届くダイジェスト(サンプル)

「期限なし=要仕分け」と書かれる項目があります。すぐ終わる用事のリストに期限も印も無いものは、まだ仕分けていないという意味です。ダイジェストがそれを毎朝見せてくれるので、放置が長引きません。ここは仕組みで解くよりも、毎朝目に入る方が効きました。

1つ、踏んだ落とし穴があります。Gmail やチャットから「タスクに追加」したものは、API の既定では一覧に出てきません。画面には見えるのに AI には見えない、という状態が数日続き、調べてみると原因は showAssigned という引数を付けていなかったことでした。いまは付けてあり、その理由をコードのコメントに残しています。次に同じ場所で転ばないための、小さな習慣です。

削除だけは、人が押す

このスキルで一番こだわったのは、何ができるかではなく、何をさせないかという点です。追加・完了・編集・並び替えは、後戻りできますので AI が単独で進めてよいことにしています。一方、削除と「完了済みの一括非表示」は、頼まれても AI はすぐには実行しません。

破壊的とみなしているのは3つです。タスクの削除、リストの削除、そして「完了済みを一括で非表示にする」操作です。最後の1つは Google の仕様上、実行すると復元できません。AI が親切に整理するつもりで押してしまうと、記録が消えてしまいます。そのため、3つとも同じ扱いにしました。

仕組みは二重にしています。まず説明書(SKILL.md)に「削除は確認してから」と書いてあります。ただし、言い聞かせるだけでは、AI が善意で先回りする日がいつか来ると思います。そこでツールの側でも、--yes が付いていなければ認証より前に拒否するようにしました。こうしておけば、どちらか一方が抜けても事故になりません。

実際に「消して」と頼むと、AI はツールに止められ、私に聞き直してきます。ツールは認証(ブラウザが開く)の前に止まりますので、確認前に余計な副作用が出ません。このときの会話がこちらです。

削除を頼むと、ツールに止められた AI が聞き直してくる(サンプル)

止めている関数は12行です。破壊的なコマンドには --yes という引数があり、それが無ければここで終わります。確認が取れたら AI が --yes を付けて実行し、その旨を報告してくれます。承認の記録は会話に残りますので、後から「誰がいつ消したか」を追うことができます。

def gate_destructive(args):
    """破壊系コマンド(--yes を持つ)が --yes 無しなら、認証より前に拒否する。
    認証(ブラウザ起動)などの副作用を起こさずに止めるのが狙い。"""
    if hasattr(args, "yes") and not args.yes:
        raise SystemExit(
            f"[確認ゲート] '{args.cmd}' は破壊的操作です。実行するには --yes を付けてください。\n"
            "後戻りできない操作は事前にユーザーへ確認すること。"
        )

正本は Google 側に一つ

このスキルを作る前は、AI が読みやすいように「進行ボード」というファイルで一覧を持っていました。ところが、読みやすかったのは AI だけで、私はスマホから直せず、状態を1つ動かすにも AI を介す必要がありました。そこで方針を変え、状態は Google ToDo だけが持ち、ファイルは記録だけを担う、と決めました

これで変わったことは3つあります。まず、AI も私も同じ ToDo を見るようになりました。次に、私がスマホで直せば、AI は次に読んだときそれに従います。そして、どのタスクが AI の担当かをタスク名の頭の印で分けるようにしました(次の章でお話しします)。

正本を一つにする前と後

ファイルの側には「完了台帳」という役割を残しています。毎朝、前日に完了した AI 担当のタスクを台帳に追記し、git に控えを取ります。Google Tasks には版の履歴がありませんので、いつ何を終えたかの記録はこちらが持つ、という分担です。完了の判定も、私が ToDo でチェックを付けることで確定するようにしていて、AI が自分の判断で完了にすることはありません。

副作用も1つありました。Google Tasks の「スター」は API から見えないのです。そこで、スターは私だけが使う印として残し、AI は期限と印で緊急度を表す、と割り切りました。API で取れないものを無理に取ろうとするより、運用の側を合わせる方が長持ちすると思います。

AI が起こすタスクには 🦀 を付ける

ToDo に入るタスクは、私が頼んだものだけではありません。AI とのセッションの中で「これは後で要る」「私の確認が要る」という仕事が生まれると、AI が自分でカードを起こし、タイトルの頭に 🦀 を付けます。私が「登録して」と言わなくても、です。先ほどの一覧にあった「🦀 展示会のブース案を3つ出す」がそれで、AI が進めている最中のカードです。

印は3種類に分けています。🦀 は AI が進行しているもの、🦀❓ は私の GO や判断を待っているもの、そして印が無いものは私自身のタスクです。印が無いタスクには AI は触りません。私が付けた期限や並びを AI が勝手に動かさない、という約束をタイトルの1文字で表しているわけです。逆に言えば、私が AI に任せたいときは、頭に 🦀 を付けるだけで委任のシグナルになります。

🦀❓ は、朝のダイジェストでもタイトル検索でも横断して拾えますので、「私がボタンを押せば進むもの」が一覧になります。AI の作業は AI 側で進んでいて、私が見るのは 🦀❓ だけ、という状態が理想です。さらに、🦀❓ のまま14日動いていないカードは、点検ツールが「滞留」として警告します。AI が聞いたのに私が答えていない、という状態を長引かせないためです。

カードの本文にも決まった型があります。1行目にそのタスクを扱っているセッションの名前、続けて「いまの状態」「次の一手」「ボールが誰にあるか」を1行ずつ、という形です。というのも、スマホで 🦀❓ を見て「これ再開したい」と思ったとき、どのセッションを開けばよいかが分からないと困るからです。私がスマホで見ている画面は、このようになっています。

私がスマホで見ている Google ToDo(サンプルデータで再現)

AI が起こしたカードも、私自身のカードも、同じリストに同じ形で並びます。スター(★)は API から見えないので私だけの印で、AI が起こしたカードであっても、私がスマホで完了にすればそれで確定します。完了の判断だけは AI に渡していません。

自分の環境で動かす

スキルは2つの部品でできています。AI が読む説明書(.claude/skills/gtasks/SKILL.md)と、Google Tasks API を叩く Python の CLI(scripts/gtasks_master.py・約500行)です。AI が判断する部分(いつ使うか・何を守るか)と、毎回同じ結果を返す部分(API 呼び出し・日付の検査・確認ゲート)を分けるのが、私が自作スキルを作るときの基本形です

前提は3つです。Claude Code、Python 3 と Google API のクライアントライブラリ、そして Google Cloud で Tasks API を有効化して取った OAuth の credentials.json(無料枠で足ります)です。初回だけブラウザで承認が1回開き、以後は開きません。

説明書の要点を載せておきます。社内版は会社の運用ルールへの参照を含んでいますので、その部分は一般化しています。全文とスクリプトは末尾の zip にあります。

---
name: gtasks
description: Google ToDo(Google Tasks)を読み書きするスキル。「ToDoを見せて」「タスク追加して」「これ完了にして」「締切を○日にして」等と言われたとき必ず使う。削除系は確認ゲート付き。
---
# Google ToDo 操作スキル
正本は Google 側。共通ツール `scripts/gtasks_master.py` を必ず使う(使い捨てスクリプトは書かない)。

## 確認境界(必須)
- 削除系(rm / rm-list / clear)は事前にユーザーへ確認してから実行する
- これらは --yes を付けないとツール側で実行拒否される(多層防御)
- 追加・完了・編集・並び替えは単独で進めてよい。大量に消す/作るときは一声かける

## 標準手順
    python3 scripts/gtasks_master.py list                      # 未完の一覧(--all で完了も)
    python3 scripts/gtasks_master.py add --title "…" --due 2026-10-01
    python3 scripts/gtasks_master.py done <taskID>
    python3 scripts/gtasks_master.py edit <taskID> --due 2026-10-05
    python3 scripts/gtasks_master.py rm <taskID> --yes         # 確認後にだけ
    python3 scripts/gtasks_master.py digest                    # 締切ダイジェスト

## 失敗時
- 403 → Tasks API 未有効化 / 認証情報がありません → credentials.json 未配置

Claude Code を開いて「ToDo を見せて」と言えば動きます。向いているのは、自分は ToDo アプリを見るだけで AI に「入れておいて」と頼みたい方と、会議の宿題をその場で登録させたい方だと思います。一方、Google ToDo を使っていない方には向きません。ただし Notion や Backlog でも、API を叩く部分だけ差し替えれば同じ考え方で作れます。

まとめ

  • 正本は Google ToDo に一つだけ置く
  • 判断は SKILL.md、決定的処理は Python に分ける
  • 削除は説明書とツールの二重で止める
  • AI が起こすタスクは 🦀、私の判断待ちは 🦀❓
  • 曖昧な日付は AI が直し、ツールは推測しない
  • 毎朝の1通で放置を長引かせない

スキル一式(SKILL.md と gtasks_master.py)は、こちらからダウンロードできます(zip)

業務アプリケーション開発を見る お問い合わせ