Borrowing it
Nothing to install: this file belongs to LUKAWI/super-plumber. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/LUKAWI/super-plumber/master/.pi/skills/plumber-tdd/SKILL.mdgit clone --depth 1 https://github.com/LUKAWI/super-plumberWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lukawi/super-plumber/plumber-tdd)<a href="https://agentmods.dev/skills/lukawi/super-plumber/plumber-tdd"><img src="https://agentmods.dev/badge/skills/lukawi/super-plumber/plumber-tdd/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lukawi/super-plumber/plumber-tdd"><img src="https://agentmods.dev/badge/skills/lukawi/super-plumber/plumber-tdd.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00174 | $0.01450 |
| Opus 5.5 | $0.00070 | $0.00580 |
| Sonnet 5.5 | $0.00035 | $0.00290 |
| Haiku 4.5 | $0.00017 | $0.00145 |
Grade A, and why
plumber-tdd scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 47 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Plumber TDD — 纪律技能:节点内的测试先行(红 → 绿循环)
Overview
- 定位:SP 自带纪律技能族成员(DEC-6,adr_0005)——服务图中节点的测试先行纪律:当节点 plan 点名本技能、或节点产物含新测试/缺陷修复时,本页约定测试怎么立、循环怎么转。无节点归属的自由开发不适用本页(防蔓延:纪律技能只服务图中节点)。
- 纪律族不发 command(DEC-6 ②):触达靠触发语自动命中与节点 plan 指针,无斜杠命令、无入口编排。
- 节点 plan 是规格:
graph_get_node {id}取 plan/DoD 全文,DoD 是行为验收判据。本页不替代 plan,只约束把 DoD 变成测试的过程。
Seam:先约定,后写测试
**Seam(接缝)**是被测的公共边界:一条只观察行为、不伸进内部的接口——CLI 子命令的 stdout/退出码、MCP 工具的返回字段、导出纯函数的输入输出。
只在预约定 seam 上写测试。 写第一个测试之前,先落定本节点的 seam 清单:
- plan 已写明测哪些 seam → 以 plan 为准,不私自扩表;
- plan 未写明 → 向派单方/用户逐条确认后再动第一行测试,确认结果记进执行报告 notes。
没有 seam 清单不开工:测试精力必须落在 DoD 的关键路径与复杂逻辑上,而不是随手能测的边角。约定外的 seam 一律不测——要扩表先回 plan(小修走执行上报出口,结构修订归 designer)。
三大反模式(每个测试过一遍安检)
- 实现耦合:mock 内部协作者、测私有函数、绕接口从旁路验证(直查存储/内部状态而不走 seam)。判据:重构后测试红了而行为没变——测试钉住的是结构,不是 DoD 承诺的行为。
- 同义反复:断言把期望值按实现同一套算法重算一遍(
expect(add(a, b)).toBe(a + b)、按同样推导手工得出的快照、常量等于自身),构造上恒真,永远不可能反对代码。期望值必须来自独立事实源:已知正确的字面量、手推的实例、plan/DoD 原文。 - 水平切片:先写完全部测试再写全部实现。批量测试验证的是想象中的行为,还在理解实现之前就锁死了测试结构。改用垂直切片:一个测试 → 一段刚好让它变绿的实现 → 重复;每个测试是曳光弹,回应上一循环学到的东西。
循环规则
- 先红后绿:先看到新测试失败(且确认因预期原因失败),再写刚好让它通过的实现;不为未来的测试预写代码、不加投机功能。
- 一次一片:一个 seam、一个测试、一次最小实现为一个循环。
- 重构不在循环里:红 → 绿只管让测试通过。结构整理归复核阶段——若本环境存在 plumber-review 技能,按其约定交交叉复核;缺失则静默降级,把重构点记进执行报告 notes 即可。
- 随做随报:一个垂直切片约等于一个 checkpoint 粒度,每完成一个立即
graph_update_checkpoint(无 MCP 用node .pi/skills/plumber-execute/scripts/sp.mjs checkpoint <node_id> <cp_id> <status> [--graph <name>]),绝不攒批;旧sp-checkpoint.mjs已退役,不得作为主路径引用。 - 产物不越界:测试与实现只落在节点 plan 的文件边界内;测试是节点 artifact,路径如实写进
graph_update_execution_report。 - 测试名说领域语言:命名与仓库 CONTEXT.md 及节点所属 context 顶点的 glossary(
graph_get_node可读)对齐,让测试读起来像 DoD 的规格化复述。
完成判据(纪律层):每条可测的 DoD 至少有一个绿色测试佐证、无约定外 seam 的测试、每个测试过完三大反模式安检。节点的其他验收仍以 DoD 与三层验收为准(→ 手册 §8)。
指针惯例(DEC-6)
节点 plan 引用纪律技能的写法是条件式建议:「若本环境存在 plumber-tdd 技能,按其约定执行本节点」。两条约束对全纪律族生效:只指 SP 自带技能(借鉴风格、不做外部运行时依赖,绝不指向外部技能库);存在才建议、缺失静默降级——指针命中不了时执行者直接按 plan/DoD 干活,不另找替代、不阻塞、不报错。本页同理:是纪律参照,不是执行的先决条件。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed 3f47da8f527a
- 1mo ago First seen · 47 lines · 174 tokens per session scan A c1a20f7d6f33
plumber-tdd is a skill published in the GitHub repository LUKAWI/super-plumber (3 stars, last pushed 1mo ago), licensed MIT. It adds 174 tokens to every session and 1,450 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.
Other skills, from other repositories
engram-testing-coverage
TDD and coverage standards for Engram. Trigger: When implementing behavior changes in any package.
conductor-implement
Execute tasks from a track's implementation plan following TDD workflow.
principle-test-behavior-not-implementation
Apply when you write, change, or keep a test. Assert what the code's users can observe, so that the test fails when that behavior breaks and keeps passing when only the internals change.
tdd
This skill should be used when the user wants to implement features or fix bugs using test-driven development. Enforces the RED-GREEN-REFACTOR cycle with vertical slicing, context isolation between test writing and implementation, human checkpoints, and auto-test feedback loops. Uses multi-agent orchestration with the…
iterative-development
TDD iteration loops using Claude Code Stop hooks - runs tests after each response, feeds failures back automatically.
mobiai-mobile-tdd
You MUST use this before writing any implementation code for a mobile feature, bug fix, refactor, or behavior change. Tests come before implementation — no exceptions.