Tapd Story Specify logo

Tapd Story Specify

Organization
TencentBlueKing
tapd-story-specify

迭代执行流水线技术澄清与规范生成阶段。通过 tech-lead 分两段执行: 技术澄清段审查需求并产出澄清结论,specify 段生成 spec.md。 两段共享统一的 questions.md 代问循环机制——遇到无法自答的问题以 blocked_on_questions 退出,由外部代问后以 answer 指令重入继续。 支持 blocked_on_questions 代问重入与跨阶段回退重入。

Overview

PublisherTencentBlueKing
Repositorybk-bcs
Skill nametapd-story-specify
Stars
840
Forks
263
Bundled files
2
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by TencentBlueKing on GitHub. Read the source before you install it.

Installation

Install the Tapd Story Specify AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/TencentBlueKing/bk-bcs/tree/master/.agents/skills/tapd-story-pipeline/tapd-story-specify
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/TencentBlueKing/bk-bcs.git /tmp/bk-bcs
mkdir -p .claude/skills
cp -r /tmp/bk-bcs/.agents/skills/tapd-story-pipeline/tapd-story-specify .claude/skills/tapd-story-specify
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Tapd Story Specify in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Tapd Story Specify on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Tapd Story Specify is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

技术澄清与规范生成

定位

技术澄清处于需求文档定稿与进入开发之间的关键衔接点。

需求澄清关注"做什么";技术澄清关注"怎么做"和"能不能做"。

前置条件

  • 当前需求 meta.yaml.phase 为 initialized
  • ${WORKDIR}/req.md 存在(由调用方注入或 pipeline 拉取)
  • pipeline 主编排已按 references/context-and-meta-template.md 生成 context.md 与 meta.yaml

输入

  • ${WORKDIR}/meta.yaml(读取 attempts / context_revision)
  • 当前需求 ID(由 pipeline 主编排传入)
  • ${WORKDIR}/context.md
  • ${WORKDIR}/iteration-patches/attempt-${N}.md(若为回退重入,必读)

执行流程

本子 skill 由两段组成,通过 tech-lead 隔离执行,共享统一的 questions.md 代问循环机制。

1. 重入判定(pipeline 主编排执行)

每次进入本子 skill 时,按文件系统状态判定当前段位:

条件段位动作
questions.md 不存在技术澄清段(首次)执行技术澄清段
questions.md 有 [open] + spec.md 不存在技术澄清段(重入)执行技术澄清段
questions.md 有 [open] + spec.md 存在specify 段(重入)执行 specify 段
questions.md 全非 open + spec.md 不存在specify 段(首次)执行 specify 段
questions.md 全非 open + spec.md 存在质量验证直接进入质量验证

spec.md 不存在 → 还未进入 specify 段,统一按技术澄清段重入处理。

2. 技术澄清段(tech-lead)

pipeline 主编排按 ../references/subagent-prompt-template.md §2.0 Clarify 模板渲染 SUBAGENT_PROMPT,通过 Task(subagent_name="tech-lead", ...) 拉起 subagent。

渲染填充:${ID} / ${VERSION} / ${WORK_DIR} / attempts / round; 若 attempts > 1,附上 iteration-patches/attempt-${attempts}.md 摘要。

subagent 职责:

  1. 通读 req.md,评估技术复杂度(简单/中等/复杂)
  2. 按复杂度选择澄清维度(参考 references/technical-clarification-guide.md)
  3. 对照 context.md 白名单自答(追加 resolved_by_doc 条目到 questions.md)
  4. 无法自答的问题追加为 open 条目到 questions.md
  5. 所有可自答的结论写入 req.md "技术澄清"章节(格式参考 references/technical-clarification-template.md)
  6. 读取 questions.md 已有的 answered 条目(重入场景),将答复融入 req.md

跳过条件(由 subagent 在执行中自行判定):

  • 需求极简(配置变更/文案修改/简单 Bug 修复)且无技术风险
  • 追加 [dropped] 条目 + req.md 标注"技术审查通过"
  • 以 status=ok 返回

回传处理:

status处理
ok技术澄清结论已写入 req.md → 进入 specify 段
blocked_on_questionsquestions.md 有新 [open] → pipeline 退出(blocked 卡点)
fail写 last_failure → pipeline 退出

代问上限:技术澄清段单 attempt 内最多 3 round。

3. Specify 段(tech-lead)

pipeline 主编排按 ../references/subagent-prompt-template.md §2.1 Specify 模板渲染 SUBAGENT_PROMPT,通过 Task(subagent_name="tech-lead", ...) 拉起 subagent。

渲染填充:同技术澄清段。 若 attempts > 1,附上 iteration-patches/attempt-${attempts}.md 摘要。

subagent 内的 speckit-specify skill、代问指令(追加 questions.md open 条目 → blocked_on_questions 返回)均在 subagent-prompt-template.md §2.1 中定义。

回传处理:

status处理
okspec.md 已生成 → 进入质量验证
blocked_on_questionsquestions.md 有新 [open] → pipeline 退出(blocked 卡点)
fail写 last_failure → pipeline 退出

代问上限:specify 段单 attempt 内最多 5 round。

4. 质量验证(主编排内联)

对 spec.md 与 req.md 做覆盖性对比,并执行内容门禁:

检查项通过标准
用户场景至少一个主流程场景,且包含可验证的验收场景
功能需求每项需求可测试、无歧义,并覆盖 req.md 的核心业务目标
成功标准至少一项可量化或可观察的验证标准
边界与依赖边界场景、范围、依赖与假设已记录;不适用项必须说明理由
澄清状态不遗留未处理的 [NEEDS CLARIFICATION] 标记;无法确定的信息已写入 questions.md 的 open 条目
技术类型subagent 回传的 tech_type 为 backend / frontend / fullstack 之一

主编排按项目的实际 spec 模板识别对应章节,不要求固定的中英文标题。

  • OK → 更新状态
  • 遗漏或矛盾 → status=fail,在 issue 中列出缺失项,走回退重入(不在本 attempt 内简单重跑)

5. 更新状态

phase → tech-clarified;history 追加成功记录。 若回传 JSON 中含 tech_type 字段(值为 backend / frontend / fullstack),将其写入 meta.yaml.tech_type。

代问循环协议(统一)

无论技术澄清段还是 specify 段产生 blocked_on_questions,对外表现一致:

  1. pipeline 以 blocked 卡点退出
  2. 退出报告中展示 questions.md 中 [open] 条目数
  3. 调用方(runner/用户)修改 questions.md([open] → [answered])
  4. 以 action=answer 再次调起 pipeline
  5. pipeline 重入,按 §1 重入判定表确定段位,继续执行

用户无需区分问题来自技术澄清还是 spec 生成。

round 计数规则

技术澄清段和 specify 段各自维护 round 计数:

  • 技术澄清段 round:从 1 起记,每次代问重入 +1,上限 3
  • specify 段 round:技术澄清完成后重置为 1,每次代问重入 +1,上限 5
  • 区分方式:meta.yaml.specify_attempts[-1].rounds 中标注 stage: clarify | specify

超限后按 ../references/reentry-protocol.md §1.2 升级为回退重入。

可重入约定

  1. 代问重入(pipeline 内部):round +1(attempts 不变)
  2. 回退重入:调用方按 state-mutation-guide.md §2 提供 retry 指令与 iteration-patches/attempt-*.md;pipeline 仅在 attempts < max_attempts 时递增 attempts
  3. 每次调用前:重新生成 context.md,context_revision +1

子 skill 在执行前必须:

  • 读取最新 attempt-*.md(若有),追加重入增量段(subagent-prompt-template.md §3)
  • spec.md 覆盖前由 subagent 做快照 spec.md.prev-attempt${N}-round${R}

幂等性、产物保留、process.log 只追加等通用约束见 ../references/reentry-protocol.md。

信息不足回退(回退重入入口)

后续子 skill 发现 spec.md 不充分时返回 spec_insufficient, 调用方把 phase 回退至 initialized 并写 attempt-*.md,再次调起时重新执行本子 skill。

参考资料

  • SUBAGENT_PROMPT(clarify 模板):../references/subagent-prompt-template.md §2.0
  • SUBAGENT_PROMPT(specify 模板 + 代问指令):../references/subagent-prompt-template.md §2.1
  • 技术澄清维度与最佳实践:references/technical-clarification-guide.md
  • 技术澄清章节模板:references/technical-clarification-template.md
  • 问题文件格式:../references/questions-md-template.md
  • 上下文与元数据模板:../references/context-and-meta-template.md
  • 可重入协议:../references/reentry-protocol.md

产出

  • ${WORKDIR}/req.md — 原始需求(含技术澄清章节)
  • ${WORKDIR}/questions.md — 澄清问题与答复(全历史)
  • ${WORKDIR}/spec.md — 技术规范
  • ${WORKDIR}/process.log — stream-json 流式日志
  • ${WORKDIR}/meta.yaml — 更新后的 attempts / round / history
  • 需求 phase 为 tech-clarified

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Tapd Story Specify AI skill do?

迭代执行流水线技术澄清与规范生成阶段。通过 tech-lead 分两段执行: 技术澄清段审查需求并产出澄清结论,specify 段生成 spec.md。 两段共享统一的 questions.md 代问循环机制——遇到无法自答的问题以 blocked_on_questions 退出,由外部代问后以 answer 指令重入继续。 支持 blocked_on_questions 代问重入与跨阶段回退重入。

Why use Tapd Story Specify on TypingMind?

Because you install it once and use it with any model. Tapd Story Specify is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Tapd Story Specify in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/TencentBlueKing/bk-bcs/tree/master/.agents/skills/tapd-story-pipeline/tapd-story-specify. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Tapd Story Specify?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Tapd Story Specify?

As many as you like. As long as a model supports skills, you can use Tapd Story Specify with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Tapd Story Specify AI skill free?

It is published on GitHub by TencentBlueKing. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇