reports について
レポートの保存、検索、配信を行うエージェント向けの gbrain スキルです。カテゴリ別のタイムスタンプ付きファイルを扱い、キーワードで検索先を振り分け、配信前にリンクの実用性を確認します。
主な機能
- 01カテゴリ別にタイムスタンプ付きレポートを保存
- 02カテゴリごとの最新レポートを読み込み
- 03検索キーワードをカテゴリに振り分け
- 04gbrain でレポートを検索
- 05配信前にレポートのリンクを確認
活用シーン
- 01日次ブリーフィングの保存と取得
- 02キーワードによる会議・ソーシャルレポートの検索
- 03配信前の調査レポート内リンクの確認
- 04リンク切れや間接リンクを含むレポートへの対処
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ garrytan/ gbrain --skill reportsインストール後、Claude Code で/reportsを入力して読み込まれたか確認します。
同梱ファイルrouting-eval.jsonl
詳細
Reports Skill
契約
このスキルでは、以下が保証されます。
- レポートはタイムスタンプ付きのファイル名とフロントマターで保存されます
- キーワードルーティング:クエリ → レポートカテゴリのマッピング
- カテゴリ名を指定して最新のレポートを読み込めます
- レポートは gbrain search/query で検索できます
- 配信前に、外部に配信するレポートがアクショナビリティゲート(以下を参照)を通過します
フェーズ
- レポートを保存します。
reports/{category}/{YYYY-MM-DD-HHMM}.mdに、以下のフロントマターを付けて書き込みます。--- title: {report title} type: note # a type the default pack declares; `report` is undeclared report_type: {category name} category: {category name} date: {YYYY-MM-DD} time: {HH:MM PT} --- - 最新のレポートを読み込みます。 カテゴリを指定して、最も新しいレポートファイルを探します。
- キーワードルーティング。 よくあるクエリをレポートカテゴリにマッピングします。
- "email" / "inbox" → ea-inbox-sweep
- "social" / "mentions" → social-mentions
- "briefing" / "morning" → morning-briefing
- "meeting" → meeting-sync
- カスタムマッピングを設定できます
出力形式
保存先:reports/{category}/{YYYY-MM-DD-HHMM}.md
読み込み時:メタデータを含むレポート全体の内容。
アクショナビリティゲート
朝のブリーフィング、会議のダイジェスト、調査レポートなど、レポートをユーザーに届ける前に、すべてのリンクについて次の問いに答えられる必要があります。ユーザーがこのリンクをクリックして、すぐに行動できますか? リンクの規範(決定論的で、推測した URL を使わない)は skills/_output-rules.md の「Deterministic Links」に記載されています。このゲートでは、配信時の失敗の分類と再試行ループを追加します。
4 つの失敗モード
| モード | 意味 | 例 |
|---|---|---|
| Broken(無効) | リンクが偽物、またはプレースホルダーです | https://example.com、TODO-find-link |
| Dead(リンク切れ) | 脳ページへのリンク先がコミット/プッシュされていません | ページは書かれていますがプッシュされていないため、リンクが 404 になります |
| Indirect(間接) | リンク先は存在しますが、目的の場所ではありません | 特定の投稿 x.com/alice-example/status/<id> ではなく、プロフィール x.com/alice-example |
| Missing(欠落) | 行動につながる項目にリンクがありません | URL のない「話題になっているクリップ(約 80 万回再生)」 |
Broken、Dead、Indirect は配信をブロックします。Missing は警告です — 注意を促しますが、ブロックはしません。リンクがないのは正直な状態です。間接リンクは、果たされない約束です。
ブロック対象と警告対象
| パターン | ステータス | 問題点 |
|---|---|---|
x.com/<handle> | ブロック | プロフィール ≠ 投稿。x.com/<handle>/status/<id> にリンクしてください |
| 出版社のドメインのみ | ブロック | ホームページ ≠ 記事。記事へのパスを追加してください |
youtube.com/@channel | ブロック | チャンネル ≠ 動画。youtube.com/watch?v=... にリンクしてください |
| 脳ページへのリンク、ファイル未コミット | ブロック | コミットしてプッシュするまでリンクが 404 になります |
example.com / TODO のプレースホルダー | ブロック | 有効なリンクではありません |
google.com/search?q=... | 警告 | 検索結果 ≠ 情報源。実際の検索結果にリンクしてください |
| URL のない行動可能な箇条書き | 警告 | どこにありますか?リンクを付けるか、見つけ方を説明してください |
再試行ループ(エージェントによる確認)
強制実行用のスクリプトはありません。リンクを含むレポートを配信する前に、エージェントが以下の確認を実行します。
- レポートを作成します。
- 上記の失敗モードに照らして、すべてのリンクを確認します。
- 脳ページへのリンク: 脳リポジトリで
git statusを実行します。リンク先のページが未コミットなら Dead リンクです。先にコミットしてプッシュしてください。gbrain get <slug>でページ自体が存在することを確認できます。 - 外部リンク: 特定のコンテンツの代わりにプロフィール、ホームページ、チャンネルの URL を使っている場合は Indirect です。
- 脳ページへのリンク: 脳リポジトリで
- 確認で問題が見つかった場合は、リンクを修正します。
- 直接の URL(投稿 ID、記事のパス、申請ページ)がありますか?それを使ってください。
- ありませんか?情報源を検索して、該当する項目を探してください。
- 見つかりませんか?リンクを削除し、代わりにコンテンツを説明してください。「@alice-example のタイムラインにあるクリップ、約 80 万回再生 — そこで検索してください。」コンテンツへのリンクの代わりにプロフィールへのリンクを残してはいけません。
- 再確認します。
- 最大 2 回まで再試行します → Missing に分類される警告が残っている場合は、明示的な警告フラグを付けて配信します。Broken、Dead、Indirect のリンクは決して配信しません。
LLM プロンプト用ゲートのスニペット
レポート生成プロンプト(サブエージェントのダイジェスト、調査の要約、cron のレポートジョブ)に貼り付けてください。
ACTIONABILITY GATE: Before finishing, verify every link answers "can the user
click this and act immediately?"
- Every X link → https://x.com/{user}/status/{post_id} — NEVER a profile link
- Every article → full URL with path — NEVER a bare domain
- Every brain-page link → committed + pushed, or don't link it
- If you don't have the direct URL → describe the content WITHOUT a link
- A missing link is better than an indirect link
利用者
レポートの提示面は、ハーネスのルーティング規約(リゾルバーが適用するルーティングルールであり、機械的に保証されるものではありません)に従って、このゲートを経由します。これには、朝のブリーフィング(skills/briefing/SKILL.md)、会議のダイジェスト、調査レポート、外部リンクを含む保存済みレポートが該当します。
失敗した場合
gbrain のエラー code、終了コード、[AGENT] ブロック、または通知ブロックが発生した場合は、エージェント運用者プロトコルに従ってください。このスキルに固有の対応は次のとおりです。
- レポートのリンクが配信スキャンに失敗した場合(リンク切れ、無効、間接的):配信前に修正してください。リンクがない場合は警告であり、ブロッカーではありません。
- レポートの保存で
write_pending(終了コード 10)が返された場合:書き込みがコミットされるまでリンクは 404 になります。共有する前にgbrain write-request <request_id>をポーリングしてください。 - レポート検索(
gbrain search)の結果が空で、縮退状態の通知がある場合は、「以前のレポートはありません」ではなく、キーワードのみで検索したことを伝えてください。
アンチパターン
- フロントマターなしでレポートを保存する(検索できなくなります)
- 実行ごとに一貫性のないカテゴリ名を使用する
- 最新のレポートだけでよいのに、すべてのレポートを読み込む
- キーワードでルーティングしない(完全一致するカテゴリ名を強制する)
- 特定のコンテンツの代わりに、プロフィール/ホームページ/チャンネルへのリンクを含むレポートを配信する(間接リンクは配信をブロックします)
- コミットおよびプッシュされていない脳のページにリンクする(リンク切れ)