About steel-developer
Steel Developer is a skill for writing implementation guidance and code that runs later with Steel. It routes developers to relevant references for SDKs, browser automation, APIs, and session setup, while emphasizing current patterns and cleanup.
Key features
- 01Routes tasks to focused reference guides
- 02Covers TypeScript, JavaScript, and Python
- 03Guidance for Playwright, Puppeteer, and Stagehand
- 04Includes CLI setup and verification
- 05Requires session cleanup and secure credential handling
Use cases
- 01Implement a Steel browser session in an application
- 02Choose a browser automation or agent framework
- 03Configure local CLI access and verify setup
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ steel-dev/ skills --skill steel-developerAfter installing, type/steel-developerin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
README.mdevals/evals.jsonreferences/anti-patterns.mdapis.mdcli-setup.mdcomputer-use.mdecosystem.mdlive-embed.mdpython.mdreliability-handoff.mdtypescript.mdDetails
From the project READMESteel Developer
Skill Boundary
- Use this skill when the user wants code or implementation guidance they will run later.
- Do not use this skill when the user wants the agent to browse, extract, screenshot, create a PDF, or fill a form now; use
steel-browser. - Use
steel-session-debuggingwhen the main task is diagnosing a failed session. - Use
steel-reliabilitywhen the main task is bot detection, proxy, CAPTCHA, identity, pacing, or login reliability mitigation.
Route By Need
Load the relevant reference before writing code:
- CLI setup and local verification:
references/cli-setup.md - TypeScript, JavaScript, Node.js, Playwright, Puppeteer, Stagehand:
references/typescript.md - Python, Playwright Python, Browser Use:
references/python.md - First-party APIs, exact docs/API/SDK lookup, browser tools, files, extensions, auth context, embeds, traces, mobile mode, multi-region:
references/apis.md - Framework choice, Stagehand, Browser Use, typed agent frameworks, coding-agent integrations:
references/ecosystem.md - Stale SDK/API patterns to avoid:
references/anti-patterns.md - Computer-use loops:
references/computer-use.md - Live and past session embeds:
references/live-embed.md - Reliability boundary and handoff:
references/reliability-handoff.md
Non-Negotiables
- Auth env var is
STEEL_API_KEY. - Node examples import
Steelfromsteel-sdk; SDK source issteel-dev/steel-node. - Node SDK constructor uses
steelAPIKey. - Python SDK constructor uses
steel_api_key. - Always release sessions in cleanup.
- Construct the CDP URL explicitly as
wss://connect.steel.dev?apiKey=...&sessionId=.... - Reuse the default browser context after connecting; do not create a new context unless the user explicitly needs isolation.
- Keep target-site credentials out of prompts, code comments, page scripts, and logs.
- For exact API fields or SDK method signatures, inspect the API reference, SDK docs, local installed types, or Steel docs via
curl -sSfL. - Never use stale patterns listed in
references/anti-patterns.md.
Minimal Session Shape
TypeScript:
const steelAPIKey = process.env.STEEL_API_KEY;
if (!steelAPIKey) throw new Error("STEEL_API_KEY is required");
const client = new Steel({ steelAPIKey });
const session = await client.sessions.create();
const cdpUrl = `wss://connect.steel.dev?apiKey=${steelAPIKey}&sessionId=${session.id}`;
const browser = await chromium.connectOverCDP(cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] ?? (await context.newPage());
try {
await page.goto("https://example.com");
} finally {
await browser.close();
await client.sessions.release(session.id);
}
Python:
steel_api_key = os.environ["STEEL_API_KEY"]
client = Steel(steel_api_key=steel_api_key)
session = client.sessions.create()
cdp_url = f"wss://connect.steel.dev?apiKey={steel_api_key}&sessionId={session.id}"
browser = await playwright.chromium.connect_over_cdp(cdp_url)
context = browser.contexts[0]
page = context.pages[0] if context.pages else await context.new_page()
try:
await page.goto("https://example.com")
finally:
await browser.close()
await playwright.stop()
client.sessions.release(session.id)
Setup Verification
steel --version
steel login
steel doctor --preflight
steel skills doctor
Source-Of-Truth Links
- API reference: https://steel.apidocumentation.com/api-reference
- Node SDK/types: https://github.com/steel-dev/steel-node
- Python SDK/types: https://github.com/steel-dev/steel-python
- Docs index:
curl -sSfL https://docs.steel.dev/llms.txt - Full docs bundle:
curl -sSfL https://docs.steel.dev/llms-full.txt - Single docs page:
curl -sSfL https://docs.steel.dev/llms.mdx/<page-path>
Comments
Markdown supported