{
  "schema": "awesome.bot.handbook/1",
  "checkedAt": "2026-10-25",
  "title": {
    "zh": "Awesome Bot 使用手册",
    "en": "Awesome Bot Handbook"
  },
  "intro": {
    "zh": "为新手、团队与开发者提供从第一件小事到角色交接和版本发布的操作指南。先读懂配置，再用材料和验收把任务做实。",
    "en": "A practical guide for beginners, teams, and developers, from a first small task to role handoffs and versioned releases. Understand the configuration, then ground each task in materials and acceptance criteria."
  },
  "paths": [
    {
      "id": "start",
      "title": {
        "zh": "新手：先交付一个结果",
        "en": "Beginner: deliver one result"
      },
      "summary": {
        "zh": "理解入口，完成虚构练习，再选择配置。",
        "en": "Understand entry points, finish a fictional exercise, then choose a configuration."
      },
      "chapters": [
        "start",
        "concepts",
        "instructions",
        "choose-import",
        "scenarios",
        "troubleshooting"
      ],
      "practiceLinks": [
        {
          "chapter": "start",
          "section": "exercise",
          "label": {
            "zh": "从一份虚构周报开始",
            "en": "Start with a fictional weekly report"
          }
        },
        {
          "chapter": "scenarios",
          "section": "practice-weekly-report",
          "label": {
            "zh": "再练：区分交付、测试与验收",
            "en": "Next exercise: delivery, testing, and acceptance"
          }
        }
      ],
      "completionChecks": [
        {
          "chapter": "start",
          "section": "accept",
          "text": {
            "zh": "核对每项结论的来源，保留未知项；参考示例不必逐字照抄。",
            "en": "Check the source of each claim and keep unknowns explicit; the reference is not a wording template."
          }
        },
        {
          "chapter": "instructions",
          "section": "iterate",
          "text": {
            "zh": "针对一个具体缺口修订，再保存自己的任务、材料与结果。",
            "en": "Revise one specific gap, then save your task, inputs, and result."
          }
        },
        {
          "chapter": "choose-import",
          "section": "compare",
          "text": {
            "zh": "能分清阅读、下载与宿主导入；如有导入，保留本次核对记录。",
            "en": "Distinguish reading, downloading, and host import; if you imported, keep a verification record."
          }
        }
      ]
    },
    {
      "id": "team",
      "title": {
        "zh": "团队：明确职责与交接",
        "en": "Team: define ownership and handoffs"
      },
      "summary": {
        "zh": "用角色分工、任务卡和审阅人组织协作。",
        "en": "Coordinate with role ownership, task cards, and named reviewers."
      },
      "chapters": [
        "concepts",
        "team",
        "instructions",
        "scenarios",
        "agents",
        "troubleshooting"
      ],
      "practiceLinks": [
        {
          "chapter": "team",
          "section": "handoff",
          "label": {
            "zh": "先练一次退回、修订与重新接收",
            "en": "Practice returning, revising, and accepting a handoff"
          }
        },
        {
          "chapter": "scenarios",
          "section": "practice-customer-meeting",
          "label": {
            "zh": "接着交接事实表与会前简报",
            "en": "Then hand off a fact table and meeting brief"
          }
        }
      ],
      "completionChecks": [
        {
          "chapter": "team",
          "section": "owners",
          "text": {
            "zh": "本次任务有明确的负责人、接收者和审阅人。",
            "en": "Name the task owner, recipient, and reviewer."
          }
        },
        {
          "chapter": "team",
          "section": "handoff",
          "text": {
            "zh": "能追踪退回原因、补齐材料和接受的版本；旧产物已重新核对。",
            "en": "Track the return reason, added materials, and accepted version; recheck affected earlier outputs."
          }
        },
        {
          "chapter": "scenarios",
          "section": "practice-customer-meeting",
          "text": {
            "zh": "交给下一角色的材料保留来源与未知项；事实表和最终简报分别验收。",
            "en": "Keep sources and unknowns in the next role's inputs; review the fact table and final brief separately."
          }
        }
      ]
    },
    {
      "id": "developer",
      "title": {
        "zh": "开发者：读取、校验和贡献",
        "en": "Developer: read, verify, and contribute"
      },
      "summary": {
        "zh": "从本地快照校验与缺陷复验练习入手，再查贡献、排错和格式契约。",
        "en": "Start with local snapshot verification and a bug-retest exercise, then consult contribution, troubleshooting and file contracts."
      },
      "chapters": [
        "concepts",
        "scenarios",
        "agents",
        "contribute",
        "troubleshooting",
        "reference"
      ],
      "practiceLinks": [
        {
          "chapter": "agents",
          "section": "local-lab",
          "label": {
            "zh": "运行本地快照正例与失败例",
            "en": "Run the local snapshot success and failure cases"
          }
        },
        {
          "chapter": "scenarios",
          "section": "practice-bug-retest",
          "label": {
            "zh": "练习编写有边界的复验计划",
            "en": "Practice a bounded retest plan"
          }
        }
      ],
      "completionChecks": [
        {
          "chapter": "agents",
          "section": "local-lab",
          "text": {
            "zh": "本地校验依次出现两行 PASS，退出码为 0；篡改副本被拒绝，原文件保持不变。",
            "en": "The local check prints both PASS lines in order and exits 0; it rejects the altered copy without changing original files."
          }
        },
        {
          "chapter": "scenarios",
          "section": "practice-bug-retest",
          "text": {
            "zh": "能区分复验计划和真实测试结果，记录当前缺少的环境或证据。",
            "en": "Distinguish a retest plan from a real test result and record missing environment access or evidence."
          }
        },
        {
          "chapter": "contribute",
          "section": "checks",
          "text": {
            "zh": "如有贡献，检查双语生成物与版本契约，并保存可复现的验证记录。",
            "en": "If contributing, check bilingual output and version contracts, and keep reproducible verification records."
          }
        }
      ]
    }
  ],
  "chapters": [
    {
      "id": "start",
      "title": {
        "zh": "完成第一件小事",
        "en": "Finish your first small task"
      },
      "summary": {
        "zh": "用虚构材料交付一份可检查的短报告。",
        "en": "Use fictional materials to deliver a checkable short report."
      },
      "audiences": [
        "start"
      ],
      "sections": [
        {
          "id": "route",
          "title": {
            "zh": "选择学习路径",
            "en": "Choose a learning path"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "新手先做本章练习；团队读完基础概念后安排交接；开发者可直接进入本地快照实验。按路径阅读时，章末会接到本路径的下一章。无需下载整个目录。",
                "en": "Beginners can start with this exercise. Teams can learn the concepts and arrange handoffs. Developers can go directly to the local snapshot lab. In a reading path, the chapter footer leads to the next chapter on that path. There is no need to download the whole catalogue."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "新手：开始本章练习",
                    "en": "Beginner: start this exercise"
                  },
                  "url": {
                    "zh": "./handbook-start.html?path=start#exercise",
                    "en": "./handbook-start.en.html?path=start#exercise"
                  }
                },
                {
                  "label": {
                    "zh": "团队协作",
                    "en": "Team collaboration"
                  },
                  "url": {
                    "zh": "./handbook-team.html?path=team",
                    "en": "./handbook-team.en.html?path=team"
                  }
                },
                {
                  "label": {
                    "zh": "开发者：本地快照实验",
                    "en": "Developer: local snapshot lab"
                  },
                  "url": {
                    "zh": "./handbook-agents.html?path=developer#local-lab",
                    "en": "./handbook-agents.en.html?path=developer#local-lab"
                  }
                }
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "开始前：已有能处理文本的 Agent 就能练习，无需先购买账号。Copy for Agent 是复制上下文，下载是保存文件，导入是让宿主读取配置；三者是不同动作。导入入口以实际宿主为准。",
                "en": "Before starting, any existing Agent that handles text can do this exercise; no account purchase is required first. Copy for Agent copies context, download saves a file, and import asks a host to read configuration. These are separate actions. Use the import entry available in your actual host."
              }
            }
          ]
        },
        {
          "id": "exercise",
          "title": {
            "zh": "用虚构材料写一次周报",
            "en": "Write a fictional weekly report"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "先完整复制下方“练习任务与材料”，贴给当前能处理文本的 Agent，生成第一份周报草稿；这一步无需下载或导入，也不需要连接真实邮箱或项目账号。可选用“进度报告编辑”的角色资料，仍服从 Agent 的原有指令。",
                "en": "Copy the entire “Practice task and materials” block below into your existing text-capable Agent to produce the first weekly report draft. This step needs no download, import, real mailbox or project account. Optionally use Status Report Writer role context, subject to the Agent’s existing instructions."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "请根据虚构材料写一份不超过180字的周报草稿。\n目标：周五交付报名页。\n记录A（周三）：表单页面已完成，尚未测试。\n记录B（周四）：桌面测试通过；手机测试未开始。\n记录C（周四）：文案等待小林确认，预计周五上午回复。\n产物：目标、已验证进展、待验收、阻塞、下一步五项。\n验收：引用A/B/C；不把页面完成写成全部验收；缺负责人时标待确认。\n边界：只出草稿，不发布、不联系任何人。",
                "en": "Write a weekly status draft of no more than 120 words from these fictional records.\nGoal: deliver a registration page on Friday.\nRecord A (Wednesday): form page complete; not tested.\nRecord B (Thursday): desktop tests passed; mobile tests not started.\nRecord C (Thursday): copy awaits Alex's approval, expected Friday morning.\nOutput: goal, verified progress, pending acceptance, blockers, next steps.\nAcceptance: cite A/B/C; do not equate page completion with full acceptance; mark missing owners as unconfirmed.\nBoundary: draft only. Do not publish or contact anyone."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "以下是预先编写的教学参考，不是实际 Bot 运行结果。措辞不必一致，但五项和证据边界应保留；编号对应原记录。",
                "en": "The following is a prepared teaching reference, not an actual Bot run. Wording may vary, but preserve the five items and evidence limits. Numbered citations identify the original records."
              }
            },
            {
              "type": "code",
              "text": {
                "zh": "目标：周五交付报名页。\n已验证进展：表单完成[A]，桌面测试通过[B]。\n待验收：手机测试未开始[B]。\n阻塞：文案待小林确认，预计周五上午回复[C]。\n下一步：补手机测试，负责人待确认；跟进文案，再验收。",
                "en": "Goal: deliver the registration page on Friday.\nVerified progress: form complete [A]; desktop tests passed [B].\nPending acceptance: mobile tests not started [B].\nBlocker: copy awaits Alex, expected Friday morning [C].\nNext: arrange mobile testing (owner unconfirmed), follow up on copy, then review acceptance."
              },
              "language": "text",
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "错误句：“报名页已全部验收。”定点修订提示：“只修订这句：桌面已通过；手机未开始；文案待确认。引用B/C，不改其他已核对内容。”",
                "en": "Incorrect: “The registration page has passed full acceptance.” Targeted revision prompt: “Revise only this sentence: desktop passed; mobile not started; copy pending. Cite B/C and retain other checked content.”"
              }
            }
          ]
        },
        {
          "id": "accept",
          "title": {
            "zh": "检查结果并修订",
            "en": "Check and revise the result"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "核对五项是否齐全，桌面和手机测试是否分开。",
                  "en": "Check all five sections and distinguish desktop from mobile testing."
                },
                {
                  "zh": "每个完成声明都要有记录；删除无依据的句子或标为未知。",
                  "en": "Match completion claims to records; remove unsupported sentences or mark them unknown."
                },
                {
                  "zh": "只指出具体缺口，让 Agent 修订这份草稿，再保存任务和结果。",
                  "en": "Name precise gaps, ask the Agent to revise the draft, and save both the task and result."
                }
              ]
            }
          ]
        },
        {
          "id": "next",
          "title": {
            "zh": "换成自己的材料",
            "en": "Use your own materials"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "替换目标、记录与验收条件，再用少量脱敏材料试一次。读取真实文件或账号前，在宿主中确认工具与本次任务授权。一次练习成功不代表所有账号任务都已认证。",
                "en": "Replace the goal, records, and acceptance criteria, then try a small sanitized sample. Before reading real files or accounts, confirm tools and task authorization in the host. One successful exercise does not certify every account task."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "找进度报告编辑",
                    "en": "Find Status Report Writer"
                  },
                  "url": {
                    "zh": "./?bot=awesome%2Fstatus-report-writer",
                    "en": "./?lang=en&bot=awesome%2Fstatus-report-writer"
                  }
                },
                {
                  "label": {
                    "zh": "选择与导入",
                    "en": "Choose and import"
                  },
                  "url": {
                    "zh": "./handbook-choose-import.html",
                    "en": "./handbook-choose-import.en.html"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "首次使用指南",
            "en": "First-use guide"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/START_HERE.en.md"
        },
        {
          "label": {
            "zh": "练习角色来源",
            "en": "Exercise role source"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/data/entries/status-report-writer.json"
        }
      ]
    },
    {
      "id": "concepts",
      "title": {
        "zh": "分清角色、任务和权限",
        "en": "Understand roles, tasks, and permissions"
      },
      "summary": {
        "zh": "认清入口和文件，才能选择正确的下一步。",
        "en": "Recognize entry points and files to choose the right next step."
      },
      "audiences": [
        "start",
        "team",
        "developer"
      ],
      "sections": [
        {
          "id": "resources",
          "title": {
            "zh": "本站有哪些资源",
            "en": "What the site contains"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "目录含 371 个配置：315 个角色与 56 个任务流程；另有 17044 条 Shared Bots 来源链接。数量表示覆盖范围，不是安装数量或任务成功率。",
                "en": "The catalogue contains 371 configurations: 315 roles and 56 task workflows, plus 17044 Shared Bots source links. These are coverage counts, not installations or task success rates."
              }
            },
            {
              "type": "table",
              "headers": [
                {
                  "zh": "资源",
                  "en": "Resource"
                },
                {
                  "zh": "用途",
                  "en": "Purpose"
                },
                {
                  "zh": "下一步",
                  "en": "Next step"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "角色配置",
                    "en": "Role configuration"
                  },
                  {
                    "zh": "长期职责与方法",
                    "en": "Ongoing responsibility and method"
                  },
                  {
                    "zh": "按职责选择",
                    "en": "Choose by responsibility"
                  }
                ],
                [
                  {
                    "zh": "任务流程",
                    "en": "Task workflow"
                  },
                  {
                    "zh": "围绕产物的步骤",
                    "en": "Steps toward an output"
                  },
                  {
                    "zh": "提供材料发起任务",
                    "en": "Supply materials and start a task"
                  }
                ],
                [
                  {
                    "zh": "Shared Bots",
                    "en": "Shared Bots"
                  },
                  {
                    "zh": "原站或来源文件链接",
                    "en": "Original-site or source-file links"
                  },
                  {
                    "zh": "到来源查看条件",
                    "en": "Read requirements at the source"
                  }
                ],
                [
                  {
                    "zh": "项目参考",
                    "en": "Project reference"
                  },
                  {
                    "zh": "外部软件和架构资料",
                    "en": "External software and architecture"
                  },
                  {
                    "zh": "独立评估接入方式",
                    "en": "Evaluate integration separately"
                  }
                ]
              ]
            }
          ]
        },
        {
          "id": "layers",
          "title": {
            "zh": "文字不等于运行能力",
            "en": "Instructions and runtime capabilities"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "配置描述角色与需求；模型负责生成和推理；宿主提供环境、工具和账号授权。“读取邮件”是资料需求，不会自动连接邮箱。",
                "en": "Configurations describe roles and needs. Models handle generation and reasoning. Hosts provide environments, tools, and account authorization. Reading email is an input need, not an automatic mailbox connection."
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "查看输入、产物和前提。",
                  "en": "Read inputs, outputs, and prerequisites."
                },
                {
                  "zh": "核对宿主实际模型、工具及账号。",
                  "en": "Check actual host models, tools, and accounts."
                },
                {
                  "zh": "缺少能力时提供可用材料或列出缺口。",
                  "en": "If capabilities are missing, supply available materials or list the gaps."
                }
              ]
            }
          ]
        },
        {
          "id": "state",
          "title": {
            "zh": "配置不会迁移私有状态",
            "en": "Configurations do not transfer private state"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "配置不包含聊天、已学记忆、模型密钥、真实账号连接或运行中的任务。普通导出关闭工具和容器标志；空库首个 Bot 可能被宿主选为主 Bot，按宿主规则具有管理能力。导入前应核对预览中的主身份与权限表现。",
                "en": "Configurations exclude conversations, learned memory, model keys, live account connections, and running tasks. Ordinary exports disable tools and containers. In an empty library, the host may select the first Bot as primary with management capabilities under its rules. Check primary identity and permission behavior in the import preview."
              }
            }
          ]
        },
        {
          "id": "evidence",
          "title": {
            "zh": "如何理解验证说明",
            "en": "Read verification claims"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "来源核查回答内容从哪里来；格式与导出测试检查本仓契约；真实账号任务则需要单独的输入、执行与结果证据。本站没有逐项认证所有角色的账号任务。",
                "en": "Source review establishes provenance. Format and export tests check repository contracts. Real-account tasks need separate evidence of inputs, execution, and results. The site has not individually certified every role's account tasks."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "接入契约",
                    "en": "Integration contract"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "项目说明",
            "en": "Project overview"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/README.md"
        },
        {
          "label": {
            "zh": "宿主接入契约",
            "en": "Host integration contract"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
        },
        {
          "label": {
            "zh": "市场整合说明",
            "en": "Market aggregation guide"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/market-aggregation.md"
        }
      ]
    },
    {
      "id": "choose-import",
      "title": {
        "zh": "选择、下载与导入",
        "en": "Choose, download, and import"
      },
      "summary": {
        "zh": "先检查职责、来源和配置，再经过宿主预览与确认。",
        "en": "Check responsibilities, sources, and configuration before host preview and confirmation."
      },
      "audiences": [
        "start",
        "team"
      ],
      "sections": [
        {
          "id": "select",
          "title": {
            "zh": "从需要的产物开始",
            "en": "Start with the output you need"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "搜索会议准备、缺陷复测或周报等目标。",
                  "en": "Search for a goal such as meeting preparation, bug retesting, or a weekly report."
                },
                {
                  "zh": "打开详情，比较职责、输入、产物、技能、来源与权限需求。",
                  "en": "Open details and compare responsibility, inputs, outputs, skills, sources, and permission needs."
                },
                {
                  "zh": "先选一个角色，需要第二个时再明确交接。",
                  "en": "Start with one role and define a handoff before adding another."
                },
                {
                  "zh": "检查正文语言与平台前提，尤其是英文来源适配。",
                  "en": "Check body language and platform assumptions, especially in English source adaptations."
                }
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "按持续职责和方法选 bot-role；需要围绕产物的步骤模板时选 task-workflow，模板可按需要重复使用。两者都要在宿主预览确认，再核对工具、账号与人工交接；任务流程本身不提供自动编排或已验证的运行状态，验收仍看具体产物。",
                "en": "Choose bot-role for an ongoing responsibility and method; choose task-workflow for a step template organized around an output, reusable as needed. Preview and confirm either in the host, then check tools, accounts, and human handoffs. A workflow template does not itself provide automatic orchestration or a verified runtime state; assess the actual output against acceptance criteria."
              }
            }
          ]
        },
        {
          "id": "download",
          "title": {
            "zh": "选对下载形式",
            "en": "Choose the download type"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "情况",
                  "en": "Situation"
                },
                {
                  "zh": "建议",
                  "en": "Recommendation"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "初次使用",
                    "en": "First use"
                  },
                  {
                    "zh": "单角色或小场景下载",
                    "en": "One role or a small scenario download"
                  }
                ],
                [
                  {
                    "zh": "需要英文内容",
                    "en": "Need English content"
                  },
                  {
                    "zh": "在英文模式选择对应配置",
                    "en": "Choose its configuration in English mode"
                  }
                ],
                [
                  {
                    "zh": "大型合集",
                    "en": "Large collection"
                  },
                  {
                    "zh": "用发布分片，每个 Fleet 文件最多200个 Bot",
                    "en": "Use release parts with at most 200 Bots per Fleet file"
                  }
                ],
                [
                  {
                    "zh": "只让 Agent 参考方法",
                    "en": "Only need Agent context"
                  },
                  {
                    "zh": "使用 Copy for Agent 或单角色资料",
                    "en": "Use Copy for Agent or one role context file"
                  }
                ]
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "Shared Bots 是来源链接，不是本站可安装配置。名称相同不能证明同一身份，应核对作者、平台和地址。",
                "en": "Shared Bots are source links, not installable configurations from this site. Identical names do not prove identity; compare author, platform, and URL."
              }
            }
          ]
        },
        {
          "id": "preview",
          "title": {
            "zh": "在宿主预览与确认",
            "en": "Preview and confirm in the host"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "保存文件和角色 ID、版本、语言、配置摘要。",
                  "en": "Keep the file with its role ID, version, language, and digest."
                },
                {
                  "zh": "使用宿主当前配置导入入口，选择 Fleet 文件并阅读预览与确认。",
                  "en": "Use the host's current configuration import entry, select the Fleet file, and read the preview and confirmation."
                },
                {
                  "zh": "核对新增名称、重名处理和现有主 Bot 状态。",
                  "en": "Check new names, collision handling, and existing primary Bot state."
                },
                {
                  "zh": "确认后另行设置模型、工具和账号，再发起明确任务。",
                  "en": "After confirmation, separately configure models, tools, and accounts, then start an explicit task."
                }
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "本仓 README 记录过 Settings → Data & Sync → Import configuration 示例；入口以当前宿主版本为准。下载和导入本身都不启动任务或环境。",
                "en": "The repository README documents a Settings → Data & Sync → Import configuration example. Follow the entry in your current host version. Downloading and importing do not themselves start tasks or environments."
              }
            }
          ]
        },
        {
          "id": "compare",
          "title": {
            "zh": "导入后再核对",
            "en": "Check after import"
          },
          "blocks": [
            {
              "type": "list",
              "items": [
                {
                  "zh": "按 ID 对照职责，不能仅凭同名确认。",
                  "en": "Compare responsibility by ID rather than name alone."
                },
                {
                  "zh": "记录宿主实际返回的 Bot ID，为后续升级对账。",
                  "en": "Record actual host-returned Bot IDs for later upgrade reconciliation."
                },
                {
                  "zh": "先用虚构短任务验收，再提供真实材料。",
                  "en": "Accept a fictional short task before supplying real materials."
                }
              ]
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "配置市场",
                    "en": "Configuration market"
                  },
                  "url": {
                    "zh": "./",
                    "en": "./?lang=en"
                  }
                },
                {
                  "label": {
                    "zh": "排错",
                    "en": "Troubleshooting"
                  },
                  "url": {
                    "zh": "./handbook-troubleshooting.html",
                    "en": "./handbook-troubleshooting.en.html"
                  }
                }
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "每次导入在本地或受限团队台账追加一条记录，不覆盖历史；升级时关联原记录 ID。来源身份与宿主实际身份分开填，不把来源 ID 当作新 Bot ID。宿主不显示 ID 时记“未取得”，以后取得再追加证据；ID 缺失不能作为同一身份的依据。虚构任务通过只说明本次任务可用，升级身份仍需核对同一宿主的实际 Bot ID 等证据。",
                "en": "Append one record per import to a local or access-restricted team log, preserving history; link upgrades to the earlier record ID. Separate source identity from actual host identity, and never treat a source ID as the new Bot ID. If the host does not show an ID, write “not obtained” and append evidence when available; a missing ID is not evidence of the same identity. Passing a fictional task establishes usability for that task; upgrade identity still requires evidence such as the actual Bot ID in the same host."
              }
            },
            {
              "type": "code",
              "text": {
                "zh": "记录 ID：\n关联原记录 ID（升级时）：\n来源 URL：\n来源 ID：\n来源版本 / 语言：\n下载文件名：\n文件 SHA-256（未核对则注明）：\n宿主 / 版本：\n导入时间：\n宿主实际名称：\n宿主实际 Bot ID（未显示填“未取得”）：\n虚构任务与结果：\n任务可用：是 / 否 / 未验证\n升级身份对账：已完成（附依据）/ 待补证据",
                "en": "Record ID:\nEarlier record ID (for upgrades):\nSource URL:\nSource ID:\nSource version / language:\nDownloaded filename:\nFile SHA-256 (mark if unchecked):\nHost / version:\nImport time:\nActual host name:\nActual host Bot ID (write “not obtained” if hidden):\nFictional task and result:\nTask usability: yes / no / unverified\nUpgrade identity reconciliation: complete (attach evidence) / evidence pending"
              },
              "language": "text"
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "导入示例",
            "en": "Import examples"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/README.md"
        },
        {
          "label": {
            "zh": "导入与身份对账",
            "en": "Import and identity reconciliation"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
        },
        {
          "label": {
            "zh": "分片和发布校验",
            "en": "Release parts and checksums"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/publishing.md"
        }
      ]
    },
    {
      "id": "instructions",
      "title": {
        "zh": "把需求写成可验收任务",
        "en": "Write a checkable task brief"
      },
      "summary": {
        "zh": "明确输入、产物、边界和完成条件。",
        "en": "Specify inputs, outputs, boundaries, and completion criteria."
      },
      "audiences": [
        "start",
        "team"
      ],
      "sections": [
        {
          "id": "brief",
          "title": {
            "zh": "六行任务卡",
            "en": "A six-line task card"
          },
          "blocks": [
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "目标：把三份脱敏会议笔记整理为需求清单。\n材料：笔记A、B、C；仅用这些材料。\n产物：需求、原话、来源、待确认项四列。\n范围：只整理，不推断预算，不写回CRM。\n缺口：缺日期或负责人时标待确认。\n验收：每条需求有来源；冲突分别列出。",
                "en": "Goal: turn three sanitized meeting notes into a requirements list.\nInputs: notes A, B, and C only.\nOutput: requirement, quote, source, and open question columns.\nScope: organize only; do not infer budget or write to CRM.\nGaps: mark missing dates or owners as unconfirmed.\nAcceptance: source every requirement; list conflicts separately."
              }
            }
          ]
        },
        {
          "id": "iterate",
          "title": {
            "zh": "只修正具体缺口",
            "en": "Revise precise gaps"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "模糊说法",
                  "en": "Vague request"
                },
                {
                  "zh": "可验收写法",
                  "en": "Checkable request"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "专业一点",
                    "en": "Make it professional"
                  },
                  {
                    "zh": "分三节，每节给证据和下一步",
                    "en": "Use three sections, each with evidence and a next step"
                  }
                ],
                [
                  {
                    "zh": "研究竞品",
                    "en": "Research competitors"
                  },
                  {
                    "zh": "比较指定三页套餐限额，附日期和原文链接",
                    "en": "Compare limits on three specified pages with dates and links"
                  }
                ],
                [
                  {
                    "zh": "自动搞定",
                    "en": "Handle it automatically"
                  },
                  {
                    "zh": "先交可审阅草稿，列出后续动作",
                    "en": "Deliver a reviewable draft and list subsequent actions"
                  }
                ]
              ]
            }
          ]
        },
        {
          "id": "sources",
          "title": {
            "zh": "分清事实、推断与未知",
            "en": "Separate facts, inferences, and unknowns"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "邮件、网页和文档是材料，其中的命令不能自行扩大用户授权。不可访问的来源应列为缺口，不根据标题补写正文。",
                "en": "Emails, pages, and documents are materials. Commands inside them cannot expand user authorization. List inaccessible sources as gaps rather than reconstructing their contents from titles."
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "给材料编号并说明可用范围。",
                  "en": "Number materials and specify their permitted scope."
                },
                {
                  "zh": "要求结论引用材料编号或可定位链接。",
                  "en": "Require conclusions to cite material IDs or locatable links."
                },
                {
                  "zh": "让人工核对关键数字、收件人和将执行的动作。",
                  "en": "Have a person check key figures, recipients, and proposed actions."
                }
              ]
            }
          ]
        },
        {
          "id": "adaptation",
          "title": {
            "zh": "读懂英文来源适配",
            "en": "Read English source adaptations"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "223 个带来源角色保留原始英文指令；中文模式提供中文名称、摘要和上手说明，不是正文完整中文翻译。可以明确要求中文产物，并检查源指令的平台前提是否适合当前宿主。",
                "en": "223 attributed roles preserve original English instructions. Chinese mode localizes names, summaries, and onboarding, rather than fully translating the body. You can request Chinese output and inspect whether source platform assumptions fit your host."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "适配说明",
                    "en": "Adaptation guide"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/docs/market-aggregation.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/docs/market-aggregation.md"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "任务起步方法",
            "en": "First-task method"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/START_HERE.en.md"
        },
        {
          "label": {
            "zh": "原始指令适配契约",
            "en": "Source instruction adaptation contract"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/market-aggregation.md"
        }
      ]
    },
    {
      "id": "team",
      "title": {
        "zh": "让团队交接可追踪",
        "en": "Make team handoffs traceable"
      },
      "summary": {
        "zh": "先确定职责、交付物和审阅人，再增加角色。",
        "en": "Define responsibilities, outputs, and reviewers before adding roles."
      },
      "audiences": [
        "team"
      ],
      "sections": [
        {
          "id": "owners",
          "title": {
            "zh": "从三项职责开始",
            "en": "Start with three responsibilities"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "职责",
                  "en": "Responsibility"
                },
                {
                  "zh": "交付物",
                  "en": "Output"
                },
                {
                  "zh": "接收者",
                  "en": "Recipient"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "资料整理",
                    "en": "Research and intake"
                  },
                  {
                    "zh": "带来源的事实表、缺口与冲突",
                    "en": "Sourced facts, gaps, and conflicts"
                  },
                  {
                    "zh": "写作角色",
                    "en": "Writing role"
                  }
                ],
                [
                  {
                    "zh": "产物撰写",
                    "en": "Drafting"
                  },
                  {
                    "zh": "符合验收条件的草稿",
                    "en": "Draft matching acceptance criteria"
                  },
                  {
                    "zh": "人工审阅者",
                    "en": "Human reviewer"
                  }
                ],
                [
                  {
                    "zh": "审阅与决定",
                    "en": "Review and decision"
                  },
                  {
                    "zh": "来源检查和后续动作决定",
                    "en": "Source checks and decisions on subsequent actions"
                  },
                  {
                    "zh": "明确的执行负责人",
                    "en": "Named execution owner"
                  }
                ]
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "这些是工作分工，不是自动编排或权限隔离的证明。先验证一次交接；没有明确产物的角色先不要增加。",
                "en": "These are assignments, not proof of automatic orchestration or permission isolation. Test one handoff before adding roles without clear outputs."
              }
            }
          ]
        },
        {
          "id": "handoff",
          "title": {
            "zh": "复制一张交接卡",
            "en": "Copy a handoff card"
          },
          "blocks": [
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：客户会议准备 / 草稿第2版\n当前负责人：资料整理\n下一负责人：会议准备\n输入：事实表v2、来源清单v1（已脱敏）\n已验证：三条需求有原话和日期\n未验证：预算、决策人；不要补猜\n下一产物：一页简报和五个问题\n验收人：项目负责人\n允许动作：读这些文件、写草稿；不联系客户\n停止条件：来源缺失或冲突无法解释",
                "en": "Task: customer meeting preparation / draft v2\nCurrent owner: research and intake\nNext owner: meeting preparation\nInputs: fact table v2, source list v1 (sanitized)\nVerified: three needs have quotes and dates\nUnverified: budget and decision maker; do not guess\nNext output: one-page brief and five questions\nReviewer: project owner\nAllowed actions: read these files, write a draft; no customer contact\nStop condition: missing sources or unexplained conflicts"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "用青禾工作室练一次手动交接；以下材料均为虚构，仅写草稿，不联系客户。回执由接收者明确填写，不代表宿主有后台状态机。",
                "en": "Practice a manual handoff with Qinghe Studio. All materials below are fictional. Write drafts only; do not contact the customer. The recipient explicitly fills in the receipt; this does not imply a background state machine in the host."
              }
            },
            {
              "type": "code",
              "text": {
                "zh": "A｜简介：青禾工作室，12人客户服务团队。\nB｜2026-10-20沟通：希望月底汇总工单；预算、决策人未确认。\nC｜产品验证：仅验证CSV导入；实时同步未验证。\n事实表v1：含A/B，漏C。\n接收回执：退回v1；缺产品验证边界C，暂停写简报。\n事实表v2：补C；预算、决策人和实时同步仍未确认。\n旧简报：基于v1，标“待复核”，暂停流转。\n审阅人林的回执：决定接受事实表v2；按v2重核简报草稿后再交审阅。",
                "en": "A | Profile: Qinghe Studio, a 12-person customer service team.\nB | Discussion on 2026-10-20: wants a month-end ticket summary; budget and decision maker unconfirmed.\nC | Product validation: CSV import verified; real-time sync unverified.\nFact table v1: includes A/B, omits C.\nReceipt: return v1; product validation limits C missing; pause brief drafting.\nFact table v2: add C; budget, decision maker, and real-time sync remain unconfirmed.\nOld brief: based on v1; mark “review pending” and hold circulation.\nReviewer Lee's receipt: decision to accept fact table v2; recheck the draft brief against v2 before resubmitting."
              },
              "language": "text"
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "停止：缺来源、版本不清或冲突未解释。恢复：补齐材料，审阅人林写明接受的版本；旧产物标待复核，完成重核后才交下一人。接受事实表不等于简报或产品已验收。",
                "en": "Stop for missing sources, unclear versions, or unexplained conflicts. Resume after materials are supplied and reviewer Lee names the accepted version. Mark old outputs for review and recheck them before the next handoff. Accepting a fact table does not accept the brief or product."
              }
            }
          ]
        },
        {
          "id": "sharing",
          "title": {
            "zh": "共享配置不等于共享记忆",
            "en": "Shared configuration is not shared memory"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "共享配置只传递角色定义和方法，不携带创作者的聊天、学习记忆、账号或密钥。项目背景使用有明确版本的脱敏资料包，注明可分享范围，由接收者在自己的授权环境中使用。",
                "en": "Shared configurations transfer definitions and methods, without the creator's conversations, learned memory, accounts, or keys. Supply project context in a versioned sanitized packet with an explicit sharing scope, for use in the recipient's authorized environment."
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "把稳定方法放入配置，项目事实放入资料包。",
                  "en": "Keep stable methods in configuration and project facts in a packet."
                },
                {
                  "zh": "列出具体文件与版本，不假定对方已知背景。",
                  "en": "List exact files and versions rather than assuming shared background."
                },
                {
                  "zh": "确认材料可读，审阅输出后再推进。",
                  "en": "Confirm materials are readable and review the output before proceeding."
                }
              ]
            }
          ]
        },
        {
          "id": "gitopsbot",
          "title": {
            "zh": "以 gitopsbot 为协作案例",
            "en": "Use gitopsbot as a coordination example"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "gitopsbot 的双语手册讨论 GitHub 到飞书的路由、签名、去重、回执和恢复。先整理仓库、事件、目标群、发送方与权限缺口表。下载角色不会建立监听器、接入账号或授予群发送权。",
                "en": "The bilingual gitopsbot playbook covers GitHub-to-Feishu routing, signatures, deduplication, receipts, and recovery. Start with a table of repositories, events, destination groups, sender, and access gaps. Downloading the role does not create a listener, connect accounts, or grant group-send permission."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "打开 gitopsbot",
                    "en": "Open gitopsbot"
                  },
                  "url": {
                    "zh": "./?bot=awesome%2Fgitopsbot",
                    "en": "./?lang=en&bot=awesome%2Fgitopsbot"
                  }
                },
                {
                  "label": {
                    "zh": "部署与运维手册",
                    "en": "Setup and operations playbook"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/docs/gitopsbot-playbook.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/docs/gitopsbot-playbook.en.md"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "场景与人工交接",
            "en": "Scenarios and human handoffs"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/README.md"
        },
        {
          "label": {
            "zh": "状态与权限契约",
            "en": "State and permission contract"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
        },
        {
          "label": {
            "zh": "gitopsbot 运维方法",
            "en": "gitopsbot operations method"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/gitopsbot-playbook.en.md"
        }
      ]
    },
    {
      "id": "scenarios",
      "title": {
        "zh": "按场景完成一件事",
        "en": "Complete a task through a scenario"
      },
      "summary": {
        "zh": "用材料、步骤、产物和验收组织一次任务。",
        "en": "Organize one task around materials, steps, outputs, and acceptance."
      },
      "audiences": [
        "start",
        "team",
        "developer"
      ],
      "sections": [
        {
          "id": "choose",
          "title": {
            "zh": "按产物选择场景",
            "en": "Choose a scenario by its output"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "本站有 5 个中英对齐场景：客户会议、周报、缺陷复测、反馈转需求和产品发布。每个场景提供少量相关角色和可复制的首任务。",
                "en": "The site offers 5 bilingual scenarios: customer meetings, weekly reports, bug retesting, feedback-to-requirements, and product launches. Each provides a small set of relevant roles and a first task to copy."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "先看角色与原始任务，再用下面的虚构材料练一次。五份参考产物均为预先编写的教学示例，按证据核对，不要求措辞相同。",
                "en": "Review the roles and original tasks, then try the fictional materials below. All five reference outputs are prepared teaching examples. Check the evidence; the wording need not match."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "实战：从事实表到会前简报",
                    "en": "Practice: from a fact table to a meeting brief"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#practice-customer-meeting",
                    "en": "./handbook-scenarios.en.html#practice-customer-meeting"
                  }
                },
                {
                  "label": {
                    "zh": "实战：把交付、测试与验收分开",
                    "en": "Practice: separate delivery, testing, and acceptance"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#practice-weekly-report",
                    "en": "./handbook-scenarios.en.html#practice-weekly-report"
                  }
                },
                {
                  "label": {
                    "zh": "实战：没有环境时先做复验计划",
                    "en": "Practice: plan retesting without an environment"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#practice-bug-retest",
                    "en": "./handbook-scenarios.en.html#practice-bug-retest"
                  }
                },
                {
                  "label": {
                    "zh": "实战：把重复与冲突反馈变成候选需求",
                    "en": "Practice: turn duplicate and conflicting feedback into candidates"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#practice-feedback-to-requirements",
                    "en": "./handbook-scenarios.en.html#practice-feedback-to-requirements"
                  }
                },
                {
                  "label": {
                    "zh": "实战：证据不足时暂缓发布",
                    "en": "Practice: hold a launch when evidence is missing"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#practice-product-launch",
                    "en": "./handbook-scenarios.en.html#practice-product-launch"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "cards",
          "title": {
            "zh": "场景材料与任务卡",
            "en": "Scenario materials and task cards"
          },
          "blocks": [
            {
              "type": "scenarios"
            }
          ]
        },
        {
          "id": "practice-customer-meeting",
          "title": {
            "zh": "实战：从事实表到会前简报",
            "en": "Practice: from a fact table to a meeting brief"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "适合新手与团队交接。以下材料全部虚构；参考产物是预先编写的教学示例，不是 Bot 运行结果。复制材料，先做来源事实表，再整理一页会前简报及五个问题；仅出内部草稿，不作客户承诺。",
                "en": "For beginners and team handoffs. All materials below are fictional. The reference output is a prepared teaching example, not a Bot run. Copy the materials, build a sourced fact table, then prepare a one-page meeting brief and five questions. Produce an internal draft without customer commitments."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：作为客户研究专员，只用以下虚构材料，整理供会前准备使用的事实表。\n产物：事实、来源编号与日期、需求信号、待核实假设四列。未提供的日期、预算与决策人明确标未知；不得推断采购意向。\n边界：仅写内部草稿；不联系客户、不报价、不承诺未经验证的能力。\n\n虚构材料：\nA｜公司简介，2026-10-19：青禾工作室是12人的客户服务团队。\nB｜沟通记录，2026-10-20：希望月底汇总工单；预算、决策人未知。\nC｜内部演示记录，2026-10-21：仅验证CSV导入；实时同步未验证。\nD｜会谈目标，2026-10-23：澄清汇总口径、数据来源与试用条件。\nE｜参会信息：我方客户经理；客户参会人和职责待确认。\nF｜范围：仅用A—E；不得推断采购意愿、报价或承诺实时同步。",
                "en": "Task: act as the Account Research Specialist. Use only the fictional materials below to prepare a fact table for meeting preparation.\nOutput: facts, source IDs and dates, need signals, and assumptions to verify. Mark absent dates, budget and decision-maker as unknown; do not infer purchase intent.\nBoundary: internal draft only. Do not contact customers, quote prices or promise unverified capabilities.\n\nFictional materials:\nA | Company profile, 2026-10-19: Qinghe Studio is a customer service team of 12.\nB | Conversation, 2026-10-20: wants month-end ticket summaries; budget and decision-maker unknown.\nC | Internal demo, 2026-10-21: only CSV import verified; real-time sync unverified.\nD | Meeting goal, 2026-10-23: clarify summary definitions, data sources, and trial conditions.\nE | Attendees: our account manager; customer attendees and responsibilities unconfirmed.\nF | Scope: use A-E only; infer no purchase intent, price, or real-time sync commitment."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "把A—F交给客户研究专员（awesome/account-research-specialist）：按“事实／来源日期／需求信号／待核实假设”建表。",
                  "en": "Give A-F to Account Research Specialist (awesome/account-research-specialist): build a table of facts, source dates, need signals, and assumptions to verify."
                },
                {
                  "zh": "人工核对每行后，将事实表、B/C原文及未知项交给销售会前准备员（awesome/meeting-prep-buddy）；要求一页简报，含议程、恰好五个问题和材料待办。",
                  "en": "After human review, pass the fact table, B/C, and unknowns to Meeting Prep Buddy (awesome/meeting-prep-buddy). Request one page with an agenda, exactly five questions, and material tasks."
                },
                {
                  "zh": "人工审阅承诺范围后保存草稿；问题和待办由参会人确认，不自动发给客户。",
                  "en": "Have a human review commitment boundaries and save the draft. Attendees confirm questions and tasks; do not send it automatically."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "背景：青禾工作室，12人客户服务团队（A，2026-10-19）。\n目标与议程：澄清月底工单汇总（B）；核对口径→数据→试用条件（D）。\n能力边界：CSV导入已在虚构内部记录验证；实时同步待验证（C）；预算、决策人未知（B）。\n五问题：汇总哪些字段？以哪个日期划月？数据从哪里导出？谁决定试用？预算与评估标准是什么？\n材料待办：我方客户经理准备CSV样例与演示范围；客户参会人/职责待确认（C/E）。",
                "en": "Background: Qinghe Studio, a customer service team of 12 (A, 2026-10-19).\nGoal and agenda: clarify month-end ticket summaries (B); definitions, data, then trial conditions (D).\nCapability boundary: fictional internal record verifies CSV import only; sync unverified (C); budget and decision-maker unknown (B).\nFive questions: Which fields? Which date defines the month? Where is data exported? Who decides on a trial? What budget and evaluation criteria apply?\nMaterial tasks: our account manager prepares a CSV sample and demo scope; customer attendees and responsibilities unconfirmed (C/E)."
              },
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "逐行保留材料编号；已有日期照录，未提供则标未提供。事实、需求信号、假设分列，不能把希望汇总写成采购意向。",
                  "en": "Keep each source ID. Copy supplied dates and mark absent dates as not provided. Separate facts, demand signals and hypotheses; wanting a monthly summary is not purchase intent."
                },
                {
                  "zh": "一页草稿含议程、五问题和材料待办；五问题覆盖口径、日期、来源、决策与预算。",
                  "en": "Check the one-page draft includes an agenda, five questions, and material tasks covering definitions, dates, sources, decision-making, and budget."
                },
                {
                  "zh": "保留预算/决策人未知、实时同步未验证；没有对外承诺或已发送声明。",
                  "en": "Retain unknown budget and decision-maker, and unverified sync. Include no external commitment or sent-message claim."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "只修缺口：保留已核对事实表。将“支持实时同步”改为“待验证（C）”；补齐缺失的来源或五问题中的缺项，仅返回受影响行和修订后简报，不补造客户信息。 审阅人若发现缺口，退回产出该内容的角色；人工复核修订后再交接或保存，不自动流转。",
                "en": "Repair only gaps: keep the reviewed fact table. Replace any sync-support claim with \"unverified (C)\"; add missing sources or questions. Return affected rows and the revised brief without inventing customer information. If a reviewer finds a gap, return it to the role that produced it. A human reviews the revision before handoff or saving; there is no automatic routing."
              },
              "label": {
                "zh": "修订要求",
                "en": "Revision request"
              },
              "copyLabel": {
                "zh": "复制修订要求",
                "en": "Copy revision request"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "查看场景任务卡",
                    "en": "Open scenario task cards"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#scenario-customer-meeting",
                    "en": "./handbook-scenarios.en.html#scenario-customer-meeting"
                  }
                },
                {
                  "label": {
                    "zh": "在市场查看所需角色",
                    "en": "View scenario roles in the market"
                  },
                  "url": {
                    "zh": "./?scenario=customer-meeting",
                    "en": "./?lang=en&scenario=customer-meeting"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "practice-weekly-report",
          "title": {
            "zh": "实战：把交付、测试与验收分开",
            "en": "Practice: separate delivery, testing, and acceptance"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "适合新手练习与团队汇报。以下材料全部虚构；参考产物是预先编写的教学示例，不是 Bot 运行结果。复制记录，写2026-10-19至2026-10-23周报草稿，保留证据编号；不得把旧成果或技术测试写成当周业务验收。",
                "en": "For beginners and team reporting. All materials are fictional. The reference is a prepared teaching example, not a Bot run. Copy the records and draft the report for 2026-10-19 through 2026-10-23 with evidence IDs. Keep earlier work and technical tests separate from current business acceptance."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：作为进度报告编辑，只用以下虚构记录写2026-10-19至2026-10-23的周报草稿。\n产物：本周交付、技术验证、业务待验收、旧成果、阻塞与下一步五项，每个状态附材料编号。缺失的负责人和日期标未知，并提出指派请求。\n边界：不把技术测试写成业务验收，不把旧成果记作本周新交付；只写草稿，不发送。\n\n虚构材料：\nA｜本周目标：2026-10-23交付报名页草稿，业务验收另约。\nB｜2026-10-20：小陈提交报名页v0.3草稿与交付记录。\nC｜2026-10-21：技术记录显示桌面8项测试通过；手机测试未开始。\nD｜2026-10-23：业务方尚未验收，未提供通过记录。\nE｜2026-10-16：上周已完成报名字段表，不计本周新增交付。\nF｜2026-10-22：法务文案待确认，尚无负责人及回复日期。\nG｜下一步：小陈计划2026-10-26执行手机测试；文案责任人待指派。",
                "en": "Task: act as the Status Report Writer. Use only the fictional records below to draft the report for 2026-10-19 through 2026-10-23.\nOutput: current delivery, technical validation, business acceptance pending, earlier work, and blockers/next steps. Cite source IDs for every status. Mark missing owners and dates unknown and request assignment.\nBoundary: do not equate technical tests with business acceptance or earlier work with current delivery. Draft only; do not send.\n\nFictional materials:\nA | Weekly goal: deliver a registration-page draft on 2026-10-23; arrange business acceptance separately.\nB | 2026-10-20: Chen submitted page draft v0.3 with a delivery record.\nC | 2026-10-21: technical record shows 8 desktop tests passed; mobile testing not started.\nD | 2026-10-23: business acceptance still pending; no approval record supplied.\nE | 2026-10-16: registration field list completed last week; exclude from new weekly deliveries.\nF | 2026-10-22: legal copy pending; owner and response date unknown.\nG | Next: Chen plans mobile tests on 2026-10-26; copy owner awaits assignment."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "交给进度报告编辑（awesome/status-report-writer）：按本周交付、技术验证、业务待验收、旧成果、阻塞/下一步分组，每项附编号。",
                  "en": "Give records to Status Report Writer (awesome/status-report-writer): group current delivery, technical validation, business acceptance pending, earlier work, and blockers/next steps, citing IDs."
                },
                {
                  "zh": "由报告负责人核对周期与证据；把无人负责的文案列为“请求指派”，确认后再向相应读者发送。",
                  "en": "The report owner checks dates and evidence, flags the copy blocker as an assignment request, and sends only after confirmation."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "周期：2026-10-19—2026-10-23；报名页v0.3草稿已交付（A/B）。\n技术验证：桌面8项通过；手机未测（C）。\n业务状态：尚未验收（D）；不得标记项目全部完成。\n旧成果：字段表于2026-10-16完成，仅作背景（E）。\n阻塞/行动：文案负责人和回复日期待指派（F）；小陈计划2026-10-26测手机（G）。",
                "en": "Period: 2026-10-19 through 2026-10-23; page draft v0.3 delivered (A/B).\nTechnical validation: 8 desktop tests passed; mobile untested (C).\nBusiness status: acceptance pending (D); do not mark the whole project complete.\nEarlier work: field list completed on 2026-10-16, background only (E).\nBlocker/action: assign a copy owner and response date (F); Chen plans mobile tests on 2026-10-26 (G)."
              },
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "交付仅计B，E单独标上周；周期与下一步日期不混用。",
                  "en": "Count B as this week's delivery and E as earlier work; distinguish reporting dates from next-step dates."
                },
                {
                  "zh": "8项只属于桌面技术测试；手机和业务验收状态分别保留。",
                  "en": "Limit the count of 8 to desktop technical tests; preserve separate mobile and business acceptance states."
                },
                {
                  "zh": "每个状态有证据编号；F负责人/日期保持未知并提出指派请求，不擅填人名。",
                  "en": "Source every status. Keep F owner/date unknown and request assignment without inventing a name."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "只修缺口：保留已引用的交付记录。把“已全部验收”拆成C技术验证与D待验收；把E移到历史背景；为F补指派请求。仅返回修改的段落，不重写已通过项。 审阅人若发现缺口，退回产出该内容的角色；人工复核修订后再交接或保存，不自动流转。",
                "en": "Repair only gaps: retain sourced delivery records. Split any \"fully accepted\" claim into technical validation (C) and pending acceptance (D), move E to background, and add an assignment request for F. Return changed paragraphs only. If a reviewer finds a gap, return it to the role that produced it. A human reviews the revision before handoff or saving; there is no automatic routing."
              },
              "label": {
                "zh": "修订要求",
                "en": "Revision request"
              },
              "copyLabel": {
                "zh": "复制修订要求",
                "en": "Copy revision request"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "查看场景任务卡",
                    "en": "Open scenario task cards"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#scenario-weekly-report",
                    "en": "./handbook-scenarios.en.html#scenario-weekly-report"
                  }
                },
                {
                  "label": {
                    "zh": "在市场查看所需角色",
                    "en": "View scenario roles in the market"
                  },
                  "url": {
                    "zh": "./?scenario=weekly-report",
                    "en": "./?lang=en&scenario=weekly-report"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "practice-bug-retest",
          "title": {
            "zh": "实战：没有环境时先做复验计划",
            "en": "Practice: plan retesting without an environment"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "适合开发者与团队交接。以下浏览器反馈、日志、版本均为虚构；参考产物是预先编写的教学示例，不是 Bot 运行结果。本练习无真实测试环境，只练计划与证据分类，所有执行状态为待执行，不能写已复现或已修复。",
                "en": "For developers and team handoffs. Browser feedback, logs, and versions below are fictional. The reference is a prepared teaching example, not a Bot run. There is no real test environment. Practice planning and evidence classification only; execution remains pending, with no reproduced or fixed claims."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：作为缺陷复现工程师，只用以下虚构材料编写最小复现计划。当前没有真实测试环境，不执行测试。\n产物：区分反馈、日志线索与修复假设；列单击对照、双击和重复试验，保留预期/实际、次数、版本、环境与证据的空白记录栏，并列缺失环境。\n边界：执行项全部标待执行；两条日志不能直接证明根因，不声称已复现、已修复或可上线。\n\n虚构材料：\nA｜虚构反馈，2026-10-21：Chrome 129 / macOS 14，草稿版v0.3；点两次提交后看到两个报名条目。\nB｜预期：同一提交意图只产生一个条目；反馈人称偶发，未统计频率。\nC｜虚构日志：10:02:01 POST /signup 201；10:02:01 POST /signup 201；无请求ID。\nD｜最小输入：姓名“测试甲”、邮箱 test@example.invalid；仅用于计划。\nE｜开发备注：候选版v0.3.1增加提交中禁用按钮；没有修复验证记录。\nF｜核心路径：正常、空白、失败重试；真实环境、账号、实际版本均未提供。\nG｜上线条件：原版可重复证据、候选版同条件复验及三条路径记录经负责人审阅。",
                "en": "Task: act as Bug Reproduction. Use only the fictional materials below to write a minimal reproduction plan. There is no real test environment; do not run tests.\nOutput: separate reports, log clues and fix hypotheses. Plan single-click controls, double-click cases and repeated trials. Leave fields for expected/actual outcomes, trial counts, build, environment and evidence blank, and list missing environment details.\nBoundary: mark execution pending throughout. Two log lines do not prove a root cause; claim no reproduction, repair or release readiness.\n\nFictional materials:\nA | Fictional report, 2026-10-21: Chrome 129 / macOS 14, draft v0.3; two clicks on Submit show two registrations.\nB | Expected: one submission intent creates one entry; reporter says intermittent, frequency unmeasured.\nC | Fictional log: 10:02:01 POST /signup 201; 10:02:01 POST /signup 201; no request IDs.\nD | Minimal input: name \"Test A\", email test@example.invalid; planning only.\nE | Developer note: candidate v0.3.1 disables the button during submission; no fix verification record.\nF | Core paths: normal, blank, failed-request retry; no real environment, account, or actual build supplied.\nG | Release conditions: repeatable baseline evidence, candidate retest under matching conditions, and three path records reviewed by an owner."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "交给缺陷复现工程师（awesome/bug-reproduction）：把A/B列为报告、C列为虚构日志线索、E列为修复假设；给出单击对照→双击→重复试验的最小计划，列明缺失环境。",
                  "en": "Give records to Bug Reproduction (awesome/bug-reproduction): classify A/B as reports, C as a fictional log clue, and E as a fix hypothesis. Plan a single-click control, double-click case, and repeated trials; list missing environment details."
                },
                {
                  "zh": "人工核对后，将计划、未验证假设和空白执行栏交给创业产品质量检查员（awesome/grok-startup-qa-bot），排正常/空白/失败重试与候选版复验顺序，全部标待执行。",
                  "en": "After human review, pass the plan, unverified hypotheses, and blank execution fields to Startup QA Bot (awesome/grok-startup-qa-bot). Sequence normal, blank, retry, and candidate checks, all pending."
                },
                {
                  "zh": "实际执行者另行取得获准环境后填记录；发布负责人按真实证据判定，不用这份虚构示例作为通过记录。",
                  "en": "A real executor obtains an authorized environment and completes records separately. The release owner decides from real evidence, not this fictional example."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "分类：A/B为反馈，C为虚构日志线索，E为候选修复说明；均不证明原因。\n计划：固定输入D；原版单击对照、双击并记录每轮结果；候选版按相同条件复验。\n检查：正常→空白→失败重试；当前全部待执行（F）。\n实际执行者填写：姓名___ 日期___ 版本/环境___ 次数___ 预期/实际___ 日志/截图位置___。\n完成条件：原版可重复证据、候选版结果、三路径记录齐全，失败项关闭且发布负责人签核（G）。",
                "en": "Classification: A/B are reports, C is a fictional log clue, E is a candidate fix note; none proves a cause.\nPlan: fix input D; run baseline single-click control and double-click trials, recording each outcome; retest the candidate under matching conditions.\nChecks: normal, blank, then failed-request retry; all currently pending (F).\nReal executor fills: name___ date___ build/environment___ trials___ expected/actual___ log/screenshot location___.\nCompletion: repeatable baseline evidence, candidate results, and three path records complete; failures resolved and release owner signs off (G)."
              },
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "计划明确单击对照、双击、重复次数需记录；两条201日志不能直接证明双条目或根因。",
                  "en": "Require a single-click control, double-click cases, and recorded trial counts. Two 201 lines alone establish neither duplicate entries nor root cause."
                },
                {
                  "zh": "原版、候选版与三路径都有待执行项；保留实际执行者、日期、环境、版本、结果和证据栏。",
                  "en": "Include pending baseline, candidate, and three-path checks, with executor, date, environment, build, result, and evidence fields."
                },
                {
                  "zh": "无真实运行时不出现已复现/已修复/可上线结论；真实完成须满足G并核对实际记录。",
                  "en": "Without real execution, claim neither reproduction, repair, nor release readiness. Real completion requires G and reviewed execution records."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "只修缺口：保留已有计划。将无证据的“已复现/已修复”改为“待实际执行”；只补缺失的对照、路径或记录栏，并指出还需要哪份真实证据，不生成执行结果。 审阅人若发现缺口，退回产出该内容的角色；人工复核修订后再交接或保存，不自动流转。",
                "en": "Repair only gaps: keep the plan. Replace unsupported reproduced/fixed claims with \"pending real execution\". Add only missing controls, paths, or record fields and identify required real evidence; generate no execution results. If a reviewer finds a gap, return it to the role that produced it. A human reviews the revision before handoff or saving; there is no automatic routing."
              },
              "label": {
                "zh": "修订要求",
                "en": "Revision request"
              },
              "copyLabel": {
                "zh": "复制修订要求",
                "en": "Copy revision request"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "查看场景任务卡",
                    "en": "Open scenario task cards"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#scenario-bug-retest",
                    "en": "./handbook-scenarios.en.html#scenario-bug-retest"
                  }
                },
                {
                  "label": {
                    "zh": "在市场查看所需角色",
                    "en": "View scenario roles in the market"
                  },
                  "url": {
                    "zh": "./?scenario=bug-retest",
                    "en": "./?lang=en&scenario=bug-retest"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "practice-feedback-to-requirements",
          "title": {
            "zh": "实战：把重复与冲突反馈变成候选需求",
            "en": "Practice: turn duplicate and conflicting feedback into candidates"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "适合团队交接，新手可先核对来源。以下材料全部虚构；参考产物是预先编写的教学示例，不是 Bot 运行结果。复制记录，形成有追溯的需求候选及待确认优先级；少数样本不能推出多数需求，不承诺排期或直接写入需求库。",
                "en": "For team handoffs; beginners can start by checking sources. All materials are fictional. The reference is a prepared teaching example, not a Bot run. Copy the records to produce traceable requirement candidates with unconfirmed priorities. A small sample cannot establish majority demand; promise no schedule and do not write to a backlog."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：作为产品反馈分析员，只用以下虚构记录整理反馈主题，供人工核对后再交给功能请求跟踪员。\n产物：主题、用户任务、原始编号与原话、去重关系、冲突及样本缺口。A/B只计同一事件；C/E为同人不同事，分别保留。\n边界：不把3人样本写成多数需求，不决定优先级、承诺排期或改写需求库。\n\n虚构材料：\nA｜工单T01，2026-10-19，用户U1/管理员：每周导出CSV太费步骤，想一键导出。\nB｜邮件M01，2026-10-20，用户U1：再次转发T01，同一事件。\nC｜工单T02，2026-10-20，用户U2/管理员：希望直接默认展示全部成员。\nD｜访谈I01，2026-10-21，用户U3/普通成员：不要默认显示全部成员，担心暴露名单。\nE｜工单T03，2026-10-22，用户U2：CSV导出找不到入口；与T02是不同问题。\nF｜已有需求R07：简化CSV导出，状态待评审；近期仅调整导航名称。\nG｜范围：3名用户、2种角色；总用户数、代表性、影响频次与优先级均未知。",
                "en": "Task: act as the Product Feedback Analyst. Use only the fictional records below to organize feedback themes for human review before handoff to Feature Request Tracker.\nOutput: themes, user tasks, source IDs and quotes, deduplication, conflicts and sample gaps. Count A/B as one incident; retain C/E as separate issues from one user.\nBoundary: do not turn a three-user sample into majority demand, set priorities, promise dates or edit a backlog.\n\nFictional materials:\nA | Ticket T01, 2026-10-19, U1/admin: weekly CSV export takes too many steps; wants one-click export.\nB | Email M01, 2026-10-20, U1: forwards T01 again, the same incident.\nC | Ticket T02, 2026-10-20, U2/admin: wants all members shown by default.\nD | Interview I01, 2026-10-21, U3/member: opposes showing all members by default due to roster privacy.\nE | Ticket T03, 2026-10-22, U2: cannot find CSV export; a different issue from T02.\nF | Existing R07: simplify CSV export, awaiting review; recent change only renamed navigation.\nG | Coverage: 3 users, 2 roles; total population, representativeness, impact frequency, and priorities unknown."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "先交产品反馈分析员（awesome/product-feedback-analyst）：保留编号与原话，A/B归为同一事件；分别整理导出任务与成员可见性冲突，说明样本缺口。",
                  "en": "Start with Product Feedback Analyst (awesome/product-feedback-analyst): preserve IDs and quotes, deduplicate A/B as one incident, separate export tasks from conflicting member-visibility requests, and state sample gaps."
                },
                {
                  "zh": "人工核对主题后交功能请求跟踪员（awesome/feature-request-tracker）：把A/E关联R07，不因同一用户而合并C/E；形成需求候选、来源、冲突、验证方法与待确认优先级。",
                  "en": "After human review, pass themes to Feature Request Tracker (awesome/feature-request-tracker): link A/E to R07, keep C/E distinct despite the shared user, and record candidates, sources, conflicts, validation, and unconfirmed priorities."
                },
                {
                  "zh": "产品负责人核实影响与权限规则后决定优先级和是否落库；保留未决问题。",
                  "en": "The product owner verifies impact and access rules before deciding priorities and backlog entry; retain open questions."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "去重：A/B同一事件，保留两来源，计1个事件；不能算两名用户。\n候选R07补充：简化并明确CSV导出入口，证据A/E，2名用户；保留操作步骤与可发现性两类问题。\n候选N02：澄清按角色的成员可见性，C要求全显、D反对；不能直接默认全显。\n验证：走查导出任务；向两类角色核实可见范围与权限政策，补影响频次。\n优先级：R07/N02均待产品负责人确认；3人样本不代表多数（G），不承诺开发日期。",
                "en": "Deduplication: A/B are one incident with two sources; do not count two users.\nR07 candidate addition: simplify and clarify CSV export, A/E from 2 users; retain both step-count and discoverability issues.\nCandidate N02: clarify member visibility by role; C requests all-visible, D opposes it; do not default to all-visible.\nValidation: walk through export; confirm visibility and access policy with both roles, then measure impact frequency.\nPriority: R07/N02 await product-owner confirmation; 3 users do not represent a majority (G); promise no development date."
              },
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "A/B只计同一事件，仍可追溯两来源；C/E同人不同事，不能误去重。",
                  "en": "Count A/B as one incident while retaining both sources; do not deduplicate C/E, different issues from one user."
                },
                {
                  "zh": "每条候选有编号、来源与验证方法；A/E关联R07而非无依据新增重复需求。",
                  "en": "Give every candidate an ID, sources, and validation method; link A/E to R07 instead of creating an unsupported duplicate."
                },
                {
                  "zh": "保留C/D冲突、3人覆盖限制及待确认优先级；没有“多数用户需要”或已排期结论。",
                  "en": "Retain the C/D conflict, three-user coverage limit, and unconfirmed priorities; claim neither majority demand nor a scheduled feature."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "只修缺口：保留已追溯候选；修正A/B计数，补C/D相反意见或缺失来源，把无依据优先级改为待确认。只返回受影响候选与去重说明，不重新编排已通过部分。 审阅人若发现缺口，退回产出该内容的角色；人工复核修订后再交接或保存，不自动流转。",
                "en": "Repair only gaps: retain traceable candidates. Correct the A/B count, add missing C/D opposition or sources, and mark unsupported priorities unconfirmed. Return affected candidates and deduplication notes only. If a reviewer finds a gap, return it to the role that produced it. A human reviews the revision before handoff or saving; there is no automatic routing."
              },
              "label": {
                "zh": "修订要求",
                "en": "Revision request"
              },
              "copyLabel": {
                "zh": "复制修订要求",
                "en": "Copy revision request"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "查看场景任务卡",
                    "en": "Open scenario task cards"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#scenario-feedback-to-requirements",
                    "en": "./handbook-scenarios.en.html#scenario-feedback-to-requirements"
                  }
                },
                {
                  "label": {
                    "zh": "在市场查看所需角色",
                    "en": "View scenario roles in the market"
                  },
                  "url": {
                    "zh": "./?scenario=feedback-to-requirements",
                    "en": "./?lang=en&scenario=feedback-to-requirements"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "practice-product-launch",
          "title": {
            "zh": "实战：证据不足时暂缓发布",
            "en": "Practice: hold a launch when evidence is missing"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "适合团队交接与产品负责人审阅。以下材料全部虚构；参考产物是预先编写的教学示例，不是 Bot 运行结果。复制材料，准备定位草案与带依赖的日历；包含未通过项和未知指标，结论应是人工暂缓，不能制造已上线状态。",
                "en": "For team handoffs and product-owner review. All materials are fictional. The reference is a prepared teaching example, not a Bot run. Copy the materials to prepare positioning and a calendar with dependencies. Include failed checks and unknown metrics; record a human hold decision without inventing a live launch."
              }
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "任务：作为产品定位与上市策划员，只用以下虚构材料写定位草案，供人工核对后再准备排期。\n产物：目标客群、客户任务、可证明能力、价值假设、内容需求和待验证项；每个主张附材料编号，保留失败检查与人工暂缓状态。\n边界：不编造指标、客户证言或已上线状态，不确认发布日、不执行发布。\n\n虚构材料：\nA｜目标客群：小型活动团队；3份访谈提到人工整理报名数据耗时，样本不具代表性。\nB｜产品证据，2026-10-21：演示仅验证CSV导出；节省时间比例、转化率未知。\nC｜质量记录，2026-10-22：手机失败重试检查未通过，复验结果尚无。\nD｜目标日期：2026-10-28拟发布介绍页与邮件；日期未经确认，尚未上线。\nE｜素材：介绍页草稿已备；邮件文案未完成，无客户证言授权。\nF｜负责人：小林制作、小周审核；2026-10-27审核时间固定，邮件依赖介绍页审核通过。\nG｜人工决定，2026-10-23：暂缓对外发布；恢复需C复验通过记录、素材审阅通过及负责人重新确认日期。",
                "en": "Task: act as the Product Marketer. Use only the fictional materials below to draft positioning for human review before scheduling.\nOutput: audience, customer task, evidenced capabilities, value hypotheses, content needs and open validation items. Cite source IDs for each claim and retain failed checks and the human hold.\nBoundary: invent no metrics, testimonials or live-launch status. Do not confirm a launch date or publish.\n\nFictional materials:\nA | Audience: small event teams; 3 interviews mention time spent organizing registrations, not a representative sample.\nB | Product evidence, 2026-10-21: demo verifies CSV export only; time-saving percentage and conversion rate unknown.\nC | Quality record, 2026-10-22: mobile failed-request retry check failed; no retest result yet.\nD | Target: introduction page and email proposed for 2026-10-28; date unconfirmed, not live.\nE | Assets: page draft ready; email copy incomplete; no authorization for customer testimonials.\nF | Owners: Lin creates, Zhou reviews; review slot fixed on 2026-10-27; email depends on page approval.\nG | Human decision, 2026-10-23: hold external release; resume only with passing C retest evidence, approved assets, and owners reconfirming the date."
              },
              "label": {
                "zh": "练习任务与材料",
                "en": "Practice task and materials"
              },
              "copyLabel": {
                "zh": "复制练习任务",
                "en": "Copy practice task"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "先交产品定位与上市策划员（awesome/grok-product-marketer）：按A/B写面向客群的定位草案，区分可证明能力与价值假设；删除虚构比例和证言，保留C/G门槛。",
                  "en": "Start with Product Marketer (awesome/grok-product-marketer): draft audience positioning from A/B, separating demonstrated capability from value hypotheses. Include no invented metrics or testimonials; retain C/G gates."
                },
                {
                  "zh": "人工核对后交营销排期管理员（awesome/marketing-calendar-owner）：倒排制作、审核、渠道检查点，标明F固定节点与依赖；2026-10-28仅为待确认目标。",
                  "en": "After human review, pass it to Marketing Calendar Owner (awesome/marketing-calendar-owner): work backward through creation, review, and channel checkpoints, with F dependencies and fixed slot; keep 2026-10-28 as an unconfirmed target."
                },
                {
                  "zh": "人工按G维持暂缓；补齐真实证据后由负责人重新审阅日期，再依另行授权执行发布。",
                  "en": "A human maintains the hold under G. Once real evidence is complete, owners review the date again and execute publication under separate authorization."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "定位草案：为小型活动团队提供CSV导出整理入口（A/B）；省时效果仍是假设。\n文案边界：不写节省百分比、转化增长或客户证言（B/E）。\n日历：小林完成邮件草稿→小周2026-10-27审核介绍页与邮件→渠道检查；邮件依赖介绍页批准（E/F）。\n状态：人工暂缓（G）；手机失败重试未通过（C），2026-10-28待重新确认，尚未上线（D）。\n恢复证据：C复验通过记录＋两素材批准记录＋负责人确认的新日期；未知效果指标另列验证计划。",
                "en": "Positioning draft: a CSV export workflow for small event teams (A/B); time savings remain a hypothesis.\nCopy boundary: no saving percentage, conversion uplift, or customer testimonial (B/E).\nCalendar: Lin completes email draft, Zhou reviews page and email on 2026-10-27, then channel checks; email depends on page approval (E/F).\nStatus: human hold (G); mobile retry failed (C); 2026-10-28 awaits reconfirmation, not live (D).\nResume evidence: passing C retest record, both asset approvals, and an owner-confirmed date; unknown outcome metrics need a separate validation plan."
              },
              "label": {
                "zh": "教学参考节选",
                "en": "Teaching reference excerpt"
              },
              "copyLabel": {
                "zh": "复制参考节选",
                "en": "Copy reference excerpt"
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "每个价值主张对应A/B或标假设；未知指标不能补造数字，未经授权证言不进入文案。",
                  "en": "Source value claims to A/B or mark them hypotheses. Invent no missing metrics and include no unauthorized testimonials."
                },
                {
                  "zh": "日历有制作/审核负责人、2026-10-27固定检查点和邮件依赖；未确认目标不得写成承诺。",
                  "en": "Include creation/review owners, the fixed 2026-10-27 checkpoint, and the email dependency; do not turn the target into a promise."
                },
                {
                  "zh": "明确C未通过、G人工暂缓及三类恢复证据；计划草稿不等于已上线。",
                  "en": "State the failed C check, human hold G, and all three resume-evidence requirements; a draft plan is not a live launch."
                }
              ]
            },
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "只修缺口：保留有证据定位与日历；删除无依据效果数值，补C/G门槛和缺失依赖。仅返回改动行及仍缺的恢复证据，不自行解除暂缓或改成已发布。 审阅人若发现缺口，退回产出该内容的角色；人工复核修订后再交接或保存，不自动流转。",
                "en": "Repair only gaps: retain sourced positioning and calendar entries. Remove unsupported metrics and add missing C/G gates or dependencies. Return changed lines and outstanding resume evidence; do not lift the hold or mark the launch live. If a reviewer finds a gap, return it to the role that produced it. A human reviews the revision before handoff or saving; there is no automatic routing."
              },
              "label": {
                "zh": "修订要求",
                "en": "Revision request"
              },
              "copyLabel": {
                "zh": "复制修订要求",
                "en": "Copy revision request"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "查看场景任务卡",
                    "en": "Open scenario task cards"
                  },
                  "url": {
                    "zh": "./handbook-scenarios.html#scenario-product-launch",
                    "en": "./handbook-scenarios.en.html#scenario-product-launch"
                  }
                },
                {
                  "label": {
                    "zh": "在市场查看所需角色",
                    "en": "View scenario roles in the market"
                  },
                  "url": {
                    "zh": "./?scenario=product-launch",
                    "en": "./?lang=en&scenario=product-launch"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "accept",
          "title": {
            "zh": "完成一次场景验收",
            "en": "Accept one scenario result"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "准备场景列出的最小材料，先用脱敏样例。",
                  "en": "Prepare the minimum materials listed in the scenario, starting with sanitized samples."
                },
                {
                  "zh": "把第一项任务交给对应角色，按场景条件验收。",
                  "en": "Give the first task to its role and check scenario acceptance criteria."
                },
                {
                  "zh": "补齐缺口，把产物、来源和未知项连同交接卡传给下一位。",
                  "en": "Resolve gaps and pass outputs, sources, and unknowns with a handoff card to the next owner."
                },
                {
                  "zh": "保存最终产物与失败原因；场景下载不会自动执行流程。",
                  "en": "Save final outputs and failure causes. A scenario download does not execute the workflow."
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "场景源数据",
            "en": "Scenario source data"
          },
          "url": "https://github.com/Harzva/awesome-bot/tree/main/data/scenarios"
        },
        {
          "label": {
            "zh": "场景起步说明",
            "en": "Scenario first-use guide"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/START_HERE.en.md"
        }
      ]
    },
    {
      "id": "agents",
      "title": {
        "zh": "让 Agent 按需读取角色",
        "en": "Let an Agent read the role it needs"
      },
      "summary": {
        "zh": "读取小索引和单角色资料，核对版本、语言和 SHA-256。",
        "en": "Read a small index and one role, checking version, language, and SHA-256."
      },
      "audiences": [
        "developer",
        "team"
      ],
      "sections": [
        {
          "id": "discovery",
          "title": {
            "zh": "从小索引开始",
            "en": "Start with a small index"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "团队读者重点理解按需发现角色、提供上下文和确认权限即可；不必先克隆仓库或安装 Node，也不要求每位协作者手动计算 SHA-256。继续阅读“读取与信任的边界”；“本地快照校验与失败练习”可留给开发者。",
                "en": "Team readers can focus on discovering roles as needed, supplying context and confirming permissions. Collaboration does not require cloning the repository, installing Node or having every collaborator calculate SHA-256 manually. Continue to “Reading and trust boundaries”; the local snapshot lab can be left to developers."
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "读取 llms.txt，选择 zh 或 en 索引。",
                  "en": "Read llms.txt and choose the zh or en index."
                },
                {
                  "zh": "按当前任务选择一个 ID，再读取其 JSON 或 Markdown。",
                  "en": "Choose one ID for the task, then read its JSON or Markdown."
                },
                {
                  "zh": "说明输入、输出、前提和需求，在 Agent 自身规则下处理任务。",
                  "en": "Explain inputs, outputs, prerequisites, and needs, then work under the Agent's own rules."
                }
              ]
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "读取指南",
                    "en": "Reading guide"
                  },
                  "url": {
                    "zh": "./llms.txt",
                    "en": "./llms.txt"
                  }
                },
                {
                  "label": {
                    "zh": "中文索引",
                    "en": "Chinese index"
                  },
                  "url": {
                    "zh": "./agents/zh/index.json",
                    "en": "./agents/zh/index.json"
                  }
                },
                {
                  "label": {
                    "zh": "英文索引",
                    "en": "English index"
                  },
                  "url": {
                    "zh": "./agents/en/index.json",
                    "en": "./agents/en/index.json"
                  }
                },
                {
                  "label": {
                    "zh": "读取与信任的边界",
                    "en": "Reading and trust boundaries"
                  },
                  "url": {
                    "zh": "./handbook-agents.html#trust",
                    "en": "./handbook-agents.en.html#trust"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "schemas",
          "title": {
            "zh": "四种机器文件",
            "en": "Four machine-readable formats"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "schema",
                  "en": "schema"
                },
                {
                  "zh": "实际用途",
                  "en": "Actual purpose"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "openbot.market.registry/1",
                    "en": "openbot.market.registry/1"
                  },
                  {
                    "zh": "发现版本、清单 URL 和完整性摘要",
                    "en": "Discover versions, manifest URLs, and integrity hashes"
                  }
                ],
                [
                  {
                    "zh": "openbot.market/1",
                    "en": "openbot.market/1"
                  },
                  {
                    "zh": "规范角色清单：persona、技能和声明需求",
                    "en": "Canonical role manifest: persona, skills, and declared needs"
                  }
                ],
                [
                  {
                    "zh": "openbot.fleet/1",
                    "en": "openbot.fleet/1"
                  },
                  {
                    "zh": "供宿主预览与确认的配置",
                    "en": "Configuration for host preview and confirmation"
                  }
                ],
                [
                  {
                    "zh": "awesome.bot.agent/1",
                    "en": "awesome.bot.agent/1"
                  },
                  {
                    "zh": "语言化角色上下文、来源和 configuration 字段",
                    "en": "Localized role context, provenance, and configuration fields"
                  }
                ]
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "id、templateVersion、locale、contentRevision 定位上下文；configuration.bytes 和 configuration.sha256 定位下载字节。语言投影与规范清单可能字节不同，不可用中文清单摘要核对英文 Fleet。",
                "en": "id, templateVersion, locale, and contentRevision identify context. configuration.bytes and configuration.sha256 identify download bytes. Localized projections can differ from canonical manifests; do not check an English Fleet against a Chinese manifest digest."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "下面是现有进度报告角色 Agent 卡的字段节选，不是可直接导入的完整文件。清单中的声明需求也不是已授予权限；以 Fleet 导出和宿主确认中的实际设置为准。",
                "en": "The following excerpt shows fields from the existing Status Report Writer Agent card; it is not a complete importable file. Declared manifest needs are not granted permissions. Check actual settings in the Fleet export and host confirmation."
              }
            },
            {
              "type": "code",
              "language": "json",
              "text": {
                "zh": "{\n  \"schema\": \"awesome.bot.agent/1\",\n  \"id\": \"awesome/status-report-writer\",\n  \"templateVersion\": \"1.0.0\",\n  \"locale\": \"en\"\n}",
                "en": "{\n  \"schema\": \"awesome.bot.agent/1\",\n  \"id\": \"awesome/status-report-writer\",\n  \"templateVersion\": \"1.0.0\",\n  \"locale\": \"en\"\n}"
              }
            }
          ]
        },
        {
          "id": "digest",
          "title": {
            "zh": "读取并核对 SHA-256",
            "en": "Read and verify SHA-256"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "以下 Node.js 22+ 示例只读取和校验，不导入或执行配置。摘要不一致时停止，重新获取一致版本或带校验文件的发布快照。",
                "en": "This Node.js 22+ example only reads and verifies; it does not import or execute configuration. Stop on a mismatch and retrieve a consistent version or a release snapshot with checksums."
              }
            },
            {
              "type": "code",
              "language": "js",
              "text": {
                "zh": "import assert from 'node:assert/strict';\nimport { createHash } from 'node:crypto';\nconst base = 'https://harzva.github.io/awesome-bot/';\nasync function read(url) {\n  const r = await fetch(url, { signal: AbortSignal.timeout(10000) });\n  assert.equal(r.status, 200);\n  return r;\n}\nconst card = await (await read(base + 'agents/en/status-report-writer.json')).json();\nassert.equal(card.schema, 'awesome.bot.agent/1');\nassert.equal(card.id, 'awesome/status-report-writer');\nassert.equal(card.locale, 'en');\nconst bytes = Buffer.from(await (await read(card.configuration.url)).arrayBuffer());\nassert.equal(bytes.length, card.configuration.bytes);\nassert.equal(createHash('sha256').update(bytes).digest('hex'), card.configuration.sha256);\nconsole.log(card.id, card.templateVersion, card.locale, card.contentRevision);",
                "en": "import assert from 'node:assert/strict';\nimport { createHash } from 'node:crypto';\nconst base = 'https://harzva.github.io/awesome-bot/';\nasync function read(url) {\n  const r = await fetch(url, { signal: AbortSignal.timeout(10000) });\n  assert.equal(r.status, 200);\n  return r;\n}\nconst card = await (await read(base + 'agents/en/status-report-writer.json')).json();\nassert.equal(card.schema, 'awesome.bot.agent/1');\nassert.equal(card.id, 'awesome/status-report-writer');\nassert.equal(card.locale, 'en');\nconst bytes = Buffer.from(await (await read(card.configuration.url)).arrayBuffer());\nassert.equal(bytes.length, card.configuration.bytes);\nassert.equal(createHash('sha256').update(bytes).digest('hex'), card.configuration.sha256);\nconsole.log(card.id, card.templateVersion, card.locale, card.contentRevision);"
              }
            }
          ]
        },
        {
          "id": "trust",
          "title": {
            "zh": "读取与信任的边界",
            "en": "Reading and trust boundaries"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "Copy for Agent 只复制提示，网站不会联系 Agent。无法读链接时，经 Agent 正常粘贴或附件入口提供对应 Markdown，并说明限制。SHA-256 匹配说明与元数据一致，不证明发布者身份；当前目录未签名。",
                "en": "Copy for Agent copies a prompt; the site does not contact an Agent. If links are inaccessible, provide the relevant Markdown through normal paste or attachment and state the limitation. A SHA-256 match proves agreement with metadata, not publisher identity. The current catalogue is unsigned."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "理解上述边界后，团队读者可继续排错；实际接入、下载或升级仍须执行对应契约要求的完整性与信任核验，由负责接入的人或工具完成。",
                "en": "After understanding these boundaries, team readers can continue to troubleshooting. Actual integration, download and upgrade work must still perform the integrity and trust checks required by the applicable contract, through the responsible integrator or tools."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "团队路径：继续排错",
                    "en": "Team path: continue to troubleshooting"
                  },
                  "url": {
                    "zh": "./handbook-troubleshooting.html?path=team",
                    "en": "./handbook-troubleshooting.en.html?path=team"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "local-lab",
          "title": {
            "zh": "本地快照校验与失败练习",
            "en": "Verify a local snapshot and reject an altered copy"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "准备 Node.js 22+，先从 GitHub clone 本仓库并进入仓库根目录，运行下方准备命令。clone、依赖安装和构建可能需要网络；只有后面的校验阶段完全读取本地文件。它不调用模型，也不表示模型可以离线运行。 命令使用macOS/Linux或Windows WSL的shell；其他终端可将JS标记之间的代码另存为.mjs，再用Node运行。",
                "en": "Use Node.js 22+, clone this repository from GitHub, and enter its root before running the setup below. Cloning, dependency installation, and building may need network access. Only the verification phase below reads entirely local files. It does not call a model or establish offline model execution. The commands use a macOS/Linux or Windows WSL shell. In another terminal, save the code between the JS markers as an .mjs file and run it with Node."
              }
            },
            {
              "type": "code",
              "language": "sh",
              "text": {
                "zh": "git clone https://github.com/Harzva/awesome-bot.git\ncd awesome-bot\nnpm ci --ignore-scripts\nnpm run check\nnpm run build:site",
                "en": "git clone https://github.com/Harzva/awesome-bot.git\ncd awesome-bot\nnpm ci --ignore-scripts\nnpm run check\nnpm run build:site"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "已 clone 并完成 npm ci --ignore-scripts 时，从 npm run check 开始。检查失败先修复或重新取得同一份完整源快照，不跳过检查。随后在仓库根目录整体复制执行下面的 sh 块：它按 discovery → 英文索引 → 进度报告角色卡 → Fleet 字节读取，URL 必须匹配预期站点与路径，本地路径与符号链接也不能逃出 dist/site。",
                "en": "If the repository is already cloned and npm ci --ignore-scripts has completed, start at npm run check. Repair a failed check or retrieve a complete consistent source snapshot before proceeding. Copy and run the entire sh block below from the repository root. It reads discovery, the English index, the Status Report Writer card, and then Fleet bytes. URLs must match the expected site and paths; local paths and symlinks must stay inside dist/site."
              }
            },
            {
              "type": "code",
              "language": "sh",
              "text": {
                "zh": "node --input-type=module <<'JS'\nimport assert from 'node:assert/strict';\nimport { readFile, realpath } from 'node:fs/promises';\nimport { resolve, sep } from 'node:path';\nimport { createHash } from 'node:crypto';\nconst root = await realpath(resolve('dist/site'));\nconst base = new URL('https://harzva.github.io/awesome-bot/');\nasync function bytesAt(url, expected) {\n  assert.equal(url, new URL(expected, base).href, 'unexpected URL');\n  const u = new URL(url);\n  assert.equal(u.origin, base.origin);\n  assert.equal(u.search + u.hash, '');\n  assert.ok(u.pathname.startsWith(base.pathname));\n  const relative = decodeURIComponent(u.pathname.slice(base.pathname.length));\n  assert.ok(!relative.includes('\\\\') && !relative.includes('\\0'));\n  const path = resolve(root, relative);\n  assert.ok(path.startsWith(root + sep), 'path escaped site root');\n  const actual = await realpath(path);\n  assert.ok(actual.startsWith(root + sep), 'symlink escaped site root');\n  return readFile(actual);\n}\nasync function jsonAt(url, expected) {\n  return JSON.parse((await bytesAt(url, expected)).toString('utf8'));\n}\nconst discovery = await jsonAt(new URL('agents/index.json', base).href, 'agents/index.json');\nassert.equal(discovery.schema, 'awesome.bot.agent-discovery/1');\nassert.equal(discovery.configurationFormat, 'openbot.fleet/1');\nassert.ok(discovery.contentRevision);\nconst languages = discovery.languages.filter(x => x.locale === 'en');\nassert.equal(languages.length, 1);\nconst index = await jsonAt(languages[0].url, 'agents/en/index.json');\nassert.equal(index.schema, 'awesome.bot.agent-index/1');\nassert.equal(index.locale, 'en');\nassert.equal(index.contentRevision, discovery.contentRevision);\nassert.equal(index.count, index.entries.length);\nassert.equal(languages[0].count, index.count);\nconst matches = index.entries.filter(x => x.id === 'awesome/status-report-writer');\nassert.equal(matches.length, 1);\nconst entry = matches[0];\nconst card = await jsonAt(entry.json, 'agents/en/status-report-writer.json');\nassert.equal(card.schema, 'awesome.bot.agent/1');\nassert.equal(card.id, entry.id);\nassert.equal(card.locale, index.locale);\nassert.equal(card.contentRevision, index.contentRevision);\nassert.ok(entry.templateVersion);\nassert.equal(card.templateVersion, entry.templateVersion);\nassert.equal(card.configuration.format, 'openbot.fleet/1');\nassert.equal(card.configuration.locale, card.locale);\nassert.equal(card.configuration.grantsTools, false);\nassert.equal(card.configuration.grantsContainer, false);\nassert.equal(card.configuration.includesAccountsOrMemory, false);\nassert.equal(card.configuration.importRequiresHostConfirmation, true);\nconst original = await bytesAt(card.configuration.url, 'exports/en/status-report-writer.fleet.json');\nfunction verify(bytes) {\n  assert.equal(bytes.length, card.configuration.bytes, 'byte length mismatch');\n  assert.match(card.configuration.sha256, /^[0-9a-f]{64}$/);\n  assert.equal(createHash('sha256').update(bytes).digest('hex'), card.configuration.sha256, 'SHA-256 mismatch');\n}\nverify(original);\nconst fleet = JSON.parse(original.toString('utf8'));\nassert.equal(fleet.schema, card.configuration.format);\nassert.equal(fleet.mode, 'config');\nassert.equal(fleet.bots.length, 1);\nconst bot = fleet.bots[0];\nassert.equal(bot.id, card.id.split('/')[1]);\nassert.equal(bot.toolsEnabled, false);\nassert.equal(bot.containerEnabled, false);\nassert.deepEqual(bot.messages, []);\nassert.deepEqual(bot.files, []);\nassert.deepEqual(bot.channels, {});\nassert.deepEqual(bot.memory, { profile: '', journal: [] });\nassert.equal(bot.summary, null);\nassert.deepEqual(fleet.shared, { skills: [], files: [] });\nconsole.log('PASS original snapshot');\nconst altered = Buffer.from(original);\nassert.ok(altered.length > 0);\naltered[0] ^= 1;\nassert.throws(() => verify(altered), { code: 'ERR_ASSERTION', message: /SHA-256 mismatch/ });\nverify(original);\nconsole.log('PASS altered copy rejected');\nJS",
                "en": "node --input-type=module <<'JS'\nimport assert from 'node:assert/strict';\nimport { readFile, realpath } from 'node:fs/promises';\nimport { resolve, sep } from 'node:path';\nimport { createHash } from 'node:crypto';\nconst root = await realpath(resolve('dist/site'));\nconst base = new URL('https://harzva.github.io/awesome-bot/');\nasync function bytesAt(url, expected) {\n  assert.equal(url, new URL(expected, base).href, 'unexpected URL');\n  const u = new URL(url);\n  assert.equal(u.origin, base.origin);\n  assert.equal(u.search + u.hash, '');\n  assert.ok(u.pathname.startsWith(base.pathname));\n  const relative = decodeURIComponent(u.pathname.slice(base.pathname.length));\n  assert.ok(!relative.includes('\\\\') && !relative.includes('\\0'));\n  const path = resolve(root, relative);\n  assert.ok(path.startsWith(root + sep), 'path escaped site root');\n  const actual = await realpath(path);\n  assert.ok(actual.startsWith(root + sep), 'symlink escaped site root');\n  return readFile(actual);\n}\nasync function jsonAt(url, expected) {\n  return JSON.parse((await bytesAt(url, expected)).toString('utf8'));\n}\nconst discovery = await jsonAt(new URL('agents/index.json', base).href, 'agents/index.json');\nassert.equal(discovery.schema, 'awesome.bot.agent-discovery/1');\nassert.equal(discovery.configurationFormat, 'openbot.fleet/1');\nassert.ok(discovery.contentRevision);\nconst languages = discovery.languages.filter(x => x.locale === 'en');\nassert.equal(languages.length, 1);\nconst index = await jsonAt(languages[0].url, 'agents/en/index.json');\nassert.equal(index.schema, 'awesome.bot.agent-index/1');\nassert.equal(index.locale, 'en');\nassert.equal(index.contentRevision, discovery.contentRevision);\nassert.equal(index.count, index.entries.length);\nassert.equal(languages[0].count, index.count);\nconst matches = index.entries.filter(x => x.id === 'awesome/status-report-writer');\nassert.equal(matches.length, 1);\nconst entry = matches[0];\nconst card = await jsonAt(entry.json, 'agents/en/status-report-writer.json');\nassert.equal(card.schema, 'awesome.bot.agent/1');\nassert.equal(card.id, entry.id);\nassert.equal(card.locale, index.locale);\nassert.equal(card.contentRevision, index.contentRevision);\nassert.ok(entry.templateVersion);\nassert.equal(card.templateVersion, entry.templateVersion);\nassert.equal(card.configuration.format, 'openbot.fleet/1');\nassert.equal(card.configuration.locale, card.locale);\nassert.equal(card.configuration.grantsTools, false);\nassert.equal(card.configuration.grantsContainer, false);\nassert.equal(card.configuration.includesAccountsOrMemory, false);\nassert.equal(card.configuration.importRequiresHostConfirmation, true);\nconst original = await bytesAt(card.configuration.url, 'exports/en/status-report-writer.fleet.json');\nfunction verify(bytes) {\n  assert.equal(bytes.length, card.configuration.bytes, 'byte length mismatch');\n  assert.match(card.configuration.sha256, /^[0-9a-f]{64}$/);\n  assert.equal(createHash('sha256').update(bytes).digest('hex'), card.configuration.sha256, 'SHA-256 mismatch');\n}\nverify(original);\nconst fleet = JSON.parse(original.toString('utf8'));\nassert.equal(fleet.schema, card.configuration.format);\nassert.equal(fleet.mode, 'config');\nassert.equal(fleet.bots.length, 1);\nconst bot = fleet.bots[0];\nassert.equal(bot.id, card.id.split('/')[1]);\nassert.equal(bot.toolsEnabled, false);\nassert.equal(bot.containerEnabled, false);\nassert.deepEqual(bot.messages, []);\nassert.deepEqual(bot.files, []);\nassert.deepEqual(bot.channels, {});\nassert.deepEqual(bot.memory, { profile: '', journal: [] });\nassert.equal(bot.summary, null);\nassert.deepEqual(fleet.shared, { skills: [], files: [] });\nconsole.log('PASS original snapshot');\nconst altered = Buffer.from(original);\nassert.ok(altered.length > 0);\naltered[0] ^= 1;\nassert.throws(() => verify(altered), { code: 'ERR_ASSERTION', message: /SHA-256 mismatch/ });\nverify(original);\nconsole.log('PASS altered copy rejected');\nJS"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "完成判据是依次出现 PASS original snapshot 和 PASS altered copy rejected 两行，进程退出码为 0。版本和摘要取自当前快照，不需要改成某个写死的版本或 SHA。负例只翻转 Buffer 副本的一字节，以 assert.throws 证明摘要校验拒绝；源码和原始产物没有被写入。",
                "en": "Completion requires the two lines PASS original snapshot and PASS altered copy rejected, in that order, with exit code 0. Versions and digests come from the current snapshot; no hard-coded version or SHA is needed. The negative case flips one byte only in a Buffer copy and uses assert.throws to prove rejection. Source files and original artifacts are never written."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "schema 按每层的实际类型检查；id 与 templateVersion 在索引和角色卡间核对，locale 在索引、角色卡与 configuration 间核对，contentRevision 在 discovery、索引和角色卡间核对。Fleet 本身没有 locale、templateVersion 或 contentRevision 字段；这里核对其 schema、单 Bot 的 slug ID 与实际空结构，不臆造字段。",
                "en": "Each layer is checked against its actual schema. ID and templateVersion agree between index and card; locale agrees across index, card, and configuration; contentRevision agrees across discovery, index, and card. Fleet has no locale, templateVersion, or contentRevision fields. Its schema, single Bot slug ID, and actual empty structures are checked without inventing fields."
              }
            },
            {
              "type": "list",
              "items": [
                {
                  "zh": "ENOENT：确认当前目录是仓库根、Node.js 为 22+，并确认 npm run check 和 npm run build:site 成功；不要从其他版本手工拼入缺失文件。",
                  "en": "ENOENT: confirm the repository-root working directory, Node.js 22+, and successful npm run check and npm run build:site. Do not fill missing files manually from another version."
                },
                {
                  "zh": "版本、语言或 URL 断言失败：停止使用这份混合快照，从同一 Git 快照重新生成整个 dist/site 后重试，不放宽断言。",
                  "en": "Version, language, or URL assertion failure: stop using the mixed snapshot and regenerate all of dist/site from one Git snapshot before retrying. Do not relax assertions."
                },
                {
                  "zh": "字节长度或 SHA-256 失败：保留失败记录，重新生成或重新取得完整一致快照；不要修改角色卡摘要让错误文件通过。",
                  "en": "Byte-length or SHA-256 failure: keep the failure record and regenerate or retrieve a complete consistent snapshot. Do not edit the card digest to accept a bad file."
                }
              ]
            }
          ]
        },
        {
          "id": "digest-kinds",
          "title": {
            "zh": "分清两种摘要",
            "en": "Distinguish the two digests"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "字段",
                  "en": "Field"
                },
                {
                  "zh": "计算对象与格式",
                  "en": "Input and format"
                },
                {
                  "zh": "比较边界",
                  "en": "Comparison boundary"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "registry integrity",
                    "en": "registry integrity"
                  },
                  {
                    "zh": "规范清单的 canonicalJson：键递归排序、无格式空白；SHA-256 后使用 sha256-<base64>。",
                    "en": "canonicalJson of the canonical manifest: recursively sorted keys and no formatting whitespace; SHA-256 encoded as sha256-<base64>."
                  },
                  {
                    "zh": "由 engine/src/manifest.mjs 的 integrityOf 定义；不是下载文件的原始字节摘要。",
                    "en": "Defined by integrityOf in engine/src/manifest.mjs; it is not a digest of raw download bytes."
                  }
                ],
                [
                  {
                    "zh": "Agent configuration.sha256 / bytes",
                    "en": "Agent configuration.sha256 / bytes"
                  },
                  {
                    "zh": "configuration.url 指向的具体 Fleet 导出字节；SHA-256 为 64 位十六进制，bytes 为字节数。",
                    "en": "The exact Fleet export bytes at configuration.url; SHA-256 is 64 hexadecimal characters and bytes is the byte count."
                  },
                  {
                    "zh": "由 scripts/agent-surface.mjs 读取产物计算；只与同一 URL、语言和快照的字节比较。",
                    "en": "Computed from the artifact by scripts/agent-surface.mjs; compare only bytes from the same URL, language, and snapshot."
                  }
                ]
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "CLI 经 scripts/market.mjs 复用引擎导出，默认时间取当前 Date.now()；站点构建使用 metadata.updatedAt 的固定时间。exportedAt 和 Bot createdAt 因此可能不同；中文规范投影和英文站点投影的人设等文本也不同。即使角色 ID 和模板版本相同，这些导出的字节与摘要仍可能不同，不能混用 registry integrity、CLI 文件摘要、中文下载或英文下载摘要。",
                "en": "The CLI wrapper scripts/market.mjs reuses engine export, which defaults to Date.now(); site builds use the fixed metadata.updatedAt time. exportedAt and Bot createdAt can therefore differ. The Chinese canonical projection and English site projection also differ in persona and other text. Even with the same role ID and template version, export bytes and digests can differ. Do not interchange registry integrity, a CLI file digest, or Chinese and English download digests."
              }
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "Agent 读取与校验",
            "en": "Agent reading and verification"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/agent-integration.md"
        },
        {
          "label": {
            "zh": "格式契约",
            "en": "Format contract"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
        }
      ]
    },
    {
      "id": "contribute",
      "title": {
        "zh": "贡献、构建与发布",
        "en": "Contribute, build, and publish"
      },
      "summary": {
        "zh": "修改声明式源条目，让下载、索引和网页保持一致。",
        "en": "Edit declarative source entries and keep downloads, indexes, and pages consistent."
      },
      "audiences": [
        "developer"
      ],
      "sections": [
        {
          "id": "entry",
          "title": {
            "zh": "修改正确的源文件",
            "en": "Edit the correct source file"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "每个条目在 data/entries/ 中有一个 JSON 文件。选择 bot-role 或 task-workflow，填写任务、输入、输出、步骤、前提、来源和许可。不放入脚本、凭据、聊天或私有记忆。",
                "en": "Each entry has one JSON file in data/entries/. Choose bot-role or task-workflow and describe mission, inputs, outputs, steps, prerequisites, sources, and license. Exclude scripts, credentials, conversations, and private memory."
              }
            },
            {
              "type": "table",
              "headers": [
                {
                  "zh": "源字段",
                  "en": "Source field"
                },
                {
                  "zh": "含义",
                  "en": "Meaning"
                },
                {
                  "zh": "检查重点",
                  "en": "Check"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "id / version",
                    "en": "id / version"
                  },
                  {
                    "zh": "稳定身份与模板版本",
                    "en": "Stable identity and template version"
                  },
                  {
                    "zh": "保留已发布版本字节",
                    "en": "Preserve published version bytes"
                  }
                ],
                [
                  {
                    "zh": "collection",
                    "en": "collection"
                  },
                  {
                    "zh": "bot-role 或 task-workflow",
                    "en": "bot-role or task-workflow"
                  },
                  {
                    "zh": "按职责或产物分类",
                    "en": "Classify by responsibility or output"
                  }
                ],
                [
                  {
                    "zh": "inputs / outputs / workflow",
                    "en": "inputs / outputs / workflow"
                  },
                  {
                    "zh": "材料、产物与步骤",
                    "en": "Materials, outputs, and steps"
                  },
                  {
                    "zh": "能否写出可验收首任务",
                    "en": "Can a checkable first task be written?"
                  }
                ],
                [
                  {
                    "zh": "requirements / references / license",
                    "en": "requirements / references / license"
                  },
                  {
                    "zh": "前提、来源和许可",
                    "en": "Prerequisites, sources, and license"
                  },
                  {
                    "zh": "不宣称未验证能力或官方身份",
                    "en": "Avoid unsupported capabilities or official status"
                  }
                ]
              ]
            }
          ]
        },
        {
          "id": "cli",
          "title": {
            "zh": "CLI 只规划或导出",
            "en": "The CLI plans or exports"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "scripts/market.mjs 支持 help、list、info、plan、install。install 实际生成文件，必须给出 --out 和目标宿主版本，不会安装到运行中的 App。社区与未固定信任锚的接受标志由使用者明确选择。",
                "en": "scripts/market.mjs supports help, list, info, plan, and install. install generates a file and requires --out and a target host version; it does not install into a running App. Users explicitly choose whether to accept community content and an unpinned trust source."
              }
            },
            {
              "type": "code",
              "language": "sh",
              "text": {
                "zh": "npm run market -- help\nnpm run market -- list --query=research\nnpm run market -- info awesome/grok-researchy\n# Replace 0.9.9 with the actual target host version.\nnpm run market -- plan awesome/grok-researchy --openbot=0.9.9 --allow-community --allow-unpinned\nnpm run market -- install awesome/grok-researchy --openbot=0.9.9 --allow-community --allow-unpinned --out=./researchy.fleet.json",
                "en": "npm run market -- help\nnpm run market -- list --query=research\nnpm run market -- info awesome/grok-researchy\n# Replace 0.9.9 with the actual target host version.\nnpm run market -- plan awesome/grok-researchy --openbot=0.9.9 --allow-community --allow-unpinned\nnpm run market -- install awesome/grok-researchy --openbot=0.9.9 --allow-community --allow-unpinned --out=./researchy.fleet.json"
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "独立 CLI 不提供升级或回滚补丁。Fleet 导入可能改名，必须由宿主先对账实际 Bot ID，再处理保留用户修改的升级。",
                "en": "The standalone CLI exposes no upgrade or rollback patches. Fleet imports can rename IDs; host reconciliation of actual Bot IDs must precede upgrades that preserve user edits."
              }
            }
          ]
        },
        {
          "id": "checks",
          "title": {
            "zh": "核对生成的双语产物",
            "en": "Check generated bilingual output"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "使用 Node.js 22+，先读贡献规范，再修改声明式条目。",
                  "en": "Use Node.js 22+, read the contribution guide, then edit a declarative entry."
                },
                {
                  "zh": "维护完整英文内容，中文回退不能当成翻译。",
                  "en": "Maintain complete English content; Chinese fallback is not a translation."
                },
                {
                  "zh": "运行生成与检查，审阅生成差异和单角色下载。",
                  "en": "Generate and check, then inspect generated diffs and individual downloads."
                },
                {
                  "zh": "只暂存准备公开的文件，再运行公共内容审计。",
                  "en": "Stage only intended public files before the public-content audit."
                }
              ]
            },
            {
              "type": "code",
              "language": "sh",
              "text": {
                "zh": "npm ci --ignore-scripts\nnpm run build\nnpm run check\nnpm run check:versions\nnpm test\nnpm run build:site\nnpm run audit:public",
                "en": "npm ci --ignore-scripts\nnpm run build\nnpm run check\nnpm run check:versions\nnpm test\nnpm run build:site\nnpm run audit:public"
              }
            }
          ]
        },
        {
          "id": "release",
          "title": {
            "zh": "发布不可变版本",
            "en": "Publish immutable versions"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "已发布模板版本和发布资产不能改写。指令修正使用新版本，并保留许可与历史摘要。CI 检查目录、导出和站点；Pages 工作流构建静态站点；版本标签须匹配 package.json。工作流存在不等于线上部署成功，发布后还需核对部署结果和页面。",
                "en": "Published template versions and release assets are immutable. Correct instructions in a new version while retaining licenses and historical digests. CI checks the catalogue, exports, and site. The Pages workflow builds the static site, and version tags must match package.json. A workflow file does not prove deployment; check deployment results and pages afterward."
              }
            },
            {
              "type": "code",
              "language": "sh",
              "text": {
                "zh": "npm run pack:release\n# From the release download directory on macOS:\nshasum -a 256 -c SHA256SUMS",
                "en": "npm run pack:release\n# From the release download directory on macOS:\nshasum -a 256 -c SHA256SUMS"
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "贡献规范",
                    "en": "Contribution guide"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/CONTRIBUTING.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/CONTRIBUTING.md"
                  }
                },
                {
                  "label": {
                    "zh": "发布细则",
                    "en": "Publishing details"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/docs/publishing.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/docs/publishing.md"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "cli-output-errors",
          "title": {
            "zh": "理解 CLI 输出与失败",
            "en": "Understand CLI output and failures"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "--json 只选择命令结果格式；信任检查仍可能向 stdout 写出警告。通过 npm run market 调用时，npm 也可能输出脚本 banner。因此不要对整段 stdout 直接 JSON.parse，也不要假设存在清理所有输出的专用标志。文件导出使用 --out=<file>，命令成功后读取该文件再解析；保留退出码和诊断输出。",
                "en": "--json selects the command result format; trust checks can still write warnings to stdout. Invoking npm run market may add npm script banners. Do not JSON.parse the entire stdout or assume a dedicated flag removes all diagnostic output. For file export, use --out=<file>, then read and parse that file after command success. Keep the exit code and diagnostic output."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "install 是生成 Fleet 配置文件，不会把 Bot 写入运行中的 App。本包装器要求显式填写目标 --openbot，不会检测运行中宿主的版本。npm run market -- help 显示用法及 0.9.9 示例，不表示当前宿主或默认规划版本。重试前，从目标宿主自身的版本信息核实实际版本；若版本未知，先停止兼容规划，不猜填 0.9.9 或默认值。接受社区内容及未固定信任源须由使用者明确选择，不能靠修复参数错误自动增加接受标志。",
                "en": "install generates a Fleet configuration file; it does not write a Bot into the running App. This wrapper requires an explicit target --openbot and does not detect the running host version. npm run market -- help shows usage and a 0.9.9 example, not the current host or default planning version. Before retrying, verify the actual version using the target host’s own version information. If it is unknown, stop compatibility planning rather than guess 0.9.9 or a default. Acceptance of community content and an unpinned source is an explicit user choice; repairing a parameter error must not silently add acceptance flags."
              }
            },
            {
              "type": "table",
              "headers": [
                {
                  "zh": "失败或现象",
                  "en": "Failure or symptom"
                },
                {
                  "zh": "真实含义与恢复",
                  "en": "Meaning and recovery"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "plan / install 缺 --openbot",
                    "en": "plan / install missing --openbot"
                  },
                  {
                    "zh": "报错以 Provide --openbot=<target-version> 开头。本包装器要求实际目标版本，不检测运行中宿主。先核对目标宿主自身的版本信息，再补 --openbot=<target-version> 重试；未知时停止兼容规划，不照抄帮助示例或猜默认值。",
                    "en": "The error starts with Provide --openbot=<target-version>. This wrapper requires the actual target version and does not detect the running host. Check the target host’s own version information, then retry with --openbot=<target-version>. If unknown, stop compatibility planning; do not copy the help example or guess a default."
                  }
                ],
                [
                  {
                    "zh": "install 缺 --out",
                    "en": "install missing --out"
                  },
                  {
                    "zh": "报错为 Provide --out=<file>; this command generates a configuration file and does not install into your App. 选择可写的新目标文件路径，补 --out=<file>，并保留正确的 --openbot。两者都缺时先遇到 --out 错误。",
                    "en": "The error is Provide --out=<file>; this command generates a configuration file and does not install into your App. Choose a writable new destination file, add --out=<file>, and retain the correct --openbot. If both are missing, the --out error comes first."
                  }
                ],
                [
                  {
                    "zh": "--out= 或 --out 后无路径",
                    "en": "--out= or --out without a path"
                  },
                  {
                    "zh": "报错为 --out requires a file path。给出非空文件路径；单独的标志不代表自动选择路径。",
                    "en": "The error is --out requires a file path. Supply a nonempty file path; a bare flag does not select a destination automatically."
                  }
                ],
                [
                  {
                    "zh": "stdout 在 JSON 前出现警告或 banner",
                    "en": "Warnings or banners precede JSON on stdout"
                  },
                  {
                    "zh": "这是输出混合，不等于 Fleet 文件损坏。检查退出码，阅读警告；导出结果从 --out 文件读取，查看本包装器帮助用 npm run market -- help。",
                    "en": "Mixed output does not imply a corrupted Fleet file. Check the exit code and read warnings. Read exported data from the --out file; inspect wrapper help with npm run market -- help."
                  }
                ]
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "贡献规范",
            "en": "Contribution guide"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/CONTRIBUTING.md"
        },
        {
          "label": {
            "zh": "实际 CLI 包装器",
            "en": "Actual CLI wrapper"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/scripts/market.mjs"
        },
        {
          "label": {
            "zh": "CI 与发布规则",
            "en": "CI and publishing rules"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/publishing.md"
        },
        {
          "label": {
            "zh": "完整条目实例",
            "en": "Complete entry example"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/data/entries/status-report-writer.json"
        }
      ]
    },
    {
      "id": "troubleshooting",
      "title": {
        "zh": "先定位问题在哪一层",
        "en": "Locate the failing layer first"
      },
      "summary": {
        "zh": "保留材料和错误证据，选择低风险、可逆的排查动作。",
        "en": "Preserve materials and error evidence, then choose low-risk reversible checks."
      },
      "audiences": [
        "start",
        "team",
        "developer"
      ],
      "sections": [
        {
          "id": "triage",
          "title": {
            "zh": "常见问题速查",
            "en": "Quick troubleshooting table"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "现象",
                  "en": "Symptom"
                },
                {
                  "zh": "先检查",
                  "en": "Check first"
                },
                {
                  "zh": "下一步",
                  "en": "Next step"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "网站加载失败",
                    "en": "Site fails to load"
                  },
                  {
                    "zh": "网络与目录加载状态",
                    "en": "Network and catalogue load status"
                  },
                  {
                    "zh": "重试相同筛选或读 GitHub 目录",
                    "en": "Retry the same filters or read the GitHub catalogue"
                  }
                ],
                [
                  {
                    "zh": "下载后没有 Bot",
                    "en": "No Bot after download"
                  },
                  {
                    "zh": "是否只完成网站下载",
                    "en": "Whether only a download occurred"
                  },
                  {
                    "zh": "在宿主当前配置导入入口预览与确认",
                    "en": "Use the current host import preview and confirmation"
                  }
                ],
                [
                  {
                    "zh": "合集无法导入",
                    "en": "Collection cannot import"
                  },
                  {
                    "zh": "单文件是否超过200个 Bot",
                    "en": "Whether a file exceeds 200 Bots"
                  },
                  {
                    "zh": "选单角色或发布分片，并查宿主总量限制",
                    "en": "Choose one role or release parts and check host total limits"
                  }
                ],
                [
                  {
                    "zh": "读不到邮件或文件",
                    "en": "Cannot read mail or files"
                  },
                  {
                    "zh": "工具、账号授权与材料可读性",
                    "en": "Tools, account authorization, and readable materials"
                  },
                  {
                    "zh": "提供脱敏材料或补齐任务所需授权",
                    "en": "Provide sanitized materials or obtain required task access"
                  }
                ],
                [
                  {
                    "zh": "中文模式有英文指令",
                    "en": "English instructions in Chinese mode"
                  },
                  {
                    "zh": "是否为带来源适配",
                    "en": "Whether it is an attributed adaptation"
                  },
                  {
                    "zh": "阅读适配说明，指定产物语言",
                    "en": "Read adaptation notes and specify output language"
                  }
                ],
                [
                  {
                    "zh": "SHA-256 不匹配",
                    "en": "SHA-256 mismatch"
                  },
                  {
                    "zh": "卡片与下载是否同一发布",
                    "en": "Whether card and download share a publication"
                  },
                  {
                    "zh": "停止导入，获取一致版本或发布快照",
                    "en": "Stop import and retrieve a consistent version or release snapshot"
                  }
                ],
                [
                  {
                    "zh": "产物完整但缺少证据",
                    "en": "Complete-looking output lacks evidence"
                  },
                  {
                    "zh": "来源和验收条件是否齐全",
                    "en": "Whether sources and criteria are present"
                  },
                  {
                    "zh": "补材料并列出未知、冲突",
                    "en": "Add materials and list unknowns and conflicts"
                  }
                ]
              ]
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "读不到文件时，把以下两行公开虚构文本直接贴给当前 Agent，请它只复述两条事实并标行号。不要放入客户资料。",
                "en": "If a file cannot be read, paste these two lines of public fictional text directly into the current Agent. Ask it to restate only the two facts with line numbers. Do not include customer materials."
              }
            },
            {
              "type": "code",
              "text": {
                "zh": "1｜虚构项目：纸飞机；目标周五交草稿。\n2｜桌面测试通过；手机测试未开始。",
                "en": "1 | Fictional project: Paper Plane; draft due Friday.\n2 | Desktop tests passed; mobile tests not started."
              },
              "language": "text"
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "若复述正确，记录“粘贴文本可读；原文件读取仍未验证”，保存这次结果。下一步只查原文件路径、格式或授权；若文本也失败，保留报错定位模型或会话问题。条件未变时不盲目重试，不重置已成功的步骤。",
                "en": "If the restatement is correct, record “pasted text readable; original file reading still unverified” and save the result. Next check only the original file path, format, or access. If text also fails, preserve the error to investigate the model or session. Avoid blind retries under unchanged conditions and retain successful steps."
              }
            }
          ]
        },
        {
          "id": "report",
          "title": {
            "zh": "提交可复现反馈",
            "en": "Submit reproducible feedback"
          },
          "blocks": [
            {
              "type": "code",
              "language": "text",
              "text": {
                "zh": "公开反馈（请脱敏）\n页面或公开Bot ID：\n模板版本 / 语言 / 内容修订：\n宿主版本（涉及导入时）：\n时间与最小步骤：\n预期结果：\n实际结果和错误码：\n可公开小样例：\n敏感资料处理状态（如适用，不写敏感值）：\n不包含：账号、密钥、私有对话、客户材料",
                "en": "Public feedback (sanitize first)\nPage or public Bot ID:\nTemplate version / language / content revision:\nHost version (for import issues):\nTime and minimal steps:\nExpected result:\nActual result and error code:\nSmall public sample:\nSensitive-material handling status (if applicable; no sensitive values):\nExclude accounts, keys, private conversations, and customer materials."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "角色详情反馈入口会预填公开 Bot ID、模板版本和来源。提交前仍需检查自己添加的材料，不公开完整私有日志。",
                "en": "Role detail feedback links prefill the public Bot ID, template version, and source. Review your additions before submission and keep complete private logs out of public feedback."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "若已误贴敏感资料，先处理暴露：凭据在对应服务侧撤销或轮换，删除聊天不等于凭据失效；客户资料按实际服务删除或限制访问，并确认暴露范围。反馈只记录处理状态与必要的范围说明，不再次粘贴敏感值。",
                "en": "If sensitive material was pasted by mistake, address the exposure first: revoke or rotate credentials at the relevant service; deleting a chat does not invalidate credentials. For customer materials, delete them or restrict access in the actual service and establish the exposure scope. Report only handling status and necessary scope details, without repeating sensitive values."
              }
            }
          ]
        },
        {
          "id": "recover",
          "title": {
            "zh": "保留工作后再恢复",
            "en": "Preserve work before recovery"
          },
          "blocks": [
            {
              "type": "steps",
              "items": [
                {
                  "zh": "保存草稿、下载文件和必要的脱敏错误信息。",
                  "en": "Save drafts, downloads, and necessary sanitized error details."
                },
                {
                  "zh": "区分网站、格式、宿主导入、模型和账号问题。",
                  "en": "Separate site, format, host-import, model, and account problems."
                },
                {
                  "zh": "先重试读取或用小样例复现，避免用重置替代定位。",
                  "en": "Retry reading or reproduce with a small sample before considering a reset."
                },
                {
                  "zh": "运行实例按宿主当前文档处理，记录实际结果。",
                  "en": "Follow current host documentation for running instances and record actual results."
                }
              ]
            }
          ]
        },
        {
          "id": "faq",
          "title": {
            "zh": "三个容易误解的问题",
            "en": "Three common misunderstandings"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "问题",
                  "en": "Question"
                },
                {
                  "zh": "回答",
                  "en": "Answer"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "打开来源链接会安装吗？",
                    "en": "Does opening a source link install a Bot?"
                  },
                  {
                    "zh": "不会，原站条件与操作另行适用。",
                    "en": "No. Original-site conditions and actions apply separately."
                  }
                ],
                [
                  {
                    "zh": "能运行就代表账号任务认证吗？",
                    "en": "Does a working role certify account tasks?"
                  },
                  {
                    "zh": "不能，格式检查与真实账号验收不同。",
                    "en": "No. Format checks differ from real-account acceptance."
                  }
                ],
                [
                  {
                    "zh": "Bot 自动共享私有记忆吗？",
                    "en": "Do Bots automatically share private memory?"
                  },
                  {
                    "zh": "配置不传记忆，使用明确授权资料包交接。",
                    "en": "Configurations do not transfer memory; hand off explicitly authorized packets."
                  }
                ]
              ]
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "公开问题列表",
                    "en": "Public issue tracker"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/issues",
                    "en": "https://github.com/Harzva/awesome-bot/issues"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "网站与反馈说明",
            "en": "Site and feedback notes"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/README.md"
        },
        {
          "label": {
            "zh": "导入与验证范围",
            "en": "Import and verification scope"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/INTEGRATION.md"
        },
        {
          "label": {
            "zh": "摘要不一致处理",
            "en": "Digest mismatch handling"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/agent-integration.md"
        }
      ]
    },
    {
      "id": "reference",
      "title": {
        "zh": "术语、许可与来源",
        "en": "Terms, licenses, and sources"
      },
      "summary": {
        "zh": "查清字段和来源，区分原创、英文适配与外部参考。",
        "en": "Look up fields and provenance, distinguishing originals, English adaptations, and external references."
      },
      "audiences": [
        "start",
        "team",
        "developer"
      ],
      "sections": [
        {
          "id": "terms",
          "title": {
            "zh": "术语表",
            "en": "Glossary"
          },
          "blocks": [
            {
              "type": "table",
              "headers": [
                {
                  "zh": "术语",
                  "en": "Term"
                },
                {
                  "zh": "本手册中的含义",
                  "en": "Meaning in this handbook"
                }
              ],
              "rows": [
                [
                  {
                    "zh": "Agent",
                    "en": "Agent"
                  },
                  {
                    "zh": "在宿主中结合模型、指令和可用工具处理任务的执行者；能力取决于实际配置与授权",
                    "en": "An executor that uses a model, instructions, and available tools in a host to handle tasks; its capabilities depend on actual configuration and authorization"
                  }
                ],
                [
                  {
                    "zh": "Bot 角色",
                    "en": "Bot role"
                  },
                  {
                    "zh": "职责、方法和前提的配置",
                    "en": "Configuration of responsibilities, methods, and prerequisites"
                  }
                ],
                [
                  {
                    "zh": "宿主",
                    "en": "Host"
                  },
                  {
                    "zh": "承载 Bot 或 Agent 的应用或运行环境，管理可用工具与账号授权",
                    "en": "The application or runtime that runs a Bot or Agent and manages available tools and account authorization"
                  }
                ],
                [
                  {
                    "zh": "模型",
                    "en": "Model"
                  },
                  {
                    "zh": "提供生成与推理能力的组件；可用工具和账号权限由宿主另行配置",
                    "en": "The component providing generation and reasoning; available tools and account permissions are configured separately in the host"
                  }
                ],
                [
                  {
                    "zh": "任务流程",
                    "en": "Task workflow"
                  },
                  {
                    "zh": "围绕特定产物组织的步骤",
                    "en": "Steps organized around a specific output"
                  }
                ],
                [
                  {
                    "zh": "Fleet",
                    "en": "Fleet"
                  },
                  {
                    "zh": "供宿主导入审阅的配置文件",
                    "en": "Configuration file for host import review"
                  }
                ],
                [
                  {
                    "zh": "规范清单",
                    "en": "Canonical manifest"
                  },
                  {
                    "zh": "保留已发布版本字节的角色清单",
                    "en": "Role manifest preserving published version bytes"
                  }
                ],
                [
                  {
                    "zh": "语言投影",
                    "en": "Localized projection"
                  },
                  {
                    "zh": "同一源角色的语言化内容与下载",
                    "en": "Localized content and download of the same source role"
                  }
                ],
                [
                  {
                    "zh": "配置摘要",
                    "en": "Configuration digest"
                  },
                  {
                    "zh": "识别具体下载字节的 SHA-256",
                    "en": "SHA-256 identifying exact download bytes"
                  }
                ],
                [
                  {
                    "zh": "信任锚",
                    "en": "Trust anchor"
                  },
                  {
                    "zh": "独立固定的发布者验证依据，本目录未捆绑",
                    "en": "Independently pinned publisher-verification basis, not bundled here"
                  }
                ],
                [
                  {
                    "zh": "验收",
                    "en": "Acceptance"
                  },
                  {
                    "zh": "按明确条件检查具体任务产物",
                    "en": "Checking a task output against explicit criteria"
                  }
                ]
              ]
            }
          ]
        },
        {
          "id": "license",
          "title": {
            "zh": "查看许可与署名",
            "en": "Find licenses and attribution"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "315 个角色中包含 223 个带来源适配角色，另有 56 个任务流程。Shared Bots 仅为来源链接，不计入本站可导入配置；具体条目的许可与来源以 data/entries 中的 license / references 及适用许可文件为准。",
                "en": "The 315 roles include 223 source-adapted roles; there are also 56 task workflows. Shared Bots are source links and are excluded from this site’s importable configuration count. For each entry, check license / references in data/entries and the applicable license files."
              }
            },
            {
              "type": "paragraph",
              "text": {
                "zh": "本站原创内容和代码使用 MIT。223 个带来源角色中，mergisi/awesome-grokbot 使用 CC0-1.0，cobusgreyling/grok-bot-templates 和 PramodDutta/botskills 使用 MIT。适配保留原始指令、来源、摘要与适用许可；上游名称和品牌权利归各自所有者。",
                "en": "Original site content and code use MIT. Among 223 attributed roles, mergisi/awesome-grokbot uses CC0-1.0; cobusgreyling/grok-bot-templates and PramodDutta/botskills use MIT. Adaptations retain original instructions, provenance, digests, and applicable notices. Upstream names and brands remain their owners' property."
              }
            },
            {
              "type": "steps",
              "items": [
                {
                  "zh": "在详情查看作者、源地址和模板版本。",
                  "en": "Read author, source URL, and template version in details."
                },
                {
                  "zh": "再分发前打开适用许可与第三方说明，保留要求的署名。",
                  "en": "Before redistribution, read applicable licenses and third-party notices and retain required attribution."
                },
                {
                  "zh": "外部项目逐项看许可；链接参考不代表获准复制软件或资产。",
                  "en": "Check each external project's license; a reference link does not grant permission to copy software or assets."
                }
              ]
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "项目许可",
                    "en": "Project license"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/LICENSE",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/LICENSE"
                  }
                },
                {
                  "label": {
                    "zh": "第三方说明",
                    "en": "Third-party notices"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/THIRD_PARTY_NOTICES.md",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/THIRD_PARTY_NOTICES.md"
                  }
                },
                {
                  "label": {
                    "zh": "适配来源清单",
                    "en": "Adaptation source inventory"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/blob/main/data/imported-role-sources.json",
                    "en": "https://github.com/Harzva/awesome-bot/blob/main/data/imported-role-sources.json"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "links",
          "title": {
            "zh": "继续阅读",
            "en": "Further reading"
          },
          "blocks": [
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "市场首页",
                    "en": "Market home"
                  },
                  "url": {
                    "zh": "./",
                    "en": "./?lang=en"
                  }
                },
                {
                  "label": {
                    "zh": "手册首页",
                    "en": "Handbook home"
                  },
                  "url": {
                    "zh": "./handbook.html",
                    "en": "./handbook.en.html"
                  }
                },
                {
                  "label": {
                    "zh": "Shared Bots 来源目录",
                    "en": "Shared Bots source directory"
                  },
                  "url": {
                    "zh": "./shared-bots.html",
                    "en": "./shared-bots.html?lang=en"
                  }
                },
                {
                  "label": {
                    "zh": "项目与参考",
                    "en": "Projects and references"
                  },
                  "url": {
                    "zh": "./resources.html",
                    "en": "./resources.en.html"
                  }
                },
                {
                  "label": {
                    "zh": "机器索引",
                    "en": "Machine-readable registry"
                  },
                  "url": {
                    "zh": "./registry/index.json",
                    "en": "./registry/index.json"
                  }
                },
                {
                  "label": {
                    "zh": "发布与校验文件",
                    "en": "Releases and checksums"
                  },
                  "url": {
                    "zh": "https://github.com/Harzva/awesome-bot/releases",
                    "en": "https://github.com/Harzva/awesome-bot/releases"
                  }
                }
              ]
            }
          ]
        },
        {
          "id": "method",
          "title": {
            "zh": "本手册如何使用来源",
            "en": "How this handbook uses sources"
          },
          "blocks": [
            {
              "type": "paragraph",
              "text": {
                "zh": "本手册借鉴 grokbot-guide 的学习路径、场景验收和分层排错结构，正文与练习为本站原创。Grok 的云电脑、例程、连接应用和审批菜单是其平台专属说明，不在这里作为 OpenBot 已接通功能介绍。本手册功能事实依据本仓文档与数据契约，具体账号任务仍需单独验收。",
                "en": "This handbook learns from grokbot-guide's learning paths, scenario acceptance, and layered troubleshooting. Its text and exercises are original. Grok cloud computers, routines, app connections, and approval menus are platform-specific and are not presented as connected OpenBot capabilities. Feature facts rely on this repository's documentation and data contracts; account tasks still need separate acceptance."
              }
            },
            {
              "type": "links",
              "items": [
                {
                  "label": {
                    "zh": "固定版本结构参考",
                    "en": "Structural reference at a fixed revision"
                  },
                  "url": {
                    "zh": "https://github.com/anightmonarch/grokbot-guide/tree/65688ac52e2a14b160393688bdfb2734ecc6dcc7",
                    "en": "https://github.com/anightmonarch/grokbot-guide/tree/65688ac52e2a14b160393688bdfb2734ecc6dcc7"
                  }
                }
              ]
            }
          ]
        }
      ],
      "sources": [
        {
          "label": {
            "zh": "本站许可",
            "en": "Site license"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/LICENSE"
        },
        {
          "label": {
            "zh": "第三方署名和许可",
            "en": "Third-party attribution and licenses"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/THIRD_PARTY_NOTICES.md"
        },
        {
          "label": {
            "zh": "适配与索引边界",
            "en": "Adaptation and indexing boundaries"
          },
          "url": "https://github.com/Harzva/awesome-bot/blob/main/docs/market-aggregation.md"
        },
        {
          "label": {
            "zh": "学习路径结构参考",
            "en": "Learning-path structural reference"
          },
          "url": "https://github.com/anightmonarch/grokbot-guide/tree/65688ac52e2a14b160393688bdfb2734ecc6dcc7"
        }
      ]
    }
  ],
  "contentRevision": "0.10.0",
  "counts": {
    "templates": 371,
    "roles": 315,
    "workflows": 56,
    "adapted": 223,
    "shared": 17044,
    "scenarios": 5
  },
  "scenarios": {
    "zh": [
      {
        "schema": "awesome.bot.scenario/1",
        "id": "bug-retest",
        "title": "复现缺陷并安排复验",
        "titleEn": "Reproduce a bug and plan retesting",
        "summary": "把问题反馈转成最小复现，再核对受影响的关键路径和上线阻塞。",
        "inputs": [
          "问题描述、预期行为、发生频率和最小输入",
          "指定代码或可测试版本、平台及环境信息",
          "允许使用的测试环境、数据、账号与界面",
          "核心用户任务、上线条件和已知修复"
        ],
        "outputs": [
          "最小复现步骤、日志及环境信息",
          "已证实情况与待验证的定位假设",
          "关键路径检查记录、上线阻塞和复验顺序"
        ],
        "steps": [
          {
            "botId": "awesome/bug-reproduction",
            "botName": "缺陷复现工程师",
            "prompt": "请先帮助复现这个缺陷。问题与预期行为：[填写]；指定版本和平台：[填写]；最小输入或样本：[提供获准数据]；允许的测试环境与操作范围：[填写]。记录实际与预期差异，逐步缩减触发条件，保留日志和环境信息，区分已证实原因与假设。没有必要工具或环境时说明缺口，提供可由我执行的步骤，不声称已完成复现。",
            "handoff": "由我核对复现证据，把可重复步骤、影响范围和已确认修复交给创业产品质量检查员。"
          },
          {
            "botId": "awesome/grok-startup-qa-bot",
            "botName": "创业产品质量检查员",
            "prompt": "基于以下已核对的缺陷复现和修复信息，检查受影响的核心用户路径并安排复验。复现与修复：[粘贴]；可测试版本和核心任务：[填写]；上线条件、测试账号与获准界面操作范围：[填写]。记录正常、空白和错误路径中的真实发现，列上线阻塞及逐项复验方法；未实际操作或未验证的项目明确标为待检查，不访问未授权环境。",
            "handoff": "由我和发布负责人审阅检查证据、阻塞与复验结果，决定是否满足上线条件。"
          }
        ],
        "botIds": [
          "awesome/bug-reproduction",
          "awesome/grok-startup-qa-bot"
        ],
        "downloadUrl": "exports/scenario-bug-retest.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "customer-meeting",
        "title": "准备客户会谈",
        "titleEn": "Prepare a customer meeting",
        "summary": "先核对公司背景，再整理这次会谈的议程、证据和待确认问题。",
        "inputs": [
          "目标公司、研究目的及产品适配条件",
          "获准使用的公司资料、来源和历史沟通记录",
          "会谈目标、参会人、产品资料和可承诺范围"
        ],
        "outputs": [
          "注明来源与日期的公司研究简报",
          "区分事实和假设的需求信号",
          "一页会前简报、议程、问题清单和材料待办"
        ],
        "steps": [
          {
            "botId": "awesome/account-research-specialist",
            "botName": "客户研究专员",
            "prompt": "我要为客户会谈准备公司研究简报。目标公司与研究目的：[填写]；产品及适配条件：[填写]；获准资料与来源：[粘贴或提供已授权位置]。核对公司主体、业务和近期变化，注明来源与日期；把事实、需求信号和购买假设分开。资料不足时先列待补信息，不声称访问了未连接的来源。",
            "handoff": "由我核对简报，将已确认的背景、需求信号和待核实假设交给销售会前准备员。"
          },
          {
            "botId": "awesome/meeting-prep-buddy",
            "botName": "销售会前准备员",
            "prompt": "请结合以下已审阅的公司研究简报、历史沟通、参会人和会议目标，准备一页会前简报、议程、关键问题和材料待办。公司研究简报：[粘贴]；参会人及会议目标：[填写]；产品证据和可承诺范围：[填写]。区分客户事实、我们的假设和需要内部确认的承诺，不替我发送消息或安排会议。",
            "handoff": "由我审阅会前材料并确认承诺范围，再用于实际会谈。"
          }
        ],
        "botIds": [
          "awesome/account-research-specialist",
          "awesome/meeting-prep-buddy"
        ],
        "downloadUrl": "exports/scenario-customer-meeting.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "feedback-to-requirements",
        "title": "把反馈整理成需求",
        "titleEn": "Turn feedback into requirements",
        "summary": "先识别反馈主题和用户影响，再归并成可追踪、待澄清的需求清单。",
        "inputs": [
          "获准使用的反馈、工单及其时间和来源",
          "产品与用户分组、已知问题和近期变更",
          "已有需求库及需求关联信息"
        ],
        "outputs": [
          "保留原始证据的反馈主题与用户任务",
          "归并去重的需求清单和影响范围",
          "验证建议与待澄清问题，不承诺开发排期"
        ],
        "steps": [
          {
            "botId": "awesome/product-feedback-analyst",
            "botName": "产品反馈分析员",
            "prompt": "请分析这批获准反馈。反馈记录及来源时间：[粘贴]；产品与用户分组：[填写]；已知问题和近期变更：[填写]。按用户情境、目标、阻碍和影响归并主题，保留原始证据与矛盾反馈，说明样本覆盖和缺失信息。给出可验证改进建议，不直接承诺开发排期。",
            "handoff": "由我检查主题与原始记录的对应关系，将已确认主题和证据交给功能请求跟踪员。"
          },
          {
            "botId": "awesome/feature-request-tracker",
            "botName": "功能请求跟踪员",
            "prompt": "把以下已审阅的反馈主题与原始证据整理为需求清单。反馈主题与证据：[粘贴]；已有需求库：[提供获准记录]；客户和产品分组：[填写]。合并重复诉求并关联已有需求，保留具体问题场景、影响范围和待澄清问题。区分需求事实与优先级建议，不代替产品负责人承诺排期或更改需求库。",
            "handoff": "由我和产品负责人审阅需求、补充核实信息，再决定优先级与是否落库。"
          }
        ],
        "botIds": [
          "awesome/product-feedback-analyst",
          "awesome/feature-request-tracker"
        ],
        "downloadUrl": "exports/scenario-feedback-to-requirements.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "product-launch",
        "title": "准备产品上市材料",
        "titleEn": "Prepare a product launch",
        "summary": "从客户问题和产品证据组织定位，再倒排素材、审核和渠道发布日历。",
        "inputs": [
          "目标客群、需求证据与替代方案",
          "产品能力、限制和可以证明的差异",
          "上市目标、截止时间、已有素材和渠道",
          "制作、审核负责人及不可移动的节点"
        ],
        "outputs": [
          "定位和价值表述、受众信息矩阵",
          "上市内容需求及验证计划",
          "营销日历、依赖冲突和检查点"
        ],
        "steps": [
          {
            "botId": "awesome/grok-product-marketer",
            "botName": "产品定位与上市策划员",
            "prompt": "请为产品上市准备定位草案。目标客群与需求证据：[填写]；产品能力、限制和差异证据：[填写]；上市目标与已有素材：[填写]。把客户任务、替代方案与可证明的价值对应，组织受众信息和内容需求；未证明的主张保留为假设，列出后续验证计划，不编造客户证言或效果数据。",
            "handoff": "由我审阅定位与证据，将已确认的受众信息、内容需求和验证计划交给营销排期管理员。"
          },
          {
            "botId": "awesome/marketing-calendar-owner",
            "botName": "营销排期管理员",
            "prompt": "请按以下已审阅的上市内容需求倒排营销日历。定位与内容需求：[粘贴]；上市目标及截止时间：[填写]；渠道与素材清单：[填写]；制作和审核负责人、固定节点：[填写]。标出制作、审核和渠道依赖、资源冲突与缺口，为每项记录负责人和检查点。仅准备可审阅计划，不替我发布内容、发送消息或承诺未确认日期。",
            "handoff": "由我和相关负责人确认日历、资源与审核安排，再按已授权流程执行发布。"
          }
        ],
        "botIds": [
          "awesome/grok-product-marketer",
          "awesome/marketing-calendar-owner"
        ],
        "downloadUrl": "exports/scenario-product-launch.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "weekly-report",
        "title": "写一份有证据的周报",
        "titleEn": "Write an evidence-backed weekly report",
        "summary": "用一个 Bot 把项目产物、验证和阻塞整理成清楚的状态报告草稿。",
        "inputs": [
          "本周报告周期、项目目标和里程碑",
          "已完成产物、测试结果与验收记录",
          "正在进行的事项、阻塞和计划变更",
          "下阶段计划、待决策问题和负责人"
        ],
        "outputs": [
          "区分已交付、待验收、进行中和受阻的周报草稿",
          "有证据的风险说明与决策请求",
          "下一阶段行动与负责人"
        ],
        "steps": [
          {
            "botId": "awesome/status-report-writer",
            "botName": "进度报告编辑",
            "prompt": "请根据以下项目事实写本周状态报告草稿。报告周期、目标与里程碑：[填写]；产物、测试和验收记录：[粘贴]；进行中事项、阻塞和计划变更：[填写]；下阶段行动与待决策问题：[填写]。分清已交付、待验收、进行中和受阻，给结论保留证据，明确偏差、风险和所需决策；没有证据的进展保留未知，不把测试通过写成业务已验收。",
            "handoff": "由我核对证据、负责人和决策请求，修改确认后再向相应读者发送。"
          }
        ],
        "botIds": [
          "awesome/status-report-writer"
        ],
        "downloadUrl": "exports/scenario-weekly-report.fleet.json"
      }
    ],
    "en": [
      {
        "schema": "awesome.bot.scenario/1",
        "id": "bug-retest",
        "title": "Reproduce a bug and plan retesting",
        "titleEn": "Reproduce a bug and plan retesting",
        "summary": "Create a minimal reproduction, then check affected key paths and release blockers.",
        "inputs": [
          "Issue description, expected behavior, frequency and minimal input",
          "Specified code or testable build, platform and environment details",
          "Permitted test environment, data, accounts and interface",
          "Core user tasks, release criteria and known fixes"
        ],
        "outputs": [
          "Minimal reproduction steps, logs and environment details",
          "Confirmed findings and diagnostic hypotheses still needing validation",
          "Key-path check records, release blockers and retest order"
        ],
        "steps": [
          {
            "botId": "awesome/bug-reproduction",
            "prompt": "Help reproduce this bug first. Issue and expected behavior: [fill in]; specified build and platform: [fill in]; minimal input or sample: [provide authorized data]; permitted test environment and operation scope: [fill in]. Record actual versus expected differences, progressively reduce triggering conditions, retain logs and environment details, and distinguish confirmed causes from hypotheses. If necessary tools or an environment are unavailable, explain the gap and provide steps I can execute; do not claim to have reproduced it.",
            "handoff": "I will verify the reproduction evidence and pass repeatable steps, the impact scope and confirmed fixes to Startup QA Bot.",
            "botName": "Bug Reproduction"
          },
          {
            "botId": "awesome/grok-startup-qa-bot",
            "prompt": "Use the following verified bug reproduction and fix information to check affected core user paths and plan retesting. Reproduction and fixes: [paste]; testable build and core tasks: [fill in]; release criteria, test accounts and authorized interface operations: [fill in]. Record real findings on normal, empty and error paths, then list release blockers and a retest method for each. Explicitly mark unexecuted or unverified items as awaiting checks, and do not access unauthorized environments.",
            "handoff": "The release owner and I will review check evidence, blockers and retest results to decide whether release criteria are met.",
            "botName": "Startup QA Bot"
          }
        ],
        "botIds": [
          "awesome/bug-reproduction",
          "awesome/grok-startup-qa-bot"
        ],
        "downloadUrl": "exports/en/scenario-bug-retest.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "customer-meeting",
        "title": "Prepare a customer meeting",
        "titleEn": "Prepare a customer meeting",
        "summary": "Verify company background, then organize the agenda, evidence and questions to resolve in this meeting.",
        "inputs": [
          "Target company, research purpose and product fit criteria",
          "Authorized company materials, sources and communication history",
          "Meeting goals, participants, product materials and permitted commitment scope"
        ],
        "outputs": [
          "Company research brief with sources and dates",
          "Need signals that separate facts from hypotheses",
          "One-page meeting brief, agenda, questions and preparation tasks"
        ],
        "steps": [
          {
            "botId": "awesome/account-research-specialist",
            "prompt": "I need a company research brief for a customer meeting. Target company and research purpose: [fill in]; product and fit criteria: [fill in]; authorized materials and sources: [paste or provide an authorized location]. Verify the company entity, business and recent changes, recording sources and dates. Separate facts, need signals and buying hypotheses. If materials are insufficient, list missing information first, and do not claim access to sources that are not connected.",
            "handoff": "I will review the brief and pass confirmed background, need signals and hypotheses to verify to Meeting Prep Buddy.",
            "botName": "Account Research Specialist"
          },
          {
            "botId": "awesome/meeting-prep-buddy",
            "prompt": "Use the following reviewed company research, communication history, participants and meeting goals to prepare a one-page brief, agenda, key questions and preparation tasks. Company research brief: [paste]; participants and meeting goals: [fill in]; product evidence and permitted commitments: [fill in]. Separate customer facts, our hypotheses and commitments requiring internal confirmation. Do not send messages or schedule meetings on my behalf.",
            "handoff": "I will review the meeting materials and confirm the commitment scope before using them in the actual meeting.",
            "botName": "Meeting Prep Buddy"
          }
        ],
        "botIds": [
          "awesome/account-research-specialist",
          "awesome/meeting-prep-buddy"
        ],
        "downloadUrl": "exports/en/scenario-customer-meeting.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "feedback-to-requirements",
        "title": "Turn feedback into requirements",
        "titleEn": "Turn feedback into requirements",
        "summary": "Identify feedback themes and user impact, then consolidate a traceable requirements list with questions to clarify.",
        "inputs": [
          "Authorized feedback and tickets with timestamps and sources",
          "Product and user segments, known issues and recent changes",
          "Existing requirements repository and requirement links"
        ],
        "outputs": [
          "Feedback themes and user tasks retaining original evidence",
          "Deduplicated requirements list and impact scope",
          "Validation suggestions and clarification questions without development schedule commitments"
        ],
        "steps": [
          {
            "botId": "awesome/product-feedback-analyst",
            "prompt": "Analyze this authorized feedback batch. Feedback records, sources and timestamps: [paste]; product and user segments: [fill in]; known issues and recent changes: [fill in]. Group themes by user context, goal, obstacle and impact. Retain original evidence and contradictory feedback, and describe sample coverage and missing information. Suggest verifiable improvements without promising a development schedule.",
            "handoff": "I will check themes against the original records and pass confirmed themes and evidence to Feature Request Tracker.",
            "botName": "Product Feedback Analyst"
          },
          {
            "botId": "awesome/feature-request-tracker",
            "prompt": "Turn the following reviewed feedback themes and original evidence into a requirements list. Themes and evidence: [paste]; existing requirements repository: [provide authorized records]; customer and product segments: [fill in]. Merge duplicate requests and link existing requirements, retaining specific problem contexts, impact scope and clarification questions. Separate requirement facts from prioritization suggestions. Do not promise a schedule on behalf of the product owner or modify the requirements repository.",
            "handoff": "The product owner and I will review requirements and verify missing details before deciding priorities and whether to add records.",
            "botName": "Feature Request Tracker"
          }
        ],
        "botIds": [
          "awesome/product-feedback-analyst",
          "awesome/feature-request-tracker"
        ],
        "downloadUrl": "exports/en/scenario-feedback-to-requirements.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "product-launch",
        "title": "Prepare a product launch",
        "titleEn": "Prepare a product launch",
        "summary": "Build positioning from customer problems and product evidence, then work backward to schedule assets, reviews and channel publication.",
        "inputs": [
          "Target customers, need evidence and alternatives",
          "Product capabilities, limitations and demonstrable differences",
          "Launch goals, deadlines, existing assets and channels",
          "Production and review owners and immovable milestones"
        ],
        "outputs": [
          "Positioning, value statements and an audience messaging matrix",
          "Launch content requirements and validation plan",
          "Marketing calendar, dependency conflicts and checkpoints"
        ],
        "steps": [
          {
            "botId": "awesome/grok-product-marketer",
            "prompt": "Prepare a positioning draft for a product launch. Target customers and need evidence: [fill in]; product capabilities, limitations and evidence of differences: [fill in]; launch goals and existing assets: [fill in]. Map customer tasks and alternatives to demonstrable value, and organize audience messages and content requirements. Keep unproven claims as hypotheses and list follow-up validation. Do not invent customer testimonials or performance results.",
            "handoff": "I will review the positioning and evidence, then pass confirmed audience messages, content requirements and validation plans to Marketing Calendar Owner.",
            "botName": "Product Marketer"
          },
          {
            "botId": "awesome/marketing-calendar-owner",
            "prompt": "Work backward from the following reviewed launch content requirements to prepare a marketing calendar. Positioning and content requirements: [paste]; launch goals and deadlines: [fill in]; channels and asset list: [fill in]; production and review owners and fixed milestones: [fill in]. Identify production, review and channel dependencies, resource conflicts and gaps, recording an owner and checkpoint for each item. Prepare a reviewable plan only. Do not publish content, send messages or promise unconfirmed dates on my behalf.",
            "handoff": "The relevant owners and I will confirm the calendar, resources and review arrangements before carrying out publication through authorized processes.",
            "botName": "Marketing Calendar Owner"
          }
        ],
        "botIds": [
          "awesome/grok-product-marketer",
          "awesome/marketing-calendar-owner"
        ],
        "downloadUrl": "exports/en/scenario-product-launch.fleet.json"
      },
      {
        "schema": "awesome.bot.scenario/1",
        "id": "weekly-report",
        "title": "Write an evidence-backed weekly report",
        "titleEn": "Write an evidence-backed weekly report",
        "summary": "Use one Bot to turn project artifacts, verification and blockers into a clear status-report draft.",
        "inputs": [
          "This week's reporting period, project goals and milestones",
          "Completed artifacts, test results and acceptance records",
          "Ongoing work, blockers and plan changes",
          "Next-phase plan, pending decisions and responsible owners"
        ],
        "outputs": [
          "Weekly report draft separating delivered work, pending acceptance, ongoing work and blockers",
          "Evidence-backed risk explanations and decision requests",
          "Next-phase actions and responsible owners"
        ],
        "steps": [
          {
            "botId": "awesome/status-report-writer",
            "prompt": "Write this week's status-report draft from the following project facts. Reporting period, goals and milestones: [fill in]; artifacts, tests and acceptance records: [paste]; ongoing work, blockers and plan changes: [fill in]; next-phase actions and pending decisions: [fill in]. Separate delivered work, pending acceptance, ongoing work and blocked items. Keep evidence for conclusions and explain deviations, risks and required decisions. Leave unsupported progress unknown, and do not equate passing tests with business acceptance.",
            "handoff": "I will verify the evidence, owners and decision requests, revise and confirm the draft, then send it to the intended readers.",
            "botName": "Status Report Writer"
          }
        ],
        "botIds": [
          "awesome/status-report-writer"
        ],
        "downloadUrl": "exports/en/scenario-weekly-report.fleet.json"
      }
    ]
  }
}
