Claude Code plugin: Generate characterization tests for legacy code before AI modification. Supports Go, Python, TypeScript, JavaScript, Kotlin, Java.
SaferSkills independently audited characterization-test-generator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate characterization tests that document existing code behavior before modification. These tests are safety nets — they lock current behavior so refactoring or AI-assisted changes can be verified.
For background theory, read references/theory.md. For language-specific patterns, read references/language-patterns.md.
Read the file or directory specified by the user. Identify all public functions/methods that:
List targets and confirm with user before proceeding.
For each function:
Follow the Feathers Method for each function:
TestCharacterize_<FunctionName>_<Scenario>Critical rules:
After generating tests, verify they catch changes:
Generate files following project conventions:
testdata/golden/ directory for golden files if applicableOutput a summary:
Characterization Tests Generated
=================================
Target: <file path>
Functions characterized: X
Test cases generated: Y
Estimated coverage: Z%
Files created:
- tests/characterization/test_char_<name>.py
- tests/characterization/testdata/golden/<name>.json
Next steps:
1. Run tests to capture golden files: <command>
2. Verify coverage: <command>
3. Try mutation: comment out line N in <file>, expect test X to failDetect language from file extension and project structure:
.go + go.mod → Go (use testing + golden files).py + requirements.txt/pyproject.toml → Python (use pytest + approvaltests).ts/.tsx + package.json → TypeScript (use jest snapshots).js/.jsx + package.json → JavaScript (use jest snapshots).kt + build.gradle → Kotlin (use JUnit + ApprovalTests).java + pom.xml/build.gradle → Java (use JUnit + ApprovalTests)Always scrub these fields before capturing golden output:
created_at, updated_at, timestamp, date, timeid, uuid, request_id, job_id, session_idexecution_time, duration, elapsedhostname, pid, portkey, token, secret, passwordReplace with stable placeholders: [TIMESTAMP], [ID], [DURATION], etc.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.