Fix skills.json determinism (CI blocker) and upgrade the playground

The check-generated CI step was failing with "web/skills.json is stale"
because build-skills.mjs stamped a wall-clock generatedAt into the file, so
every rebuild differed and git diff --exit-code never matched.

- web/build-skills.mjs: drop the unused generatedAt timestamp -> deterministic
  output the CI staleness check can verify. Also tags each skill with its tier.
- skill-tiers.json: single machine-readable source for tier membership
  (Production-Ready / Experimental); TIERS.md points to it.

Playground upgrades (hosted on GitHub Pages):
- Tier filter (Production-Ready / Stable / Experimental) + per-tile tier badges.
- "Use this skill in another tool" panel: copy the instructions formatted for
  ChatGPT, Gemini, or raw — mirrors the generated exports/ files.
- web/README documents the new options and the deterministic build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JWn5jRD5tcEFKrubjQ6Px
This commit is contained in:
Claude
2026-06-17 08:16:46 +00:00
parent 46f5d939de
commit 69d4fab0b3
9 changed files with 158 additions and 5 deletions
+12 -1
View File
@@ -5,6 +5,15 @@ Pick a skill → it becomes a form → fill it in → Claude executes the skill'
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.
## What you can do
- **Search and filter** the full library by keyword, **bundle**, and **maturity tier**
(🟢 Production-Ready · 🔵 Stable · 🟡 Experimental) — every tile shows its tier.
- **Run a skill** against the Claude API and stream the output (copy or download as `.md`).
- **Use it in another tool** — each skill has a *"Use this skill in another tool"* panel
that copies the instructions formatted for **ChatGPT**, **Gemini**, or as raw text, so
you can paste it into any assistant. (Same output as the generated `exports/` files.)
## Run locally
```bash
@@ -20,7 +29,9 @@ Paste a key from [console.anthropic.com](https://console.anthropic.com/settings/
## How it works
- `build-skills.mjs` scans `../skills/*/SKILL.md`, parses the frontmatter and the
**Required Inputs** section, and writes `skills.json` (the UI's data source).
**Required Inputs** section, tags each skill with its tier (from `../skill-tiers.json`),
and writes a **deterministic** `skills.json` (the UI's data source — no timestamp, so CI
can verify it stays in sync).
- `app.js` sends the skill's instruction body as the `system` prompt and the filled-in
fields as the user message, using the Anthropic Messages API with
`anthropic-dangerous-direct-browser-access: true` for direct browser calls.