humanify-deobfuscate is a Claude Code agent skill that makes minified, bundled, or
obfuscated JavaScript readable again — renaming identifiers scope-safely with an AST
while the model supplies the names. A from-scratch reimplementation of
humanify's technique: a script owns correctness
(Babel scope.rename), the model owns naming.
Install
npx skills add ajsb85/humanify-deobfuscate -g(Requires Node.js; run npm install in scripts/ if installing manually.)
Highlights
- Scope-safe renaming — never corrupts shadowed variables or collisions (unlike find-and-replace).
- Webpack/browserify bundle mode —
split_bundle.mjsto survey, dump, chunk, and merge modules; scales via parallel per-module naming agents. - The parts plain renaming can't reach — deterministic passes for webpack export-ids (
.a/.b→ real names) and TypeScript class-IIFE constructors. - Convergence loop —
extract_remaining.mjssurfaces only the meaningful residual; stops at the compiler-scaffolding floor. - One-command backbone —
finish_bundle.mjs(cross-platform) /finish_bundle.sh. - Cross-platform — validated on Linux, macOS, and Windows (native Node).
Proven at scale
Run end-to-end on a real 1 MB / 124-module / ~10k-identifier webpack bundle, cutting
single-letter identifier tokens by ~63% while keeping output behavior-equivalent.
CI/CD
GitHub Actions validate the scripts on Ubuntu + Windows (syntax, frontmatter, a
behavior-preserving smoke test) and package the skill on each tagged release.
MIT licensed.