From brana
Find and install skills for project tech gaps. Use when entering a project with unfamiliar tech or when no local skill matches a task context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/brana:acquire-skillsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scan project context, identify missing skills, search external marketplaces, install what you approve.
Scan project context, identify missing skills, search external marketplaces, install what you approve.
/brana:acquire-skills — scan current project
/brana:acquire-skills <task-id> — scan a specific task's needs
/brana:acquire-skills <keyword> — direct search ("cloudflare")
Detect the input mode from the argument:
.claude/tasks.json, extract tags + descriptionFor project scan, read these files (skip missing ones silently):
| File | Extract |
|---|---|
package.json | dependencies + devDependencies keys |
requirements.txt / pyproject.toml | package names |
Dockerfile / docker-compose.yml | FROM images, service names |
.tool-versions / .nvmrc | runtime names |
CLAUDE.md / .claude/CLAUDE.md | stack keywords from description |
.claude/tasks.json | tags from all pending + in_progress tasks |
Collect into a flat list of tech keywords (deduplicated, lowercased).
Example output:
Tech detected: next.js, prisma, postgres, tailwind, cloudflare-workers,
docker, redis, stripe
Scan all SKILL.md files in ~/.claude/skills/:
for d in ~/.claude/skills/*/; do
name=$(basename "$d")
desc=$(head -10 "$d/SKILL.md" 2>/dev/null | grep -m1 "^description:" | sed 's/^description: *"//' | sed 's/"$//')
echo "$name: $desc"
done
For each tech keyword, check if any local skill name or description contains it.
Present the diff:
Already covered:
docker → (general knowledge, no dedicated skill)
postgres → gsheets (partial, queries only)
Gaps (no matching skill):
cloudflare-workers, prisma, stripe, redis
Use AskUserQuestion to confirm:
If "Skip": report and exit. If "Pick which ones": let user select from gap list.
Search for each gap keyword using the first available source:
Tier 1: Vercel skills CLI (check: npx skills --version 2>/dev/null)
npx skills search "<keyword>" 2>/dev/null
Tier 2: WebSearch (always available)
WebSearch: "SKILL.md <keyword> site:github.com claude"
For each search result, collect:
Report which search tier is active:
Searching via: Vercel skills CLI
or:
Searching via: web (install `npx skills` for better results)
For each candidate, if possible fetch the SKILL.md content:
npx skills info <package> or npx skills cat <package>WebFetch the raw SKILL.md from GitHubSafety scan (discard if any trigger):
rm -rf, sudo, curl | sh, eval(, or similar dangerous patternsPresent grouped by gap:
cloudflare-workers (2 candidates):
1. @anthropics/skills/cloudflare
"Cloudflare Workers and Pages deployment patterns..."
Source: github.com/anthropics/skills · official
2. @secondsky/cloudflare-workers-deploy
"Production deployment, wrangler config, D1 bindings..."
Source: npm:@secondsky/cloudflare-workers-deploy · 2.1K installs
prisma (1 candidate):
1. @vercel-labs/prisma-orm
"Prisma ORM — schema design, migrations, queries..."
Source: npm:@vercel-labs/prisma-orm · 8.4K installs
stripe, redis: no skills found (Claude will use general knowledge)
Use AskUserQuestion (multiSelect: true):
For each selected skill:
1. Get the SKILL.md content:
npx skills add <package> --dir /tmp/skill-staging/ then read the file2. Save to system/skills/acquired/:
mkdir -p system/skills/acquired/<skill-name>/
Write SKILL.md to system/skills/acquired/<skill-name>/SKILL.md.
3. Activate immediately:
mkdir -p ~/.claude/skills/<skill-name>/
cp system/skills/acquired/<skill-name>/SKILL.md ~/.claude/skills/<skill-name>/SKILL.md
4. Update skill-catalog.md:
Append to the ## Acquired section of docs/guide/skills.md:
### `<skill-name>` (acquired)
{description} — Source: {source}. Acquired {YYYY-MM-DD} for {project/task context}.
If the ## Acquired section doesn't exist, create it at the end of the file.
Acquired 2 skills:
+ cloudflare-workers-deploy (npm, @secondsky)
+ prisma-orm (npm, @vercel-labs)
Not found (general knowledge):
stripe, redis
Updated: docs/guide/skills.md
Active in: ~/.claude/skills/ (this session)
Persisted: system/skills/acquired/ (git tracked)
Run deploy.sh to make permanent across sessions.
system/skills/acquired/. They survive deploy.sh like native skills.system/skills/acquired/ and redeploy.npx claudepluginhub martineserios/thebrana --plugin branaSearches local, marketplace, GitHub, and web skill sources to avoid duplicating existing skills. Indexed results are ranked and presented with fork/extend options.
Generates .dh/skill_discovery.yaml by scanning repo for tech stack signals like pyproject.toml and package.json, inventorying skills via npx skills list, suggesting candidates, and writing config for skill injection.
Checks for and loads relevant skills before starting tasks, new requests, beginning work, or implementation, enforcing skill-first discipline.