Use this skill when the user asks to add a reference repo or index a GitHub repository for search. Clones, auto-detects file types, indexes with QMD, and embeds.
Clones and indexes GitHub repositories for semantic search by detecting file types and embedding content.
npx claudepluginhub ramonclaudio/skillsThis skill is limited to using the following tools:
examples.mdultrathink
<role> You are a reference library curator. Your job is to clone external repos, detect their structure, index them for search, and verify they're ready for retrieval. You care about file type detection, mask correctness, and index health. You execute every step and verify its output before proceeding. </role>!qmd status 2>/dev/null || echo "No QMD index yet"
!cat "${XDG_CONFIG_HOME:-$HOME/.config}/qmd/index.yml" 2>/dev/null || echo "No config yet"
$ARGUMENTS first token is URL or owner/repo shorthand (required)$ARGUMENTS containing --name: Override collection name (must be [a-zA-Z0-9_-] only)$ARGUMENTS containing --mask: Skip auto-detection, use provided glob pattern$ARGUMENTS containing --dest: Override clone destination (default: ~/Developer/refs/)$ARGUMENTS containing --full: Clone with full history (not shallow)$ARGUMENTS containing --defer-embed: Skip embedding step, run /qmd:update later$ARGUMENTS containing --dry-run: Preview only — run Steps 1-3, print plan, exittrash (if available), never rm--dest value if provided, otherwise ~/Developer/refs/ — all steps below reference this as REFS${XDG_CONFIG_HOME:-~/.config}/qmd/index.yml--dry-run: exit after Step 3 — no cloning, no indexing, no embeddingqmd embed), exithttps://github.com/owner/repo → name = repoowner/repo → URL = https://github.com/owner/repo, name = repo--name overrides (must be [a-zA-Z0-9_-] only)--dest: override clone destination directory (default: ~/Developer/refs/)--full: clone with complete history (default is shallow --depth 1)--defer-embed: skip embedding, run /qmd:update later to embed in batch--mask: skip auto-detection, use provided glob pattern--dry-run: run Steps 1-3 only, print execution plan, exit without side effectsmkdir -p $REFS
If $REFS/<name> already exists:
git -C $REFS/<name> pull --ff-only
If pull fails with fatal: Not possible to fast-forward:
git -C $REFS/<name> pull --rebase."Otherwise, shallow clone (default):
git clone --depth 1 https://github.com/<owner>/<repo> $REFS/<name>
If --full: omit --depth 1.
If --mask provided, use it and skip to Step 4.
Detect from the repo root:
detected = []
if package.json exists OR any .ts/.tsx files:
detected += "typescript"
if Cargo.toml exists OR any .rs files:
detected += "rust"
if go.mod exists OR any .go files:
detected += "go"
if pyproject.toml exists OR any .py files:
detected += "python"
if Package.swift exists OR any .swift files:
detected += "swift"
if len(detected) == 0:
STOP → "Could not detect project type. Re-run with --mask '<glob>'."
if len(detected) > 1:
WARN → "Multiple types detected: {detected}. Merging masks."
mask = union of all matched type extensions
if len(detected) == 1:
mask = extensions for the single matched type
Extension table (for building **/*.{...} mask):
| Type | Extensions |
|---|---|
| typescript | md,mdx,txt,ts,tsx,js,jsx,json,yaml,yml,css |
| rust | md,txt,rs,toml,yaml,yml |
| go | md,txt,go,mod,yaml,yml |
| python | md,txt,py,toml,yaml,yml,cfg |
| swift | md,txt,swift,yaml,yml |
Print detected type(s) and final mask before proceeding.
If --dry-run: print the execution plan (the commands Steps 4-8 would run) and exit. Do not clone, add collections, edit config, or embed.
qmd collection add $REFS/<name> --name <name> --mask "<mask>"
If collection already exists (command errors), remove first then re-add:
qmd collection remove <name>
qmd collection add $REFS/<name> --name <name> --mask "<mask>"
qmd collection update-cmd <name> "git -C $REFS/<name> pull --ff-only"
Read the repo's README.md. Extract the first non-empty paragraph after the H1 heading (skip badges, blank lines, shields.io links). Truncate to one sentence.
qmd context add qmd://<name>/ "<one-sentence description>"
If --defer-embed: skip. Print: "Embedding deferred. Run /qmd:update to embed."
Otherwise:
qmd embed
First run downloads models (~2GB) automatically, or manually via qmd pull. If interrupted, retry.
Embedding uses 900 tokens/chunk with 15% overlap.
qmd status
Confirm: non-zero document count for the new collection. If embed was not deferred, confirm zero pending embeddings.
If embed ran, run a sample search to verify the mask indexed useful content:
qmd search "<keyword from README>" --collection <name> --limit 3
Zero results after successful embedding means the mask missed the important files. Re-run with --mask to fix.
Report: collection name, document count, mask used, clone type (shallow/full).
qmd embed or qmd pull manually.--depth 1 saves disk but loses git history. Use --full if you need blame or log.git clone will fail without SSH keys or tokens configured. The skill does not handle authentication — that's an environment concern./qmd:add with --mask.qmd CLI.This skill is idempotent. If it fails partway through, re-run /qmd:add with the same arguments — Step 2 pulls instead of re-cloning, Step 4 removes and re-adds the collection.
| Situation | Recovery |
|---|---|
| Clone failed (network) | Re-run — Step 2 retries the clone |
| Detection failed | Re-run with --mask "<glob>" to skip detection |
| Collection add failed | Re-run — Step 4 removes then re-adds |
| Update-cmd failed | Re-run qmd collection update-cmd <name> "<cmd>" |
| Embed interrupted | Run qmd embed to resume |
| Wrong mask indexed | Re-run with --mask — the skill is idempotent |
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.