geekbot
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGeekbot — AI-Powered Standup & Poll Management
Geekbot — AI驱动的站会与投票管理
Overview
Overview
This skill wraps the CLI to let users manage async team rituals
conversationally. It handles two broad workflows:
geekbot- 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封装了 CLI,支持用户通过对话方式管理异步团队仪式。它覆盖两大类工作流:
geekbot- 管理者工作流 —— 基于模板创建站会/投票、编辑配置、管理成员与日程、基于报告数据分析团队参与度
- 提交者工作流 —— 借助AI辅助草拟站会报告、同步未解决的阻塞问题、根据历史记录调整语气、发布报告
CLI会生成带机器可读错误码的结构化JSON输出,非常适合Agent驱动的自动化场景。
Prerequisites
前置要求
Before any operation, verify the CLI is available and authenticated.
Run on first invocation. If it fails:
check-cli.sh- CLI not found: Install via (requires Bun >= 1.3.5 runtime). Note:
npm install -g geekbot-clialso requires Bun on PATH — it is not a Node.js fallback.npx geekbot-cli - Auth not configured: Guide the user to run which stores the API key in the OS keychain. Alternatively they can set
geekbot auth setupas an environment variable.GEEKBOT_API_KEY
Do not attempt any Geekbot operation until both checks pass.
执行任何操作前,请先验证CLI可用且已完成身份认证。
首次调用时运行,如果运行失败:
check-cli.sh- 未找到CLI:通过安装(需要Bun >= 1.3.5运行环境)。注意:
npm install -g geekbot-cli同样要求PATH中存在Bun,不能作为Node.js的替代方案。npx geekbot-cli - 未配置身份认证:引导用户运行,该命令会将API密钥存储到系统钥匙串中。用户也可以将
geekbot auth setup设置为环境变量。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 field first. On errors, the 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.
okerror.suggestionFor the full command reference with flags, defaults, and examples, read
.
cli-commands.mdCLI遵循名词-动词的使用模式:。
geekbot <资源> <操作> [选项]所有命令都会在标准输出返回JSON封装结果:
Success: { "ok": true, "data": <T>, "error": null, "metadata": {...} }
Error: { "ok": false, "data": null, "error": { "code", "message", "retryable", "suggestion" }, "metadata": {...} }始终优先检查字段。出现错误时,字段通常会给出明确的修复方案——包括资源未找到时列出有效的ID。可以直接使用该字段自行修正,无需打扰用户。
okerror.suggestion完整的命令参考(包含参数、默认值、示例)请查看。
cli-commands.mdQuick Reference
快速参考
Most common operations at a glance:
| Task | Command |
|---|---|
| List my standups | |
| Get standup details + question IDs | |
| Create a standup | |
| Update a standup (PATCH) | |
| Delete a standup | |
| List reports | |
| Submit a report | |
| My profile + user ID | |
| Create a poll (Slack only) | |
| Search team members | |
| Check auth | |
For full flag details, see .
cli-commands.md最常用操作一览:
| 任务 | 命令 |
|---|---|
| 列出我参与的站会 | |
| 获取站会详情 + 问题ID | |
| 创建站会 | |
| 更新站会(PATCH) | |
| 删除站会 | |
| 列出报告 | |
| 提交报告 | |
| 我的个人资料 + 用户ID | |
| 创建投票(仅支持Slack) | |
| 搜索团队成员 | |
| 检查认证状态 | |
完整参数说明请查看。
cli-commands.mdExternal 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.mdImportant 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.mdCreating 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 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.
standup-templates.jsonGathering required fields:
- — the standup name (required)
--name - — Slack/Teams channel to post in (required)
--channel - — JSON array of question objects (required; from template or custom)
--questions - — defaults to 10:00 if not specified
--time - — infer from
--timezone→geekbot me showif not givendata.timezone - — defaults to Mon–Fri
--days - — comma-separated user IDs (can add later via
--users)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"),提供模板选项。加载,根据上下文展示3-4个最相关的选项。模板提供预设的问题和合理的日程默认值,用户只需提供站会名称和Slack/Teams频道即可。
standup-templates.json收集必填字段:
- —— 站会名称(必填)
--name - —— 发布站会的Slack/Teams频道(必填)
--channel - —— 问题对象的JSON数组(必填,可以来自模板或自定义)
--questions - —— 未指定时默认10:00
--time - —— 未指定时从
--timezone返回的geekbot me show推断data.timezone - —— 默认周一到周五
--days - —— 逗号分隔的用户ID(可以后续通过
--users添加)update
执行前务必向用户确认完整配置,展示内容包括:名称、频道、问题、日程、时区。
注意:CLI可以设置每周运行的天数,但无法设置频率(双周、月度)。对于非每周的日程,通过CLI创建站会后,告知用户可以在Geekbot网页控制面板中调整频率。
Editing / Deleting / Other Operations
编辑/删除/其他操作
- Edit: Fetch current state with , show the user, confirm changes, use
standup get(PATCH). Usestandup updateonly for full config replacement.standup replace - 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: — confirm before executing.
geekbot standup start <id> - Polls (Slack only): See for poll commands.
cli-commands.md
- 编辑:通过获取当前配置,展示给用户,确认修改后使用
standup get(PATCH)。仅在需要全量替换配置时使用standup update。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.mdQuick start: Identify the standup with , get member count
with , fetch reports with
, then compute.
standup liststandup get <id>report list --standup-id <id> --after <date> --limit 100分析数据来自CLI拉取的报告原始数据,由Skill计算指标。完整的分析指南包含6种命名分析模式(回复率、参与缺口、阻塞问题频率、趋势、回答质量、交叉对比),请查看。
manager-workflows.md快速入门:通过确定目标站会,通过获取成员数量,通过拉取报告,再计算相关指标。
standup liststandup get <id>report list --standup-id <id> --after <date> --limit 100Team Member Summary
团队成员总结
Summarize what a specific person has been working on — ideal for 1-1 prep.
For the full step-by-step workflow, read §Team Member
Summary.
manager-workflows.mdQuick start: → get user ID →
to find their standups →
→
synthesize by work stream, not chronologically.
geekbot team search <name>geekbot standup list --member <id> --briefgeekbot report list --standup-id <sid> --user-id <id> --after <3 weeks ago> --limit 20总结特定成员的工作内容——非常适合1对1沟通准备。完整的分步工作流请查看的§团队成员总结章节。
manager-workflows.md快速入门: → 获取用户ID → 查找该用户参与的站会 → → 按工作流合成总结,而非按时间顺序排列。
geekbot team search <name>geekbot standup list --member <id> --briefgeekbot report list --standup-id <sid> --user-id <id> --after <3 weeks ago> --limit 20Reporter Workflows
提交者工作流
For the full drafting pipeline, tone calibration, blocker carry-over logic,
and edge cases, read .
reporter-workflows.md完整的草拟流程、语气校准、阻塞问题同步逻辑、边缘场景处理请查看。
reporter-workflows.mdReport Drafting Pipeline (Summary)
报告草拟流程(摘要)
- Identify the standup — , auto-select if only one
standup list - Fetch questions — → extract question IDs and text
standup get <id> - Gather context — from MCP servers (if connected), previous reports (for style calibration), and the user's direct input
- Draft answers — match their historical tone/length, weave in specifics from MCP data, run blocker carry-over check on last 3–5 reports
- Review and post — present draft, get explicit approval, then
report create --standup-id <id> --answers '{...}'
Never post a report without explicit user approval.
- 确定目标站会 —— 调用,如果只有一个则自动选择
standup list - 拉取问题列表 —— 调用→ 提取问题ID和内容
standup get <id> - 收集上下文 —— 从MCP服务器(如果已连接)、历史报告(用于风格校准)、用户直接输入中获取信息
- 草拟回答 —— 匹配用户历史的语气/篇幅,整合MCP数据中的具体信息,检查过往3-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
确认规则
| Operation | Confirmation required? | What to show |
|---|---|---|
| CREATE standup/poll | Yes | Full config: name, channel, questions, schedule |
| UPDATE standup | Yes | Current vs proposed (diff) |
| DELETE standup | Yes, always | What will be deleted (name, channel, members) |
| POST report | Yes, always | Complete draft with all answers |
| TRIGGER standup | Yes | Which standup, who it targets |
| List / Get / Analytics | No | Just execute and present results |
| Error recovery retries | No | Transparent to user |
| 操作 | 是否需要确认? | 需要展示的内容 |
|---|---|---|
| 创建站会/投票 | 是 | 完整配置:名称、频道、问题、日程 |
| 更新站会 | 是 | 当前配置与修改内容的对比 |
| 删除站会 | 始终需要 | 即将删除的内容(名称、频道、成员) |
| 发布报告 | 始终需要 | 包含所有回答的完整草稿 |
| 触发站会 | 是 | 目标站会、通知对象 |
| 查询/获取/分析 | 否 | 直接执行并展示结果 |
| 错误恢复重试 | 否 | 对用户透明 |
Error Handling
错误处理
For the complete recovery guide, read .
error-recovery.mdCore pattern: always parse the JSON envelope, check , branch on
exit code.
ok| Exit code | Meaning | Agent action |
|---|---|---|
| 0 | Success | Proceed normally |
| 3 | Not found | Parse |
| 4 | Auth failed | Guide user through |
| 5 | Forbidden | Explain permission issue. The user may need admin access. |
| 6 | Validation | Show |
| 7 | Network | If |
| 8 | Conflict | Explain the conflict (e.g., duplicate name). Suggest resolution. |
| 9 | Schema validation ( | API response didn't match expected format. Don't ask user to fix input — suggest updating CLI or reporting a bug. |
| 1, 2, 9 | General / usage / API | Report |
Never retry errors where is false.
retryable完整的恢复指南请查看。
error-recovery.md核心模式:始终解析JSON封装结果,检查字段,根据退出码分支处理。
ok| 退出码 | 含义 | Agent操作 |
|---|---|---|
| 0 | 成功 | 正常继续 |
| 3 | 资源未找到 | 解析 |
| 4 | 认证失败 | 引导用户执行 |
| 5 | 无权限 | 说明权限问题,用户可能需要管理员权限 |
| 6 | 校验失败 | 展示 |
| 7 | 网络错误 | 如果 |
| 8 | 冲突 | 说明冲突原因(比如名称重复),给出解决方案建议 |
| 9 | 结构校验失败( | API返回格式不符合预期,不要让用户修正输入,建议升级CLI或提交bug反馈 |
| 1、2、9 | 通用/使用/API错误 | 清晰地向用户上报 |
retryableCommon 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 instead.
geekbot auth setup - 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 — when a resource isn't found (exit 3), the CLI already lists valid alternatives. Use them.
error.suggestion - Asking "are you a manager or reporter?" — the request itself reveals intent. Pattern-match, don't interrogate.
- 编造报告回答 —— 如果用户没有提供足够的问题上下文,直接询问,永远不要猜测或编造内容。
- 重试认证错误 —— 退出码4永远不是临时错误,直接引导用户执行即可。
geekbot auth setup - 删除操作跳过确认 —— 始终展示即将删除的内容并获取明确批准,哪怕看起来是很明显的操作。
- 输出原始JSON —— 将输出格式化为表格、摘要或叙述内容,永远不要让用户看到原始的JSON封装结果。
- 忽略—— 当资源未找到(退出码3)时,CLI已经列出了有效的替代选项,直接使用即可。
error.suggestion - 询问“你是管理者还是提交者?” —— 请求本身已经透露了意图,做模式匹配即可,不要询问用户。
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 when available.
error.suggestionCRUD操作确认 —— 简洁、 factual,包含关键标识:
已创建"Sprint Retro"站会(ID 789),位于#engineering频道 —— 芝加哥时间每周五15:00,包含3个问题。
列表 —— 精简表格:ID、名称、频道、日程,不要输出原始JSON。
分析结果 —— 先给出叙述性摘要,再附上数据表展示细节。展示时间趋势时使用可视化(图表/图形)。
报告草稿 —— 每个问题单独成块,清晰标注问题内容和建议回答,方便用户浏览和批准。
错误 —— 通俗易懂的语言:发生了什么、原因、下一步操作。可用时始终使用的内容。
error.suggestion