本文へ移動
cccskills
無料GitHub で公開

geode-serve

Slack Gateway operations guide. Socket Mode credentials, config.toml bindings, serve restart, receiver debugging, reaction behavior. Triggers on "serve", "gateway", "slack", "바인딩", "binding", "소켓", "socket", "폴러", "poller", "config.toml".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md7.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

geode serve — Slack Gateway Operations Guide

Source: Distilled from Gateway debugging session (2026-03-26) Primary failure modes: missing binding, missing xapp- token, or bot not invited to a bound channel

Diagnosing a connection does not authorize credential changes, channel messages, or process restarts. Apply only the requested operation and keep credential values, fragments, and private message content out of reports.

Architecture

geode serve
  → core/wiring/adapters.py: Merge ~/.geode/config.toml + project overlay
  → SlackPoller: SLACK_APP_TOKEN present → SlackSocketModeClient.run()
  → bounded-queue admit → ACK Events API envelope → filter exact bound channel → route_message()
  → _send_response(): SlackTransport.post_message (direct Web API, thread reply)

No `SLACK_APP_TOKEN` selects an explicit degraded polling fallback. It is a
migration path, not the operational target.

Prerequisites

ItemHow to verify
SLACK_BOT_TOKENtest -n "${SLACK_BOT_TOKEN:-}" — exit status only, no value output
SLACK_APP_TOKENtest -n "${SLACK_APP_TOKEN:-}" — exit status only; app requires connections:write
App settingsSocket Mode on; bot events app_mention, message.channels
Gateway configInspect only gateway.bindings.rules in the global config and project overlay; do not dump the entire config
Slack healthWhen live diagnostics are authorized, geode doctor slack is OPERATIONAL and every binding says bot_member=True

The shell presence checks cover inherited environment variables only. An unset variable does not prove the runtime lacks a credential: the resolver also uses the global .env. Do not print or copy that file to investigate.

geode doctor slack makes live Slack calls (auth.test, apps.connections.open, and channel membership checks). Its credential rows use partial masking, not full redaction; workspace/bot identifiers also appear. Keep raw diagnostics local and report only check names, status, and redacted findings. The temporary Socket Mode URL is omitted from the successful diagnostic report.

config.toml Setup

Use .geode/config.toml.example to create a project config only when none exists. If it already exists, edit the required binding fields in place and preserve unrelated settings. Never overwrite an existing global config or project overlay with the template.

[gateway.bindings]

[[gateway.bindings.rules]]
channel = "slack"
channel_id = "C0XXXXXXXXX"  # Slack channel → Click channel name → Channel ID at bottom
auto_respond = true
require_mention = true       # true: respond only on @mention
time_budget_s = 90           # optional per-message override; otherwise inherit gateway budget
  • config.toml is in .gitignore — not deleted by git pull
  • config.toml.example is committed — reference for clean clones
  • Adding channels: Repeat [[gateway.bindings.rules]] blocks

Start/Restart

Follow Rebuild & Restart only when startup or restart is authorized. Confirm the installation, GEODE home/socket, PID, and session owner before stopping anything. The lifecycle implementation in core/cli/commands/lifecycle.py currently discovers the first matching serve PID; neither that match nor the stop command proves ownership. If several sessions match or ownership is unclear, stop and request direction.

Restart the confirmed installation through its existing launcher and retain startup diagnostics. Do not replace a managed service with an unrelated background process or discard its logs into /dev/null. Verify the requested process and socket before claiming it restarted.

Debugging Checklist

Symptom: Bot does not respond to messages

# 1. Identify the intended process/socket without stopping it (see Start/Restart).

# 2. Verify binding load
grep "binding" ~/.geode/logs/serve.log
# Expected: "Loaded N gateway bindings from config"
# If 0 → config.toml missing or parse error

# 3. Verify config source and Socket Mode
grep -i "gateway config sources" ~/.geode/logs/serve.log
# Expected: "Gateway config sources: global:... [, project:...]"

grep -E "Slack inbound mode|Slack Socket Mode connected" ~/.geode/logs/serve.log
# Expected: Socket Mode (push), then connected

# 4. Only when live Slack diagnostics are authorized; do not publish raw output.
geode doctor slack

# 5. Verify message reception after an @geode mention
grep "Slack message from" ~/.geode/logs/serve.log

Symptoms and Causes

SymptomCauseResolution
"Loaded 0 gateway bindings"Binding absent or not loaded from the merged configCheck global/project sources; add only the missing binding without replacing existing config
polling fallbackSLACK_APP_TOKEN missingIf configuration changes are authorized, set an app token with connections:write in the global credential store; restart only through the owned-process procedure
not_in_channel / bot_member=FalseBot was not invitedRun /invite @geode in the linked channel
Repeated disconnectsApp token invalid or Socket Mode disabledRun geode doctor slack, then verify app-level token and Socket Mode settings
New top-level/unengaged message receives no responserequire_mention=true but no @mentionMention @botname once or set require_mention=false
Engaged thread stops after daemon restartNo resumable ACTIVE/PAUSED checkpoint, or receiver is still pollingConfirm Socket Mode logs; re-mention once if the prior machine is terminal
Bot re-responds to its own messagesbot_message filter bypassedCheck bot_id field — if normal, check Slack App settings

Reaction Behavior

require_mention = true + first <@BOT_ID> mention:

  1. :eyes: reaction (acknowledge receipt)
  2. Normalize the root ts as thread_id and remember the engaged thread
  3. ChannelManager.aroute_message() → AgenticLoop execution
  4. :white_check_mark: reaction (complete)
  5. Send response in thread

Later human reply in that engaged thread (no repeated mention):

  1. Match channel-scoped engaged state or the durable ACTIVE/PAUSED gateway checkpoint
  2. Reuse the same session/lane/checkpoint key and restore checkpoint messages after restart
  3. Run the same :eyes: → AgenticLoop → :white_check_mark: → thread-response lifecycle

Unengaged regular message (no mention, require_mention = false):

  • Process without reaction + thread response

Related Files

FileRole
core/messaging/slack_socket_mode.pySocket URL, WebSocket ACK/reconnect loop
core/server/supervised/slack_poller.pySocket event normalization + compatibility fallback
core/messaging/binding.pyBinding management + message routing
core/messaging/slack_transport.pyBot-token Web API outbound + channel diagnostics
core/wiring/adapters.pyGateway config merge and receiver registration
.geode/config.tomlChannel bindings (local, untracked)
.geode/config.toml.exampleBinding template (committed)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Audit agent runtimes and their tests for lifecycle inference, capability overload, context pollution, correlated verification, prompt-only control, false success, dead compatibility paths, test-only seams, and complexity without contribution. Use for whole-repository agent audits, slop or dead-code triage, test contribution reviews, large refactors, tool/context simplification, and cleanup requests that need proof before deleting code or tests.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

Diagnose agent operational failures through default-policy checks, multi-gap analysis, explicit service ownership, request-context lifetime, and degradation-versus-correctness checks.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

Align, run, audit, and publish GEODE benchmark comparisons against Agent-World arXiv 2604.18292v1 across MCP-Mark, BFCL V4, and tau2-bench. Use for Agent-World or AgentWorld comparison requests, cross-suite agent benchmark design, Tau2 comparator/profile diagnosis, paired thin-runtime-versus-GEODE experiments, mean-accuracy@8 replication, or benchmark comparability and artifact reviews.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

Verification checklist to prevent fake success. Detects test deletion/disabling, coverage regression, lint bypass, secret exposure. Triggered by "deception", "fake" ("가짜"), "fake success", "verification" ("검증"), "checklist" ("체크리스트"), "deletion detection" ("삭제 탐지"), "regression" keywords.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

Auto-search and summarize latest AI/agent papers.

日本語の概要は準備中です。原文の説明を表示しています。

mangowhoiscloud/geode152026年10月12日 更新

mangowhoiscloud のスキルをすべて見る

このスキルの問題を報告する