Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/romilly/claude-code-helpersWrote 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/commands/romilly/claude-code-helpers/builders)<a href="https://agentmods.dev/commands/romilly/claude-code-helpers/builders"><img src="https://agentmods.dev/badge/commands/romilly/claude-code-helpers/builders/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/commands/romilly/claude-code-helpers/builders"><img src="https://agentmods.dev/badge/commands/romilly/claude-code-helpers/builders.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.00000 | $0.01101 |
| Opus 5.5 | $0.00000 | $0.00440 |
| Sonnet 5.5 | $0.00000 | $0.00220 |
| Haiku 4.5 | $0.00000 | $0.00110 |
Grade A, and why
builders 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 — 170 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Test Data Builders Guide
When to Create Builders
Create test data builders when:
- Verbose setup code - Tests have multi-line object construction that obscures intent
- Nested hierarchies - Objects contain other objects several levels deep
- Repeated boilerplate - Same structure appears across many tests with small variations
Don't create builders for simple dataclasses with 2-3 fields.
Spotting Opportunities
Test smell: Deeply nested construction that buries the test's intent:
# Before - 12 lines to set up one task
mm = MindMap(root=Node(
id="ID_ROOT", title="Project",
children=[Node(id="ID_TASKS", title="tasks", children=[
Node(id="ID_LANE", title="Team", children=[
Node(id="ID_1", title="Task A"),
])
])]
))
# After - intent is clear
mm = simple_mindmap(task("ID_1", "Task A"))
The Pattern
1. Builder Class with Fluent API
class NodeBuilder:
"""Fluent builder for Node objects."""
def __init__(self, id: str, title: str):
self._id = id
self._title = title
self._description: str | None = None
self._children: list[Node] = []
def with_description(self, description: str) -> "NodeBuilder":
self._description = description
return self
def with_children(self, *children: "NodeBuilder | Node") -> "NodeBuilder":
for child in children:
if isinstance(child, NodeBuilder):
self._children.append(child.build())
else:
self._children.append(child)
return self
def build(self) -> Node:
return Node(
id=self._id,
title=self._title,
description=self._description,
children=self._children,
)
2. Factory Function (Entry Point)
def task(id: str, title: str) -> NodeBuilder:
"""Factory to start building a task node."""
return NodeBuilder(id, title)
3. Convenience Function for Common Cases
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 First seen · 170 lines · 0 tokens per session scan A e0867e60c488
builders is a command published in the GitHub repository romilly/claude-code-helpers (2 stars, last pushed 8mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,101 tokens. 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-08-31.
Other commands, from other repositories
session
Complete guide to managing pair programming sessions.
test-tdd
Run when user calls /test-tdd. Scans modified files, locates their corresponding unit/integration test suites, and runs them.
kill-mutants
Analyze surviving mutants from a mutation testing run and write targeted unit tests to kill them. Re-runs mutations to confirm kills.
lg:node
Create, modify, and manage nodes in LangGraph graphs including LLM nodes, tool nodes, human-in-the-loop, subgraphs, and conditional nodes.
test-audit
Writes a versioned TESTAUDIT.md; with --fix, quarantines the rot in gated, revertible commits. TRIGGER WHEN: auditing a test suite, measuring test health, finding dead or flaky or redundant tests, or diagnosing failure causes and proposing temporary quarantine. DO NOT TRIGGER WHEN: one module's tests are consolidated…
story-and-test
For the component(s) in scope.