Communitygithub.com

通知連携設定

自然言語でTelegram、Discord、Slackの通知連携を設定します。

通知連携設定 とは?

このスキルは、OMC(Oh My Claude Code)の通知機能をTelegram、Discord、Slackと連携させるための対話型設定ツールです。ユーザーは自然言語で希望する通知サービスを指定するだけで、スキルが自動的に設定手順を案内します。各サービスごとに、既存設定の検出、認証情報の収集、送信イベントの選択、テスト通知の送信までをステップバイステップで実行します。設定情報は`~/.claude/.omc-config.json`に保存され、環境変数による代替設定も可能です。主なユースケースは、セッション終了、入力を待っている状態、バックグラウンドタスク完了などのイベントを、選択した通知サービスを通じて即座に受け取ることです。これにより、長時間実行タスクの監視や、ターミナルから離れている間の状況把握が容易になります。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/configure-notifications

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

通知連携設定 は何をしますか?

OMCの通知連携を設定し、セッション終了、入力待ち、バックグラウンドタスク完了時にアラートを受け取れるようにします。

ルーティング

ユーザーのリクエストや引数に基づいて、どのプロバイダーを希望しているかを検出します。

  • トリガーまたは引数に「telegram」が含まれている場合 → Telegram セクションに従う
  • トリガーまたは引数に「discord」が含まれている場合 → Discord セクションに従う
  • トリガーまたは引数に「slack」が含まれている場合 → Slack セクションに従う
  • プロバイダーが指定されていない場合は、AskUserQuestion を使用します。

質問: 「どの通知サービスを設定しますか?」

オプション:

  1. Telegram - ボットトークン + チャットID。モバイルとデスクトップで動作。
  2. Discord - Webhook または ボットトークン + チャンネルID。
  3. Slack - Incoming Webhook URL。

Telegram 設定

Telegram通知を設定して、セッション終了、入力待ち、バックグラウンドタスク完了時にOMCがメッセージを送信できるようにします。

このスキルの仕組み

これは対話型の自然言語設定スキルです。AskUserQuestionを使用して質問をしながらユーザーを設定手順に沿って案内し、結果を ${CLAUDE_CONFIG_DIR:-~/.claude}/.omc-config.json に書き込みます。

ステップ 1: 既存設定の検出

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"

if [ -f "$CONFIG_FILE" ]; then
  HAS_TELEGRAM=$(jq -r '.notifications.telegram.enabled // false' "$CONFIG_FILE" 2>/dev/null)
  CHAT_ID=$(jq -r '.notifications.telegram.chatId // empty' "$CONFIG_FILE" 2>/dev/null)
  PARSE_MODE=$(jq -r '.notifications.telegram.parseMode // "Markdown"' "$CONFIG_FILE" 2>/dev/null)

  if [ "$HAS_TELEGRAM" = "true" ]; then
    echo "EXISTING_CONFIG=true"
    echo "CHAT_ID=$CHAT_ID"
    echo "PARSE_MODE=$PARSE_MODE"
  else
    echo "EXISTING_CONFIG=false"
  fi
else
  echo "NO_CONFIG_FILE"
fi

既存の設定が見つかった場合は、現在の設定内容をユーザーに表示し、更新または再設定するかどうかを確認します。

ステップ 2: Telegram Botの作成

ユーザーがまだボットを持っていない場合は、作成手順を案内します。

Telegram通知を設定するには、TelegramボットトークンとチャットIDが必要です。

ボットの作成(まだ持っていない場合):
1. Telegramを開き、@BotFather を検索
2. /newbot を送信
3. 名前を選択(例:「My OMC Notifier」)
4. ユーザー名を選択(例:「my_omc_bot」)
5. BotFather から次のようなトークンが提供されます: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz

チャットIDの取得:
1. 新しいボットとのチャットを開始(/start を送信)
2. 次のURLにアクセス: https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
3. 「chat」:{"id":YOUR_CHAT_ID} を探す
   - 個人チャットIDは正の数値(例: 123456789)
   - グループチャットIDは負の数値(例: -1001234567890)

ステップ 3: ボットトークンの収集

AskUserQuestion を使用:

質問: 「Telegramボットトークン(@BotFather から)を貼り付けてください」

ユーザーは「その他」フィールドにトークンを入力します。

検証:

  • 次のパターンに一致する必要があります: 数字:英数字(例: 123456789:ABCdefGHI...)
  • 無効な場合は、形式を説明してもう一度尋ねます

ステップ 4: チャットIDの収集

AskUserQuestion を使用:

質問: 「TelegramチャットID(getUpdates APIからの数値)を貼り付けてください」

ユーザーは「その他」フィールドにチャットIDを入力します。

検証:

  • 数値である必要があります(個人の場合は正、グループの場合は負)
  • 無効な場合は、見つけ方をサポートします:
# ユーザーがチャットIDを見つけるのを助ける
BOT_TOKEN="USER_PROVIDED_TOKEN"
echo "最近のメッセージを取得してチャットIDを見つけています..."
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates" | jq '.result[-1].message.chat.id // .result[-1].message.from.id // "メッセージが見つかりません - 最初にボットに /start を送信してください"'

ステップ 5: パースモードの選択

AskUserQuestion を使用:

質問: 「どのメッセージ形式を希望しますか?」

オプション:

  1. Markdown(推奨) - Markdown構文で太字、斜体、コードブロック
  2. HTML - HTMLタグで太字、斜体、コード

ステップ 6: イベントの設定

multiSelect で AskUserQuestion を使用:

質問: 「どのイベントでTelegram通知をトリガーしますか?」

オプション (multiSelect: true):

  1. セッション終了(推奨) - Claudeセッションが終了したとき
  2. 入力待ち - Claudeが応答を待っているとき(長時間タスクに最適)
  3. セッション開始 - 新しいセッションが開始されたとき
  4. セッション継続中 - 永続モードがセッションを維持しているとき

デフォルト選択: session-end + ask-user-question。

ステップ 7: 設定の書き込み

既存の設定を読み込み、新しいTelegram設定をマージして書き戻します:

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"

if [ -f "$CONFIG_FILE" ]; then
  EXISTING=$(cat "$CONFIG_FILE")
else
  EXISTING='{}'
fi

# BOT_TOKEN, CHAT_ID, PARSE_MODE はユーザーから収集
echo "$EXISTING" | jq \
  --arg token "$BOT_TOKEN" \
  --arg chatId "$CHAT_ID" \
  --arg parseMode "$PARSE_MODE" \
  '.notifications = (.notifications // {enabled: true}) |
   .notifications.enabled = true |
   .notifications.telegram = {
     enabled: true,
     botToken: $token,
     chatId: $chatId,
     parseMode: $parseMode
   }' > "$CONFIG_FILE"

ユーザーがすべてのイベントを選択しなかった場合のイベント固有設定:

選択されなかった各イベントに対して、無効化します:

# 例: session-start が選択されていない場合に無効化
echo "$(cat "$CONFIG_FILE")" | jq \
  '.notifications.events = (.notifications.events // {}) |
   .notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"

ステップ 8: 設定のテスト

設定を書き込んだ後、テスト通知を送信するかどうかを確認します:

AskUserQuestion を使用:

質問: 「設定を確認するためにテスト通知を送信しますか?」

オプション:

  1. はい、今テストする(推奨) - Telegramチャットにテストメッセージを送信
  2. いいえ、後でテストします - テストをスキップ

テストする場合:

BOT_TOKEN="USER_PROVIDED_TOKEN"
CHAT_ID="USER_PROVIDED_CHAT_ID"
PARSE_MODE="Markdown"

RESPONSE=$(curl -s -w "\n%{http_code}" \
  "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  -d "chat_id=${CHAT_ID}" \
  -d "parse_mode=${PARSE_MODE}" \
  -d "text=OMC test notification - Telegram is configured!")

HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | head -1)

if [ "$HTTP_CODE" = "200" ]; then
  echo "テスト通知が正常に送信されました!"
else
  echo "失敗しました(HTTP $HTTP_CODE):"
  echo "$BODY" | jq -r '.description // "不明なエラー"' 2>/dev/null || echo "$BODY"
fi

成功または失敗を報告します。一般的な問題:

  • 401 Unauthorized: ボットトークンが無効
  • 400 Bad Request: chat not found: チャットIDが間違っているか、ユーザーがボットに /start を送信していない
  • ネットワークエラー: api.telegram.org への接続性を確認

ステップ 9: 確認

最終的な設定概要を表示:

Telegram通知が設定されました!

  ボット:       @your_bot_username
  チャットID:   123456789
  形式:        Markdown
  イベント:     session-end, ask-user-question

  設定保存先: ~/.claude/.omc-config.json

  環境変数でも設定可能:
    OMC_TELEGRAM_BOT_TOKEN=123456789:ABCdefGHI...
    OMC_TELEGRAM_CHAT_ID=123456789

  再設定: /oh-my-claudecode:configure-notifications telegram
  Discord設定: /oh-my-claudecode:configure-notifications discord
  Slack設定: /oh-my-claudecode:configure-notifications slack

環境変数による代替設定

ユーザーはこのウィザードを完全にスキップして、シェルプロファイルに環境変数を設定することもできます:

export OMC_TELEGRAM_BOT_TOKEN="123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
export OMC_TELEGRAM_CHAT_ID="123456789"

環境変数は、.omc-config.json がなくても通知システムによって自動検出されます。


Discord 設定

Discord通知を設定して、セッション終了、入力待ち、バックグラウンドタスク完了時にOMCがメッセージを送信できるようにします。

このスキルの仕組み

これは対話型の自然言語設定スキルです。AskUserQuestionを使用して質問をしながらユーザーを設定手順に沿って案内し、結果を ${CLAUDE_CONFIG_DIR:-~/.claude}/.omc-config.json に書き込みます。

ステップ 1: 既存設定の検出

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"

if [ -f "$CONFIG_FILE" ]; then
  # 既存のdiscord設定を確認
  HAS_DISCORD=$(jq -r '.notifications.discord.enabled // false' "$CONFIG_FILE" 2>/dev/null)
  HAS_DISCORD_BOT=$(jq -r '.notifications["discord-bot"].enabled // false' "$CONFIG_FILE" 2>/dev/null)
  WEBHOOK_URL=$(jq -r '.notifications.discord.webhookUrl // empty' "$CONFIG_FILE" 2>/dev/null)
  MENTION=$(jq -r '.notifications.discord.mention // empty' "$CONFIG_FILE" 2>/dev/null)

  if [ "$HAS_DISCORD" = "true" ] || [ "$HAS_DISCORD_BOT" = "true" ]; then
    echo "EXISTING_CONFIG=true"
    echo "WEBHOOK_CONFIGURED=$HAS_DISCORD"
    echo "BOT_CONFIGURED=$HAS_DISCORD_BOT"
    [ -n "$WEBHOOK_URL" ] && echo "WEBHOOK_URL=$WEBHOOK_URL"
    [ -n "$MENTION" ] && echo "MENTION=$MENTION"
  else
    echo "EXISTING_CONFIG=false"
  fi
else
  echo "NO_CONFIG_FILE"
fi

既存の設定が見つかった場合は、現在の設定内容をユーザーに表示し、更新または再設定するかどうかを確認します。

ステップ 2: Discord方式の選択

AskUserQuestion を使用:

質問: 「Discord通知をどのように送信しますか?」

オプション:

  1. Webhook(推奨) - DiscordチャンネルにWebhookを作成。ボットは不要。URLを貼り付けるだけ。
  2. Bot API - Discordボットトークン + チャンネルIDを使用。より柔軟で、ボットアプリケーションが必要。

ステップ 3A: Webhook設定

ユーザーがWebhookを選択した場合:

AskUserQuestion を使用:

質問: 「Discord Webhook URLを貼り付けてください。作成方法: サーバー設定 > 連携サービス > Webhook > 新しいWebhook > URLをコピー」

ユーザーは「その他」フィールドにWebhook URLを入力します。

検証:

  • URLは https://discord.com/api/webhooks/ または https://discordapp.com/api/webhooks/ で始まる必要があります
  • 無効な場合は、形式を説明してもう一度尋ねます

ステップ 3B: Bot API設定

ユーザーがBot APIを選択した場合:

2つの質問をします:

  1. 「Discordボットトークンを貼り付けてください」 - discord.com/developers > あなたのアプリ > Bot > トークンから
  2. 「チャンネルIDを貼り付けてください」 - チャンネルを右クリック > チャンネルIDをコピー(開発者モードが必要)

ステップ 4: メンション(ユーザーへのping)の設定

AskUserQuestion を使用:

質問: 「通知で誰かをメンション(ping)しますか?」

オプション:

  1. はい、ユーザーをメンション - DiscordユーザーIDで特定のユーザーをタグ付け
  2. はい、ロールをメンション - ロールIDでロールをタグ付け
  3. メンションなし - 誰もpingせずにメッセージを投稿

ユーザーをメンションする場合:

質問: 「メンションするDiscordユーザーIDは? (ユーザーを右クリック > ユーザーIDをコピー、開発者モードが必要)」

メンション形式: <@USER_ID>(例: <@1465264645320474637>)

ロールをメンションする場合:

質問: 「メンションするDiscordロールIDは? (サーバー設定 > ロール > ロールを右クリック > ロールIDをコピー)」

メンション形式: <@&ROLE_ID>(例: <@&123456789>)

ステップ 5: イベントの設定

multiSelect で AskUserQuestion を使用:

質問: 「どのイベントでDiscord通知をトリガーしますか?」

オプション (multiSelect: true):

  1. セッション終了(推奨) - Claudeセッションが終了したとき
  2. 入力待ち - Claudeが応答を待っているとき(長時間タスクに最適)
  3. セッション開始 - 新しいセッションが開始されたとき
  4. セッション継続中 - 永続モードがセッションを維持しているとき

デフォルト選択: session-end + ask-user-question。

ステップ 6: オプションのユーザー名オーバーライド

AskUserQuestion を使用:

質問: 「カスタムボット表示名? (DiscordのWebhook送信者名として表示されます)」

オプション:

  1. OMC(デフォルト) - 「OMC」と表示
  2. Claude Code - 「Claude Code」と表示
  3. カスタム - カスタム名を入力

ステップ 7: 設定の書き込み

既存の設定を読み込み、新しいDiscord設定をマージして書き戻します:

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"

if [ -f "$CONFIG_FILE" ]; then
  EXISTING=$(cat "$CONFIG_FILE")
else
  EXISTING='{}'
fi

Webhook方式の場合:

収集した値で通知オブジェクトを構築し、jqを使用して .omc-config.json にマージします:

# WEBHOOK_URL, MENTION, USERNAME はユーザーから収集
# EVENTS は有効なイベントのリスト

echo "$EXISTING" | jq \
  --arg url "$WEBHOOK_URL" \
  --arg mention "$MENTION" \
  --arg username "$USERNAME" \
  '.notifications = (.notifications // {enabled: true}) |
   .notifications.enabled = true |
   .notifications.discord = {
     enabled: true,
     webhookUrl: $url,
     mention: (if $mention == "" then null else $mention end),
     username: (if $username == "" then null else $username end)
   }' > "$CONFIG_FILE"

Bot API方式の場合:

echo "$EXISTING" | jq \
  --arg token "$BOT_TOKEN" \
  --arg channel "$CHANNEL_ID" \
  --arg mention "$MENTION" \
  '.notifications = (.notifications // {enabled: true}) |
   .notifications.enabled = true |
   .notifications["discord-bot"] = {
     enabled: true,
     botToken: $token,
     channelId: $channel,
     mention: (if $mention == "" then null else $mention end)
   }' > "$CONFIG_FILE"

ユーザーがすべてのイベントを選択しなかった場合のイベント固有設定:

選択されなかった各イベントに対して、無効化します:

# 例: session-start が選択されていない場合に無効化
echo "$(cat "$CONFIG_FILE")" | jq \
  '.notifications.events = (.notifications.events // {}) |
   .notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"

ステップ 8: 設定のテスト

設定を書き込んだ後、テスト通知を送信するかどうかを確認します:

AskUserQuestion を使用:

質問: 「設定を確認するためにテスト通知を送信しますか?」

オプション:

  1. はい、今テストする(推奨) - Discordチャンネルにテストメッセージを送信
  2. いいえ、後でテストします - テストをスキップ

テストする場合:

# Webhook用:
curl -s -o /dev/null -w "%{http_code}" \
  -H "Content-Type: application/json" \
  -d "{\"content\": \"${MENTION:+$MENTION\n}OMC test notification - Discord is configured!\"}" \
  "$WEBHOOK_URL"

成功または失敗を報告します。一般的な問題:

  • 401 Unauthorized: ボットトークンが無効
  • 400 Bad Request: Webhook URLが無効か、メッセージが大きすぎる
  • ネットワークエラー: discord.com への接続性を確認

ステップ 9: 確認

最終的な設定概要を表示します。

Discord通知が設定されました!

  方式:       Webhook
  URL:        https://discord.com/api/webhooks/...
  メンション:  @username
  ユーザー名:  OMC
  イベント:    session-end, ask-user-question

  設定保存先: ~/.claude/.omc-config.json

  環境変数でも設定可能:
    OMC_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
    OMC_DISCORD_MENTION=@username

  再設定: /oh-my-claudecode:configure-notifications discord
  Telegram設定: /oh-my-claudecode:configure-notifications telegram
  Slack設定: /oh-my-claudecode:configure-notifications slack

環境変数による代替設定

ユーザーはこのウィザードを完全にスキップして、シェルプロファイルに環境変数を設定することもできます:

# Webhook方式:
export OMC_DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
export OMC_DISCORD_MENTION="@username"

# Bot API方式:
export OMC_DISCORD_BOT_TOKEN="your_bot_token"
export OMC_DISCORD_CHANNEL_ID="123456789"
export OMC_DISCORD_MENTION="@username"

環境変数は、.omc-config.json がなくても通知システムによって自動検出されます。


Slack 設定

Slack通知を設定して、セッション終了、入力待ち、バックグラウンドタスク完了時にOMCがメッセージを送信できるようにします。

このスキルの仕組み

これは対話型の自然言語設定スキルです。AskUserQuestionを使用して質問をしながらユーザーを設定手順に沿って案内し、結果を ${CLAUDE_CONFIG_DIR:-~/.claude}/.omc-config.json に書き込みます。

ステップ 1: 既存設定の検出

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"

if [ -f "$CONFIG_FILE" ]; then
  HAS_SLACK=$(jq -r '.notifications.slack.enabled // false' "$CONFIG_FILE" 2>/dev/null)
  WEBHOOK_URL=$(jq -r '.notifications.slack.webhookUrl // empty' "$CONFIG_FILE" 2>/dev/null)
  CHANNEL=$(jq -r '.notifications.slack.channel // empty' "$CONFIG_FILE" 2>/dev/null)
  USERNAME=$(jq -r '.notifications.slack.username // empty' "$CONFIG_FILE" 2>/dev/null)

  if [ "$HAS_SLACK" = "true" ]; then
    echo "EXISTING_CONFIG=true"
    echo "WEBHOOK_URL=$WEBHOOK_URL"
    echo "CHANNEL=$CHANNEL"
    echo "USERNAME=$USERNAME"
  else
    echo "EXISTING_CONFIG=false"
  fi
else
  echo "NO_CONFIG_FILE"
fi

既存の設定が見つかった場合は、現在の設定内容をユーザーに表示し、更新または再設定するかどうかを確認します。

ステップ 2: Webhook URLの収集

AskUserQuestion を使用:

質問: 「Slack Incoming Webhook URLを貼り付けてください。作成方法: Slack API > Incoming Webhooks > 新しいWebhookを追加 > URLをコピー」

ユーザーは「その他」フィールドにWebhook URLを入力します。

検証:

  • URLは https://hooks.slack.com/services/ で始まる必要があります
  • 無効な場合は、形式を説明してもう一度尋ねます

ステップ 3: チャンネルのカスタマイズ(オプション)

AskUserQuestion を使用:

質問: 「通知を特定のチャンネルに送信しますか?(デフォルトではWebhook設定のチャンネルが使用されます)」

オプション:

  1. Webhookのデフォルトを使用 - 設定時に選択したチャンネルに送信
  2. 別のチャンネルを指定 - チャンネル名(例: #general)またはIDを入力

ユーザーが別のチャンネルを指定した場合:

質問: 「チャンネル名またはIDを入力してください(例: #general)」

ステップ 4: ユーザー名のカスタマイズ(オプション)

AskUserQuestion を使用:

質問: 「カスタムボット表示名? (Slackの送信者名として表示されます)」

オプション:

  1. OMC(デフォルト) - 「OMC」と表示
  2. Claude Code - 「Claude Code」と表示
  3. カスタム - カスタム名を入力

ステップ 5: イベントの設定

multiSelect で AskUserQuestion を使用:

質問: 「どのイベントでSlack通知をトリガーしますか?」

オプション (multiSelect: true):

  1. セッション終了(推奨) - Claudeセッションが終了したとき
  2. 入力待ち - Claudeが応答を待っているとき(長時間タスクに最適)
  3. セッション開始 - 新しいセッションが開始されたとき
  4. セッション継続中 - 永続モードがセッションを維持しているとき

デフォルト選択: session-end + ask-user-question。

ステップ 6: 設定の書き込み

既存の設定を読み込み、新しいSlack設定をマージして書き戻します:

CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"

if [ -f "$CONFIG_FILE" ]; then
  EXISTING=$(cat "$CONFIG_FILE")
else
  EXISTING='{}'
fi

# WEBHOOK_URL, CHANNEL, USERNAME はユーザーから収集
echo "$EXISTING" | jq \
  --arg url "$WEBHOOK_URL" \
  --arg channel "$CHANNEL" \
  --arg username "$USERNAME" \
  '.notifications = (.notifications // {enabled: true}) |
   .notifications.enabled = true |
   .notifications.slack = {
     enabled: true,
     webhookUrl: $url,
     channel: (if $channel == "" then null else $channel end),
     username: (if $username == "" then null else $username end)
   }' > "$CONFIG_FILE"

イベント固有設定:

# 選択されなかったイベントを無効化(Telegram/Discordと同様)
echo "$(cat "$CONFIG_FILE")" | jq \
  '.notifications.events = (.notifications.events // {}) |
   .notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"

ステップ 7: 設定のテスト

設定を書き込んだ後、テスト通知を送信するかどうかを確認します:

AskUserQuestion を使用:

質問: 「設定を確認するためにテスト通知を送信しますか?」

オプション:

  1. はい、今テストする(推奨) - Slackチャンネルにテストメッセージを送信
  2. いいえ、後でテストします - テストをスキップ

テストする場合:

curl -s -o /dev/null -w "%{http_code}" \
  -H "Content-Type: application/json" \
  -d "{\"text\": \"OMC test notification - Slack is configured!\", \"channel\": \"$CHANNEL\", \"username\": \"$USERNAME\"}" \
  "$WEBHOOK_URL"

成功または失敗を報告します。一般的な問題:

  • 401 Unauthorized: Webhook URLが無効または期限切れ
  • ネットワークエラー: hooks.slack.com への接続性を確認

ステップ 8: 確認

最終的な設定概要を表示します。

Slack通知が設定されました!

  Webhook URL: https://hooks.slack.com/services/...
  チャンネル:   #general
  ユーザー名:   OMC
  イベント:     session-end, ask-user-question

  設定保存先: ~/.claude/.omc-config.json

  環境変数でも設定可能:
    OMC_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
    OMC_SLACK_CHANNEL=#general

  再設定: /oh-my-claudecode:configure-notifications slack
  Telegram設定: /oh-my-claudecode:configure-notifications telegram
  Discord設定: /oh-my-claudecode:configure-notifications discord

環境変数による代替設定

ユーザーはこのウィザードを完全にスキップして、シェルプロファイルに環境変数を設定することもできます:

export OMC_SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
export OMC_SLACK_CHANNEL="#general"
export OMC_SLACK_USERNAME="OMC"

環境変数は、.omc-config.json がなくても通知システムによって自動検出されます。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

omc-doctor

Diagnose and fix oh-my-claudecode installation issues

関連スキル