# Council Slack

> Slackの自分へのメンションを収集するサブスキル。councilから呼ばれる。単体実行時はAD視点での分析と返信ドラフトも生成する。引数で日数指定可能（例：/council-slack 3d）。

- Skill: `sugawaramasaya/council-slack` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sugawaramasaya/council-slack`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sugawaramasaya/council-slack/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: sugawaramasaya (https://skillmd.com/u/sugawaramasaya)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sugawaramasaya/council-slack

---


# 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`: `timestamp`
- `sort_dir`: `desc`
- `include_bots`: `false`
- `limit`: `30`

### Step 3: フィルタリングと重複排除

- 全クエリの結果を `ts` で重複排除
- タイムスタンプ降順にソート
- 以下を除外:
  - Figma bot DM（channel_id が `D_FIGMA_DM`）→ ad-figma が担当
  - 自分自身の発言（from が自分）

### Step 4: スレッドリプライの取得（並行実行）

`reply_count > 0` のメッセージすべてに対して `slack_read_thread` を**全件並行実行**:
- `channel_id`: メッセージが属するチャンネルID
- `thread_ts`: メッセージの `ts`
- `limit`: `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 メンションはありませんでした。」と表示。

