Slack ユーザープロフィールとカスタムフィールドを管理するワークフローアプリケーションです。
- Slack ユーザープロフィール(表示名、役職、電話番号など)の更新機能
- カスタムフィールド(部門、入社日、従業員番号など)の更新機能
- 管理者承認ワークフローによる安全な他ユーザープロフィール更新
- Slack Deno SDK v2.x を利用し、関数・ワークフロー・トリガーを一貫して管理
- 自分のプロフィール更新: 一般ユーザーが自分の許可されたフィールドを更新
- 他ユーザープロフィール更新: 管理者承認後に他ユーザーのプロフィールを更新
- 管理者直接更新: Admin/Owner は承認なしで任意のユーザーを更新可能
- カスタムフィールドフォーム表示: ワークスペースに設定されたカスタムフィールドを動的に表示
- 現在値の自動取得: モーダルを開くと現在の値が初期表示される
- 複数フィールドタイプ対応: テキスト、日付、選択リストに対応
- Deno 1.37+ がインストールされていること
- Slack CLI が利用可能で、ワークスペースにログイン済みであること
- Slack App を作成できる権限を持っていること
- Git がインストールされていること(Git Hooks使用時)
# リポジトリを取得
git clone https://github.com/leaveanest/slack-utils-user.git
cd slack-utils-user
# 環境変数の設定
cp .env.example .env
# .env ファイルを編集
# Slack CLIでログイン
slack login
# Git hooks をセットアップ(推奨)
bash scripts/setup-git-hooks.sh.env ファイルで以下の変数を設定してください:
# 必須: 他ユーザープロフィール更新用のAdmin User Token
# Slack API Apps で取得(users.profile:write スコープが必要)
SLACK_ADMIN_USER_TOKEN=xoxp-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# オプション: 承認リクエスト送信先チャンネル
SLACK_APPROVAL_CHANNEL_ID=C0123456789
# オプション: ロケール設定(デフォルト: ja)
LOCALE=ja注意: slack-utils-user(本アプリ)とは別に、従来型のSlack Appを作成する必要があります。 これは、Deno Slack SDKのワークフローアプリではUser Token(xoxp-)を直接取得できないためです。
- Slack API Apps で 新しい従来型 App を作成
- 「OAuth & Permissions」→「User Token Scopes」に
users.profile:writeを追加 - 「Install to Workspace」でワークスペースにインストール
- 「User OAuth Token」(
xoxp-で始まる)をコピー .envのSLACK_ADMIN_USER_TOKENに設定
# アプリを起動
slack run
# トリガーを作成
slack trigger create --trigger-def triggers/update_profile_shortcut.ts
slack trigger create --trigger-def triggers/update_custom_fields_shortcut.ts- Slack で任意のチャンネルを開く
- メッセージ入力欄の「+」ボタンをクリック
- 「ショートカット」または「ワークフロー」を選択
- 「プロフィールを更新」または「カスタムフィールドを更新」を選択
# フォーマット
deno task fmt
# リント
deno task lint
# 型チェック
deno task check
# テスト
deno task test
# カバレッジ付きテスト
deno test --allow-all --coverage=cov
deno coverage cov --html
# i18n 整合性チェック
deno task i18n:check
# 全チェック(CI相当)
deno task cursor-ci# 全テストを実行
deno task test
# 特定の関数のテスト
deno test --allow-all functions/show_custom_fields_form/test.tsslack-utils-user/
├── functions/ # Slack Functions
│ ├── check_user_permissions/ # 権限チェック
│ ├── get_authorized_approvers/ # 承認者取得
│ ├── get_custom_field_definitions/ # カスタムフィールド定義取得
│ ├── show_custom_fields_form/ # カスタムフィールドフォーム表示
│ ├── show_profile_update_form/ # プロフィール更新フォーム表示
│ ├── update_custom_fields/ # カスタムフィールド更新
│ └── update_user_profile/ # ユーザープロフィール更新
├── workflows/ # Slack Workflows
│ ├── update_custom_fields_workflow.ts
│ └── update_profile_workflow.ts
├── triggers/ # Slack Triggers
├── lib/ # 共通ライブラリ
│ ├── i18n/ # 多言語対応
│ ├── types/ # 型定義
│ └── validation/ # Zodスキーマ
├── locales/ # 翻訳ファイル
│ ├── en.json # 英語
│ └── ja.json # 日本語
├── docs/ # ドキュメント
├── .github/ # CI/CD
└── manifest.ts # Slackアプリマニフェスト
このプロジェクトは、英語と日本語の多言語対応をサポートしています。
- 日本語 (ja) - デフォルト言語
- English (en) - ベース言語
# 日本語で実行(デフォルト)
export LOCALE=ja
slack run
# 英語で実行
export LOCALE=en
slack runlocales/en.json が更新されると、GitHub Actions
が自動的に日本語への翻訳を実行し、PR を作成します。
詳細は docs/i18n-guide.md を参照してください。
- slack-utils-channel - チャンネル管理ワークフロー
コントリビューションを歓迎します!詳細は CONTRIBUTING.md を参照してください。
本プロジェクトは MIT ライセンスで提供されています。詳細は LICENSE を参照してください。
セキュリティに関する問題を発見した場合は、SECURITY.md を参照してください。
このプロジェクトは Contributor Covenant 行動規範を採用しています。