diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 0b93b5a..0df3bbf 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,14 +5,14 @@ }, "metadata": { "description": "Thinloop skills and continuity hooks for Issue-backed discovery, read-only project-status navigation, multi-Issue project DAG decomposition and execution, evidence-backed reengineering and delivery, and approved skill evolution.", - "version": "0.18.0" + "version": "0.18.1" }, "plugins": [ { "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.18.0" + "version": "0.18.1" } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 3d0ff07..8c23c19 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.18.0", + "version": "0.18.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.codebuddy-plugin/marketplace.json b/.codebuddy-plugin/marketplace.json index 0b93b5a..0df3bbf 100644 --- a/.codebuddy-plugin/marketplace.json +++ b/.codebuddy-plugin/marketplace.json @@ -5,14 +5,14 @@ }, "metadata": { "description": "Thinloop skills and continuity hooks for Issue-backed discovery, read-only project-status navigation, multi-Issue project DAG decomposition and execution, evidence-backed reengineering and delivery, and approved skill evolution.", - "version": "0.18.0" + "version": "0.18.1" }, "plugins": [ { "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.18.0" + "version": "0.18.1" } ] } diff --git a/.codebuddy-plugin/plugin.json b/.codebuddy-plugin/plugin.json index 0f3b5de..d241786 100644 --- a/.codebuddy-plugin/plugin.json +++ b/.codebuddy-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.18.0", + "version": "0.18.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index c8cc90c..f82b8d8 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.18.0", + "version": "0.18.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.zcode-plugin/plugin.json b/.zcode-plugin/plugin.json index e8837ba..41649c9 100644 --- a/.zcode-plugin/plugin.json +++ b/.zcode-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.18.0", + "version": "0.18.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/README.md b/README.md index a41a86d..2d44dac 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@
- v0.18.0 + v0.18.1 ISSUE-DRIVEN @@ -36,6 +36,8 @@ Thinloop 不接管开发过程,只守住容易在长任务里丢失的结果 > **需求不被误解,体验与架构有据可循,完成声明有真实证据,仓库漂移能被主动发现。** +每个关键步骤会用图标和边框醒目展示「第几步、当前步骤、做什么、为什么」,直接调用任一技能也适用;同一步内不为每个工具调用重复提示。规则与示例见[步骤沟通](./skills/scd-quickdev/references/step-communication.md)。 + ## 三层能力 / THREE LAYERS diff --git a/docs/installation.md b/docs/installation.md index ca50b86..d76969c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -333,6 +333,7 @@ codebuddy plugin update thinloop@thinloop --scope user 新组合生效,并移除旧的 `standard-thinloop` 之类 preset 拷贝,避免双重 纠正。范围见 [`v0.17.1`](./releases/v0.17.1.md)。 - 升级到 v0.18.0:新增 `scd-ui-polish`,确认十三个 Skill 完整可读;UIUX 与页面验收共用八维视觉标准、实际页面自审和前后对比。既有设计确认与独立验收门继续有效。 +- 升级到 v0.18.1:十三个 Skill 统一在关键步骤开始前,用带图标和边框的醒目文本块说明「第几步、当前步骤、做什么、为什么」;直接调用也生效,同一步不重复刷屏。更新后新建任务或会话加载新指令。 - 若从 v0.6.x 升级,另确认旧 `scd-dev-loop` 已消失。 更新后可以在 Thinloop 源码仓库运行只读检查器: diff --git a/docs/releases/v0.18.1.md b/docs/releases/v0.18.1.md new file mode 100644 index 0000000..5dd6f2a --- /dev/null +++ b/docs/releases/v0.18.1.md @@ -0,0 +1,7 @@ +# Thinloop v0.18.1 + +全部十三个 Skill 在关键步骤开始前用图标和边框醒目展示当前步骤编号、行动和简短原因,帮助用户理解接下来做什么、为什么需要做。各入口直接调用时也读取同一份步骤沟通规则。 + +默认使用等号边框文本块;阶段切换、方向变化、等待或阻塞时更新,同一步连续工具调用不重复提示。同一任务连续编号,切换子技能不重置;未知总步数不编造;原有路由、权限、确认和验收门保持有效。 + +验证范围包括入口与共用参考的契约检查、仓库 CI 和独立场景验收。规则属于模型指令,不能据此保证所有宿主或模型每次都遵从;已运行会话需新建任务或重新加载技能后生效。 diff --git a/marketplace.json b/marketplace.json index af69853..3f1ea1d 100644 --- a/marketplace.json +++ b/marketplace.json @@ -6,7 +6,7 @@ "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.18.0" + "version": "0.18.1" } ] } diff --git a/skills/scd-architecture/SKILL.md b/skills/scd-architecture/SKILL.md index 2194757..2f59bad 100644 --- a/skills/scd-architecture/SKILL.md +++ b/skills/scd-architecture/SKILL.md @@ -5,6 +5,8 @@ description: "在生产实施前设计或验证领域模型、系统边界、数 # SCD 架构设计 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把已确认的产品行为转化为一致的技术设计和可验证的共享契约,但不把架构设计变成每次变更的必经阶段。本技能负责设计与验证;生产实施交给 `scd-quickdev`。 ## 选择最轻量且充分的路径 diff --git a/skills/scd-discovery/SKILL.md b/skills/scd-discovery/SKILL.md index f711e98..7a7e3c5 100644 --- a/skills/scd-discovery/SKILL.md +++ b/skills/scd-discovery/SKILL.md @@ -5,6 +5,8 @@ description: "在实施前,把定义不足的产品想法转化为经过明确 # SCD 需求发现 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 在实施前解决影响重大的产品决策,但不把需求发现变成固定仪式。全新产品需要定义已确认的 MVP 产品基线;现有产品只覆盖下一项连贯交付,不规划产品的全部未来。 完整 Discovery 期间不得编辑实施代码。实施开始前,用户必须明确确认合并后的产品契约。 diff --git a/skills/scd-evolve/SKILL.md b/skills/scd-evolve/SKILL.md index 4d2da5f..8d915bc 100644 --- a/skills/scd-evolve/SKILL.md +++ b/skills/scd-evolve/SKILL.md @@ -5,6 +5,8 @@ description: "诊断一段已完成或暂停的开发交互,并对真实使用 # SCD 技能演进 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 通过人工确认且可逆的试验改进 Thinloop。默认把对话证据视为不完整,区分技能缺陷和其他原因;不得仅因结果令人失望就重写技能。 ## 触发策略 diff --git a/skills/scd-execute/SKILL.md b/skills/scd-execute/SKILL.md index 1018587..6edfe2c 100644 --- a/skills/scd-execute/SKILL.md +++ b/skills/scd-execute/SKILL.md @@ -5,6 +5,8 @@ description: "消费 scd-project 的实时 Delivery-Issue DAG、选择当前安 # SCD 项目执行 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把已确认的 Initiative 依赖图转化为有边界的交付波次,同时不让 Project 变成调度器,也不让 QuickDev 跨越多个 Issues。 维护以下边界: diff --git a/skills/scd-interview/SKILL.md b/skills/scd-interview/SKILL.md index 356acb0..61983a3 100644 --- a/skills/scd-interview/SKILL.md +++ b/skills/scd-interview/SKILL.md @@ -5,6 +5,8 @@ description: "根据明确请求评审当前对话,提取值得保存供个人 # SCD 面试题 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把开发对话中的技术实质转化为少量个人学习面试题。只有用户明确请求时运行,写入前必须确认。提取请求只授权分析候选题,不授权持久化;用户确认精确草稿、范围和目标位置后才能写入。 本技能服务于用户的面试准备,不是 Agent 记忆。它与 `scd-knowledge` 不同,后者保存会改变后续 Agent 决策的经验。题目可以来自同一对话,但目的、准入条件和保存结构不同。 diff --git a/skills/scd-knowledge/SKILL.md b/skills/scd-knowledge/SKILL.md index 3f5f5cd..c773c20 100644 --- a/skills/scd-knowledge/SKILL.md +++ b/skills/scd-knowledge/SKILL.md @@ -5,6 +5,8 @@ description: "把有证据支持的开发经验沉淀为简洁、经过确认的 # SCD 开发知识 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 保留经过验证的经验,但不把每次对话都变成永久上下文。只有用户明确请求时运行,并且修改知识前必须确认。沉淀请求只授权分析候选项,不授权持久化;用户确认精确草稿、范围、目标位置以及创建或更新操作后才能写入。 ## 选择请求的操作 diff --git a/skills/scd-maintenance/SKILL.md b/skills/scd-maintenance/SKILL.md index 152ffbe..3df8d05 100644 --- a/skills/scd-maintenance/SKILL.md +++ b/skills/scd-maintenance/SKILL.md @@ -5,6 +5,8 @@ description: "审计并修复仓库技术债务、代码文档漂移、陈旧规 # SCD 仓库维护 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 从仓库证据发现可维护性问题,然后只修复有边界、有理由的一组问题。每项冲突的权威方向确定前,广泛审计保持只读。 ## 选择操作 diff --git a/skills/scd-next/SKILL.md b/skills/scd-next/SKILL.md index 3eee819..130375d 100644 --- a/skills/scd-next/SKILL.md +++ b/skills/scd-next/SKILL.md @@ -5,6 +5,8 @@ description: "检查当前仓库的实时项目状态并建议唯一下一行动 # SCD 下一步 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把模糊的“现在应该做什么?”转化为一个有证据支持的继续行动,不让用户自己重建项目状态或选择 Thinloop 技能。 Next 被调用时执行一次主动、只读检查。它不是后台通知器、守护进程、调度器、项目数据库或实施循环。 diff --git a/skills/scd-project/SKILL.md b/skills/scd-project/SKILL.md index 1d1098a..507ab0e 100644 --- a/skills/scd-project/SKILL.md +++ b/skills/scd-project/SKILL.md @@ -5,6 +5,8 @@ description: "在实施前,把跨越多个可独立验证交付的已确认项 # SCD 项目规划 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把已确认的多交付项目转化为小型、由跟踪器承载的交付图。依赖图及其可执行 Issues 就绪后停止;项目拆解不授予实施权限。 维护以下边界: diff --git a/skills/scd-quickdev/SKILL.md b/skills/scd-quickdev/SKILL.md index a189125..5f82cd2 100644 --- a/skills/scd-quickdev/SKILL.md +++ b/skills/scd-quickdev/SKILL.md @@ -5,6 +5,8 @@ description: "编码 Agent 被要求修改仓库时,把清晰的单交付仓 # SCD 快速开发 +开始执行前必须先读取并遵守[步骤沟通](references/step-communication.md);直接调用本技能也适用。 + 一个中文 GitHub Issue 是选中交付边界与验收的事实来源。完成声明不得超过观察证据;独立验收、真实页面门、高风险确认和清理关闭门始终有效。 ## 确定边界 diff --git a/skills/scd-quickdev/references/step-communication.md b/skills/scd-quickdev/references/step-communication.md new file mode 100644 index 0000000..fbb0c4d --- /dev/null +++ b/skills/scd-quickdev/references/step-communication.md @@ -0,0 +1,27 @@ +# 步骤沟通 + +全部 Thinloop 技能共用本规则,直接调用任何子技能也适用。技能启动时读取;每个有意义的步骤开始前,在用户可见的进度消息中展示「第几步、当前步骤、做什么、为什么」,不得只藏在计划、工具日志或最终总结里。 + +## 展示方式 + +默认使用带等号边框和图标的文本块: + +```text +======= 🧪 第 3 步:验证修改 ======= +🎯 做什么:运行本次变更的相关测试和仓库检查。 +💡 为什么:确认修改解决了目标问题,并检查是否影响现有行为。 +================================ +``` + +步骤标题必须带与当前行动相符的图标,例如 🔎 检查、🛠️ 实施、🧪 验证、👥 独立验收、⏳ 等待或 🚧 阻塞;「做什么」与「为什么」分别用 🎯 和 💡 标识。图标不能代替文字。用具体中文任务名,必要时附技能名;不要只写「执行 scd-quickdev」或「处理中」。行动和原因各用一句话,原因应结合当前任务说明目的、要消除的不确定性或要避免的风险,不用「因为流程要求」代替解释。只提供用户可理解的简短理由,不输出内部推理链。 + +宿主不支持文本块时,使用带图标的粗体步骤标题与独立的「🎯 做什么」「💡 为什么」两行,保持醒目。必须注明当前第几步,默认用「第 N 步:具体任务名」,实际输出时把 N 替换为数字。按当前任务已展示的实际步骤从 1 连续编号,进入新的有意义步骤才递增;同一步进度更新沿用原编号,切换子技能不重置。恢复任务时先核对已有编号,无法核实时明确以本次恢复为编号起点。总步数已确定时显示「第 N/M 步」;总步数未知时只显示「第 N 步」,不编造总数、百分比或固定流程。 + +## 何时更新 + +- 技能启动后的首个实际步骤,以及阶段切换、方向变化、等待用户或遇到阻塞时展示;切换技能时说明新行动为何需要。 +- 同一步内连续的工具调用不重复展示;已有提示完整覆盖当前行动时不再补发相同提示。 +- 等待或阻塞时说明缺失什么、为什么影响推进,以及下一行动;保留已有确认请求,不把解释当作用户授权。 +- 用户明确要求更简洁或其他样式时遵从其要求;简短单步回答只需一个紧凑提示,不人为拆步骤。 + +本规则只调整用户可见的沟通,不替代原有确认、权限、验收或交付门;最终交付仍报告实际结果与证据,不重放所有步骤。 diff --git a/skills/scd-reengineering/SKILL.md b/skills/scd-reengineering/SKILL.md index beaf416..1528674 100644 --- a/skills/scd-reengineering/SKILL.md +++ b/skills/scd-reengineering/SKILL.md @@ -5,6 +5,8 @@ description: "通过有证据支持的项目级重构或新实施,对现有仓 # SCD 再工程 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把现有系统转化为更好的实施,同时明确区分源代码、观察行为、产品意图和法律许可。由本技能管理再工程项目及其执行;产品决策、架构、项目拆解和单 Issue 交付复用现有 Thinloop 技能。 维护以下边界: diff --git a/skills/scd-ui-polish/SKILL.md b/skills/scd-ui-polish/SKILL.md index 84f37d9..c33b5c7 100644 --- a/skills/scd-ui-polish/SKILL.md +++ b/skills/scd-ui-polish/SKILL.md @@ -5,6 +5,8 @@ description: "优化已有 Web 页面的视觉质量,按排版、留白、层 # SCD 页面优化 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 把已有页面优化到与产品用途、内容和品牌相符的精细程度,并用实际页面和前后对比证明改进。独立调用本技能即可开始;用户要求实施时继续完成代码交付,不停在建议清单。 ## 检查现有页面 diff --git a/skills/scd-uiux/SKILL.md b/skills/scd-uiux/SKILL.md index 8e07116..0509f06 100644 --- a/skills/scd-uiux/SKILL.md +++ b/skills/scd-uiux/SKILL.md @@ -5,6 +5,8 @@ description: "在生产实施前设计或完善 Web 产品的用户体验和界 # SCD UIUX 设计 +开始执行前必须先读取并遵守[步骤沟通](../scd-quickdev/references/step-communication.md);直接调用本技能也适用。 + 让 Web 体验清晰到足以评审和实施,但不把每次界面变更都变成设计项目。本技能设计行为与呈现;生产代码交给 `scd-quickdev`。 ## 选择最轻量且充分的路径 diff --git a/tests/chinese-skill-payload.test.mjs b/tests/chinese-skill-payload.test.mjs index de7d0f0..997979b 100644 --- a/tests/chinese-skill-payload.test.mjs +++ b/tests/chinese-skill-payload.test.mjs @@ -32,7 +32,7 @@ test("全部 Thinloop Skill 文本载荷均包含中文", () => { .flatMap((entry) => collectPayloadFiles(path.join(skillsRoot, entry.name))) .sort(); - assert.equal(files.length, 66); // Shared visual reference and UI Polish skill metadata. + assert.equal(files.length, 67); // Shared visual and step communication references. for (const file of files) { assert.match(read(file), han, file); } diff --git a/tests/step-communication.test.mjs b/tests/step-communication.test.mjs new file mode 100644 index 0000000..7fc0156 --- /dev/null +++ b/tests/step-communication.test.mjs @@ -0,0 +1,44 @@ +import assert from "node:assert/strict"; +import fs from "node:fs"; +import path from "node:path"; +import test from "node:test"; +import { fileURLToPath } from "node:url"; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const skills = fs.readdirSync(path.join(root, "skills")).filter(name => name.startsWith("scd-")); +const canonical = path.join(root, "skills/scd-quickdev/references/step-communication.md"); + +test("全部直接技能入口在工作流前加载唯一的步骤沟通规则", () => { + assert.equal(skills.length, 13); + for (const name of skills) { + const entry = path.join(root, "skills", name, "SKILL.md"); + const source = fs.readFileSync(entry, "utf8"); + const links = [...source.matchAll(/\[步骤沟通\]\(([^)]+)\)/g)]; + assert.equal(links.length, 1, name); + assert.equal(fs.realpathSync(path.resolve(path.dirname(entry), links[0][1])), fs.realpathSync(canonical), name); + assert.match(source, /开始执行前必须先读取并遵守/); + assert.ok(source.indexOf("[步骤沟通]") < source.indexOf("\n## "), name); + } +}); + +test("模板醒目且每步说明具体行动与原因", () => { + const source = fs.readFileSync(canonical, "utf8"); + assert.match(source, /```text\n======= 🧪 第 3 步:[\s\S]*\n🎯 做什么:[\s\S]*\n💡 为什么:[\s\S]*\n={7,}\n```/); + assert.match(source, /直接调用任何子技能/); + assert.match(source, /具体中文任务名/); + assert.match(source, /步骤标题必须带与当前行动相符的图标/); + assert.match(source, /图标不能代替文字/); + assert.match(source, /必须注明当前第几步/); + assert.match(source, /切换子技能不重置/); + assert.match(source, /同一步进度更新沿用原编号/); + assert.match(source, /目的、要消除的不确定性或要避免的风险/); +}); + +test("阶段切换和阻塞可见,同步操作不刷屏且不虚构进度", () => { + const source = fs.readFileSync(canonical, "utf8"); + assert.match(source, /阶段切换、方向变化、等待用户或遇到阻塞/); + assert.match(source, /同一步内连续的工具调用不重复/); + assert.match(source, /总步数未知时只显示「第 N 步」,不编造总数/); + assert.match(source, /缺失什么、为什么影响推进/); + assert.match(source, /不替代原有确认、权限、验收或交付门/); +});