js-analysis
Skill1 starsChanged 13 days agoMITView on GitHub
Extract hidden endpoints, API paths, and secrets (API keys, tokens, internal URLs) from JavaScript files using linkfinder and secretfinder-style regex analysis. Use after web-crawling has produced a list of JS file URLs, to mine them for attack surface that isn't visible in the rendered HTML. Do NOT use for live API testing — that's api-discovery; this skill only extracts candidates from static JS source.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- SubhiSec/claude-ai-cyber-security-skillstheir own version, first seen Oct 25, 2026
- conjure-3301/skillstheir own version, first seen Aug 17, 2026
- 0xGhostCAT/claude-ai-cyber-security-skillstheir own version, first seen Jun 2, 2026
- zebbern/termstacktheir own version, first seen Apr 16, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- SubhiSec/claude-ai-cyber-security-skills★ 45same name
- 0xGhostCAT/claude-ai-cyber-security-skills★ 41same name
- zebbern/termstack★ 4same name
- conjure-3301/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository124 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-agent-reconSkill
- ai-supply-chainSkill
- exfiltration-via-aiSkill
- indirect-injectionSkill
- llm-fuzzingSkill
- prompt-injectionSkill
- rag-poisoningSkill
- tool-abuseSkill
- chain-analysisSkill
- chain-auth-to-takeoverSkill
- chain-customSkill
- chain-graph-walkSkill
- chain-idor-to-mass-dataSkill
- chain-info-to-exploitSkill
- chain-multi-appSkill
- chain-ssrf-to-cloudSkill
- chain-web-to-rceSkill
- chain-xss-to-account-takeoverSkill
- email-securitySkill
- engagement-flowSkill
- finding-disciplineSkill
- http-headers-securitySkill
- oob-interactionsSkill
- opsec-disciplineSkill
- research-firstSkill
- scope-disciplineSkill
- scope-importSkill
- session-contextSkill
- 2fa-bypassSkill
- api-abuseSkill
- auth-bypassSkill
- broken-access-controlSkill
- business-logicSkill
- cache-poisoningSkill
- clickjackingSkill
- corsSkill
- credential-testingSkill
- crlf-injectionSkill
- cryptographic-oracleSkill
- csrfSkill
- css-injectionSkill
- data-exfiltration-testSkill
- deserializationSkill
- email-injectionSkill
- file-uploadSkill
- fuzzingSkill
- graphqlSkill
- grpcSkill
- host-headerSkill
- http-smugglingSkill
- idorSkill
- info-disclosureSkill
- jwtSkill
- lateral-movementSkill
- lfi-rfiSkill
- mass-assignmentSkill
- oauthSkill
- open-redirectSkill
- parameter-pollutionSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
Run LinkFinder against each file (or against the live app) to extract endpoint-shaped strings (paths, relative URLs, API routes) from the …
- Distinctive: line 42
Run SecretFinder for API keys, tokens, and credential-shaped strings:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Signals
- JS file list exists from
web-crawlingand hasn't been mined for endpoints/secrets yet. - Suspect hardcoded API keys, internal hostnames, or undocumented endpoints in bundled JS.
- An SPA's real API surface isn't visible from HTML crawling alone.
Prerequisites
- List of JS file URLs from
web-crawling(static-assets.txtfiltered to.js).
Methodology
- Download all JS files locally for offline analysis (reduces repeat requests to the target,
consistent with
opsec-discipline):grep '\.js' static-assets.txt | sort -u > js-urls.txt wget -i js-urls.txt -P ./js-files/ --no-clobber -q - Run LinkFinder against each file (or against the live app) to extract endpoint-shaped
strings (paths, relative URLs, API routes) from the JS source:
python3 linkfinder.py -i https://example.com/static/app.bundle.js -o cli # or point it at a whole domain to auto-discover + crawl + extract python3 linkfinder.py -i https://example.com -d -o results.html - Run SecretFinder for API keys, tokens, and credential-shaped strings:
python3 SecretFinder.py -i https://example.com/static/app.bundle.js -o cli python3 SecretFinder.py -i js-files/ -o secrets-report.html - jsluice for more structured extraction (URLs + secrets + a queryable AST-based approach),
useful on heavily minified/webpack-bundled code:
jsluice urls js-files/*.js | sort -u > jsluice-urls.txt jsluice secrets js-files/*.js - TruffleHog against the downloaded JS directory for high-confidence secret patterns
(AWS keys, private keys, common token formats) with entropy + regex detectors:
trufflehog filesystem ./js-files/ --json > trufflehog-js.json - Manual regex sweep as a cheap complement/sanity check for anything the tools miss
(internal hostnames, debug flags, feature-flag names):
grep -rEoh "https?://[a-zA-Z0-9.-]+\.(internal|corp|local|dev)[^\"' ]*" js-files/ | sort -u grep -rEoh "(api[_-]?key|secret|token|bearer)[\"'\s:=]+[A-Za-z0-9_\-]{16,}" js-files/ -i | sort -u - Consolidate extracted endpoints into the API candidate list for
api-discovery, and any confirmed secrets immediately into evidence perfinding-discipline(and escalate peropsec-disciplineif a secret appears live/production).
Tooling
linkfinder.py (-i, -d for domain-wide discovery, -o cli|html), SecretFinder.py,
jsluice urls|secrets, trufflehog filesystem, wget/curl for bulk download, grep -E
for manual sweeps. Prefer the structured/JSON outputs (jsluice, trufflehog --json) over
scraping tool stdout.
Validation gate
- Every "secret" found is checked for whether it's actually live/exploitable before being reported — plenty of JS contains intentionally-public keys (analytics IDs, publishable Stripe keys, public Firebase config) that are not vulnerabilities.
- Extracted endpoints merged into the
api-discoverycandidate list with source JS file noted (for reproducibility). - Any secret that looks live/production is flagged for immediate escalation per
opsec-discipline, not left in a routine findings queue.
Gotchas
- Most "secrets" found in client-side JS are meant to be public (analytics keys, public API
keys scoped to client use) — confirm actual privilege/scope before treating as a finding;
this is squarely an Inferred-vs-Demonstrated distinction per
finding-discipline. - Minified/bundled JS (webpack, Vite) can obscure real endpoint strings inside template literals or dynamically constructed URLs — regex tools miss these; manual review of suspicious bundles is sometimes necessary.
- Source maps (
.js.map) if exposed will deobfuscate everything — check for them explicitly, they're a much higher-value target than minified JS:curl -s https://example.com/static/app.bundle.js.map -o app.js.map && test -s app.js.map && echo "EXPOSED" - A genuinely live/production secret found in JS is time-sensitive — treat it like the
anonymous-access findings in
service-enumeration: capture evidence and escalate promptly.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

