kylesnowschwartz/simpleclaude/sc-clean-room
Claude Code and agent skill by kylesnowschwartz/simpleclaude
- community
Checking that the SKILL.md file is still in the repository.
Clean-room reimplementation of a repository, library, API, protocol, or other software artifact. This skill SHOULD be used when the user wants to create a functionally equivalent implementation of an existing artifact without copying its internal design or expression. NOT for refactoring existing code.
Install
npx vskill@latest install kylesnowschwartz/simpleclaude/sc-clean-roomSKILL.md
Clean-Room Design
A structured approach to reimplementing a software artifact without copying its internals. A discovery agent examines the original and writes a behavioral specification with fixtures. Then a separate implementation agent builds from that specification alone. Fixtures captured during discovery verify the reimplementation in Phase 4.
Compaq used this technique in 1982 to clone the IBM PC BIOS — one team documented what the BIOS did, a second team (who had never seen IBM's code) wrote compatible firmware from those docs. Copyright protects expression, not ideas. A functional spec describes ideas.
EXECUTION MODEL
Phases 0 through 6 run in sequence. The core phases (1-4) MUST NOT be skipped or reordered.
- Phase 0 establishes scope and pins the artifact version
- Phase 1 (Discovery) examines the original via a
Task()agent, produces observations and fixtures - Phase 2 (Specify) distills observations into a clean functional spec
- Phase 3 (Implement) builds from the spec in a fresh
Task()agent that has never seen the original - Phase 4 (Verify) confirms equivalence via spec compliance and fixture replay
- Phases 5-6 present results and offer next steps
After each phase, present the output to the user and wait for approval before proceeding.
Isolation
Discovery and Implementation run in separate `Task()` agents with no shared context. The implementation agent receives only the specification file path. The original artifact, discovery notes, and fixtures never enter the implementation agent's prompt.
This provides process-level isolation, not OS-level sandboxing. For stronger isolation (IP-sensitive work), run Phase 3 in an entirely separate Claude session — the artifacts this skill produces support that handoff cleanly.
Phase 0: Resolve Target and Scope
Parse $ARGUMENTS. The first argument is the target, anything after is a scope or focus hint.
Target resolution
| Argument | Target | Version pin | |
|---|---|---|---|
| Repository URL | Clone or fetch the repo | Record commit SHA | |
| Local path | Examine directly | Record git commit SHA; if not a git repo, record a checksum | |
| Package name | Locate via registry (npm, PyPI, RubyGems, crates.io, etc.) | Record exact package version | |
| Protocol or API name | Fetch public docs and specs | Record document revision or access date |
Version pinning is mandatory. Record an immutable identifier so all artifacts reference the same version.
Scope negotiation
Use AskUserQuestion:
- Which parts to reimplement (the whole thing, a subset, a single module)
- Target language and runtime (same as original, or different)
- Quality attributes that matter (performance parity, API compatibility, simplified interface)
- What's explicitly out of scope
Tell the user: "Target: [what]. Scope: [boundaries]. Language: [target stack]."
Run directory
Slug: <artifact-name>-<version-prefix> (lowercase, hyphens). Create with mkdir -p .agent-history/clean-room/<slug>.
Run git check-ignore -q .agent-history/ — if it fails, warn the user to add the ignore rule.
If the directory already exists, ask: start fresh, resume, or abort.
Classify the artifact
| Type | Discovery focus | |
|---|---|---|
| Library/Package | Exported functions, types, behavior contracts | |
| CLI Tool | Command interface, input/output formats, exit codes | |
| API/Service | Routes, request/response schemas, error codes | |
| Protocol | Message types, sequencing, state transitions | |
| Data Format | Syntax, semantics, edge cases, error recovery | |
| Algorithm | Inputs, outputs, invariants, complexity characteristics |
Phase 1: Discovery (The Dirty Room)
Examine the original to document what it does (not how) and capture behavioral fixtures for verification.
BLOCKING: Complete discovery before moving to Phase 2.
Launch as a Task() agent. This agent reads the original freely. Its output goes to disk — the orchestrator reads those files afterward but does NOT pass the agent's context into later phases.
Discovery output
Write to .agent-history/clean-room/<slug>/discovery.md:
Write to .agent-history/clean-room/<slug>/fixtures.md:
Present both files to the user. Ask: "Does this capture the behavior you want to reimplement? Are the fixtures sufficient?"
Phase 2: Specify (The Wall)
Transform discovery observations into a functional specification with no reference to the original's internals. This is the only artifact the implementation agent receives.
BLOCKING: Do NOT start until the user approves Phase 1 output.
Specification rules
- Describe behavior, not mechanism. "Returns the sorted elements" not "Uses quicksort with median-of-three pivot."
- Define contracts precisely. Input types, output types, preconditions, postconditions.
- Enumerate edge cases. Empty inputs, maximum sizes, malformed data.
- Specify error behavior. What errors occur, what information they carry.
- Leave implementation choices open. The spec says WHAT, the implementer decides HOW.
Write to .agent-history/clean-room/<slug>/specification.md:
Completeness gate
Before Phase 3, verify:
- Every fixture-captured behavior has a corresponding spec requirement
- Every Open Question from discovery is resolved, marked out of scope, or translated into a spec decision
- For stateful artifacts: state transitions and side effects are in the spec
Do NOT hand off a spec with unresolved ambiguities — the implementation agent cannot consult the original to fill gaps.
Present the specification and ask:
- "Does this spec accurately describe the behavior you want?"
- "Does anything here reference HOW the original works rather than WHAT it does?"
The user's approval is the formal handoff.
Phase 3: Implement (The Clean Room)
BLOCKING: Do NOT start until the user approves the specification.
Gather implementation preferences via AskUserQuestion:
- Full interface or vertical slice?
- Preferred architecture or patterns
- Test strategy (TDD from spec, tests after, both)
- Libraries or frameworks to use (or avoid)
Launch a new `Task()` agent for implementation. This agent receives ONLY the spec file path and implementation preferences. It has never seen the original artifact.
Wait for completion. Present a summary to the user.
Phase 4: Verify (Functional Equivalence)
Confirm the reimplementation satisfies both the specification and the behavioral fixtures. The orchestrator runs verification, not the implementation agent. Fixtures never enter the implementation agent's context.
If fixture replay reveals failures, the fix path is: revise the spec to capture the missing behavior, then re-run Phase 3 with the updated spec. Do NOT leak fixtures or discovery notes into the implementation agent to fix failures — that breaks the wall.
BLOCKING: Do NOT start until implementation is complete.
Layer 1: Spec compliance
| Requirement | Status | Evidence | |
|---|---|---|---|
| [From spec] | PASS / FAIL / PARTIAL | [Test result or explanation] |
Layer 2: Fixture replay
Replay every fixture from fixtures.md against the reimplementation using the documented replay method.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/sc-extras/skills/sc-clean-room/SKILL.md
Popularity
- Repository stars
- 103
- Repository forks
- 15
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kylesnowschwartz/simpleclaude/sc-clean-room)