Skip to content
Back to skills

Tidy

ASecurity

TDD Production Code Refactoring Process. Triggers on 'tidy up', 'tidy this', 'clean up code'. Use for refactoring production code with test coverage.

  • 8 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
toolsbashrefactoring

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 9, 2026

npx -y skills add SDiamante13/dotfiles --skill tidy --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tidy?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tidy
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/sdiamante13-tidy/badge)](https://www.skillsdirectory.com/skills/sdiamante13-tidy)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tidy
allowed-tools:
  - Read
  - Edit
  - Write
  - Glob
  - Grep
  - Bash
  - Workflow
description: TDD Production Code Refactoring Process. Triggers on 'tidy up', 'tidy this', 'clean up code'. Use for refactoring production code with test coverage.
metadata:
  author: Fishbowl Team
  version: "0.2.0"
---

# TDD Production Code Refactoring Process

STARTER_CHARACTER = 🟣

**NEVER** make changes to Test code in this process.

This process is for refactoring production code with test coverage.

## Initial Setup

1. **Locate Test File Proactively**
   - If user provides a file path, search for its test file using common patterns:
     - `filename.test.ext`, `filename.spec.ext`
     - `__tests__/filename.ext`
     - `tests/filename.ext`
     - Mirror path with `/test/` instead of `/src/`
   - Use Glob and Grep to search multiple patterns in parallel
   - If multiple test files found, show options and ask which one
   - If no test file found, inform user and ask them to provide the test file path
   - **Only ask user if ambiguous or not found** - otherwise proceed automatically

2. **Verify Tests Pass**
   - Run the test suite to establish baseline
   - If tests fail initially, stop and report to user

3. **Scan for Refactoring Opportunities**
   - Read the production code file thoroughly
   - Identify ALL refactoring opportunities by priority:
     1. Dead code (commented code, unused variables)
     2. Poor names (unclear variables/methods)
     3. Long methods (> 25 lines)
     4. Duplication (repeated code blocks)
     5. Complex conditionals (nested ifs, no guard clauses)
     6. Unnecessary locals (single-use variables)
     7. Unused imports
   - **Present numbered list** of all findings to user
   - **Ask user which ones to proceed with** (e.g., "all", "1-5", "2,4,7")
   - Wait for user confirmation before starting refactoring

## Refactoring Loop

The approval is interactive and **stays here** (Initial Setup step 3): you present the
numbered findings, ask which to proceed with, and wait for user confirmation. Only the
deterministic apply β†’ green-gate β†’ commit/revert loop is encoded as a **Workflow**, so the
strike cap, green gate, and exact commit-message format run reliably instead of by prose.

Once the user has confirmed the subset, invoke the `Workflow` tool with the bundled script,
passing the human-approved refactor list (in priority order):

```
Workflow({
  scriptPath: "${CLAUDE_PLUGIN_ROOT}/skills/tidy/workflow.js",
  args: {
    refactors: ["<approved refactor 1>", "<approved refactor 2>", ...],  // priority order
    testCommand: "<how to run the suite>",   // optional; agent infers if omitted
    productionFile: "<path>",                 // optional; the file being tidied
    testFile: "<path>"                        // optional; NEVER modified
  }
})
```

For each approved refactor the workflow runs:

1. An agent applies **only that one** refactoring (one at a time, in priority order) to
   **production code** β€” it **NEVER touches test code** β€” and returns the diff.
2. A gate agent (Haiku) runs the test suite and returns `{ passed, output }`.
3. If `passed === true`: commit with message format `"- r <refactoring>"` (quotes must
   include the - r). The loop **does not commit until the gate reports `passed === true`**.
4. If tests fail: revert this attempt's changes and retry β€” up to **three** attempts.

It returns `{ total, attempted, committed, halted, outcomes }`, where each outcome carries
`{ index, refactor, committed, commitMessage, attempts, halted }`. Give a brief status
update after each refactor from the returned outcomes.

**Stop conditions:**
- If a refactor fails three times (the workflow halts and returns `halted: true`)
- If no further refactoring opportunities found
- Pause and check with user

When the workflow returns `halted: true`, **pause and check with the user** before doing
anything else β€” report which refactor failed and its attempt output; do not continue to the
next refactor on your own.

## Code Style Guidelines

- Prefer self-explanatory, readable code over comments
- Use functional helper methods for clarity
- Remove comments and dead code
- Extract paragraphs into methods
- Use better variable names
- Remove unused imports
- Remove unhelpful local variables
- Methods should be small and focused (ideally < 25 lines)

## Common Refactorings (in priority order)

1. **Remove dead code** - commented code, unused variables
2. **Better names** - rename unclear variables/methods
3. **Extract methods** - break up long methods
4. **Remove duplication** - DRY principle
5. **Simplify conditionals** - reduce nesting, use guard clauses
6. **Remove unnecessary locals** - inline single-use variables
7. **Clean imports** - remove unused imports

Files in this skill

  • SKILL.md4.7 KB
  • workflow.js6.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.