Agent Readiness Audit
indranilbanerjee/digital-marketing-pro
Audit whether AI agents and AI crawlers can actually use a site — robots.txt rules per AI crawler token (OpenAI, Anthropic and Perplexity bots, Google-Extended, Applebot-Extended)…
Build production-ready Bright Data integrations with best practices baked in.
$ npx skills add brightdata/skills --skill bright-data-best-practices -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brightdata/skills bright-data-best-practices --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/bright-data-best-practices .claude/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .claude/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practicesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add brightdata/skills --skill bright-data-best-practices -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brightdata/skills bright-data-best-practices --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/bright-data-best-practices .agents/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .agents/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brightdata/skills --skill bright-data-best-practices -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brightdata/skills bright-data-best-practices --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/bright-data-best-practices .cursor/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .cursor/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/brightdata/skills.git --path skills/bright-data-best-practices--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add brightdata/skills --skill bright-data-best-practices -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brightdata/skills bright-data-best-practices --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/bright-data-best-practices .gemini/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .gemini/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install brightdata/skills bright-data-best-practicesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add brightdata/skills --skill bright-data-best-practices -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/bright-data-best-practices .github/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .github/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brightdata/skills --skill bright-data-best-practices -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brightdata/skills bright-data-best-practices --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/bright-data-best-practices .opencode/skills/bright-data-best-practices && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bright-data-best-practices" agent skill from https://github.com/brightdata/skills/tree/main/skills/bright-data-best-practices into .opencode/skills/bright-data-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bright-data-best-practices", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bright-data-best-practicesBuild production-ready Bright Data integrations with best practices baked in.
Bright Data Best Practices is an agent skill from brightdata/skills. Build production-ready Bright Data integrations with best practices baked in. Reference documentation for developers using coding assistants (Claude Code, Cursor, etc.) to implement web scraping, search, browser automation, and structured data extraction. Covers Web Unlocker API, SERP API, Web Scraper API, and Browser API (Scraping Browser).
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/browser-api.md`, `references/cli-setup.md` and `references/serp-api.md`).
It sits in Data & Analytics, covering Web scraping, Web search and Schema markup. It works with Bright Data and SerpApi. The licence is MIT.
Read from SKILL.md and the folder at commit 81f51af. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python, json, javascript and bash).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.brightdata.comamazon.comgoogle.combrd.superproxy.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYBRIGHTDATA_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bright Data Best Practices loads about 3.6k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 93 tokens; SKILL.md has 927 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from brightdata/skills at commit 81f51af, republished under its MIT licence (© brightdata). 927 words, ~3,612 tokens.
.claude/skills/bright-data-best-practices/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Install, authentication, and troubleshooting for the Bright Data CLI (bdata) are documented in a single canonical place:
Consult it before any task that shells out to bdata.
Bright Data provides infrastructure for web data extraction at scale. Four primary APIs cover different use cases — always pick the most specific tool for the job.
| Use Case | API | Why |
|---|---|---|
| Scrape any webpage by URL (no interaction) | Web Unlocker | HTTP-based, auto-bypasses bot detection, cheapest |
| Google / Bing / Yandex search results | SERP API | Specialized for SERP extraction, returns structured data |
| Structured data from Amazon, LinkedIn, Instagram, TikTok, etc. | Web Scraper API | Pre-built scrapers, no parsing needed |
| Click, scroll, fill forms, run JS, intercept XHR | Browser API | Full browser automation |
| Puppeteer / Playwright / Selenium automation | Browser API | Connects via CDP/WebDriver |
| Route your own HTTP client through a raw proxy (DC/ISP/Residential/Mobile) | Proxy networks | When you need direct proxy access with your own request logic instead of a managed API — see the proxy.md skill |
All APIs share the same authentication model. The env vars below apply to direct REST API integrations — if you are using the bdata CLI, bdata login handles all of these automatically (see references/cli-setup.md).
export BRIGHTDATA_API_KEY="your-api-key" # From Control Panel > Account Settings
export BRIGHTDATA_UNLOCKER_ZONE="zone-name" # Web Unlocker zone name
export BRIGHTDATA_SERP_ZONE="serp-zone-name" # SERP API zone name
export BROWSER_AUTH="brd-customer-ID-zone-NAME:PASSWORD" # Browser API credentialsREST API authentication header for Web Unlocker and SERP API:
Authorization: Bearer YOUR_API_KEYHTTP-based scraping proxy. Best for simple page fetches without browser interaction.
Endpoint: POST https://api.brightdata.com/request
import requests
response = requests.post(
"https://api.brightdata.com/request",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"zone": "YOUR_ZONE_NAME",
"url": "https://example.com/product/123",
"format": "raw"
}
)
html = response.text| Parameter | Type | Description |
|---|---|---|
zone | string | Zone name (required) |
url | string | Target URL with http:// or https:// (required) |
format | string | "raw" (HTML) or "json" (structured wrapper) (required) |
method | string | HTTP verb, default "GET" |
country | string | 2-letter ISO for geo-targeting (e.g., "us", "de") |
data_format | string | Transform: "markdown" or "screenshot" |
async | boolean | true for async mode |
# Get markdown (best for LLM input)
response = requests.post(
"https://api.brightdata.com/request",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"zone": ZONE, "url": url, "format": "raw", "data_format": "markdown"}
)
# Geo-targeted request
json={"zone": ZONE, "url": url, "format": "raw", "country": "de"}
# Screenshot for debugging
json={"zone": ZONE, "url": url, "format": "raw", "data_format": "screenshot"}
# Async for bulk processing
json={"zone": ZONE, "url": url, "format": "raw", "async": True}Critical rule: Never use Web Unlocker with Puppeteer, Playwright, Selenium, or anti-detect browsers. Use Browser API instead.
See references/web-unlocker.md for complete reference including proxy interface, special headers, async flow, features, and billing.
Structured search engine result extraction for Google, Bing, Yandex, DuckDuckGo.
Endpoint: POST https://api.brightdata.com/request (same as Web Unlocker)
response = requests.post(
"https://api.brightdata.com/request",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"zone": "YOUR_SERP_ZONE",
"url": "https://www.google.com/search?q=python+web+scraping&brd_json=1&gl=us&hl=en",
"format": "raw"
}
)
data = response.json()
for result in data.get("organic", []):
print(result["rank"], result["title"], result["link"])| Parameter | Description | Example |
|---|---|---|
q | Search query | q=python+web+scraping |
brd_json | Parsed JSON output | brd_json=1 (always use for data pipelines) |
gl | Country for search | gl=us |
hl | Language | hl=en |
start | Pagination offset | start=10 (page 2), start=20 (page 3) |
tbm | Search type | tbm=nws (news), tbm=isch (images), tbm=vid (videos) |
brd_mobile | Device | brd_mobile=1 (mobile), brd_mobile=ios |
brd_browser | Browser | brd_browser=chrome |
brd_ai_overview | Trigger AI Overview | brd_ai_overview=2 |
uule | Encoded geo location | for precise location targeting |
Note: num parameter is deprecated as of September 2025. Use start for pagination.
{
"organic": [{"rank": 1, "global_rank": 1, "title": "...", "link": "...", "description": "..."}],
"paid": [],
"people_also_ask": [],
"knowledge_graph": {},
"related_searches": [],
"general": {"results_cnt": 1240000000, "query": "..."}
}| Parameter | Description |
|---|---|
q | Search query |
setLang | Language (prefer 4-letter: en-US) |
cc | Country code |
first | Pagination (increment by 10: 1, 11, 21...) |
safesearch | off, moderate, strict |
brd_mobile | Device type |
# Submit
response = requests.post(
"https://api.brightdata.com/request",
params={"async": "1"},
headers={"Authorization": f"Bearer {API_KEY}"},
json={"zone": SERP_ZONE, "url": "https://www.google.com/search?q=test&brd_json=1", "format": "raw"}
)
response_id = response.headers.get("x-response-id")
# Retrieve (retrieve calls are NOT billed)
result = requests.get(
"https://api.brightdata.com/serp/get_result",
params={"response_id": response_id},
headers={"Authorization": f"Bearer {API_KEY}"}
)Billing: Pay per 1,000 successful requests only. Async retrieve calls are not billed.
See references/serp-api.md for complete reference including Maps, Trends, Reviews, Lens, Hotels, Flights parameters.
Pre-built scrapers for structured data extraction from 100+ platforms. No parsing logic needed.
Sync Endpoint: POST https://api.brightdata.com/datasets/v3/scrape
Async Endpoint: POST https://api.brightdata.com/datasets/v3/trigger
# Sync (up to 20 URLs, returns immediately)
response = requests.post(
"https://api.brightdata.com/datasets/v3/scrape",
params={"dataset_id": "YOUR_DATASET_ID", "format": "json"},
headers={"Authorization": f"Bearer {API_KEY}"},
json={"input": [{"url": "https://www.amazon.com/dp/B09X7M8TBQ"}]}
)
if response.status_code == 200:
data = response.json() # Results ready
elif response.status_code == 202:
snapshot_id = response.json()["snapshot_id"] # Poll for completion| Parameter | Type | Description |
|---|---|---|
dataset_id | string | Scraper identifier from the Scraper Library (required) |
format | string | json (default), ndjson, jsonl, csv |
custom_output_fields | string | Pipe-separated fields: url|title|price |
include_errors | boolean | Include error info in results |
{
"input": [
{ "url": "https://www.amazon.com/dp/B09X7M8TBQ" },
{ "url": "https://www.amazon.com/dp/B0B7CTCPKN" }
]
}import time
# Trigger
snapshot_id = requests.post(
"https://api.brightdata.com/datasets/v3/trigger",
params={"dataset_id": DATASET_ID, "format": "json"},
headers={"Authorization": f"Bearer {API_KEY}"},
json={"input": [{"url": u} for u in urls]}
).json()["snapshot_id"]
# Poll
while True:
status = requests.get(
f"https://api.brightdata.com/datasets/v3/progress/{snapshot_id}",
headers={"Authorization": f"Bearer {API_KEY}"}
).json()["status"]
if status == "ready": break
if status == "failed": raise Exception("Job failed")
time.sleep(10)
# Download
data = requests.get(
f"https://api.brightdata.com/datasets/v3/snapshot/{snapshot_id}",
params={"format": "json"},
headers={"Authorization": f"Bearer {API_KEY}"}
).json()Progress status values: starting → running → ready | failed
Data retention: 30 days.
Billing: Per delivered record. Invalid input URLs that fail are still billable.
See references/web-scraper-api.md for complete reference including scraper types, output formats, delivery options, and billing details.
Full browser automation via CDP/WebDriver. Handles CAPTCHA, fingerprinting, and anti-bot detection automatically.
Connection:
wss://${AUTH}@brd.superproxy.io:9222https://${AUTH}@brd.superproxy.io:9515const { chromium } = require("playwright-core");
const AUTH = process.env.BROWSER_AUTH;
const browser = await chromium.connectOverCDP(`wss://${AUTH}@brd.superproxy.io:9222`);
const page = await browser.newPage();
page.setDefaultNavigationTimeout(120000); // Always set to 2 minutes
await page.goto("https://example.com", { waitUntil: "domcontentloaded" });
const html = await page.content();
await browser.close();from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(f"wss://{AUTH}@brd.superproxy.io:9222")
page = await browser.new_page()
page.set_default_navigation_timeout(120000)
await page.goto("https://example.com", wait_until="domcontentloaded")
html = await page.content()
await browser.close()| Function | Purpose |
|---|---|
Captcha.solve | Manually trigger CAPTCHA solving |
Captcha.setAutoSolve | Enable/disable auto CAPTCHA solving |
Proxy.setLocation | Set precise geo location (call BEFORE goto) |
Proxy.useSession | Maintain same IP across sessions |
Emulation.setDevice | Apply device profile (iPhone 14, etc.) |
Emulation.getSupportedDevices | List available device profiles |
Unblocker.enableAdBlock | Block ads to save bandwidth |
Unblocker.disableAdBlock | Re-enable ads |
Input.type | Fast text input for bulk form filling |
Browser.addCertificate | Install client SSL cert for session |
Page.inspect | Get DevTools debug URL for live session |
// CDP session pattern for custom functions
const client = await page.target().createCDPSession();
// CAPTCHA solve with timeout
const result = await client.send("Captcha.solve", { timeout: 30000 });
// Precise geo location (must be before goto)
await client.send("Proxy.setLocation", {
latitude: 37.7749,
longitude: -122.4194,
distance: 10,
strict: true
});
// Block unnecessary resources
await client.send("Network.setBlockedURLs", { urls: ["*google-analytics*", "*.ads.*"] });
// Device emulation
await client.send("Emulation.setDevice", { deviceName: "iPhone 14" });-country-us to credentials username-country-eu (routes through 29+ European countries)Proxy.setLocation CDP command (before navigation)| Code | Issue | Fix |
|---|---|---|
407 | Wrong port | Playwright/Puppeteer → 9222, Selenium → 9515 |
403 | Bad auth | Check credentials format and zone type |
503 | Service scaling | Wait 1 minute, reconnect |
Billing: Traffic-based only. Block images/CSS/fonts to reduce costs.
See references/browser-api.md for complete reference including all CDP functions, bandwidth optimization, CAPTCHA patterns, and debugging.
brightdata-proxy — For routing requests through Bright Data's raw proxy networks (Datacenter, ISP, Residential, Mobile) with your own HTTP client instead of a managed API. Covers network/IP-pool selection, the brd-customer-... username format, targeting & sticky-session params, SSL CA setup for Residential/Mobile, and integrations for cURL, Python (requests/httpx/aiohttp/Scrapy), Node (fetch/axios), Playwright, Puppeteer, and Selenium. Hand off to it whenever the task is raw proxy access rather than Web Unlocker / SERP / Web Scraper / Browser API. Escalation order when proxies hit consistent blocks: raw proxy → Web Unlocker → Browser API → Web Scraper API.© brightdata, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/bright-data-best-practices of brightdata/skills.
Open the folder on GitHubat commit 81f51af
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in brightdata/skills, which our catalogue first saw on October 7, 2026.
Bright Data Best Practices next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bright Data Best Practices this skillbrightdata/skills | 264 | 1 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Agent Readiness Auditindranilbanerjee/digital-marketing-pro | 854 | 1 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Serpapinicepkg/ai-workflow | 285 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Serpersundial-org/awesome-openclaw-skills | 663 | — | ~1.6k | Automated safety check: Notes | None | |
| Scrapingbee CLIScrapingBee/scrapingbee-cli | 108 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Web Search Scraper API Skillbrowser-act/skills | 6.1k | 1 repos | ~1.3k | Automated safety check: Pass | MIT |
indranilbanerjee/digital-marketing-pro
Audit whether AI agents and AI crawlers can actually use a site — robots.txt rules per AI crawler token (OpenAI, Anthropic and Perplexity bots, Google-Extended, Applebot-Extended)…
nicepkg/ai-workflow
SerpApi search engine results API via curl. An agent skill from nicepkg/ai-workflow.
sundial-org/awesome-openclaw-skills
Google search via Serper API with full page content extraction.
ScrapingBee/scrapingbee-cli
Fetch and read any web page, search the web, crawl a site, or pull structured data out of pages.
browser-act/skills
This skill helps users automatically extract complete Markdown content from any website via the BrowserAct Web Search Scraper API.
mydisha/keirouter
Fetch URL → markdown / text / HTML via KeiRouter /v1/web/fetch using Firecrawl / Jina Reader / Tavily Extract / Exa Contents.
brightdata/skills
Replicate the visual style of any website and apply it to your existing codebase.
brightdata/skills
Generate working code that routes HTTP requests through Bright Data proxy networks (Datacenter, ISP, Residential, Mobile) and help users decide which network and IP pool type to use (shared pool…
brightdata/skills
Bright Data MCP handles ALL web data operations. An agent skill from brightdata/skills.
brightdata/skills
Produce a deep, multi-source, cited research brief on a topic from live web data using Bright Data's Discover API (intent-ranked web search + parsed page content).
brightdata/skills
Web data extraction and discovery using the Bright Data JavaScript/TypeScript SDK (@brightdata/sdk).
brightdata/skills
Extract structured data from 40+ supported platforms (Amazon, LinkedIn, Instagram, TikTok, Facebook, YouTube, Reddit, and more) via the Bright Data CLI (bdata pipelines).
Works with
Build production-ready Bright Data integrations with best practices baked in. Bright Data Best Practices is an agent skill from brightdata/skills. Build production-ready Bright Data integrations with best practices baked in.
Bright Data Best Practices fits situations like: tasks that involve Web scraping; tasks that involve Web search; tasks that involve Schema markup.
Run `npx skills add brightdata/skills --skill bright-data-best-practices -a claude-code`. Or copy the skill folder (skills/bright-data-best-practices in brightdata/skills) into .claude/skills/bright-data-best-practices in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brightdata/skills --skill bright-data-best-practices -a codex`. Or copy the skill folder (skills/bright-data-best-practices in brightdata/skills) into .agents/skills/bright-data-best-practices in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brightdata/skills --skill bright-data-best-practices -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bright-data-best-practices, .gemini/skills/bright-data-best-practices, .github/skills/bright-data-best-practices and .opencode/skills/bright-data-best-practices in your project.
Going by SKILL.md and its folder, Bright Data Best Practices needs credentials named API_KEY and BRIGHTDATA_API_KEY. Our summary lists: Python 3; A credential in BRIGHTDATA_API_KEY; A credential in YOUR_API_KEY.
SKILL.md names 4 domains. In commands or code: api.brightdata.com, amazon.com, google.com and brd.superproxy.io; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Bright Data Best Practices is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Bright Data Best Practices: Agent Readiness Audit (indranilbanerjee/digital-marketing-pro, 854 stars), Serpapi (nicepkg/ai-workflow, 285 stars), Serper (sundial-org/awesome-openclaw-skills, 663 stars) and Scrapingbee CLI (ScrapingBee/scrapingbee-cli, 108 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brightdata (a GitHub organization) maintains it in brightdata/skills, which has 264 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 6, 2026.
Source: brightdata/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.