5721cd3a49
- Streaming loop swallowed errors: a mid-stream error event (e.g. overloaded_error) was thrown inside the same try/catch used to skip unparseable SSE lines, so it was silently ignored and the run reported "Done." with truncated output. Separate JSON parsing from event handling so real errors surface to the user. - Raise max_tokens 4096 -> 8192 to avoid truncating long skill outputs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Skill Playground
A zero-backend web app to run any skill in this repo with your own Claude API key.
Pick a skill → it becomes a form → fill it in → Claude executes the skill's instructions
and streams the result. Your key is stored only in your browser (localStorage) and sent
directly to api.anthropic.com. Nothing touches a server we own.
Run locally
node web/build-skills.mjs # regenerate skills.json from skills/
cd web && python3 -m http.server 8000
# open http://localhost:8000
It must be served over HTTP (not opened as a
file://URL) sofetch('skills.json')works.
Paste a key from console.anthropic.com and run.
How it works
build-skills.mjsscans../skills/*/SKILL.md, parses the frontmatter and the Required Inputs section, and writesskills.json(the UI's data source).app.jssends the skill's instruction body as thesystemprompt and the filled-in fields as the user message, using the Anthropic Messages API withanthropic-dangerous-direct-browser-access: truefor direct browser calls.
Keep it in sync
Re-run node web/build-skills.mjs whenever skills are added or edited, and commit the
updated skills.json. (Or wire it into CI / a pre-commit hook.)
Deploy
It's fully static — host the web/ folder on GitHub Pages, Netlify, Vercel, or any
static host. No environment variables, no server.