秘書スラッシュコマンドと仕様問い合わせbotで始めるAI活用
はじめに
はじめまして。@voice0726です。普段はMOVO Vistaというプロダクトの開発チームでフロントエンドエンジニアとして開発をしています。2025年6月に Hacobu へ入社し、この記事執筆時点で4ヶ月が経ちました。入社当時 Hacobu では Cursor、Devin などすでにAIエージェントを活用した開発が行われていました。さらにちょうど近いタイミングで Claude Code がリリースされ、AIエージェントを利用した開発がさらに加速しました。今までAIで開発する経験がほとんどなかったので、まずは手を動かしてキャッチアップしてみました。この記事ではこの4ヶ月で試しに作ってみた2つ(秘書スラッシュコマンド/仕様問い合わせ bot)を簡単に紹介します。
秘書スラッシュコマンドを作った
まずはスラッシュコマンドで日々の業務を楽にできないかと考えました。とはいうものの入社したばかりでドメイン知識も乏しく、どういった作業が定型化できそうかもよくわかっていない状態でした。そこで思いついたのが、タスク管理をもう少し定型化できないかということでした。
元々タスク管理が苦手な私ですが、タスク管理で何を解決したいかと考えたとき、以下のような課題がありました。
- 「今日何やるんだっけ」「今日はどこまでやったっけ」を記録するのが手間
- 表を見ながらステータスをぽちぽちするのは大変
- タスク管理のためにわざわざ専用アプリ等を開くのを忘れがち
そこで作るものとしては以下のようなものにしようと思いました。
- 記録するのがなるべくめんどくさくないようにする
- 記録時は1日のタスクに限定し、それ以外の情報を出さない
- エンジニアが一番開いているであろうエディタ上のスラッシュコマンドで完結
以上を踏まえて、 Claude Code + Notion MCP の組み合わせで使えるスラッシュコマンドを作ってみました。
準備として Notion 上に2つのデータベースを作成しました。1つは日報データベース、もう一つはタスク・スケジュール管理用データベースです。Notion のタスクには、期限、ステータス(未着手・進行中 など)、優先度といったプロパティを指定できるようにしました。その上で各コマンドがデータベースを参照しながら以下のような情報を取得するスラッシュコマンドを作成しました。
- 出社時に叩くコマンド
- Notion MCP のタスクデータベースからデータ取得
- Claude Code が期限・ステータス(未着手・進行中)・優先度を見て本日取り組むべきタスクを整理
- 今日1日の大まかな予定を提案
- ユーザーに確認し、問題なければ日報データベースに日報を作成
- 退社時に叩くコマンド
- 出社時に作成した日報をデータベースから取得
- 日報の内容をもとに、それぞれのタスク状況を Claude Code がユーザーに質問
- ユーザーはそれぞれのタスクの状況を記載
これらのスラッシュコマンドを使うことで、朝出社して「今日は何をすればいいんだっけ」と悩むことが少し減り、実行の手数も少ないので習慣として取り入れやすくなりました。Notion にはガントチャートもあるので、タスクの一覧・ガントチャートは Notion で確認しつつ、日次の更新は Claude Code に寄せる、という運用に落ち着いています。
さすがに全体的なスケジュール確認はスラッシュコマンドだけでは難しいため、適宜 Notion でもタスク状況を確認したりアップデートする時間を設ける必要がありますが、日々の更新が楽になったのは作って良かったポイントだと感じています。また、このコマンドを実行したウィンドウをそのまま開いておけば、飛び込みタスクが入ってきたときも Claude Code に頼むことで追加タスクを記録しやすくなりました。対話しながら自分のタスクを整理できるようになり、まるで専属の秘書がついたような体験を得られるようになりました。実際のコマンドを記事末尾にも貼っておきます。
/call-it-a-day
コマンドを叩いた様子(※データはダミーです)
なお、このスラッシュコマンドを作るにあたり、週1で行われている「AI活用してみようの会」の時間がとても有意義でした。Vistaチームでは有志が集まってAIの情報交換をしたり、各自が作りたいものを議論したり、試したいものを触る時間を週1で1時間設けています。この場でチームメンバーからさまざまな情報を得られ、キャッチアップがはかどったり、作業時間を確保できたりしたのは大きく役立ったと感じています。
プロダクト仕様お問い合わせbot
次に作ったものは、 Hacobu で開催されたAIハッカソンで作ったものの紹介になります。ちょうど私が入社して約2ヶ月半のタイミングでAIハッカソンが開催されることになりました。ハッカソンの詳しいレポートは以下の記事もぜひご覧ください。
このハッカソンでは事前にみんなで取り組みたいお題を出し合い、その中から各自がやりたいものを選び、ハッカソン当日1日かけて実装という形で開催されました。その中で私の興味を引いたのは「テクサポやCSからの技術的な質問の一次対応をしてくれるAI botがほしい」というお題でした。私自身もこれまでのキャリアで非エンジニアメンバーからの問い合わせ対応をメインに仕事をしていた時期があったため、このお題に取り組むことにしました。
Bot の機能としては、Slack 上でプロダクトの仕様についてメンションで質問すると、Notion にある仕様書などのドキュメントと Devin のリポジトリ横断検索でユーザーの問い合わせ内容を調査し、回答案を作ってくれるというものです。
ざっくり処理フローは以下です。
Slack → AWS Lambda → Claude Code → Notion MCP and Devin SearchAPI → Claude Code → Slack
Claude Code SDK を利用した TypeScript アプリケーションを AWS Lambda 上で動かし、質問を受け付けてから Notion MCP や Devin Search API を使って情報を取得し、整理して返答する形にしました。やっていることはシンプルですが、プロンプト設計が重要だと考え、非エンジニアにもわかりやすい出力を意識し、出力フォーマットの例示などで読みやすさと安定性に配慮しました。また出力に Devin Search のセッションリンクも貼り付け、エンジニアが正誤チェックや追跡調査がしやすいようにしています。
ベンチマークのために、実際の過去のお問い合わせと開発メンバーからの回答を使って正誤判定もしてみました。驚いたのは、情報源が Notion のみの場合でも、実際の開発メンバーの回答と同様の結論に至っているケースが多かったことです。これは Hacobu がしっかりとドキュメンティングを実践していて、ドキュメントだけでも相応の精度が出せるためだと感じました。また、ドキュメントとコードベースという2つのソースを統合して結果を返すことで、比較的安定した結果に近づいていると感じています。
チームメンバーにも好評で、実際に運用に乗せたいという話も出ており、現在はハッカソンだけでは作り込めなかった部分の改善をしつつリリースの調整をしています。ハッカソンで勢いで作ったアプリケーションを実際に運用に載せたいという声があがるのはうれしいですね。
まとめ
この4ヶ月で、まずは自分の手を動かして小さなAIツールを2つ作りました。自分で手を動かして作ってみたことで、仕組みの理解も興味も一段深まりました。社内にはハッカソンのようにAI活用を後押ししてくれる場があり、それがとても心強かったです。ジョインしたてで新しく覚えることが多い中でのAIキャッチアップでしたが、AIのおかげで手軽に作れるものの幅が広がっているのを実感しています。これからもさらにいろいろなものを作っていきたいと思っています。
おまけ:スラッシュコマンド抜粋
start-a-day.md
)
出勤時のコマンド(---
allowed-tools:
mcp__notion__notion-search, mcp__notion__notion-fetch, mcp__notion__notion-create-pages, mcp__notion__notion-update-page,
mcp__notion__notion-update-database
description: Start a day
---
# 今日のタスク提案コマンド
## 概要
このコマンドは、notion のタスクデータベースと過去の日報から、今日取り組むべきタスクを提案します。
## 使用方法
```
/start-a-day
```
## 実行内容
### 1. 開始時刻の記録
現在の日時を JST タイムゾーンで取得し、業務開始時刻として記録
### 2. 進行中・未着手タスクの取得
Notion MCP を用いて Notion 開発タスクデータベースから以下の条件でタスクを取得します:
- ステータスが「00*未着手」または「01*進行中」
- 期限が今日以前、または期限なし
- アーカイブされていない
- サブアイテムに子タスクが紐付いている場合があるのでサブページも確認すること
### 2. 優先度に基づく並び替え
取得したタスクを以下の基準で並び替えます:
1. 優先度(高 > 中 > 低)
2. 期限の近さ
3. ブロックされていないタスク優先
### 3. 過去の日報分析
前日の日報を検索し、本日への引き継ぎ項目があるか分析
次に、直近 1 週間の日報から以下を分析:
- 完了したタスクの傾向
- 進行中のタスクの継続期間
- 繰り返し出現するタスクパターン
### 4. 今日のタスク提案
分析結果に基づいて以下を提案:
- 優先的に取り組むべきタスク(3-5 個)
- 時間配分の目安
- タスク間の依存関係の確認
ただし会議の時間も考慮する必要がある。
本コマンドで考慮する定例会議は「定例会議」セクション参照
### 5. ユーザーへの出力形式
```
📅 今日のタスク提案(YYYY年MM月DD日)
🎯 優先タスク:
1. [高] タスク名 - 期限: MM/DD
- 推定時間: X時間
- 関連プロジェクト: プロジェクト名
2. [中] タスク名 - 期限なし
- 推定時間: Y時間
- ブロック解除待ち: 関連タスク名
📊 進行状況サマリー:
- 進行中タスク: X件
- 今週完了タスク: Y件
- 期限超過タスク: Z件
💡 推奨アクション:
- 午前中に優先度「高」のタスクから着手
- 午後は継続タスクの進捗確認
```
### 6. ユーザーへの確認+日報エントリを日報データベースに作成
5.でユーザーにタスクが問題ないかを確認してもらう。問題がなければ日報エントリを notion に作成する。
日報作成時に開始時刻を「⏰ 作業時間記録」セクションに記録する。
テンプレートは下記「日報テンプレート」を参照
## 日報テンプレート
**基本フォーマット:**
- タスク名の見出しは `**プロジェクト名 - タスク名**` の形式を使用
- プロジェクトとタスクの関係を明確にし、どのプロジェクトのどのタスクなのか一目でわかるようにする
```markdown
## ⏰ 作業時間記録
- **開始時刻**: HH:MM
- **終了時刻**: (終了時に記録)
- **作業時間**: (終了時に計算)
- **記録日**: YYYY 年 MM 月 DD 日(曜日)
## 📅 本日の予定
### 🔴 最高優先タスク
**プロジェクト名 - タスク名**
- 推定時間: X 時間
- 状況: 進行中/未着手
- 実装内容: 具体的な作業内容
**プロジェクト名 - 別のタスク名**
- 推定時間: Y 時間
- 状況: 継続推進
- 実装内容: 具体的な作業内容
### 🟡 高優先度(継続推進)
**プロジェクト名 - タスク名**
- 推定時間: X 時間
- 状況: 進行中
- 期限: MM/DD
- 実装内容: 具体的な作業内容
### 🟠 中優先度(時間に余裕があれば)
**プロジェクト名 - タスク名**
- 推定時間: X 時間
- 状況: 未着手
- 期限: MM/DD
- 実装内容: 具体的な作業内容
## 📅 本日のスケジュール
### 午前
⏰ HH:MM-HH:MM プロジェクト名 - タスク名(アクション)
⏰ HH:MM-HH:MM プロジェクト名 - 別タスク名
### 午後
⏰ HH:MM-HH:MM プロジェクト名 - タスク名
⏰ HH:MM-HH:MM 時間があれば: - プロジェクト名 - タスク名 - その他の調整事項
## 🎯 本日の成果目標
### 必達目標
✅ プロジェクト名 - タスク名の完了
✅ プロジェクト名 - 別タスク名の方針決定
✅ プロジェクト名 - さらに別のタスク名の着実進捗
### 努力目標
✅ プロジェクト名 - タスク名の進展
✅ プロジェクト名 - タスク名の着手(時間があれば)
✅ プロジェクト名 - タスク名の継続(時間があれば)
## 📌 重点ポイント
## 📝 備考
## 実施状況
### ✅ 完了タスク
### 🔄 進行中タスク
### 📝 明日以降の予定
```
**フォーマット例:**
- `**プロジェクト名 - タスク名**`
## 使用する notion 接続情報
- タスクデータベース
- データベース ID: `XXXXXXXXXXXXXXXXXXXXXXXXXXX`
- Data Source URL: `collection://XXXXXXXXXXXXXXXXXXXXXXXXXXX`
- 日報データベース
- データベース ID: `XXXXXXXXXXXXXXXXXXXXXXXXXXX`
- Data Source URL: `collection://XXXXXXXXXXXXXXXXXXXXXXXXXXX`
## 定例会議
- ここに定例会議の予定を書く
## エラーハンドリング
- notion mcp が利用できない場合は,コマンドを終了すること
- タスクが 0 件の場合は、バックログからの選択を提案
- 日報データが不足している場合は、デフォルトの時間配分を使用
退勤時コマンド
---
allowed-tools:
mcp__notion__notion-search, mcp__notion__notion-fetch, mcp__notion__notion-create-pages, mcp__notion__notion-update-page,
mcp__notion__notion-update-database
description: 今日の業務終了時に日報の進捗状況を更新
---
# 業務終了時の日報更新コマンド
## 概要
このコマンドは、業務終了時に今日の日報の進捗状況を更新し、終了時刻と作業時間を記録して一日の作業をまとめます。
## 使用方法
```
/call-it-a-day [進捗状況のメモ]
```
例:
```
/call-it-a-day テックブログの記事は8割方完了。それ以外のタスクはすでに日報アップデート済み
```
## 実行内容
### 1. 終了時刻の記録
現在の日時を JST タイムゾーンで取得し、業務終了時刻として記録
### 2. 今日の日報検索・取得
notion MCP を使用して以下を実行:
- 日報データベースで今日の日付の日報を検索
- 本日の日報ページの現在の内容を取得してタスク状況確認
- 開始時刻を取得して作業時間を計算
### 3. 進行中タスクの取得
- 進行中のタスクを取得して一覧表示する
- ここでユーザーがタスク状況を入力する
### 4. 進行中タスクの状況更新(3.でユーザーから入力が返ってきたら)
ユーザーが入力した進捗状況メモに基づいて:
- 進行中タスクセクションの該当タスクを更新
- 継続予定、完了、ブロック状況などの詳細を追記
- 会議での合意事項や次回の予定を記録
- タスクデータベース内に対応するタスクが存在する場合,ステータスを更新
### 5. 作業時間記録の更新
「⏰ 作業時間記録」セクションを以下の情報で更新:
- **終了時刻**: コマンド実行時刻(HH:MM 形式)
- **作業時間**: 開始時刻から終了時刻までの時間差を計算(X 時間 Y 分形式)
- 記録日と曜日は維持
### 6. 既存フォーマットの維持
日報更新時は以下のフォーマットを維持:
- ✅ 完了タスク
- 🔄 進行中タスク
- 📝 明日以降の予定
### 7. 更新完了報告
日本語で簡潔に更新内容と作業時間を報告
## 対象となるタスク状況
このコマンドで更新可能な進捗パターン:
- **継続作業**: 「明日も継続」「引き続き検討」
- **会議結果**: 「昼会で合意」「方針共有済み」
- **ブロック状況**: 「待機中」「承認待ち」
- **部分完了**: 「第 1 段階完了」「レビュー提出済み」
## 使用する notion 接続情報
- タスクデータベース
- データベース ID: `XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
- Data Source URL: `collection://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
- 日報データベース
- データベース ID: `XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
- Data Source URL: `collection://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
## 注意事項
- notion MCP が使用できない場合は,その旨ユーザーに伝えてコマンドを終了
- 今日の日報ページが見つからない場合はユーザーに確認
- 複数のタスクの進捗がある場合は、それぞれ適切なセクションに記録
- 既存のタスクフォーマット(✅🔄📝)を必ず維持
- 会議結果や合意事項は詳細に記録
## エラーハンドリング
- notion API へのアクセスエラー: ユーザーに再実行を案内
- 日報ページが複数見つかった場合: 最新の日報を選択
- 該当するタスクが見つからない場合: 新しい進行中タスクとして追加
Discussion