Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .claude/skills/techdebt/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
name: techdebt
description: Analyze branch changes for technical debt, code duplication, and unnecessary complexity
user-invocable: true
context: fork
allowed-tools:
- Bash
- Read
- Grep
- Glob
---

# Techdebt Cleanup Skill

Analyze changes on the current branch to identify and fix technical debt, code duplication, and unnecessary complexity.

## Instructions

### Step 1: Get Branch Changes

Find the merge-base (where this branch diverged from master) and compare against it:

```bash
# Find upstream (DataDog org repo)
UPSTREAM=$(git remote -v | grep -E 'DataDog/[^/]+(.git)?\s' | head -1 | awk '{print $1}')
if [ -z "$UPSTREAM" ]; then
echo "No DataDog upstream found, using origin"
UPSTREAM="origin"
fi

# Find the merge-base (commit where this branch diverged from master)
MERGE_BASE=$(git merge-base HEAD ${UPSTREAM}/master)
echo "Comparing changes introduced on this branch since diverging from master using base commit: $MERGE_BASE"

git diff $MERGE_BASE --stat
git diff $MERGE_BASE --name-status
```

If no changes exist, inform the user and stop.

If changes exist, read the diff and the full content of modified source files (not test files) to understand context.

### Step 2: Analyze for Issues

Look for:

**Code Duplication**
- Similar code blocks that should be extracted into shared functions
- Copy-pasted logic with minor variations

**Unnecessary Complexity**
- Over-engineered solutions (abstractions used only once)
- Excessive indirection or layers
- Backward compatibility shims that aren't needed

**Redundant Code**
- Dead code paths
- Overly defensive checks for impossible scenarios

### Step 3: Report and Fix

Present a concise summary of issues found with file:line references.

Then ask the user if they want you to fix the issues. When fixing:
- Make one logical change at a time
- Do NOT change behavior, only refactor
- Skip trivial or stylistic issues