From clamper
Deep project DNA extraction — living analysis of git history, architecture, fragile zones, coupling graphs, and test coverage. Goes beyond static CLAUDE.md.
How this skill is triggered — by the user, by Claude, or both
Slash command
/clamper:project-dnaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
CLAUDE.md is static and shallow — a snapshot written once. Project DNA is **alive**: it's extracted from the project's actual git history, dependency graph, test infrastructure, and build system. It reveals what CLAUDE.md can't: which files are fragile, what changes together, where test coverage has gaps, and how the architecture actually works (not just how it was designed).
CLAUDE.md is static and shallow — a snapshot written once. Project DNA is alive: it's extracted from the project's actual git history, dependency graph, test infrastructure, and build system. It reveals what CLAUDE.md can't: which files are fragile, what changes together, where test coverage has gaps, and how the architecture actually works (not just how it was designed).
Files that change most frequently in recent history signal active development areas or instability:
git log --oneline -100 --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
Interpretation:
The intersection of high churn and low test coverage. These are the files most likely to break silently.
Detection algorithm:
Files that consistently change together reveal hidden dependencies:
# Co-change analysis from git log
git log --oneline -100 --name-only --pretty=format: | python3 -c "
import sys
from collections import defaultdict, Counter
commits = []
current = []
for line in sys.stdin:
line = line.strip()
if not line:
if current:
commits.append(current)
current = []
else:
current.append(line)
if current:
commits.append(current)
pairs = Counter()
for files in commits:
for i, a in enumerate(files):
for b in files[i+1:]:
pair = tuple(sorted([a, b]))
pairs[pair] += 1
for (a, b), count in pairs.most_common(15):
if count >= 3:
print(f'{count}x: {a} <-> {b}')
"
Files imported by the most other files — changes here cascade widely:
# Most-imported files (Python)
grep -rh "^from \|^import " --include="*.py" | sed 's/from //' | sed 's/ import.*//' | sort | uniq -c | sort -rn | head -10
# Most-imported files (TypeScript/JavaScript)
grep -rh "from ['\"]" --include="*.ts" --include="*.tsx" --include="*.js" | sed "s/.*from ['\"]//;s/['\"].*//" | sort | uniq -c | sort -rn | head -10
DNA is cached in ${CLAUDE_SKILL_DIR}/../../data/dna-cache.jsonl with configurable TTL (default: 24 hours).
Each cache entry:
{
"project": "<name>",
"pattern": "<architecture|hot_file|fragile_zone|coupling|test_coverage|dependency_hotspot>",
"detail": "<finding>",
"file_path": "<if applicable>",
"confidence": "<high|medium|low>",
"timestamp": "<iso>"
}
session-start.sh reads DNA cache to inject fragile zones and coupling data into context/dna command triggers full extraction via clamper-scout agentclamper-verifier uses DNA data to prioritize checks on fragile zonesclamper-learner correlates DNA patterns with verification outcomesnpx claudepluginhub pretinnov-inc/claude-plugin-marketplace --plugin clamperProvides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.