본문으로 건너뛰기
cccskills
무료GitHub에 공개

speckit-cleanup-run

Post-implementation quality gate that reviews changes, fixes small issues (scout rule), creates tasks for medium issues, and generates analysis for large issues.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md15.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

User Input

$ARGUMENTS

You MUST consider the user input before proceeding (if not empty).

Goal

Perform a final quality gate after implementation. Review all changes made during implementation, identify technical debt, and handle issues according to severity:

  • Small issues: Fix immediately (Scout Rule) - with user confirmation
  • Medium issues: Create follow-up tasks in tasks.md
  • Large issues: Generate detailed analysis with options in tech-debt-report.md

Operating Constraints

Constitution Authority: The project constitution (.specify/memory/constitution.md) is non-negotiable. Any cleanup action that would violate constitution principles is forbidden. If a fix would conflict with a MUST principle, escalate to large issue instead of fixing.

Linter Deference: For style and formatting issues, defer to the project's configured linters. Do NOT manually fix issues that linters should handle - instead, run the linter with auto-fix if available.

Preserve User Intent: If code appears intentional (e.g., commented code with explanation, disabled tests with TODO reason), do NOT auto-fix. Escalate to medium issue for user review.

Execution Steps

1. Initialize Cleanup Context

Run {SCRIPT} once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths:

  • SPEC = FEATURE_DIR/spec.md
  • PLAN = FEATURE_DIR/plan.md
  • TASKS = FEATURE_DIR/tasks.md
  • CONSTITUTION = .specify/memory/constitution.md
  • TECH_DEBT_REPORT = FEATURE_DIR/tech-debt-report.md

Abort with error if TASKS does not exist or has no completed tasks (implementation not run). For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").

2. Load Implementation Context

Load minimal necessary context from each artifact:

From tasks.md:

  • All completed tasks (marked [X] or [x])
  • File paths mentioned in completed tasks
  • Implementation phases that were executed

From plan.md:

  • Tech stack and language
  • Project structure and directories
  • Configured linters and tools

From spec.md:

  • Original requirements (to verify fixes don't violate intent)
  • User stories (to map issues to features)

From constitution:

  • All MUST/SHOULD principles
  • Quality gates and standards

3. Identify Implementation Changes

Determine which files to review using this priority order:

  1. Task-based detection (most reliable):

    • Parse tasks.md for all file paths in completed tasks
    • This is deterministic and matches what was actually implemented
  2. Git-based detection (supplementary):

    • Run git diff --name-only HEAD~N where N = number of implementation commits
    • Or use git log --oneline FEATURE_DIR to find implementation commit range
    • Cross-reference with task-based list
  3. Build the review scope:

    REVIEW_FILES = files from completed tasks
    REVIEW_DIRS = src/, tests/, and directories from plan.md structure
    EXCLUDE = node_modules/, venv/, dist/, build/, *.lock files
    

4. Detect Project Tooling

Before scanning, identify available project tools:

Linters (check for config files):

  • ESLint: .eslintrc*, eslint.config.*
  • Prettier: .prettierrc*
  • Pylint/Ruff/Black: pyproject.toml, .pylintrc, ruff.toml
  • RuboCop: .rubocop.yml
  • Go: go.mod (use go fmt, go vet)

Test runners:

  • Jest/Vitest: jest.config.*, vitest.config.*
  • Pytest: pytest.ini, pyproject.toml
  • Go: *_test.go files

Record available tools for use in validation steps.

5. Perform Issue Detection

Scan each file in REVIEW_FILES for issues. Use progressive disclosure - only load file contents when checking that specific file.

A. Debugging Artifacts (SMALL - auto-fixable)

Language-specific patterns to detect and remove:

LanguagePatterns
JS/TSconsole.log, console.debug, console.info, console.warn (non-error), debugger
Pythonprint( without logging context, breakpoint(), pdb.set_trace(), import pdb
JavaSystem.out.print, e.printStackTrace() without logging
Gofmt.Print used for debugging (not in main/CLI)
Rubyputs for debugging, binding.pry, byebug
PHPvar_dump(, print_r(, dd(, dump(
Rustprintln! used for debugging, dbg!

B. Dead Code (SMALL - auto-fixable with caution)

  • Unused imports: No references in file after import statement
  • Commented-out code: Block comments containing code syntax (>3 lines) with no explanatory context
  • Unreachable code: Statements after unconditional return, throw, break, continue

Caution: Do NOT auto-remove if:

  • Adjacent comment explains WHY code is disabled (even on separate line above)
  • Import is used in type annotations only (TS/Python)
  • Code is conditionally compiled
  • Commented code has a TODO/ticket reference indicating planned restoration

When in doubt about intent, escalate to MEDIUM (create task) rather than auto-fixing.

C. Development Remnants (SMALL/MEDIUM)

PatternSeverityAction
TODO without ticket referenceSMALLAdd ticket or remove
FIXME, HACK, XXXMEDIUMCreate follow-up task
localhost, 127.0.0.1 in source codeSMALLReplace with environment variable or config
Disabled tests without reasonMEDIUMCreate task to fix or remove
Hardcoded credentials/secretsCRITICALSTOP - alert user immediately
Logging user data or queriesMEDIUMCreate task to sanitize logs
Import from non-existent moduleMEDIUMCreate task to fix or remove

Localhost replacement pattern:

// Before (SMALL issue)
const apiUrl = 'http://localhost:3000/api';

// After (fix)
const apiUrl = process.env.API_URL || 'http://localhost:3000/api';

D. Code Quality (MEDIUM - create tasks)

These require judgment and should NOT be auto-fixed:

  • Missing error handling on external calls (API, DB, file I/O)
  • Missing input validation on public functions
  • Code duplication (same logic in 2-3 locations)
  • Missing documentation on public API
  • Long functions (project-specific threshold, default: check if >50 lines AND complexity is high)
  • Deep nesting (>4 levels with complex logic)

E. Architecture Concerns (LARGE - generate analysis)

  • Circular dependencies between modules
  • Business logic in wrong layer (e.g., in controllers/handlers)
  • Inconsistent patterns across similar components
  • Missing abstraction causing tight coupling
  • Performance anti-patterns (N+1 queries, missing pagination)

F. Security Concerns (LARGE/CRITICAL)

PatternSeverity
SQL string concatenationLARGE
Unsanitized HTML outputLARGE
Hardcoded secretsCRITICAL - halt
Disabled auth checksCRITICAL - halt
Overly permissive CORS (*)MEDIUM

6. Constitution Validation

For each potential fix or issue:

  1. Check if fix would violate any MUST principle
  2. Check if issue represents a constitution violation
  3. Constitution violations are automatically LARGE severity

7. Classify and Confirm Issues

Build issue inventory with severity assignment:

Severity Heuristics:

SeverityCriteriaAction
CRITICALSecurity vulnerability, credential exposure, auth bypassHALT - alert user, do not proceed until fixed
LARGEArchitecture problem, constitution violation, security design issueGenerate analysis in tech-debt-report.md
MEDIUMCode quality issue requiring design decision, multi-file changeCreate follow-up task
SMALLMechanical fix, single-file, no judgment neededFix with confirmation

On CRITICAL halt: After user fixes critical issues manually, they should re-run /speckit.cleanup to continue with remaining issues.

Present findings to user before proceeding:

## Cleanup Findings

### Critical Issues (BLOCKING)
[List any - must resolve before continuing]

### Small Issues (Propose to fix now)
| # | File | Issue | Proposed Fix |
|---|------|-------|--------------|
| 1 | src/api.ts:42 | console.log | Remove line |
| 2 | src/util.ts:1 | Unused import | Remove 'lodash' |

### Medium Issues (Will create tasks)
| # | File | Issue | Task Description |
|---|------|-------|------------------|
| 1 | src/service.ts | Missing error handling | Add try/catch to API calls |

### Large Issues (Will generate analysis)
| # | Scope | Issue | Impact |
|---|-------|-------|--------|
| 1 | auth/, user/ | Circular dependency | Prevents clean testing |

**Proceed with cleanup?** (yes/no/skip-small/only-report)

Wait for user confirmation before applying fixes.

8. Execute Fixes (Small Issues)

For each confirmed small issue:

  1. Check for uncommitted changes in target file:

    • If dirty: WARN user, ask to stash or commit first
  2. Apply fix:

    • Remove debugging artifacts
    • Remove confirmed dead code
    • Replace hardcoded values with config references
  3. Validate fix:

    • Run project linter on modified file (if available)
    • Ensure no syntax errors introduced
  4. Track changes for summary (do not commit yet)

9. Run Project Validation

After all small fixes applied:

  1. Run linter (if detected in step 4):

    • npm run lint / yarn lint
    • ruff check --fix / black .
    • go fmt ./...
    • Fix any new violations introduced
  2. Run tests (if test runner detected):

    • npm test / pytest / go test ./...
    • If tests fail: ROLLBACK fixes, report failure, ask user how to proceed
  3. Verify no regressions:

    • All previously passing tests still pass
    • No new linter errors

10. Create Tasks for Medium Issues

If user confirmed, append to FEATURE_DIR/tasks.md:

---

## Tech Debt Tasks (Generated by /speckit.cleanup)

**Generated**: [ISO DATE]
**Source**: Post-implementation cleanup of [FEATURE NAME]
**Priority**: Address before next feature iteration

### Detected Issues

- [ ] TD001 [P] Add error handling to [function] in [file:line] - missing try/catch on external API call
- [ ] TD002 Extract duplicate validation logic from [file1], [file2] into shared utility
- [ ] TD003 [P] Add JSDoc documentation to public methods in [module]
- [ ] TD004 Enable or remove skipped test in [test file] - currently disabled without explanation

ID Assignment:

  • Check existing TD### IDs in tasks.md
  • Start from max(existing) + 1 to avoid conflicts
  • If no existing TD tasks, start at TD001

11. Generate Analysis for Large Issues

Create FEATURE_DIR/tech-debt-report.md:

# Tech Debt Report: [FEATURE NAME]

**Generated**: [ISO DATE]
**Feature**: [FEATURE_DIR]
**Spec Reference**: [link to spec.md]

## Executive Summary

| Severity | Count | Immediate Action Required |
|----------|-------|---------------------------|
| Critical | 0 | None (or cleanup was halted) |
| Large | X | Review and prioritize |
| Medium | X | Tasks created in tasks.md |
| Small | X | Fixed during cleanup |

## Large Issues Requiring Analysis

### [ISSUE-001] [Descriptive Title]

**Category**: [Architecture / Security / Performance / Design]
**Location**: [file:line or module scope]
**Related Spec**: [Which requirement/story this affects]
**Constitution Impact**: [Which principles apply]

#### Problem Description

[Clear explanation of what the issue is, how it was detected, and why it matters]

#### Impact if Not Addressed

- [Concrete impact 1]
- [Concrete impact 2]
- [Risk assessment]

#### Options

**Option 1: [Name] (Recommended)**
- **Approach**: [What to do]
- **Pros**: [Benefits]
- **Cons**: [Drawbacks]
- **Effort**: [T-shirt size: S/M/L/XL]
- **Risk**: [Low/Medium/High]

**Option 2: [Name]**
- **Approach**: [What to do]
- **Pros**: [Benefits]
- **Cons**: [Drawbacks]
- **Effort**: [T-shirt size]
- **Risk**: [Low/Medium/High]

**Option 3: Defer**
- **Approach**: Document and revisit later
- **Pros**: No immediate effort
- **Cons**: [Technical debt accumulation, risks]
- **Recommended deferral period**: [timeframe or trigger]

#### Recommendation

[Which option and why, with specific next steps]

---

[Repeat for each large issue]

## Cross-References

- **Specification**: FEATURE_DIR/spec.md
- **Implementation Plan**: FEATURE_DIR/plan.md
- **Tasks**: FEATURE_DIR/tasks.md (Tech Debt section)
- **Constitution**: .specify/memory/constitution.md

## Next Steps

1. Review this report with stakeholders
2. Decide on approach for each large issue
3. Create implementation tasks for approved remediations
4. Run `/speckit.implement` to address TD tasks
5. Re-run `/speckit.cleanup` to verify resolution

12. Commit Changes (with user approval)

If small fixes were applied and validation passed:

Ready to commit cleanup fixes:
- X files modified
- Y debugging artifacts removed
- Z dead code lines removed

Commit message:
"chore(cleanup): remove debugging artifacts and dead code

- Remove console.log statements from api handlers
- Remove unused imports in utils module
- [list other changes]

Generated by /speckit.cleanup"

**Commit these changes?** (yes/no/amend-message)

13. Generate Cleanup Summary

Output final report:

## Cleanup Complete

### Summary
| Category | Found | Fixed | Tasks Created | In Report |
|----------|-------|-------|---------------|-----------|
| Critical | 0 | - | - | - |
| Small | X | X | - | - |
| Medium | X | - | X | - |
| Large | X | - | - | X |

### Files Modified
- src/api/handler.ts (removed 2 console.log)
- src/utils/parser.ts (removed unused import)

### Artifacts Updated
- [x] FEATURE_DIR/tasks.md - Added Tech Debt Tasks section (X tasks)
- [x] FEATURE_DIR/tech-debt-report.md - Created with X large issues

### Validation Status
- [x] Linter: No violations
- [x] Tests: All passing (X tests)
- [x] Constitution: No violations

### Recommended Next Steps
1. Review tech-debt-report.md for large issues
2. Run `/speckit.implement` to address TD tasks when ready
3. Consider running `/speckit.analyze` to verify overall consistency

Operating Principles

Scout Rule

"Always leave the code cleaner than you found it." Small issues are fixed immediately - but always with user visibility and confirmation.

Proportional Response

Match effort to issue severity:

  • SMALL → Fix now (minutes)
  • MEDIUM → Task for next sprint (hours)
  • LARGE → Analyze and decide (days, needs discussion)

Non-Destructive by Default

  • Always confirm before modifying files
  • Never force-fix issues that might be intentional
  • Large issues get analysis, not automatic fixes
  • Rollback if validation fails

Constitution Compliance

Every cleanup action must respect constitution principles. When in conflict, constitution wins - escalate to large issue rather than violating principles.

Traceability

All outputs stay in FEATURE_DIR:

  • Links tech debt to the feature that introduced it
  • Enables re-running /speckit.implement for follow-ups
  • Supports audit trail: Spec → Plan → Tasks → Implement → Cleanup

Idempotency

Safe to run multiple times:

  • Already-fixed issues won't be re-fixed
  • Task IDs increment from existing max
  • tech-debt-report.md regenerated with current state
  • Validation re-runs each time

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

adapters

무료

Skill for the Adapters area of paddock. 108 symbols across 22 files.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

chat

무료

Skill for the Chat area of paddock. 62 symbols across 10 files.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

dashboard

무료

Skill for the Dashboard area of paddock. 80 symbols across 16 files.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

github

무료

Skill for the Github area of paddock. 23 symbols across 5 files.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

Use when the user needs to run GitNexus CLI commands like analyze/index a repo, check status, clean the index, generate a wiki, or list indexed repos. Examples: "Index this repo", "Reanalyze the codebase", "Generate a wiki"

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

Use when the user is debugging a bug, tracing an error, or asking why something fails. Examples: "Why is X failing?", "Where does this error come from?", "Trace this bug"

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

racecraft-lab/paddock-prototype122026년 6월 26일 업데이트

racecraft-lab의 스킬 모두 보기

이 스킬의 문제 신고