본문으로 건너뛰기
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".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Slack
설치 방법 보기

포함된 파일(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)

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

Auto-search and summarize latest AI/agent papers.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mangowhoiscloud/geode152026년 10월 19일 업데이트

mangowhoiscloud의 스킬 모두 보기

이 스킬의 문제 신고