:把 prd-writer 的 settings 改到 TaoToken,小而精的 PRD 工作流怎么搭)
1. 产品经理写 PRD 的真实困境为什么你的 Claude Code 技能包总是跑不起来先说一个我观察到的现象很多产品经理在 Claude Code 里装了一堆技能包写 PRD 的时候却还是靠手动贴提示词。问题出在哪不是技能包不好用是 settings 没配对。Claude Code 的技能包机制本身很清晰——每个 skill 是一个独立目录里面有SKILL.md定义触发条件和执行规则有scripts/放辅助脚本有templates/放输出模板。但当你真正要把 prd-writer 这类技能包跑通尤其是要输出 Word 文档的时候会发现两个卡点第一个卡点是模型通道。Claude Code 默认走 Anthropic 官方通道国内网络环境下经常出现local proxy failed或者请求超时。你技能包写得再好模型调不通就是白搭。第二个卡点是配置分散。技能包的 settings 里要写模型 ID、API Key、Base URL如果你同时用多个技能包每个都单独配一套维护成本极高。改一个 Key 要改五个文件漏一个就报 401。这篇要解决的就是这两个问题把 prd-writer 技能包的 settings 统一指向 TaoToken 的 API 通道用一个 Key 管所有技能包同时把 Word 输出链路完整跑通。适合已经在用 Claude Code、想把手动提示词升级成技能包工作流的产品经理。我试过把 prd-writer 的配置从官方通道切到 TaoToken整个过程大概 10 分钟之后每次写 PRD 只需要说一句「写 PRD」就能出稿。下面把目录结构、settings 写法、验证动作和常见报错全部拆开讲。2. TaoToken 前置准备统一 Key 与 API 通道的配置逻辑在改 prd-writer 的 settings 之前你需要先把 TaoToken 的通道准备好。这一步的核心目标是拿到一个 API Key确认 Base URL选定 Model ID。这三样东西后面会直接写进技能包的 settings 文件。2.1 为什么技能包要统一走一个通道Claude Code 的技能包在执行时会调用模型接口。如果你有五个技能包每个都配不同的通道会出现三个问题Key 轮换时要改五处、不同通道的模型行为不一致导致输出风格漂移、排障时分不清是技能包的问题还是通道的问题。统一走 TaoToken 之后所有技能包共享同一个 Base URL 和 Key模型 ID 也统一。这样你改一次配置所有技能包同时生效。对于 prd-writer 这种对输出结构要求极高的技能包来说模型行为的一致性尤其重要——你不能这次用 A 通道输出六段结构下次用 B 通道就变成散文了。2.2 获取 Key 和确认通道地址打开 TaoToken 的控制台在 API Keys 页面创建一个新的 Key。建议给技能包单独建一个 Key命名上区分开比如claude-code-skills方便后续排查是哪个环节在调用。创建完成后你会拿到一串以sk-开头的 Key。把它存好后面写 settings 的时候要用。通道地址方面TaoToken 的 API 入口是https://taotoken.net/api。注意这个地址不加任何查询参数直接作为 Base URL 使用。Claude Code 在拼接请求时会自动加上/v1/messages这类路径。模型 ID 的选择上prd-writer 这种需要严格遵循结构化输出的技能包建议用 Claude 系列的模型。具体用哪个版本你可以在模型对话页面先试一下看哪个版本对你写的 PRD 规范遵循得最好。我实测下来较新的版本在遵循「升级点层级编号」这种复杂嵌套规则时表现更稳定。2.3 技能包目录结构模板在改 settings 之前先确认你的 prd-writer 技能包目录结构。Claude Code 的技能包标准结构是这样的~/.claude/skills/ └── prd-writer/ ├── SKILL.md ├── settings.json ├── scripts/ │ ├── md_to_docx.py │ └── validate_docx.py └── templates/ └── prd_template.mdSKILL.md是技能包的核心定义触发词和执行流程。settings.json是这篇要改的重点控制模型通道。scripts/里放 Markdown 转 Word 的脚本和校验脚本。templates/放 PRD 的 Markdown 模板。如果你是从社区下载的 prd-writer目录结构可能略有不同但settings.json的位置基本一致。确认好路径之后下一步就是改配置。3. 可复制配置prd-writer 的 settings 指向 TaoToken 的完整写法这一节是整篇的核心。我会给出完整的settings.json片段你直接复制改 Key 就能用。同时把 Word 输出链路的脚本配置也一并写清楚。3.1 settings.json 完整片段Claude Code 技能包的 settings 文件采用 JSON 格式。prd-writer 的 settings 需要配置三个关键字段apiBaseUrl、apiKey、model。下面是完整写法{ name: prd-writer, version: 1.0.0, description: 产品经理 PRD 写作技能包输出可直接给研发的六段式需求文档, apiBaseUrl: https://taotoken.net/api, apiKey: sk-你的Key粘贴在这里, model: claude-sonnet-4-20250514, maxTokens: 8192, temperature: 0.3, outputFormat: markdown, wordExport: { enabled: true, script: scripts/md_to_docx.py, validateScript: scripts/validate_docx.py, outputDir: ./output/prd, namingRule: slug }, triggers: [ 写 PRD, 需求文档, 给研发开发, 需求说明 ] }几个关键点说明apiBaseUrl填https://taotoken.net/api不要加/v1后缀Claude Code 会自动拼接。apiKey填你刚才创建的那串 Key。model填你在模型对话页面测试后选定的模型 ID。temperature设成 0.3 是故意的。PRD 这种文档需要严格遵循结构温度太高会导致模型自由发挥把六段结构写成散文。0.3 在保证语言流畅的同时结构遵循度最高。wordExport这一段是 Word 输出链路的配置。script指向 Markdown 转 Word 的 Python 脚本validateScript指向生成后的校验脚本。namingRule设为slug是为了让 PRD 文件名、原型目录、决策索引三处对齐方便后续技能包串联。3.2 SKILL.md 里的通道引用写法settings.json 配好之后还需要在SKILL.md里引用这些配置。prd-writer 的 SKILL.md 开头部分应该这样写--- name: prd-writer settings: ./settings.json --- # PRD Writer ## 触发条件 当用户说「写 PRD」「需求文档」「给研发开发」「需求说明」时激活。 ## 执行流程 1. 读取 settings.json 中的 apiBaseUrl、apiKey、model 2. 按六段结构生成 Markdown 预览 3. 等待用户确认 4. 确认后调用 scripts/md_to_docx.py 生成 Word 5. 调用 scripts/validate_docx.py 校验格式注意第 1 步技能包在执行时会先读取 settings.json拿到通道配置。这样你改 settings 里的 Key所有触发 prd-writer 的请求都会自动走新通道。3.3 Word 输出链路的脚本配置md_to_docx.py这个脚本负责把 Markdown 转成 Word。核心逻辑是用python-docx库解析 Markdown 结构按 PRD 的排版规则生成 docx。脚本里需要处理几个容易翻车的点标题层级映射。Markdown 的##对应 Word 的 Heading 1###对应 Heading 2####对应 Heading 3。不能直接把##当正文渲染否则 Word 里会出现字面量的####。有序列表编号隔离。PRD 里「前置条件」的 1、2 和「正常流程」的 1、2、3 必须是独立编号不能连成 1 到 5。这需要在生成 docx 时给每个有序列表创建独立的w:num定义。表格样式统一。字段与限制部分用表格呈现需要设置统一的边框、字体、列宽。validate_docx.py负责生成后的校验。它会解压 docx 文件检查document.xml里有没有字面量的####检查每个有序列表是否有独立的w:num定义。校验不通过就报错让你回去改 Markdown 结构。这两个脚本的具体实现代码比较长你可以从 prd-writer 的仓库里直接拿。关键是 settings 里的路径要对脚本能被执行到。4. 验证请求从生成 PRD 到导出 Word 的完整动作配置改完之后必须做一次完整的验证。这一步的目的是确认通道通了、技能包触发了、Word 正常导出了。下面是我实际跑通的验证流程。4.1 触发技能包并生成 Markdown 预览打开 Claude Code输入触发词写 PRD员工账号列表支持批量导入如果 settings 配置正确Claude Code 会加载 prd-writer 技能包读取 settings.json 里的通道配置然后开始生成 Markdown 预览。正常情况下你会看到模型按六段结构输出背景与问题、用户故事、方案概述、交互细节、成功指标、开放问题。方案概述部分会按「升级点层级编号」展开每个升级点有功能说明、子功能、入口、交互流程、字段与限制、状态与展示。如果这一步卡住了或者输出的是散文而不是六段结构说明通道配置有问题。往下看第 5 节的排障。4.2 确认预览并触发 Word 导出Markdown 预览出来后检查结构是否正确。确认无误后输入确认生成 Word技能包会调用scripts/md_to_docx.py把 Markdown 转成 docx。生成的文件会放在./output/prd/目录下文件名按 slug 规则命名比如employee-account-batch-import.docx。生成完成后validate_docx.py会自动运行检查格式。校验通过的话你会看到类似这样的输出[validate] 检查 document.xml... [validate] 未发现字面量 #### [validate] 有序列表编号隔离检查通过 [validate] Word 导出成功./output/prd/employee-account-batch-import.docx4.3 验证成功的结果长什么样打开生成的 docx你应该看到标题层级正确没有####字面量。每个有序列表独立编号「前置条件」的 1、2 和「正常流程」的 1、2、3 没有连号。字段与限制部分是表格呈现字段名、类型、默认值、校验规则都在。如果这些都对了说明你的 prd-writer 技能包已经完整跑通通道走的是 TaoTokenWord 输出链路正常。4.4 用模型对话快速验证通道如果你只想确认通道通不通不想跑完整的 PRD 流程可以打开模型对话页面直接发一条测试消息。能正常返回就说明 Key 和 Base URL 没问题。这一步比跑完整技能包快适合排障时先定位是通道问题还是技能包问题。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中最容易遇到的四类报错我逐个拆开讲原因和修法。5.1 401 Unauthorized报错长这样Error: 401 Unauthorized {error:{type:authentication_error,message:invalid api key}}原因基本是 Key 写错了。检查三个地方settings.json 里的apiKey字段有没有粘贴完整、Key 有没有多余空格、Key 是不是已经过期或被删除。还有一种情况是 Key 对了但通道地址写错。比如把apiBaseUrl写成了https://taotoken.net/api/v1多加了/v1导致拼接后路径变成/api/v1/v1/messages服务端认不出来。改成https://taotoken.net/api就行。5.2 local proxy failed报错长这样Error: local proxy failed connect ECONNREFUSED 127.0.0.1:7890这个报错说明 Claude Code 在尝试走本地代理但代理没启动。如果你之前配过代理环境变量需要检查HTTP_PROXY和HTTPS_PROXY这两个变量。修法是确认你的网络环境能直接访问 TaoToken 的 API 地址。如果不需要代理把环境变量清掉unset HTTP_PROXY unset HTTPS_PROXY然后重启 Claude Code。如果清了变量还是报这个错检查 settings.json 里有没有残留的 proxy 配置字段有的话删掉。5.3 reading choices 报错报错长这样Error: reading choices of undefined这个报错通常出现在响应格式不符合预期的时候。Claude Code 期望的是 Anthropic 格式的响应但如果通道返回的是 OpenAI 格式解析就会失败。检查你的apiBaseUrl是不是写成了 OpenAI 兼容模式的地址。TaoToken 的https://taotoken.net/api是标准入口Claude Code 会自动按 Anthropic 格式请求。如果你手动改成了其他路径可能导致格式不匹配。另一个可能原因是模型 ID 写错了。如果model字段填了一个不存在的模型 ID服务端可能返回错误格式的响应。回到模型对话页面确认一下可用的模型 ID。5.4 OAuth 相关报错报错长这样Error: OAuth token expired Please run claude login to re-authenticate这个报错说明 Claude Code 在尝试用 OAuth 方式认证而不是用你配的 API Key。原因是 settings.json 里的配置没有生效Claude Code 回退到了默认的认证方式。检查两个地方settings.json 的路径对不对SKILL.md 里有没有正确引用settings: ./settings.json。如果路径不对技能包加载时会读不到配置就会走默认认证。修法是确认 settings.json 在技能包根目录下SKILL.md 的 frontmatter 里settings字段指向正确。改完之后重启 Claude Code。5.5 三件套检查清单遇到任何通道相关的报错先对照这个清单检查三件套配置项正确值常见错误Base URLhttps://taotoken.net/api多加了/v1或/v1/messagesAPI Keysk-开头的完整 Key粘贴不完整、有多余空格、已过期Model ID模型对话页面确认的 ID拼写错误、用了不存在的版本这三样都对了通道基本不会出问题。如果还报错把完整报错信息拿到接入文档里对照排查。6. 把技能包工作流跑顺之后下一步做什么prd-writer 跑通之后你手里就有了一套可复制的技能包配置模板。settings.json 里的通道配置、Word 输出链路、校验脚本这套结构可以直接套到其他技能包上。比如你后面要做「PRD 一键变成禅道任务」的技能包settings 里的apiBaseUrl、apiKey、model三件套直接复用只需要改name、triggers和scripts路径。这样你新增一个技能包的成本从「重新配一遍通道」降到「改三个字段」。统一通道的另一个好处是排障简单。所有技能包走同一个 Base URL 和 Key出问题的时候只需要检查一处配置。不会出现「这个技能包能跑那个不能跑不知道是技能包问题还是通道问题」的情况。如果你还没开始用技能包建议先从 prd-writer 这一个跑通。不要一上来就装十个技能包配置分散了反而容易乱。一个跑顺了后面的复制粘贴就行。需要创建新的 API Key 或者查看接入文档可以从这几个入口进API Keys 管理页面、接入文档。想先试试模型效果再决定用哪个版本去模型对话页面发几条测试消息。如果你打算长期用技能包做编码和 Agent 工作流Coding Plan 页面有更完整的方案说明。