ad-slack — Slackメンション収集サブスキル
me(アートディレクター)へのSlackメンションを全送信者対象で収集する。
council から呼ばれる場合は生データを返す。単体実行時はAD視点の分析と返信ドラフトも生成する。
実行手順
Step 0: meのSlack IDを取得
slack_search_users で検索する:
- query:
me
結果から you@example.com に対応するユーザーのID(U から始まる文字列)を取得し、SELF_ID として以降のすべてのクエリで使用する。
取得できない場合は U_SELF をフォールバックとして使用する。
Step 1: 日数の決定
引数が指定されている場合(3d, 7d, 14d など)はその日数を使用する。
指定がなければデフォルトは 7日。
今日の日付(YYYY-MM-DD)をもとに after: に使う日付を算出する。
注意: Slack の
after:フィルターは指定日を含まない。N日前遡る場合は (N+1) 日前の日付を使う。
例: 7日間遡りたい場合 → 8日前の日付を after:YYYY-MM-DD に指定
Step 2: Slackメンション収集(直接メンション + 監視グループを並行実行)
まず 監視ユーザーグループを取得する:
~/.claude/board/council/usergroups.jsonを Read で読み込み、各エントリのhandleを監視対象グループとする。- ファイルが無い/空/読めない場合は既定の
group_alpha/group_designer/group_betaを使う。
slack_search_public_and_private を以下のクエリで同時実行(直接メンション1本+グループ各1本):
| クエリ | 意図 |
|---|---|
<@SELF_ID> after:YYYY-MM-DD |
自分への直接メンション |
<handle> after:YYYY-MM-DD(取得した各 handle につき1本) |
グループメンション |
共通パラメータ:
sort:timestampsort_dir:descinclude_bots:falselimit:30
Step 3: フィルタリングと重複排除
- 全クエリの結果を
tsで重複排除 - タイムスタンプ降順にソート
- 以下を除外:
- Figma bot DM(channel_id が
D_FIGMA_DM)→ ad-figma が担当 - 自分自身の発言(from が自分)
- Figma bot DM(channel_id が
Step 4: スレッドリプライの取得(並行実行)
reply_count > 0 のメッセージすべてに対して slack_read_thread を全件並行実行:
channel_id: メッセージが属するチャンネルIDthread_ts: メッセージのtslimit:20
エラー発生時は graceful skip(そのメッセージを通常通り処理する)。
Step 5: Notion リンクの取得(並行実行)
親メッセージ本文とスレッドリプライ本文から notion.so URLをすべて抽出し、notion-fetch で全件並行取得する。
Notion URLが0件の場合のみスキップ可。
councilから呼ばれた場合の出力
以下の形式のJSONを返す(マークダウンではなく、分析はcouncilが担う):
[
{
"source": "slack",
"ts": "<メッセージのUnixタイムスタンプ>",
"channel": "<チャンネル名>",
"channel_id": "<チャンネルID>",
"from": "<送信者名>",
"text": "<メッセージ本文>",
"url": "<Slackメッセージへの直リンク>",
"thread": [<スレッドリプライの配列>],
"notion_pages": [<Notionページ内容の配列>]
},
...
]
単体実行時の分析と出力
/council-slack Nd で単体実行した場合は、収集後に以下の分析を行って表示する。
各メッセージの分析
概要(1〜2文): 何についての話か日本語で要約。
アクション種別の判定:
DESIGN_REVIEW: デザインレビュー依頼(Figma URL / デザインシステム言及)DIRECTION: ビジュアル方向性・方針の決定を求めるものFEEDBACK: UI/UX改善フィードバックの依頼APPROVAL: 承認・OK・Go/No-go の判断要求SCHEDULE: スケジュール・納期に関するものINFO: 情報共有のみ
優先度の判断:
- ★★★: 期限言及あり、または承認・Go判断を求めるもの
- ★★: デザインレビュー・フィードバック依頼
- ★: 情報共有
価値仮説の推定(INFO 以外のメッセージのみ):
依頼内容・メッセージ・Notion の内容をもとに以下を各1文で推定する。
- 欲求: 依頼者が本当に達成・解決したいこと(HOW/手段は入れない)
- 課題: 欲求を満たすのを妨げている状況の制約(「〜ないため」の形)
アートディレクターとしての返信ドラフト生成
INFO 以外の各メッセージに返信ドラフトを生成する。
生成原則:
- 日本語で簡潔・決断的に(長文不可)
- グラフィックデザイン品質・ブランド一貫性・デザインシステム準拠を重視
- 修正依頼は「〜を〜に変更してください」と具体的に指示
- 承認は「✅ 承認します」「修正後に再確認をお願いします」で締める
- Figma URLがある場合は確認した上での返信を想定する
単体実行時の出力フォーマット
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📨 Slack メンション(過去 N 日間: X 件)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[1] ★★★ DESIGN_REVIEW | 2026-05-18 18:26 | @member-a | #design_review
概要: ログイン画面のUIリニューアル案のレビュー依頼。スレッド 8 件(参加者 3 名)。
依頼: FigmaリンクのデザインをレビューしてほしいというAD判断要求。
欲求推定: デザインが品質基準を満たした状態でリリースを進めたい
課題推定: ADの確認なしでは品質基準の判断ができないため
💬 スレッド: 8件 — 未解決: カラーパレット選定
🔗 https://your-workspace.slack.com/archives/...
💬 ADとしての返信ドラフト(Slack貼付用):
─────────────────────────
レビューしました。全体の方向性はOKです。
修正点が2点あります:
① ヘッダーカラー → `color.primary.500`(デザイントークン準拠)
② ボタン角丸 → 8px(Buttonコンポーネント仕様)
修正後にLGTM出します。
─────────────────────────
[2] ★ INFO | 2026-05-17 10:00 | @member-b | #general
概要: デザインスプリント日程の共有。
依頼: 情報共有のみ
🔗 https://your-workspace.slack.com/archives/...
(返信ドラフト: 不要)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
合計 アクション必要: X 件 / 情報共有のみ: Y 件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0件の場合: 「過去 N 日間に対象の Slack メンションはありませんでした。」と表示。