geekbot

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Geekbot — AI-Powered Standup & Poll Management

Geekbot — AI驱动的站会与投票管理

Overview

Overview

This skill wraps the
geekbot
CLI to let users manage async team rituals conversationally. It handles two broad workflows:
  • Manager workflows — create standups/polls from templates, edit configs, manage members and schedules, analyse team engagement from report data
  • Reporter workflows — draft standup reports with AI assistance, carry over unresolved blockers, calibrate tone from history, post reports
The CLI produces structured JSON output with machine-readable error codes, making it reliable for agent-driven automation.
本Skill封装了
geekbot
CLI,支持用户通过对话方式管理异步团队仪式。它覆盖两大类工作流:
  • 管理者工作流 —— 基于模板创建站会/投票、编辑配置、管理成员与日程、基于报告数据分析团队参与度
  • 提交者工作流 —— 借助AI辅助草拟站会报告、同步未解决的阻塞问题、根据历史记录调整语气、发布报告
CLI会生成带机器可读错误码的结构化JSON输出,非常适合Agent驱动的自动化场景。

Prerequisites

前置要求

Before any operation, verify the CLI is available and authenticated.
Run
check-cli.sh
on first invocation. If it fails:
  • CLI not found: Install via
    npm install -g geekbot-cli
    (requires Bun >= 1.3.5 runtime). Note:
    npx geekbot-cli
    also requires Bun on PATH — it is not a Node.js fallback.
  • Auth not configured: Guide the user to run
    geekbot auth setup
    which stores the API key in the OS keychain. Alternatively they can set
    GEEKBOT_API_KEY
    as an environment variable.
Do not attempt any Geekbot operation until both checks pass.
执行任何操作前,请先验证CLI可用且已完成身份认证。
首次调用时运行
check-cli.sh
,如果运行失败:
  • 未找到CLI:通过
    npm install -g geekbot-cli
    安装(需要Bun >= 1.3.5运行环境)。注意:
    npx geekbot-cli
    同样要求PATH中存在Bun,不能作为Node.js的替代方案。
  • 未配置身份认证:引导用户运行
    geekbot auth setup
    ,该命令会将API密钥存储到系统钥匙串中。用户也可以将
    GEEKBOT_API_KEY
    设置为环境变量。
两项检查都通过后再执行任何Geekbot操作。

How the CLI Works

CLI工作原理

The CLI follows a noun-verb pattern:
geekbot <resource> <action> [options]
.
Every command returns a JSON envelope on stdout:
Success: { "ok": true,  "data": <T>,  "error": null,  "metadata": {...} }
Error:   { "ok": false, "data": null,  "error": { "code", "message", "retryable", "suggestion" }, "metadata": {...} }
Always check the
ok
field first. On errors, the
error.suggestion
field often contains the exact fix — including listing valid IDs when a resource isn't found. Use this to self-correct without bothering the user.
For the full command reference with flags, defaults, and examples, read
cli-commands.md
.
CLI遵循名词-动词的使用模式:
geekbot <资源> <操作> [选项]
所有命令都会在标准输出返回JSON封装结果:
Success: { "ok": true,  "data": <T>,  "error": null,  "metadata": {...} }
Error:   { "ok": false, "data": null,  "error": { "code", "message", "retryable", "suggestion" }, "metadata": {...} }
始终优先检查
ok
字段。出现错误时,
error.suggestion
字段通常会给出明确的修复方案——包括资源未找到时列出有效的ID。可以直接使用该字段自行修正,无需打扰用户。
完整的命令参考(包含参数、默认值、示例)请查看
cli-commands.md

Quick Reference

快速参考

Most common operations at a glance:
TaskCommand
List my standups
geekbot standup list
(add
--brief
for compact output,
--name
/
--channel
to filter,
--mine
for member-only,
--member <id>
for a specific user,
--limit <n>
to cap results)
Get standup details + question IDs
geekbot standup get <id>
Create a standup
geekbot standup create --name "..." --channel "..." --questions '[...]'
Update a standup (PATCH)
geekbot standup update <id> --time "09:30"
Delete a standup
geekbot standup delete <id> --yes
List reports
geekbot report list --standup-id <id> --limit 10
Submit a report
geekbot report create --standup-id <id> --answers '{"<qid>":"..."}'
My profile + user ID
geekbot me show
Create a poll (Slack only)
geekbot poll create --name "..." --channel "..." --question "..." --choices '[...]'
Search team members
geekbot team search <query>
(matches username, realname, email)
Check auth
geekbot auth status
For full flag details, see
cli-commands.md
.
最常用操作一览:
任务命令
列出我参与的站会
geekbot standup list
(添加
--brief
获取精简输出,
--name
/
--channel
筛选,
--mine
仅展示成员权限的站会,
--member <id>
查看特定用户的站会,
--limit <n>
限制返回结果数量)
获取站会详情 + 问题ID
geekbot standup get <id>
创建站会
geekbot standup create --name "..." --channel "..." --questions '[...]'
更新站会(PATCH)
geekbot standup update <id> --time "09:30"
删除站会
geekbot standup delete <id> --yes
列出报告
geekbot report list --standup-id <id> --limit 10
提交报告
geekbot report create --standup-id <id> --answers '{"<qid>":"..."}'
我的个人资料 + 用户ID
geekbot me show
创建投票(仅支持Slack)
geekbot poll create --name "..." --channel "..." --question "..." --choices '[...]'
搜索团队成员
geekbot team search <query>
(匹配用户名、真实姓名、邮箱)
检查认证状态
geekbot auth status
完整参数说明请查看
cli-commands.md

External Context Enrichment

外部上下文增强

The skill becomes dramatically more useful when it can pull data from where work actually happens. This is opportunistic — check what MCP servers are connected in the current session and use whatever is available. Never fail or complain if nothing is connected; just fall back to asking the user.
For report drafting: Pull the user's recent activity from connected MCP servers (GitHub, Jira, Calendar, Slack) and use it to pre-populate a draft. The user reviews and approves instead of writing from scratch.
For analytics: Cross-reference standup report data with delivery data to give richer insights — not just "who posted" but "what was actually shipped."
For entity mapping tables and deduplication strategy, see
reporter-workflows.md
.
Important boundaries:
  • Always show the user what data you pulled and from where
  • Never post a report containing enrichment data without user review
  • If an MCP server query fails, skip it silently and move on
  • Enrichment provides specifics (PR numbers, ticket IDs); the user's voice still drives the narrative
当Skill能从实际工作场景中拉取数据时,实用性会大幅提升。这是可选功能——检查当前会话中连接了哪些MCP服务器,使用所有可用资源即可。如果没有连接任何服务也不要报错或提示,直接回退到询问用户即可。
报告草拟场景:从已连接的MCP服务器(GitHub、Jira、日历、Slack)拉取用户近期活动,用这些数据预填充草稿。用户只需审核确认即可,无需从零开始编写。
分析场景:将站会报告数据与交付数据交叉对比,提供更丰富的洞察——不只是“谁提交了报告”,还包括“实际交付了哪些内容”。
实体映射表与去重策略请查看
reporter-workflows.md
重要边界规则
  • 始终向用户展示拉取的数据内容和来源
  • 未经用户审核,绝对不要发布包含增强数据的报告
  • 如果MCP服务器查询失败,静默跳过继续执行
  • 增强数据仅提供具体信息(PR编号、工单ID),报告的整体叙述仍以用户的表达为主

Intent Routing

意图路由

Pattern-match on the user's request to pick the right workflow. Don't ask "are you a manager or a reporter?" — the request itself makes intent clear. The same person can manage standups and submit reports in one conversation.
Route to Manager Workflows (§ below) when you see:
  • Creation/config language: "create", "set up", "configure", "schedule", "add members", "change the questions", "duplicate", "delete"
  • Analytics language: "how is my team doing", "engagement", "response rate", "who hasn't posted", "participation", "trends"
  • Member summary language: "what has X been up to", "X's reports", "1-1 prep for X", "summarize X's work", "what did X report", "catch me up on X", "X's recent standups"
  • Poll language: "create a poll", "voting results", "survey"
Route to Reporter Workflows (§ below) when you see:
  • Drafting language: "help me write", "draft my report", "what should I say", "fill in my standup"
  • Posting language: "post my answers", "submit my report"
  • Context language: "what did I say last time", "carry over blockers", "my recent reports"
  • Identity queries: "what standups am I in", "show my profile"
When ambiguous, ask one clarifying question — never more than one.
根据用户请求的模式匹配选择合适的工作流。不要问“你是管理者还是提交者?”——请求本身已经能明确意图。同一个用户可以在一次对话中既管理站会也提交报告。
满足以下特征时路由到管理者工作流(见下文章节)
  • 创建/配置相关表述:"create"、"set up"、"configure"、"schedule"、"add members"、"change the questions"、"duplicate"、"delete"
  • 分析相关表述:"how is my team doing"、"engagement"、"response rate"、"who hasn't posted"、"participation"、"trends"
  • 成员总结相关表述:"what has X been up to"、"X's reports"、"1-1 prep for X"、"summarize X's work"、"what did X report"、"catch me up on X"、"X's recent standups"
  • 投票相关表述:"create a poll"、"voting results"、"survey"
满足以下特征时路由到提交者工作流(见下文章节)
  • 草拟相关表述:"help me write"、"draft my report"、"what should I say"、"fill in my standup"
  • 发布相关表述:"post my answers"、"submit my report"
  • 上下文相关表述:"what did I say last time"、"carry over blockers"、"my recent reports"
  • 身份查询相关表述:"what standups am I in"、"show my profile"
意图不明确时,最多问一个澄清问题,不要多次询问。

Manager Workflows

管理者工作流

For detailed multi-step guides, read
manager-workflows.md
.
详细的多步骤指南请查看
manager-workflows.md

Creating a Standup

创建站会

This is the most common and most complex manager operation.
If the request is vague ("set up a standup for my team"), offer templates. Load
standup-templates.json
and present the 3–4 most relevant options based on context. Templates provide pre-built questions and sensible schedule defaults — the user just needs to supply a name and Slack/Teams channel.
Gathering required fields:
  • --name
    — the standup name (required)
  • --channel
    — Slack/Teams channel to post in (required)
  • --questions
    — JSON array of question objects (required; from template or custom)
  • --time
    — defaults to 10:00 if not specified
  • --timezone
    — infer from
    geekbot me show
    data.timezone
    if not given
  • --days
    — defaults to Mon–Fri
  • --users
    — comma-separated user IDs (can add later via
    update
    )
Always confirm the full configuration with the user before executing. Show: name, channel, questions, schedule, timezone.
Note: The CLI sets which days of the week to run but cannot set frequency (bi-weekly, monthly). For non-weekly schedules, create the standup via CLI and tell the user to adjust the frequency in the Geekbot web dashboard.
这是最常见也最复杂的管理者操作。
如果请求比较模糊(比如"set up a standup for my team"),提供模板选项。加载
standup-templates.json
,根据上下文展示3-4个最相关的选项。模板提供预设的问题和合理的日程默认值,用户只需提供站会名称和Slack/Teams频道即可。
收集必填字段
  • --name
    —— 站会名称(必填)
  • --channel
    —— 发布站会的Slack/Teams频道(必填)
  • --questions
    —— 问题对象的JSON数组(必填,可以来自模板或自定义)
  • --time
    —— 未指定时默认10:00
  • --timezone
    —— 未指定时从
    geekbot me show
    返回的
    data.timezone
    推断
  • --days
    —— 默认周一到周五
  • --users
    —— 逗号分隔的用户ID(可以后续通过
    update
    添加)
执行前务必向用户确认完整配置,展示内容包括:名称、频道、问题、日程、时区。
注意:CLI可以设置每周运行的天数,但无法设置频率(双周、月度)。对于非每周的日程,通过CLI创建站会后,告知用户可以在Geekbot网页控制面板中调整频率。

Editing / Deleting / Other Operations

编辑/删除/其他操作

  • Edit: Fetch current state with
    standup get
    , show the user, confirm changes, use
    standup update
    (PATCH). Use
    standup replace
    only for full config replacement.
  • Delete: Always fetch and show what will be deleted first. Get explicit confirmation. Execute with
    --yes
    .
  • Duplicate:
    geekbot standup duplicate <id> --name "New Name"
  • Trigger now:
    geekbot standup start <id>
    — confirm before executing.
  • Polls (Slack only): See
    cli-commands.md
    for poll commands.
  • 编辑:通过
    standup get
    获取当前配置,展示给用户,确认修改后使用
    standup update
    (PATCH)。仅在需要全量替换配置时使用
    standup replace
  • 删除:始终先拉取并展示即将删除的内容,获取用户明确确认后执行,执行时添加
    --yes
    参数。
  • 复制
    geekbot standup duplicate <id> --name "New Name"
  • 立即触发
    geekbot standup start <id>
    —— 执行前确认。
  • 投票(仅支持Slack):投票命令请查看
    cli-commands.md

Analytics

分析

Analytics come from report data fetched via the CLI. The skill computes metrics; the CLI provides raw data. For the full analytics playbook with 6 named analysis patterns (response rate, participation gaps, blocker frequency, trends, answer quality, cross-referencing), read
manager-workflows.md
.
Quick start: Identify the standup with
standup list
, get member count with
standup get <id>
, fetch reports with
report list --standup-id <id> --after <date> --limit 100
, then compute.
分析数据来自CLI拉取的报告原始数据,由Skill计算指标。完整的分析指南包含6种命名分析模式(回复率、参与缺口、阻塞问题频率、趋势、回答质量、交叉对比),请查看
manager-workflows.md
快速入门:通过
standup list
确定目标站会,通过
standup get <id>
获取成员数量,通过
report list --standup-id <id> --after <date> --limit 100
拉取报告,再计算相关指标。

Team Member Summary

团队成员总结

Summarize what a specific person has been working on — ideal for 1-1 prep. For the full step-by-step workflow, read
manager-workflows.md
§Team Member Summary.
Quick start:
geekbot team search <name>
→ get user ID →
geekbot standup list --member <id> --brief
to find their standups →
geekbot report list --standup-id <sid> --user-id <id> --after <3 weeks ago> --limit 20
→ synthesize by work stream, not chronologically.
总结特定成员的工作内容——非常适合1对1沟通准备。完整的分步工作流请查看
manager-workflows.md
的§团队成员总结章节。
快速入门
geekbot team search <name>
→ 获取用户ID →
geekbot standup list --member <id> --brief
查找该用户参与的站会 →
geekbot report list --standup-id <sid> --user-id <id> --after <3 weeks ago> --limit 20
→ 按工作流合成总结,而非按时间顺序排列。

Reporter Workflows

提交者工作流

For the full drafting pipeline, tone calibration, blocker carry-over logic, and edge cases, read
reporter-workflows.md
.
完整的草拟流程、语气校准、阻塞问题同步逻辑、边缘场景处理请查看
reporter-workflows.md

Report Drafting Pipeline (Summary)

报告草拟流程(摘要)

  1. Identify the standup
    standup list
    , auto-select if only one
  2. Fetch questions
    standup get <id>
    → extract question IDs and text
  3. Gather context — from MCP servers (if connected), previous reports (for style calibration), and the user's direct input
  4. Draft answers — match their historical tone/length, weave in specifics from MCP data, run blocker carry-over check on last 3–5 reports
  5. Review and post — present draft, get explicit approval, then
    report create --standup-id <id> --answers '{...}'
Never post a report without explicit user approval.
  1. 确定目标站会 —— 调用
    standup list
    ,如果只有一个则自动选择
  2. 拉取问题列表 —— 调用
    standup get <id>
    → 提取问题ID和内容
  3. 收集上下文 —— 从MCP服务器(如果已连接)、历史报告(用于风格校准)、用户直接输入中获取信息
  4. 草拟回答 —— 匹配用户历史的语气/篇幅,整合MCP数据中的具体信息,检查过往3-5份报告同步未解决的阻塞问题
  5. 审核与发布 —— 展示草稿,获取用户明确批准后,执行
    report create --standup-id <id> --answers '{...}'
未经用户明确批准,绝对不要发布报告。

Quick Actions

快捷操作

One-shot commands that don't need the full pipeline:
  • "What standups am I in?"
    geekbot standup list
  • "Show my recent reports"
    geekbot report list --user-id <uid> --limit 5
  • "Show my profile"
    geekbot me show
  • "What teams am I in?"
    geekbot me teams
  • "Trigger my standup now" → confirm first, then
    geekbot standup start <id>
不需要完整流程的一次性命令:
  • "What standups am I in?"
    geekbot standup list
  • "Show my recent reports"
    geekbot report list --user-id <uid> --limit 5
  • "Show my profile"
    geekbot me show
  • "What teams am I in?"
    geekbot me teams
  • "Trigger my standup now" → 先确认,再执行
    geekbot standup start <id>

Confirmation Policy

确认规则

OperationConfirmation required?What to show
CREATE standup/pollYesFull config: name, channel, questions, schedule
UPDATE standupYesCurrent vs proposed (diff)
DELETE standupYes, alwaysWhat will be deleted (name, channel, members)
POST reportYes, alwaysComplete draft with all answers
TRIGGER standupYesWhich standup, who it targets
List / Get / AnalyticsNoJust execute and present results
Error recovery retriesNoTransparent to user
操作是否需要确认?需要展示的内容
创建站会/投票完整配置:名称、频道、问题、日程
更新站会当前配置与修改内容的对比
删除站会始终需要即将删除的内容(名称、频道、成员)
发布报告始终需要包含所有回答的完整草稿
触发站会目标站会、通知对象
查询/获取/分析直接执行并展示结果
错误恢复重试对用户透明

Error Handling

错误处理

For the complete recovery guide, read
error-recovery.md
.
Core pattern: always parse the JSON envelope, check
ok
, branch on exit code.
Exit codeMeaningAgent action
0SuccessProceed normally
3Not foundParse
error.suggestion
— it lists valid IDs. Offer them to the user.
4Auth failedGuide user through
geekbot auth setup
. Do not retry.
5ForbiddenExplain permission issue. The user may need admin access.
6ValidationShow
error.message
, help the user fix the input.
7NetworkIf
error.retryable
is true, retry once after 2s silently. If it fails again, report.
8ConflictExplain the conflict (e.g., duplicate name). Suggest resolution.
9Schema validation (
schema_validation_error
)
API response didn't match expected format. Don't ask user to fix input — suggest updating CLI or reporting a bug.
1, 2, 9General / usage / APIReport
error.message
to the user clearly.
Never retry errors where
retryable
is false.
完整的恢复指南请查看
error-recovery.md
核心模式:始终解析JSON封装结果,检查
ok
字段,根据退出码分支处理。
退出码含义Agent操作
0成功正常继续
3资源未找到解析
error.suggestion
,其中会列出有效ID,提供给用户选择
4认证失败引导用户执行
geekbot auth setup
,不要重试
5无权限说明权限问题,用户可能需要管理员权限
6校验失败展示
error.message
,帮助用户修正输入
7网络错误如果
error.retryable
为true,静默等待2秒后重试一次,如果再次失败则上报
8冲突说明冲突原因(比如名称重复),给出解决方案建议
9结构校验失败(
schema_validation_error
API返回格式不符合预期,不要让用户修正输入,建议升级CLI或提交bug反馈
1、2、9通用/使用/API错误清晰地向用户上报
error.message
retryable
为false的错误绝对不要重试

Common Mistakes

常见错误

  • Inventing report answers — if the user didn't provide enough context for a question, ask. Never guess or fabricate.
  • Retrying auth errors — exit code 4 is never transient. Guide the user to
    geekbot auth setup
    instead.
  • Skipping confirmation for deletes — always show what will be deleted and get explicit approval, even if it feels obvious.
  • Dumping raw JSON — format output as tables, summaries, or narratives. The user should never see a raw JSON envelope.
  • Ignoring
    error.suggestion
    — when a resource isn't found (exit 3), the CLI already lists valid alternatives. Use them.
  • Asking "are you a manager or reporter?" — the request itself reveals intent. Pattern-match, don't interrogate.
  • 编造报告回答 —— 如果用户没有提供足够的问题上下文,直接询问,永远不要猜测或编造内容。
  • 重试认证错误 —— 退出码4永远不是临时错误,直接引导用户执行
    geekbot auth setup
    即可。
  • 删除操作跳过确认 —— 始终展示即将删除的内容并获取明确批准,哪怕看起来是很明显的操作。
  • 输出原始JSON —— 将输出格式化为表格、摘要或叙述内容,永远不要让用户看到原始的JSON封装结果。
  • 忽略
    error.suggestion
    —— 当资源未找到(退出码3)时,CLI已经列出了有效的替代选项,直接使用即可。
  • 询问“你是管理者还是提交者?” —— 请求本身已经透露了意图,做模式匹配即可,不要询问用户。

Output Patterns

输出模式

CRUD confirmations — brief, factual, include key identifiers:
Created "Sprint Retro" standup (ID 789) in #engineering — Fridays at 15:00 Chicago time with 3 questions.
Lists — concise table: ID, name, channel, schedule. Don't dump raw JSON.
Analytics — narrative summary first, data table for details. Use visualisation (chart/graph) when showing trends over time.
Report drafts — one question per block, clearly labelled with question text and proposed answer. Easy to scan and approve.
Errors — plain language: what happened, why, what to do next. Always use
error.suggestion
when available.
CRUD操作确认 —— 简洁、 factual,包含关键标识:
已创建"Sprint Retro"站会(ID 789),位于#engineering频道 —— 芝加哥时间每周五15:00,包含3个问题。
列表 —— 精简表格:ID、名称、频道、日程,不要输出原始JSON。
分析结果 —— 先给出叙述性摘要,再附上数据表展示细节。展示时间趋势时使用可视化(图表/图形)。
报告草稿 —— 每个问题单独成块,清晰标注问题内容和建议回答,方便用户浏览和批准。
错误 —— 通俗易懂的语言:发生了什么、原因、下一步操作。可用时始终使用
error.suggestion
的内容。