e9bc1d0626
Closes the remaining gaps vs alirezarezvani/claude-skills across trust, content types, discoverability, and community. Security (trust signal + useful): - scripts/skill-audit.mjs scans skills/*/SKILL.md + each skill's scripts/ for prompt injection, exfiltration, dynamic code exec, destructive shell, secrets, and hidden text. HIGH fails CI (.github/workflows/skill-audit.yml) + a badge. - New skill-security-auditor skill teaches the same review (production tier). Content types: - output-styles/ — 4 personas (Startup CTO, Growth Marketer, Solo Founder, Product Leader) as Claude Code output styles; --agent claude installs them too. - ORCHESTRATION.md — Skill Chain / Multi-Agent Handoff / Domain Deep-Dive / Solo Sprint patterns. Discoverability: - scripts/build-docs.mjs generates a server-rendered, SEO-indexable web/catalog.html of all skills (built in the Pages deploy; gitignored). Linked from README + playground. Community: - ROADMAP.md (now/next/later + good-first-issues). README badges/sections, TIERS (47 production), CHANGELOG, package.json files, and exports/web index all updated. SkillCheck + security audit + exports verified. Claude-Session: https://claude.ai/code/session_016JWn5jRD5tcEFKrubjQ6Px Co-authored-by: Claude <noreply@anthropic.com>
102 lines
4.3 KiB
HTML
102 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Skill Playground — Product Notes</title>
|
|
<meta name="description" content="Run any of 170+ professional skills in your browser with your own Claude API key — or copy each one as a ready-made ChatGPT or Gemini prompt." />
|
|
<link rel="stylesheet" href="styles.css" />
|
|
<script src="https://cdn.jsdelivr.net/npm/marked@12.0.0/marked.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.9/dist/purify.min.js"></script>
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<div class="brand">
|
|
<img src="assets/product-notes.jpg" alt="Product Notes" class="brand-logo" />
|
|
<div class="brand-text">
|
|
<h1>Skill Playground</h1>
|
|
<p class="tagline">170+ professional skills — run with your Claude key, or copy for ChatGPT & Gemini.</p>
|
|
</div>
|
|
</div>
|
|
<div class="key-area">
|
|
<div class="key-field">
|
|
<input id="apiKey" type="password" placeholder="sk-ant-… (your Claude API key)" autocomplete="off" spellcheck="false" />
|
|
<button id="keyToggle" type="button" class="show-toggle">Show</button>
|
|
</div>
|
|
<select id="model" title="Model">
|
|
<option value="claude-opus-4-8">Opus 4.8</option>
|
|
<option value="claude-sonnet-4-6" selected>Sonnet 4.6</option>
|
|
<option value="claude-haiku-4-5-20251001">Haiku 4.5</option>
|
|
</select>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="key-note">
|
|
🔒 Your key is stored only in this browser and sent directly to api.anthropic.com — never to us.
|
|
Get one at <a href="https://console.anthropic.com/settings/keys" target="_blank" rel="noopener">console.anthropic.com</a>.
|
|
· 📚 <a href="catalog.html">Browse the full skill catalog</a>
|
|
</div>
|
|
|
|
<div class="controls" id="controls">
|
|
<input id="search" type="search" placeholder="Search skills…" />
|
|
<select id="pluginFilter"><option value="">All bundles</option></select>
|
|
<select id="tierFilter" title="Maturity tier">
|
|
<option value="">All tiers</option>
|
|
<option value="production">🟢 Production-Ready</option>
|
|
<option value="stable">🔵 Stable</option>
|
|
<option value="experimental">🟡 Experimental</option>
|
|
</select>
|
|
<span id="count" class="count"></span>
|
|
</div>
|
|
|
|
<main class="main">
|
|
<!-- Tile gallery -->
|
|
<section id="gallery" class="gallery"></section>
|
|
|
|
<!-- Single-skill runner -->
|
|
<section id="runner" class="runner" hidden>
|
|
<button id="backBtn" class="back" type="button">← All skills</button>
|
|
|
|
<div class="skill-head">
|
|
<span class="bundle-tag" id="skillBundle"></span>
|
|
<span class="tier-tag" id="skillTier"></span>
|
|
<h2 id="skillTitle"></h2>
|
|
<p id="skillDesc" class="skill-desc"></p>
|
|
</div>
|
|
|
|
<details class="elsewhere" id="elsewhere">
|
|
<summary>Use this skill in another tool ↗</summary>
|
|
<p class="elsewhere-note">These skills aren't locked to Claude. Copy the ready-made instructions into another assistant — you keep the full framework, you just paste it once.</p>
|
|
<div class="elsewhere-actions">
|
|
<button id="copyChatgpt" class="ghost" type="button">Copy for ChatGPT</button>
|
|
<button id="copyGemini" class="ghost" type="button">Copy for Gemini</button>
|
|
<button id="copyClaude" class="ghost" type="button">Copy raw instructions</button>
|
|
<span id="copyMsg" class="copy-msg"></span>
|
|
</div>
|
|
</details>
|
|
|
|
<form id="inputForm" class="input-form"></form>
|
|
|
|
<div class="actions">
|
|
<button id="runBtn" class="primary" type="button">Run with my Claude key</button>
|
|
<button id="stopBtn" class="ghost" type="button" hidden>Stop</button>
|
|
<span id="status" class="status"></span>
|
|
</div>
|
|
|
|
<div class="output-wrap" id="outputWrap" hidden>
|
|
<div class="output-toolbar">
|
|
<span>Output</span>
|
|
<div>
|
|
<button id="copyBtn" class="ghost" type="button">Copy</button>
|
|
<button id="downloadBtn" class="ghost" type="button">Download .md</button>
|
|
</div>
|
|
</div>
|
|
<article id="output" class="output markdown"></article>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html>
|