Skip to content

v1.0.0 — humanify-deobfuscate

Latest

Choose a tag to compare

@ajsb85 ajsb85 released this 15 Jun 16:51
· 4 commits to main since this release
v1.0.0
27ec6c9

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 modesplit_bundle.mjs to 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 loopextract_remaining.mjs surfaces only the meaningful residual; stops at the compiler-scaffolding floor.
  • One-command backbonefinish_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.