GitHub / Slack を起点に、Confluence / Google Meet など対象サービスを増やしながら、 自分宛のアクション(レビュー依頼・メンション・リアクション・返信待ち)を 自動で受信箱に集める個人用 CLI。
名前は「宛名」から。各サービスを流れる大量の情報のうち、宛名が自分になっているもの だけを選り分けて届ける私書箱、という意味。
- 登録は最小限 — 受信箱の中身は外部サービスの状態から自動で導出される。
手動追加(
atena add)は補助 - 消えるのも自動 — 自分がレスした・リアクションした・レビューを提出したことを 検知して自動でクローズする
- 再浮上する — 一度消えても、新しい動きがあれば自動で再オープンする
- 外部サービスへは読み取り専用 — 投稿・push・書き込み API を一切持たない。 トークンは read 系 scope のみ
- 優先度で並ぶ — AI が依頼文面から緊急度を推定して P1〜P3 を付け、受信箱は優先度順に並ぶ
Phase 1(GitHub + Slack コレクタ / fzf UI / launchd 定期収集)+ Phase 2(AI 要約 + 優先度推定 + 優先度順ソート)完了。 Phase 3(Confluence / Meet)は未着手。挙動の正は docs/SPEC.md を参照。
- Node.js 22+
- fzf(対話 UI)
- gh CLI(GitHub トークンの自動解決)
- Slack user token(xoxp- /
search:readreactions:readusers:read) - claude CLI(Phase 2 の AI エンリッチメント用。無くても素の表示で動く)
Claude Code などの AI エージェントに、これをそのまま貼る:
https://raw.githubusercontent.com/na2mene/atena/main/INSTALL.md を読んで、手順に従ってセットアップして
エージェントが clone から検証まで進め、人間にしかできない作業(Slack アプリ作成・ Google 認可)は依頼文つきで案内してくる。手順書の実体は INSTALL.md。
git clone https://github.com/na2mene/atena.git && cd atena
bash scripts/install.sh以降の外部サービス設定は INSTALL.md の Step 2〜4 を参照。
依存確認 → npm install → ビルド → .env 雛形作成 → ~/bin/atena symlink →
launchd 登録(2分間隔・9〜22時)まで一括で行う。何度実行しても安全。
初回は .env にトークン類を記入すること。
ソースを変更したら npm run build(または install.sh 再実行)。UI と定期収集は
ビルド済みの dist/cli.mjs を使う。UI のキー割当や画面まわり(ui/atena.sh)の変更は
開いている UI には効かない — atena を開き直すこと。
定期収集の解除は launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.atena.collect.plist。
atena ui # fzf 対話 UI(開きっぱなし運用・20秒自動更新)
atena ls # open な項目の一覧
atena add "メモ" # 手動追加
atena done 2 5 # 消す
atena collect # 収集(定期実行が呼ぶ)| キー | 動作 |
|---|---|
| Enter | 選択項目をブラウザで開く(複数マーク時は全部) |
| Ctrl-T | 複数選択のマーク切替 |
| Ctrl-D | done(マークがあれば一括で消す) |
| Ctrl-Z | 直前の done を取り消す |
| Ctrl-N | 手動追加 |
| Tab | ソート切替(優先度順 → 時刻順 → ソース順) |
| Ctrl-P | 選択項目の優先度を循環設定(P3 → P2 → P1 → P3。AI が上書きしなくなる) |
| Ctrl-R | いますぐフル収集して更新 |
| Esc | 終了 |
一覧は20秒ごとに自動更新され、カーソルは選択中の項目に追従する。
