Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "deslop",
|
||||
"description": "Remove AI-generated code slop from your branches",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Chmouel",
|
||||
"email": "chmouel@chmouel.com"
|
||||
},
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# deslop
|
||||
|
||||
Remove AI-generated code slop from your branches
|
||||
255
commands/deslop.md
Normal file
255
commands/deslop.md
Normal file
@@ -0,0 +1,255 @@
|
||||
---
|
||||
description: Remove AI-generated code slop from your branch
|
||||
argument-hint: [base-branch]
|
||||
allowed-tools: Bash(git:*)
|
||||
---
|
||||
|
||||
# Remove AI Code Slop
|
||||
|
||||
Clean up AI-generated code patterns that don't match your codebase's style and conventions. This command uses a systematic multi-phase approach to safely identify and remove slop.
|
||||
|
||||
## Core Principles
|
||||
|
||||
- **Safety first**: Always get user confirmation before making changes
|
||||
- **Transparency**: Show exactly what will be changed and why
|
||||
- **Context-aware**: Understand existing codebase patterns before removing code
|
||||
- **Use TodoWrite**: Track progress through all phases
|
||||
|
||||
---
|
||||
|
||||
## Arguments
|
||||
|
||||
**Base branch**: $ARGUMENTS (defaults to main if not provided)
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Setup & Analysis
|
||||
|
||||
**Goal**: Understand the current state and prepare for slop detection
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. Create a todo list with all phases
|
||||
2. Determine the base branch (from arguments or default to `main`)
|
||||
3. Verify git status:
|
||||
- Check current branch name
|
||||
- Check if there are uncommitted changes
|
||||
- If uncommitted changes exist, ask user to confirm if they want to proceed anyway
|
||||
- Verify base branch exists
|
||||
4. Get the diff against base branch: `git diff <base-branch>...HEAD`
|
||||
5. Analyze the diff:
|
||||
- Count total files changed
|
||||
- List all modified files
|
||||
- Estimate lines added in this branch
|
||||
6. Present summary to user:
|
||||
- Current branch: `feature-x`
|
||||
- Comparing against: `main`
|
||||
- Files modified: 12
|
||||
- Lines added: 450
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Codebase Style Learning
|
||||
|
||||
**Goal**: Understand the existing codebase's conventions and patterns
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. For each modified file, read a few similar files from the base branch to understand:
|
||||
- Comment density and style (JSDoc vs inline, verbosity)
|
||||
- Error handling patterns (when try-catch is used vs not)
|
||||
- Type safety patterns (use of `any`, type assertions, strictness)
|
||||
- Defensive coding patterns (null checks, validation)
|
||||
- Naming conventions (verbosity, patterns)
|
||||
2. Build a "style profile" for reference:
|
||||
- "This codebase uses minimal inline comments"
|
||||
- "Error handling is only in top-level API handlers"
|
||||
- "`any` types are never used except in `legacy/` directory"
|
||||
- "Null checks are only at API boundaries"
|
||||
3. Present style profile to user for confirmation
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Slop Detection
|
||||
|
||||
**Goal**: Identify AI-generated patterns that don't match the codebase style
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. For each file in the diff, analyze added lines for these patterns:
|
||||
|
||||
**Comments**:
|
||||
- JSDoc that merely restates the function name
|
||||
- Inline comments explaining obvious code
|
||||
- Comment density higher than similar files
|
||||
- "AI-style" verbose explanations
|
||||
|
||||
**Over-defensive code**:
|
||||
- Try-catch blocks in areas where similar code doesn't use them
|
||||
- Null/undefined checks in trusted code paths
|
||||
- Duplicate validation already done upstream
|
||||
- Redundant type guards
|
||||
|
||||
**Type safety issues**:
|
||||
- Casts to `any` to bypass type errors
|
||||
- Unnecessary type assertions (`as Type`)
|
||||
- Non-null assertions (like !) without clear justification
|
||||
|
||||
**Style inconsistencies**:
|
||||
- Naming patterns different from surrounding code
|
||||
- Overly verbose variable names
|
||||
- Unnecessary intermediate variables
|
||||
- Single-use helper functions
|
||||
|
||||
2. Categorize each slop instance:
|
||||
- File path and line numbers
|
||||
- Slop category (comment/defensive/type/style)
|
||||
- Confidence level (high/medium/low)
|
||||
- Risk level if removed (safe/review/risky)
|
||||
|
||||
3. Create a detailed removal plan with file-by-file breakdown
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: User Review & Confirmation
|
||||
|
||||
**Goal**: Get explicit approval before making any changes
|
||||
|
||||
**DO NOT PROCEED WITHOUT USER APPROVAL**
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. Present detailed report:
|
||||
|
||||
```
|
||||
## Deslop Analysis Report
|
||||
|
||||
### Summary
|
||||
Found 145 lines of potential AI-generated slop across 12 files
|
||||
|
||||
### By Category
|
||||
- Comments: 45 lines (31%) - mostly redundant explanations
|
||||
- Defensive code: 67 lines (46%) - unnecessary try-catch and null checks
|
||||
- Type casts: 23 lines (16%) - any casts and assertions
|
||||
- Style fixes: 10 lines (7%) - verbose naming and intermediate vars
|
||||
|
||||
### Files to be Modified
|
||||
|
||||
1. src/auth/login.ts (34 lines to remove)
|
||||
HIGH CONFIDENCE:
|
||||
- Lines 23-25: Redundant JSDoc comment
|
||||
- Lines 45-52: Try-catch around sync operation (inconsistent with codebase)
|
||||
- Line 78: Cast to `any` to bypass type error
|
||||
|
||||
MEDIUM CONFIDENCE:
|
||||
- Lines 89-91: Defensive null check (may be intentional)
|
||||
|
||||
2. src/utils/helpers.ts (23 lines to remove)
|
||||
HIGH CONFIDENCE:
|
||||
- Lines 12-15: Inline comments explaining obvious code
|
||||
- Lines 34-38: Unnecessary intermediate variables
|
||||
|
||||
[... continue for all files ...]
|
||||
|
||||
### Risk Assessment
|
||||
- Safe changes: 120 lines (83%)
|
||||
- Need review: 20 lines (14%) - marked above
|
||||
- Risky: 5 lines (3%) - removing error handling
|
||||
|
||||
### High-Risk Changes Requiring Review
|
||||
⚠️ src/payment/process.ts:67 - Removing try-catch in processPayment()
|
||||
⚠️ src/api/user.ts:123 - Removing type cast may need proper type fix
|
||||
```
|
||||
|
||||
2. **Ask user**: "Do you want to proceed with removing this slop? You can:
|
||||
- Approve all changes
|
||||
- Skip high-risk changes and only apply safe ones
|
||||
- Review specific files before applying
|
||||
- Cancel"
|
||||
|
||||
3. Wait for explicit user approval
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Application
|
||||
|
||||
**Goal**: Apply approved changes safely
|
||||
|
||||
**DO NOT START WITHOUT USER APPROVAL**
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. For each approved file:
|
||||
- Read the current file
|
||||
- Apply the slop removals
|
||||
- Use Edit tool to make precise changes
|
||||
- Update todos as you progress through files
|
||||
2. After all changes applied:
|
||||
- Show git diff summary: `git diff --stat`
|
||||
- Optionally run linter if configured in project
|
||||
|
||||
---
|
||||
|
||||
## Phase 6: Verification & Reporting
|
||||
|
||||
**Goal**: Confirm changes are safe and provide detailed summary
|
||||
|
||||
**Actions**:
|
||||
|
||||
1. Run verification checks:
|
||||
- Show `git status` to confirm files changed
|
||||
- Check if any linter errors were introduced
|
||||
- Optionally offer to run tests: `npm test` or equivalent
|
||||
|
||||
2. Present final detailed report:
|
||||
|
||||
```
|
||||
## Deslop Completion Report
|
||||
|
||||
### Summary
|
||||
Successfully cleaned 12 files, removing 145 lines of AI-generated slop
|
||||
|
||||
### Changes Applied
|
||||
- Comments removed: 45 lines (31%)
|
||||
- Defensive code removed: 67 lines (46%)
|
||||
- Type casts removed: 23 lines (16%)
|
||||
- Style improvements: 10 lines (7%)
|
||||
|
||||
### Files Modified
|
||||
1. src/auth/login.ts - 34 lines removed
|
||||
✓ Removed 1 redundant JSDoc block
|
||||
✓ Removed 1 unnecessary try-catch
|
||||
✓ Removed 1 any cast
|
||||
⚠️ Skipped 1 high-risk change (defensive null check)
|
||||
|
||||
2. src/utils/helpers.ts - 23 lines removed
|
||||
✓ Removed 4 inline comments
|
||||
✓ Simplified variable declarations
|
||||
|
||||
[... continue for all files ...]
|
||||
|
||||
### Statistics
|
||||
- Total lines removed: 145
|
||||
- Files modified: 12
|
||||
- Safe changes applied: 120
|
||||
- High-risk changes skipped: 25
|
||||
|
||||
### Next Steps
|
||||
1. Review the changes: `git diff`
|
||||
2. Run tests: `npm test` (or your test command)
|
||||
3. Commit changes: `git add . && git commit -m "chore: remove AI-generated slop"`
|
||||
4. To undo: `git restore .` will revert uncommitted changes if needed
|
||||
```
|
||||
|
||||
3. Mark all todos complete
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
If at any point:
|
||||
|
||||
- Base branch doesn't exist → ask user for correct branch name
|
||||
- Working directory has uncommitted changes → ask user to confirm if they want to proceed anyway
|
||||
- No diff found → inform user and exit gracefully
|
||||
- User cancels → exit cleanly without making changes
|
||||
45
plugin.lock.json
Normal file
45
plugin.lock.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:chmouel/claude-code-plugins:plugins/deslop",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "bf46f5a8909bb5c37ed9925c6f2560880e9b7fcd",
|
||||
"treeHash": "4dd29302b31715a973b4fd615fd7fc5f830c23cf3674960d21f6b953f3b415a5",
|
||||
"generatedAt": "2025-11-28T10:15:02.162701Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "deslop",
|
||||
"description": "Remove AI-generated code slop from your branches",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "d3850bcdf7caa50578974e29e1459455c7727f8ff25bc98c5b4896ea4321dce0"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "b9b3ad315a885c8e556ffa662d34292cf0d0b4bc3c50e3d79870c887b1c81daf"
|
||||
},
|
||||
{
|
||||
"path": "commands/deslop.md",
|
||||
"sha256": "fdb88bfe3f2c95304738bbbcd9e50d14fac0844e1b75c5296bc2cae9be110f8c"
|
||||
}
|
||||
],
|
||||
"dirSha256": "4dd29302b31715a973b4fd615fd7fc5f830c23cf3674960d21f6b953f3b415a5"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user