obscura

obscura is a skill for Claude Code, Codex from tdimino/claude-code-minoan. It costs 100 tokens per session (761 once invoked), scanned A, original, MIT.

A stealth headless browser for fetching and scraping web pages without displaying a browser window. It provides a CDP server, a protocol for controlling browsers programmatically, and supports parallel scraping with fingerprint protection.

In plain words
What is it for?
Use it for stealth page fetching, batch scraping, browser automation through CDP, and low-memory web crawling.
Why use it?
It helps collect pages when ordinary automated browsers are easy to identify or when many pages must be fetched with limited memory.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it for stealth page fetching, batch scraping, browser automation through CDP, and low-memory web crawling.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/tdimino/claude-code-minoan/obscura
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add tdimino/claude-code-minoan --skill obscura
Clone the repo
git clone --depth 1 https://github.com/tdimino/claude-code-minoan

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for obscura

README.md
[![agentmods](https://agentmods.dev/badge/skills/tdimino/claude-code-minoan/obscura/github.svg)](https://agentmods.dev/skills/tdimino/claude-code-minoan/obscura)
Your own site
<a href="https://agentmods.dev/skills/tdimino/claude-code-minoan/obscura"><img src="https://agentmods.dev/badge/skills/tdimino/claude-code-minoan/obscura/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for obscura

Your own site · 80×15
<a href="https://agentmods.dev/skills/tdimino/claude-code-minoan/obscura"><img src="https://agentmods.dev/badge/skills/tdimino/claude-code-minoan/obscura.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 100 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 761 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00100 $0.00761
Opus 5 $0.00050 $0.00380
Sonnet 5 $0.00020 $0.00152
Haiku 4.5 $0.00010 $0.00076

Measured 8d ago against content hash 72f6f63a4d1f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

obscura scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

The scan reads SKILL.md. This mod also ships 4 executable files (scripts/obscura_serve.sh, scripts/test_academic_sites.sh, scripts/test_obscura.sh, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/integration-automation/obscura/SKILL.md · 65 lines

How it starts

The opening of the file, as written. The whole thing — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Obscura

Rust headless browser with built-in anti-fingerprinting and CDP server. Fills the gap between Lightpanda (CDP, no stealth) and Scrapling (stealth, no CDP). Binary at ~/tools/obscura/obscura.

When to Use

Scenario Tool
Clean single-page markdown Firecrawl
Cloudflare Turnstile bypass Scrapling
Reddit Lightpanda / Scrapling
Twitter/X Jina
Interactive @ref automation agent-browser
Stealth CDP automation Obscura
Batch stealth scraping Obscura
Low-RAM headless (30MB) Obscura

Usage

Fetch a page with stealth:

obscura fetch --stealth --quiet https://example.com --eval "document.title"

Parallel batch scrape:

obscura scrape URL1 URL2 URL3 --concurrency 25 --format json

Start CDP server (port 9224 to avoid Chrome conflict on 9222):

obscura serve --port 9224 --stealth

Chain through Proxelar for defense-in-depth — --proxy is a global flag, goes before the subcommand:

obscura --proxy http://127.0.0.1:8080 serve --port 9224 --stealth
obscura --proxy http://127.0.0.1:8080 fetch --stealth https://example.com

Connect Puppeteer: browserWSEndpoint: "ws://127.0.0.1:9224/devtools/browser" Connect Playwright: endpointURL: "ws://127.0.0.1:9224"

CDP domain coverage: see references/cdp-coverage.md. Includes non-standard LP.getMarkdown for DOM-to-Markdown.

Gotchas

  • Port 9224 is convention, not default. The binary defaults to 9222 (Chrome's port). Always pass --port 9224.
  • --stealth is off by default. Pass it explicitly for anti-fingerprinting and tracker blocking.
  • --proxy is a global flag. Place it before fetch/serve/scrape, not after.
  • --quiet suppresses the banner. Use it when piping output.
  • WebSocket path differs from Lightpanda. Obscura: /devtools/browser. Lightpanda: bare endpoint.
  • Ad-hoc signed binary, no notarization. SHA-256 recorded at ~/tools/obscura/obscura.sha256. Verify on update.

Read the full file on GitHub · 65 lines

Files

What ships with it

7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 65 lines · 100 tokens per session scan A 72f6f63a4d1f

Subscribe to this mod's changes

obscura is a skill published in the GitHub repository tdimino/claude-code-minoan (41 stars, last pushed yesterday), licensed MIT. It adds 100 tokens to every session and 761 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

defuddle

Plan and, with explicit network consent, use an optional external Defuddle cleaner to extract article-like HTTPS pages as Markdown. Use for defuddle, clean this URL, strip page clutter, readable Markdown from a web page, or preparing a web source for later wiki ingestion.

AgriciDaniel/claude-obsidian · 57 tokens

webcrawler-deep-crawl

Deep-crawl any website from start URLs, return per-page LLM-ready text/markdown/HTML plus metadata (title, description, author, language, canonical URL, OG) and in-scope outbound links. Use when user mentions deep crawl website, recursive crawl, crawl a whole site, scrape entire website, scrape docs site, scrape…

browser-act/skills · 215 tokens

ebay-search-listing

Extracts product listings from any eBay search or category page URL, returning per-item cards (itemNumber, url, title, subtitle, caption, price, priceWithCurrency, currency, wasPrice, bids, shipping, seller, sellerFeedbackCount, sellerPositiveRating, reviewsCount, starRating, image) plus pagination state (currentPage…

browser-act/skills · 221 tokens

facebook-page-profile-posts

Scrapes posts from any public Facebook Page or personal Profile timeline, returning structured data including post text, author info with profile picture, engagement metrics (likes/comments/shares), full reaction breakdown (Like/Love/Wow/Haha/Sad/Angry/Care as both array and flat counts), hashtags and external links…

browser-act/skills · 181 tokens

amazon-search-listing

Amazon search and category listing scraper: extract product listings from any Amazon search results page, keyword search URL, or category browse page and return per-item cards (asin, title, url, image, price, listPrice, stars, reviewCount, badges, isAmazonChoice, isBestSeller, isSponsored, delivery, boughtInPast…

browser-act/skills · 341 tokens

etsy-category-listing

Etsy category page scraper: given an Etsy category URL (e.g. https://www.etsy.com/c/jewelry) and optional page number, returns paginated product listings with listingId, shopId, title, url, image, salePrice, originalPrice, currency, rating, reviewCount, shopName, isAd, freeShipping, badge from category and subcategory…

browser-act/skills · 209 tokens