Skills Curator Claudeai
ASecurityUse when the user mentions a skill or plugin by name, asks "should I install X?", asks "what skills fit this project?", asks to audit installed skills, asks whether a skill is safe to use, or wants to customize an external skill for their stack. Evaluates skills against the user's actual project (pros / cons / conflicts / ADOPT-PARTIAL-SKIP verdict), recommends what fits, scans for security red flags before adoption, persists every decision to a registry the user keeps in Project Knowledge, a...
- 4 stars
- 0 votes
- 0 copies
- 6 views
- Added September 12, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add aibot88/sec_skill_store --skill skills-curator-claudeai --agent claude-codeAre you the author of Skills Curator Claudeai?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-skills-curator-claudeai)---
name: skills-curator
description: >
Use when the user mentions a skill or plugin by name, asks "should I install
X?", asks "what skills fit this project?", asks to audit installed skills,
asks whether a skill is safe to use, or wants to customize an external skill
for their stack. Evaluates skills against the user's actual project
(pros / cons / conflicts / ADOPT-PARTIAL-SKIP verdict), recommends what fits,
scans for security red flags before adoption, persists every decision to a
registry the user keeps in Project Knowledge, and forks stack-mismatched
skills into project-tailored versions. Decide once, never re-decide.
license: MIT
metadata:
version: "1.0.0"
edition: claude.ai
plugin_version: "4.5.0"
author: captkernel
homepage: https://github.com/captkernel/Skills_Curator
derived_from: skills-curator-lite
---
# Skills Curator (claude.ai edition)
**Decide once. Re-decide never.**
The intelligence layer for Claude skills, adapted for claude.ai (web + desktop). Same judgment model as the [Claude Code version](https://github.com/captkernel/Skills_Curator) β evaluate before installing, persist decisions, recommend by project fit, customize stack-mismatched skills β re-architected for claude.ai's sandbox-per-conversation runtime.
| | Claude Code | **claude.ai (this edition)** |
|---|---|---|
| Persistence | `~/.claude/skills/registry.json` | Project Knowledge file (or upload, or Gist) |
| Project signals | Files in cwd | Attached files / Project Knowledge / pasted snippets |
| Invocation | Slash commands + natural language | Natural language only |
| Cross-agent migration | 55 platforms | Removed (claude.ai isn't a CLI agent) |
| Customize output | Written to `~/.claude/skills/<fork>/` | Written to `/mnt/user-data/outputs/<fork>.zip` |
---
## First activation in a session
The first time the skill activates in a conversation, open with this two-line orientation **before** answering, then continue with whatever was asked:
> π§ *Skills Curator loaded β your intelligence layer for Claude skills (claude.ai edition).*
> *I evaluate skills against your actual stack, recommend what fits, and persist decisions so you don't re-evaluate. Working on your request now.*
Skip the orientation if you're about to surface concrete picks from a registry the user has already pinned β those are more useful than a generic intro. Don't repeat in later turns of the same conversation.
---
## How persistence works on claude.ai
The sandbox is fresh every conversation. There's no `~/.claude/skills/registry.json` that survives across sessions. **Three modes**, picked in this order based on what the user has set up:
1. **Project Knowledge** (recommended) β `skills_registry.json` in Project Knowledge is auto-read at session start. After updates, the skill writes `/mnt/user-data/outputs/skills_registry.json` so the user can download and swap.
2. **Upload / download** β user attaches the registry to the conversation, skill emits the updated file at session end via `/mnt/user-data/outputs/`.
3. **Gist sync** (power users) β user provides a private Gist ID + PAT, skill fetches via `curl`, patches via `PATCH /gists/{id}`.
Deep dive: `references/persistence.md`. Schema is `v3.0` (matches Claude Code version, so the same registry can be used on both):
```json
{
"version": "3.0",
"last_updated": "YYYY-MM-DD",
"skills": [{"id": "...", "name": "...", "evaluations": [...], "tags": [...], ...}]
}
```
### Writing the registry
When a decision is made, **write the updated JSON to `/mnt/user-data/outputs/skills_registry.json` via the code-execution tool**, then tell the user:
> *"Updated registry written to **skills_registry.json** (download link above). Replace the file in Project Knowledge to persist this decision."*
Never paste the full registry back into chat β large registries blow context. Use the file flow.
---
## Project context on claude.ai
claude.ai has no working directory. The "project" is whatever the user has made visible:
1. **Files attached to the current message** (manifests, CLAUDE.md, source files)
2. **Files in Project Knowledge** (persistent for the Project)
3. **Pasted snippets** in chat (treat as virtual files using the declared filename)
If none are present and you need them for ranking, ask **once** per session:
> *"To recommend skills that actually fit, I need to see your project's manifest. Paste your `package.json` / `pyproject.toml` / `requirements.txt` / `CLAUDE.md`, or attach them. Or say 'no project context' for general-purpose recommendations."*
Don't ask repeatedly. If the user declines, fall back to trust-tier-only ranking from the embedded catalog.
### Project label
Ask once per session: *"What should I call this project in the registry? (Used to tag evaluations β could be a repo name, app name, or 'default'.)"* Reuse the label across all evaluations in the session. If the user attached a `package.json` with a `name` field, use that as the suggested default.
---
## The five verbs
Removed from this edition: **PLATFORMS** and **MIGRATE** (claude.ai isn't installing to CLI agents). All five are invoked by natural language.
### 1. RECOMMEND β "what skills fit this project?"
1. Gather project signals (attached / Project Knowledge / pasted). Extract tags via `references/signals.md`.
2. Read the registry (Project Knowledge β upload β Gist). Skip skills already evaluated.
3. Load catalog from `references/catalog.yaml` (the curated seed). Optionally augment via the **live-refresh** flow below if the user asked for "latest".
4. Match: for each catalog entry, count tag overlap with project tags.
5. Score = `len(overlap) * 10 + trust_bonus` (`official: 20, high: 15, medium: 5, community: 2, unknown: 0`).
6. Sort descending, top 5, grouped by capability vs preference.
7. Render with pros, cons, and a CUSTOMIZE hint when there's a stack mismatch (see `references/signals.md` Β§ Tag rivals).
Render template:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Recommendations for: <project>
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β‘ CAPABILITY β new abilities
01. <trust-icon> <Name>
Why : [<top-3 overlapping tags>]
What : <one-line description>
Trust : <official | high | medium | community | unknown>
β Pro : <pro 1>
β Pro : <pro 2>
β Con : <con 1>
β Con : <con 2>
π‘ Tip : <customize hint, only when stack mismatch>
Install : <command for the user's target runtime>
π¨ PREFERENCE β better defaults
...
```
Trust icons: `ποΈ` official Β· `β
` high Β· `π‘` medium Β· `β¬` community Β· `β` unknown.
### 2. EVALUATE β "should I install this skill?"
1. **Registry first.** If the skill id has a prior verdict, surface it: *"You already evaluated this on <date> for <project> with verdict <V>. Re-evaluate, or reuse?"*
2. **Security scan** (see `references/security-patterns.md`). If the source is a GitHub repo, fetch via:
```bash
curl -sL "https://raw.githubusercontent.com/<owner>/<repo>/main/SKILL.md" -o /tmp/source.md
```
Run the patterns over the fetched (or attached) content. Any HIGH / CRITICAL match β halt and report before producing a verdict.
3. **Read project context.** Ground the evaluation in what the project actually does, not hypothetical futures.
4. **Produce the evaluation in this exact format** (it's also what users paste into PRs and ADRs):
```
## Skill Evaluation: <Name>
Project: <project>
Type: Capability Uplift | Encoded Preference
### β
Pros
- <specific, tied to project goals>
### β οΈ Cons
- <specific cost or limitation>
### π΄ Conflicts
- <existing skill or pattern that overlaps; "None" if clean>
### π― Verdict: ADOPT | PARTIAL | SKIP
<one or two sentences with the core reason>
### π¦ Adoption Plan
- Adopt: <which features>
- Skip: <which features>
- Pairs with: <skill-id or "nothing">
```
5. **Persist.** Append the entry to the skill's `evaluations` array in the registry, write the updated JSON to `/mnt/user-data/outputs/skills_registry.json`, point the user at the download.
The evaluation block is PR-ready β offer it as an Artifact for easy copy if the user is heading to GitHub.
### 3. SCAN β "is this skill safe?" (quick verb)
Lighter than EVALUATE. Runs only the security patterns from `references/security-patterns.md`, returns a findings table, no verdict. Use when the user says "just check if it's safe" or "scan for red flags" without asking for adoption advice.
```
Skill: <name>
Source: <path or url>
| Severity | Finding | Pattern |
|---|---|---|
| <S> | <line excerpt> | <pattern name> |
Result: β
Clean | β οΈ <n> findings to review | π΄ Stop β <n> CRITICAL
```
If clean, offer to follow up with a full EVALUATE. If flagged, halt and let the user decide.
### 4. AUDIT β "review my installed skills"
Run four checks over the registry in one pass:
1. **Duplicates** β pairs with > 60% tag overlap, flag possible redundancy.
2. **Preference conflicts** β `type: preference` skills with contradictory rules (two style guides, two commit-message conventions).
3. **Security gaps** β `security_scan` missing or empty. Recommend re-scan.
4. **Stale evaluations** β last evaluated > 6 months ago.
Present as a triaged punch list. End with: *"Want me to re-evaluate any of these? Paste the source or attach the SKILL.md."*
### 5. CUSTOMIZE β fork an external skill for this project (the headline capability)
This is what makes Skills Curator different: when a recommended skill ships examples from a stack the user doesn't use, **fork it as a project-tailored version instead of installing as-is**. Lead with this whenever RECOMMEND surfaces a stack-mismatched pick.
1. **Acquire the source SKILL.md.** Either attached, or fetched via curl.
2. **Scan project context** to get the tag set.
3. **Parse SKILL.md into sections** (split on `^## ` headings). For each section, score by tag-overlap and tag an action: `keep` / `keep-trim` / `rewrite-stack` / `drop-or-rewrite` / `rewrite-frontmatter` (always for frontmatter).
4. **Emit the customization plan** as a markdown table β inline, so the user can sanity-check before the rewrite.
5. **Rewrite each section in place** per the action column. `rewrite-stack` sections get their examples translated to this project's framework (e.g., Vue β React).
6. **Package the fork**. Write to `/mnt/user-data/outputs/`:
```bash
mkdir -p /tmp/<fork-name>
# write the new SKILL.md and any references/ files
cd /tmp && zip -r /mnt/user-data/outputs/<fork-name>.zip <fork-name>/
```
Tell the user: *"Your customized skill is at **`<fork-name>.zip`** (download link above) β unzip, then upload via claude.ai β Settings β Capabilities β Skills, or move to `~/.claude/skills/<fork-name>/` if you're on Claude Code."*
Offer to also write the fork as a new entry in the registry (its own id, derived from source) so future RECOMMEND knows about it.
---
## Project signal extraction
Framework keywords, goal keywords, and Tag-rivals (stack-mismatch detector) β `references/signals.md`. Always-on cost stays low because the table only loads when the user asks for recommendations.
## Embedded catalog
20 curated entries with hand-written pros / cons / tags / trust tier β `references/catalog.yaml`. Read on demand during RECOMMEND.
## Security scan patterns
15 severity-tagged regex patterns β `references/security-patterns.md`. Read on demand during EVALUATE / SCAN.
## Persistence deep dive
Three modes (Project Knowledge / upload / Gist), initial registry shape, troubleshooting β `references/persistence.md`.
---
## Symptom β skill mapping
When the user describes a problem instead of naming a skill, match against this table and search the catalog by tag.
| User says (substring) | Look for skills tagged |
|---|---|
| `slow test`, `tests are slow` | testing, performance |
| `failing ci`, `ci is broken` | ci-cd, github-actions |
| `ugly ui`, `design is bad`, `ai-slop` | frontend-design, design-system, ui |
| `manual deploy`, `deploys are manual` | ci-cd, deploy |
| `no docs`, `missing docs` | docs, docgen |
| `messy commits`, `bad commit messages` | commit-writer, conventional-commits |
| `slow build`, `build takes forever` | build-tools, performance |
| `auth broken`, `login issue` | auth, session-management |
| `scraping broken`, `browser auth` | scraping, browser-automation |
| `accessibility`, `a11y` | accessibility, ui |
| `pr review takes`, `slow code review` | pr-review, code-review |
| `forget context`, `no memory` | memory, personalization |
| `mcp server` | mcp, integration |
| `mobile app`, `ios bug`, `android bug` | mobile, react-native |
| `video render`, `animation` | video, animation, remotion |
| `data extraction`, `parse pdf` | documents, data-extraction |
| `hardcoded keys`, `security audit` | security, audit |
---
## Live catalog refresh (optional)
When the user asks for *"latest skills"* or *"refresh the catalog"*, augment the embedded catalog with live entries from GitHub topic search. The sandbox has internet, so:
```bash
for topic in claude-skill claude-code-skill agent-skill; do
curl -sL \
-H "Accept: application/vnd.github+json" \
-H "User-Agent: skills-curator-claudeai" \
"https://api.github.com/search/repositories?q=topic:$topic&sort=stars&per_page=20" \
> /tmp/topic-$topic.json
done
```
Parse each JSON, classify trust by author (`anthropics` / `vercel-labs` / `microsoft` / `google` β official; `ComposioHQ` / `supermemoryai` / `remotion-dev` / `firecrawl` β high; `obra` β medium; else unknown), build catalog entries with empty pros/cons. **Curated entries from `references/catalog.yaml` win on id collision** β never overwrite hand-written pros/cons.
Unauthenticated GitHub API rate-limit: 60 req/hr per IP. If hit, fall back to embedded catalog and warn the user.
Optionally cache the merged catalog to `/mnt/user-data/outputs/catalog.json` so the user can pin it in Project Knowledge.
---
## Common mistakes
| Mistake | What to do instead |
|---|---|
| Pasting the full registry JSON back into chat | Write to `/mnt/user-data/outputs/skills_registry.json` and link the download β registries grow, chat tokens don't |
| Recommending a medium/unknown-trust skill without scanning first | Trust gate is non-negotiable β fetch or ask for the SKILL.md, scan, flag findings |
| Manufacturing a recommendation when no skill fits | Say no good match was found, explain why, offer to do the task directly |
| Re-evaluating a skill the registry already has a verdict for | Surface the prior verdict + date first, ask whether to reuse or re-evaluate |
| Asking for project context on every message | Once per session. If declined, fall back to trust-tier-only ranking |
| Pretending PLATFORMS / MIGRATE exist | Removed from this edition β point users at the Claude Code version if they need cross-agent migration |
| Loading every reference file every turn | References load on demand for the verb that needs them β don't pre-load |
---
## When to recommend the Claude Code version instead
A few capabilities only exist in the Claude Code editions and can't be replicated here:
- **Cross-agent migration** to 55 platforms (Cursor, Codex, Gemini CLI, etc.) β there's no equivalent target on claude.ai
- **`--auto` proactive activation** with project fingerprinting against a real working directory
- **Single-pass speed on 100+ skills** β the Python engine is faster than agent-driven evaluation at that scale
If the user has Claude Code installed and any of those matter, point them at:
```bash
npx skills add captkernel/Skills_Curator
```
The editions don't conflict β they target different runtimes, and the registry JSON schema is shared so a user can sync between them via a Gist.
Files in this skill
- SKILL.md
- source.json
Attribution
Comments
Loading commentsβ¦
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.