Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Status Pilot

Slack / Microsoft Teams / Notion / スプレッドシート / GitHub / Git など複数ツールのアクティビティを横断して、進捗レポート / ステータス更新 を GitHub Copilot で自動生成する VSCode 拡張です。 PM が毎週・毎日書いている「今週やったこと / 進行中 / ブロッカー / 次のアクション」を、各ツールのログから数秒で下書きします。

⚠️ ローカル拡張です。Slackトークンは VSCode の SecretStorage に、GitHub は VSCode 組み込みのサインインを利用します。収集したログは要約のために Copilot のモデルへ渡されます。

対応データ源

ソース 取得内容 認証
Slack 設定チャンネルの会話(スレッド含む) Bot Token (SecretStorage)
Microsoft Teams 個人/グループチャット、指定チームチャネル VSCode の Microsoft サインイン(トークン設定不要)
Notion 指定DBの更新ページ / 最近編集ページ(プロパティ+本文) Integration Token (SecretStorage)
スプレッドシート CSVファイル / Google Sheets / CSV公開URL 不要(Google Sheets は共有URL)
GitHub 対象リポジトリの Issue / PR / コミット VSCode の GitHub サインイン(トークン設定不要)
Git (local) ワークスペース内リポジトリのコミット履歴 不要

statusPilot.sources に複数指定すると、すべてを横断した1本のレポートになります(例: ["slack", "github", "git"])。新しいツールは src/sources/ にプロバイダを1つ追加するだけで対応できます。

特長

  • 3つの入口
    1. コマンド Status Pilot: Slackから進捗レポートを生成 — 設定したチャンネルの直近メッセージを取得して生成
    2. コマンド Status Pilot: 選択テキストから進捗レポートを生成 — 貼り付けた/選択したログから生成(Slack設定なしでも動く)
    3. Copilot Chat の @status — チャットから対話的に生成(例: @status この1週間の team-dev)
  • 構造化された出力: サマリー / 完了・進捗 / 進行中 / ブロッカー・リスク / 次のアクション
  • 事実ベース: ログに無い内容は推測せず「要確認」と明記するようプロンプト設計
  • 日英対応・対象期間・スレッド取り込み・独自指示をカスタマイズ可能

必要環境

  • VSCode 1.93 以上
  • GitHub Copilot 拡張(言語モデル API を利用)
  • (Slack連携を使う場合)Slack Bot Token

セットアップ(開発実行)

npm install
npm run compile     # もしくは npm run watch

VSCode で本フォルダを開き F5(Run Extension)を押すと、拡張機能ホストが起動します。

Slack Bot Token の作成

  1. https://api.slack.com/apps で App を作成
  2. OAuth & Permissions → Bot Token Scopes に以下を追加
    • channels:history, groups:history, users:read
  3. ワークスペースにインストールし、xoxb-... トークンを取得
  4. 対象チャンネルに Bot を招待(/invite @your-app
  5. コマンドパレットで Status Pilot: Slackトークンを設定 を実行して貼り付け

設定例 (settings.json)

{
  // 使うデータ源(複数可)。横断レポートになる
  "statusPilot.sources": ["slack", "teams", "github", "git"],

  // Slack
  "statusPilot.slack.channels": [
    { "id": "C0123ABCD", "name": "team-dev" },
    { "id": "C0456WXYZ", "name": "product" }
  ],
  "statusPilot.includeThreads": true,

  // Microsoft Teams(チャットは自動対象。チームチャネルを足したい場合のみ指定)
  "statusPilot.teams.channels": [
    { "teamId": "<team-id>", "channelId": "<channel-id>", "name": "general" }
  ],
  "statusPilot.teams.maxMessagesPerChat": 100,

  // Notion(DB指定。空ならインテグレーション共有済みの最近編集ページを検索)
  "statusPilot.notion.databases": ["<database-id>"],
  "statusPilot.notion.includeContent": true,

  // スプレッドシート(ローカルCSV + Google Sheets/CSV URL)
  "statusPilot.sheets.files": ["data/tasks.csv"],
  "statusPilot.sheets.urls": ["https://docs.google.com/spreadsheets/d/<id>/edit#gid=0"],
  "statusPilot.sheets.maxRows": 100,

  // GitHub(空ならワークスペースの origin から自動推定)
  "statusPilot.github.repos": ["awano27/status-pilot"],

  // Git(ローカルコミット)
  "statusPilot.git.maxCommits": 100,

  // 共通
  "statusPilot.template": "weekly",        // weekly | daily | executive
  "statusPilot.highlightChanges": true,    // 冒頭に「前回からの変化」を追加
  "statusPilot.lookbackDays": 7,
  "statusPilot.reportLanguage": "ja",
  "statusPilot.customInstructions": "宛先は経営会議。専門用語は避け、数値があれば必ず含める。"
}

GitHub / Git / Teams はトークン設定不要です。 statusPilot.sources["teams", "github", "git"] にすれば、VSCode の Microsoft / GitHub サインインとローカルのコミット履歴だけで動きます。Slackを使うときのみ Bot Token の設定が必要です。

Microsoft Teams を使う

  1. statusPilot.sources"teams" を追加
  2. 初回のレポート生成時に VSCode の Microsoft サインイン(Graph スコープ User.Read, Chat.Read)の同意ダイアログが出るので許可
  3. 個人・グループチャットは自動で対象になります。チームのチャネルも含めたい場合のみ statusPilot.teams.channelsteamId / channelId を指定(チャネル取得は組織によって管理者同意 ChannelMessage.Read.All が必要なことがあります)

組織のポリシーで上記サインインが使えない場合は、コマンド Status Pilot: Microsoft Graph トークンを設定 から Graph Explorer 等で取得したアクセストークンを手動設定できます(トークンは約1時間で失効するためテスト用途向け)。

Notion を使う

  1. https://www.notion.so/my-integrations内部インテグレーションを作成し、secret_... トークンを取得
  2. 取得対象のページ/データベースを開き、••• →「接続」からそのインテグレーションを共有(これをしないとAPIから見えません)
  3. コマンド Status Pilot: Notionトークンを設定 で貼り付け
  4. statusPilot.sources"notion" を追加。statusPilot.notion.databases にDB IDを入れるとそのDBの更新行(ステータス/担当/期日などのプロパティ含む)を、空なら共有済みの最近編集ページを取得します

データベースID は対象DBのURL notion.so/<workspace>/<DATABASE_ID>?v=...DATABASE_ID 部分です。

スプレッドシート(CSV / Google Sheets)を使う

statusPilot.sources"sheets" を追加し、以下のいずれかを指定します(認証不要)。

  • ローカルCSV: statusPilot.sheets.files にパス(相対パスはワークスペース基準)
  • Google Sheets: statusPilot.sheets.urls に共有URLを入れるだけ(自動で export?format=csv に変換)。シートを「リンクを知っている全員が閲覧可」に設定してください
  • 任意のCSV公開URL: 同じく sheets.urls に指定

Excel(.xlsx) のバイナリ解析は現状未対応です。Excel は「CSVとして保存」するか、Google Sheets にアップロードして共有URLをご利用ください(XLSX対応はロードマップ)。

チャンネルIDは、Slackのチャンネル名を右クリック →「リンクをコピー」した URL 末尾、または https://app.slack.com/...C から始まる文字列です。

使い方

やりたいこと 操作
既定テンプレートでレポート生成 コマンド Status Pilot: 進捗レポートを生成
テンプレートを選んで生成 コマンド Status Pilot: テンプレートを選んでレポート生成(週次/デイリー/役員向けをその場で選択)
貼り付けたログから即生成 ログを選択 → 右クリック → 選択テキストから進捗レポートを生成
チャットで対話的に Copilot Chat で @status この1週間まとめて / @status daily / @status 役員向け

生成結果は新しい Markdown エディタに開きます。そのまま編集してSlack/Notion等に貼り付けてください。

レポートテンプレート

statusPilot.template または都度の切替で、用途に合わせた構成・トーンに変えられます。

テンプレート 対象読者 構成
weekly(週次) 関係者・チーム サマリー / 完了・進捗 / 進行中 / ブロッカー・リスク / 次のアクション
daily(デイリー) チーム サマリー / 直近やったこと / 次にやること / 困りごと(スタンドアップ向けに簡潔)
executive(役員向け) 経営層 健全性サマリー / 主要な進展(数値)/ 意思決定が必要な事項 / 主要リスク / 今後の見通し

切替方法は3通り:

  1. 設定 statusPilot.template で既定を指定
  2. コマンド テンプレートを選んでレポート生成 でその場で選択
  3. Copilot Chat でヒントを付ける(例: @status daily@status 役員向けに先週分

前回からの差分ハイライト

statusPilot.highlightChanges(既定オン)が有効だと、レポート冒頭に 「🔄 前回からの変化」 セクションが追加されます。

  • 🆕 新しく始まった項目 / ✅ 進行中→完了になった項目 / 🔀 状態・数値が変わった項目 / 🚨 新規ブロッカー・🆗 解消ブロッカー
  • 比較対象は同じテンプレートの直近レポートです(週次なら先週分、デイリーなら前回分)。レポートを生成するたびに、その内容が次回のベースラインとして自動保存されます。
  • 差分が判断できない場合はモデルが推測せず「前回比: 大きな変化なし」と記載します。
  • ベースラインを消したいときはコマンド Status Pilot: レポート履歴(差分ベースライン)を消去

履歴は VSCode の globalState にテンプレート別で保存されます(外部送信なし)。最初の1回は比較対象がないため差分セクションは付きません。

アーキテクチャ

src/
  extension.ts      … コマンド/チャット参加者の登録、フロー制御
  report.ts         … テンプレート/プロンプト構築 & Copilot 言語モデル呼び出し
  history.ts        … テンプレート別の直近レポート保存(差分ベースライン)
  slack.ts          … Slack Web API クライアント(履歴・スレッド取得、メンション整形)
  sources/
    types.ts        … ActivitySource インターフェース(プラグインの共通契約)
    index.ts        … 有効ソースを横断収集して統合ログを作る集約器
    slack.ts        … Slack プロバイダ
    teams.ts        … Microsoft Teams プロバイダ(Graph API、組み込み認証)
    notion.ts       … Notion プロバイダ(DB/ページ、プロパティ+本文)
    sheets.ts       … スプレッドシート プロバイダ(CSV/Google Sheets、依存ゼロ)
    github.ts       … GitHub プロバイダ(Issue/PR/コミット、組み込み認証)
    git.ts          … ローカル Git プロバイダ(コミット履歴)

新しいデータ源を追加するには

src/sources/ActivitySource を実装したファイルを作り、src/sources/index.tsALL_SOURCES に追加するだけです。package.jsonstatusPilot.sources の enum にも id を足せば設定で選べるようになります。

ロードマップ

  • GitHub Issue/PR/コミットを統合
  • ローカル Git コミットを統合
  • Microsoft Teams チャット/チャネルを統合
  • Notion(DB/ページ)を統合
  • スプレッドシート(CSV / Google Sheets)を統合
  • レポートのテンプレート切替(週次/デイリー/役員向け)
  • 前回レポートとの差分ハイライト
  • Excel(.xlsx) バイナリの直接読み込み
  • ユーザー定義テンプレートの追加(任意フォーマット)
  • Marketplace 公開

ライセンス

MIT

About

Generate progress/status reports from Slack conversations using GitHub Copilot — a VSCode extension for PMs

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages