Ketch
1broseidon/ketch
Research skill for ketch — a fast stateless CLI for web search, OSS code search, curated library docs, page scraping, and site crawling; an optional MCP server exists for operators who want it, but…
Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery.
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install davekilleen/Dex enable-semantic-search --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/enable-semantic-search .claude/skills/enable-semantic-search && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .claude/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-searchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install davekilleen/Dex enable-semantic-search --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/enable-semantic-search .agents/skills/enable-semantic-search && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .agents/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install davekilleen/Dex enable-semantic-search --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/enable-semantic-search .cursor/skills/enable-semantic-search && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .cursor/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/davekilleen/Dex.git --path .agents/skills/enable-semantic-search--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install davekilleen/Dex enable-semantic-search --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/enable-semantic-search .gemini/skills/enable-semantic-search && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .gemini/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install davekilleen/Dex enable-semantic-searchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/enable-semantic-search .github/skills/enable-semantic-search && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .github/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill enable-semantic-search -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install davekilleen/Dex enable-semantic-search --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/enable-semantic-search .opencode/skills/enable-semantic-search && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "enable-semantic-search" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/enable-semantic-search into .opencode/skills/enable-semantic-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enable-semantic-search", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
enable-semantic-searchTurn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery.
Enable Semantic Search is an agent skill from davekilleen/Dex. Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery. Use when the user says 'enable semantic search', 'search by meaning', 'set up QMD', or search keeps missing obvious matches. Not for scraping the web; use scrape.
Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering Web scraping. It works with Model Context Protocol. The repository describes itself as: Your AI Chief of Staff — a personal operating system starter kit that adapts to your role. No coding required. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d0ffc6b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
brewbunnodecurlbashpython3justnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
bun.shFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Enable Semantic Search loads about 4.5k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 846 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
curl -fsSL https://bun.sh/install | bashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from davekilleen/Dex at commit d0ffc6b, republished under its MIT licence (© davekilleen). 846 words, ~4,465 tokens.
.claude/skills/enable-semantic-search/SKILL.md (or your agent's skills folder).<!-- Generated from `.claude/skills/enable-semantic-search/SKILL.md` by `scripts/generate-agents-skills.py`. Do not edit. -->
Set up local AI-powered semantic search for your vault. This is a concierge experience — it analyzes your vault, discovers what collections make sense, and creates a tailored search setup.
Semantic search finds content by meaning, not just keywords:
Your skills (/daily-plan, /meeting-prep, /triage, etc.) automatically use semantic search when available, finding more relevant context than keyword matching alone.
Run these checks before proceeding:
# Check if qmd is already installed
which qmd
# Check if Bun is available (required)
which bun
# macOS only: Check SQLite via Homebrew
brew list sqlite 2>/dev/null && echo "SQLite OK" || echo "Need: brew install sqlite"
# Check available disk space (need ~2.5GB)
df -h ~ | tail -1If qmd is already installed, run qmd status to check existing setup. If collections already exist, skip to the Collection Health Check section at the bottom.
Present this to the user:
═══════════════════════════════════════════════════════════════════════
SEMANTIC SEARCH FOR YOUR VAULT
═══════════════════════════════════════════════════════════════════════
What is this?
─────────────
Right now, finding notes requires knowing the exact words used.
Search "product-led growth" — won't find notes saying "PLG" or
"self-serve motion".
Semantic search understands meaning, not just keywords. It finds
conceptually related content even when terminology differs.
How does it work?
─────────────────
Your notes get converted to "embeddings" — mathematical
representations of meaning. When you search, your query becomes
an embedding too. The system finds notes whose meaning is close
to your query's meaning.
Think of it like: instead of matching letters, we're matching ideas.
What gets installed?
────────────────────
Three small AI models run locally on your machine:
MODEL PURPOSE SIZE
─────────────────────────────────────────────────────────────
EmbeddingGemma-300M Converts text to meaning ~300MB
vectors. The core
"understanding" model.
Qwen3-Reranker-0.6b Re-orders results by ~640MB
true relevance. Improves
result quality.
QMD-Query-Expansion-1.7B Expands your search to ~1.1GB
include related terms.
"PLG" → also searches
"product-led", "freemium"
Total: ~2GB one-time download
Privacy & Security
──────────────────
- Everything runs locally — your notes never leave your machine
- No API keys required
- No cloud services
- Models downloaded from HuggingFace (open source)
- Index stored in ~/.cache/qmd/ (not in your vault)
What changes in your workflow?
──────────────────────────────
Enabling semantic search silently upgrades these skills:
/daily-plan — Enriches meeting prep with thematically
related past discussions
/meeting-prep — Discovers past discussions related by
meaning, not just name matching
/triage — Matches inbox items to goals by meaning,
catches semantic duplicates
Person Lookup — Finds "the VP of Sales mentioned..." even
without a name
Search & Recall — All vault searches use hybrid retrieval
(BM25 + vectors + LLM reranking)
System Requirements
───────────────────
~2.5GB disk space (for models + index)
macOS: Homebrew SQLite required (brew install sqlite)
Bun runtime (will install if missing)Ask: "Ready to enable semantic search? This will download ~2GB of models. [Y/n]"
If no, exit gracefully: "No problem. Run /enable-semantic-search anytime."
# Install Bun if missing
if ! command -v bun &> /dev/null; then
echo "Installing Bun runtime..."
curl -fsSL https://bun.sh/install | bash
fi
# macOS: Install SQLite if missing
if [[ "$OSTYPE" == "darwin"* ]]; then
if ! brew list sqlite &> /dev/null; then
echo "Installing SQLite via Homebrew..."
brew install sqlite
fi
fi
# Install qmd globally
echo "Installing qmd..."
bun install -g github:tobi/qmdecho "Downloading AI models (~2GB)..."
echo "This happens once. Future searches are instant."
echo ""
echo "Models downloading:"
echo " EmbeddingGemma-300M — Converts text to meaning vectors"
echo " Qwen3-Reranker-0.6b — Improves result relevance"
echo " QMD-Query-Expansion — Expands searches with related terms"
echo ""
# Trigger model download with a simple embed operation
cd "$VAULT_PATH" && qmd embed --help 2>/dev/null || trueqmd is intentionally NOT pre-registered in .mcp.json — a registered server whose binary
is missing shows the user a failing MCP server every session. Now that qmd is installed,
add the registration to the vault's .mcp.json:
python3 - <<'EOF'
import json, pathlib
p = pathlib.Path(".mcp.json")
cfg = json.loads(p.read_text()) if p.exists() else {"mcpServers": {}}
cfg.setdefault("mcpServers", {})["qmd"] = {"command": "qmd", "args": ["mcp"]}
p.write_text(json.dumps(cfg, indent=2) + "\n")
print("qmd registered in .mcp.json")
EOFTell the user to restart their coding harness (Claude Code/Cursor) after setup completes so the new MCP server is picked up.
This is what makes Dex's semantic search better than generic indexing. Instead of dumping everything into one blob, we analyze the vault and create purpose-built collections.
Execute the vault scanner script to discover collection candidates:
node "$VAULT_PATH/.scripts/semantic-search/scan-vault.cjs"The scanner returns a JSON structure like:
{
"candidates": [
{
"name": "people",
"path": "05-Areas/People",
"glob": "**/*.md",
"fileCount": 23,
"context": "Person pages with meeting history, relationship notes, action items, and role context",
"benefit": "Person lookup finds references by role/title, not just name",
"example": "Search 'VP of Sales' finds the person even if their name isn't mentioned"
},
{
"name": "accounts",
"path": "05-Areas/Companies",
"glob": "**/*.md",
"fileCount": 8,
"context": "Company and account pages with deal status, relationship notes, and interaction history",
"benefit": "Deal prep pulls account-specific context without inbox noise",
"example": "Search 'renewal risk' finds accounts with churn signals"
}
],
"skipped": [
{
"name": "career",
"reason": "Folder not set up (run /career-setup)",
"path": "05-Areas/Career"
}
],
"totalFiles": 156,
"totalCandidates": 6
}Format the scanner output as a concierge recommendation:
I scanned your vault and found candidates for [N] smart collections:
COLLECTION FILES WHAT IT ENABLES
─────────────────────────────────────────────────────────────────
people 23 Person lookup finds references by
role/title, not just name. Search
"VP of Sales" finds the person even
if their name isn't mentioned.
meetings 47 "What was discussed about X?" searches
meeting notes specifically, not your
entire vault.
tasks 1 Smart task matching for triage. Catches
semantic duplicates like "Review metrics"
≈ "Check quarterly numbers".
projects 8 Project health pulls related docs
without inbox noise.
goals 1 Goal alignment finds thematically
related work across your vault.
priorities 1 Weekly planning discovers patterns
in past priority choices.
Skipped (not enough content yet):
- accounts — No company pages found (create some first)
- content — No content files yet
- career — Career folder not set up (run /career-setup)
Create all [N] collections? [Y]
Pick specific ones? [P]
Just create a basic index? [B]If [Y] - Create all:
Create every candidate collection using qmd collection add with context.
If [P] - Pick specific: Present each candidate individually with a Y/N toggle. Create only selected ones.
If [B] - Basic index: Create a single "vault" collection that indexes everything. This works but misses the precision of targeted collections.
For each accepted candidate, run:
# Create the collection
qmd collection add "$VAULT_PATH/<path>" --name <name> --mask "<glob>"
# Add semantic context (helps the reranker understand what's in the collection)
qmd context add <name> "<context description>"Collection definitions (full list):
| Name | Path | Glob | Context | Min Files |
|---|---|---|---|---|
people | 05-Areas/People | **/*.md | Person pages with meeting history, relationship notes, action items, and role context | 3 |
accounts | 05-Areas/Companies | **/*.md | Company and account pages with deal status, relationship notes, and interaction history | 1 |
accounts (alt) | 05-Areas/Relationships/Key_Accounts | **/*.md | Key Account pages with deal status, MEDDPICC, and engagement history | 1 |
meetings | 00-Inbox/Meetings | **/*.md | Meeting notes with attendees, key discussion points, decisions made, and action items | 5 |
tasks | 03-Tasks | **/*.md | Task backlog with priorities (P0-P3), pillar alignment, status tracking, and linked goals | 1 |
projects | 04-Projects | **/*.md | Active project tracking with status, stakeholders, timelines, and related decisions | 1 |
goals | 01-Quarter_Goals | **/*.md | Quarterly strategic goals with success criteria, milestones, and progress tracking | 1 |
priorities | 02-Week_Priorities | **/*.md | Weekly priorities linked to quarterly goals with completion tracking | 1 |
content | 05-Areas/Content | **/*.md | Content ideas, articles, LinkedIn posts, and thought leadership material | 1 |
career | 05-Areas/Career | **/*.md | Career development evidence, feedback received, skills tracking, and growth goals | 1 |
prds | System/PRDs | **/*.md | Product requirement documents, feature specs, and technical design docs | 1 |
resources | 06-Resources | **/*.md | Reference material, learnings, system documentation, and guides | 5 |
After all collections are created, embed the vectors:
echo "Creating embeddings for all collections..."
qmd embedShow progress to the user — this may take a few minutes for larger vaults.
Add qmd MCP server to the user's Claude/Cursor config.
For Claude Code (~/.claude.json):
{
"mcpServers": {
"qmd": {
"type": "stdio",
"command": "qmd",
"args": ["mcp"]
}
}
}For Cursor (.cursor/mcp.json in vault root):
{
"mcpServers": {
"qmd": {
"command": "qmd",
"args": ["mcp"]
}
}
}Tell the user: "You'll need to restart your editor for the MCP server to be available. After restart, I can use semantic search automatically."
Create .scripts/semantic-search/check-availability.cjs (see companion file). This lets other skills check if semantic search is available before using it.
═══════════════════════════════════════════════════════════════════════
SEMANTIC SEARCH ENABLED
═══════════════════════════════════════════════════════════════════════
Your vault now has smart, meaning-aware search.
Collections created:
[list each collection with file count]
Try it:
qmd query "product led growth strategies"
qmd query "customer churn patterns" -c accounts
qmd search "meeting with Sarah" -c meetings
What's different now:
/daily-plan — meeting context enriched with thematic connections
/meeting-prep — attendee lookup finds role/title references
/triage — semantic routing with goal-aware matching
Person Lookup — finds "the VP of Sales" without needing the name
Search & Recall — hybrid retrieval (BM25 + vectors + reranking)
Index updates automatically when you run: qmd update
To check status anytime: qmd status
To force full rebuild: qmd embed -f
As your vault grows, I'll suggest new collections when there's
enough content to benefit. Run this skill again anytime to check.If the user already has qmd installed and collections exist, this skill switches to health-check mode.
node "$VAULT_PATH/.scripts/semantic-search/scan-vault.cjs" --health-checkThis compares existing collections against current vault state and returns:
{
"existing": ["people", "meetings", "tasks"],
"newCandidates": [
{
"name": "accounts",
"path": "05-Areas/Companies",
"fileCount": 5,
"reason": "You've created 5 company pages since last check"
}
],
"staleCollections": [
{
"name": "meetings",
"lastUpdated": "12 days ago",
"currentFiles": 52,
"indexedFiles": 47,
"drift": 5
}
],
"pendingEmbeddings": 8,
"suggestions": [
"Run 'qmd update' to re-index changed files",
"Run 'qmd embed' to embed 8 pending documents"
]
}SEMANTIC SEARCH HEALTH CHECK
─────────────────────────────────────────────────────────────────
Active Collections:
people 54 files Updated 2h ago Healthy
meetings 47 files Updated 12d ago ⚠ Stale (5 new files)
tasks 4 files Updated 1d ago Healthy
New Collection Candidates:
accounts 5 files You've built enough company pages for
a dedicated collection. This means deal
prep will pull account context specifically.
→ Create accounts collection? [Y/n]
Maintenance:
8 documents need embedding (run 'qmd embed')
meetings collection is 12 days stale (run 'qmd update')
Quick fix: qmd update && qmd embedFor each new candidate:
Other skills can call the scanner in suggestion mode during workflows:
During /daily-plan:
node "$VAULT_PATH/.scripts/semantic-search/scan-vault.cjs" --suggestions-onlyIf new candidates are found, append to the daily plan:
💡 Semantic search suggestion: You now have 5 company pages.
Want me to create an 'accounts' collection? This means deal
prep will search account context specifically.
Run /enable-semantic-search to set it up.Skills should check availability before using semantic search:
// In your skill or hook
const { execSync } = require('child_process');
function isSemanticSearchAvailable() {
try {
execSync('which qmd', { stdio: 'pipe' });
const status = execSync('qmd status', { stdio: 'pipe' }).toString();
return status.includes('Documents');
} catch {
return false;
}
}
// Use in search logic
if (isSemanticSearchAvailable()) {
// Use qmd query for semantic search
const results = execSync(`qmd query "${query}" -c people`, { stdio: 'pipe' });
} else {
// Fall back to grep/file search
}Or use the check-availability script:
const { checkSemanticSearch } = require('.scripts/semantic-search/check-availability.cjs');
const status = checkSemanticSearch();
if (status.available) {
// Use semantic search
}If setup fails:
npm install -g bun or download from bun.shbrew install sqliteqmd embed -fTo remove semantic search:
# Remove index
qmd cleanup
# Remove the qmd binary
bun remove -g qmd
# Remove MCP config (manual — delete the "qmd" entry from your config)Your vault files are never modified — removing qmd just removes the search index.
© davekilleen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/enable-semantic-search of davekilleen/Dex.
Open the folder on GitHubat commit d0ffc6b
Enable Semantic Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Enable Semantic Search this skilldavekilleen/Dex | 494 | — | ~4.5k | Automated safety check: Notes | MIT | |
| Ketch1broseidon/ketch | 702 | 1 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Querying Indonesian Gov Datasuryast/indonesia-gov-apis | 172 | — | ~997 | Automated safety check: Pass | MIT | |
| Media Crawlertsingyuai/growth-lab | 2k | — | ~731 | Automated safety check: Pass | Apache-2.0 | |
| Octocode Scrapingbgauryy/octocode | 949 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Apify Ashby Jobs Scraperapify/awesome-skills | 266 | — | ~3.7k | Automated safety check: Pass | MIT |
1broseidon/ketch
Research skill for ketch — a fast stateless CLI for web search, OSS code search, curated library docs, page scraping, and site crawling; an optional MCP server exists for operators who want it, but…
suryast/indonesia-gov-apis
Query 57 Indonesian government APIs and data sources — BPJPH halal certification, BPOM food safety, OJK financial legality, BPS statistics, BMKG weather/earthquakes, Bank Indonesia exchange rates…
tsingyuai/growth-lab
Install, authenticate, configure, operate, and troubleshoot the external MediaCrawler client shared by Douyin, Kuaishou, Bilibili, Weibo, Tieba, and Zhihu collectors.
bgauryy/octocode
A skill your agent uses when extracting or mapping public web content into a local cited corpus: scrape or crawl a URL/docs site, pull tables/pricing/product fields, diagnose blocked or thin pages…
apify/awesome-skills
Scrape Ashby jobs or discover companies using Ashby with the Apify Ashby Job Board API Actor (johnvc/ashby-job-board-scraper).
seranking/seo-skills
Ad-hoc web scraping, site mapping, and full-site crawling via Firecrawl MCP.
davekilleen/Dex
This skill should be used when working with DSPy.rb, a Ruby framework for building type-safe, composable LLM applications.
davekilleen/Dex
Adopt a full published Heydex profile by handle ('set me up like @davekilleen').
davekilleen/Dex
Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc.
davekilleen/Dex
Expert guidance for creating, writing, and refining Claude Code Skills.
davekilleen/Dex
Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's…
davekilleen/Dex
This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.
Works with
Categories
Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery. Enable Semantic Search is an agent skill from davekilleen/Dex. Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery.
Enable Semantic Search fits situations like: the user says enable semantic search; search by meaning; search keeps missing obvious matches.
Run `npx skills add davekilleen/Dex --skill enable-semantic-search -a claude-code`. Or copy the skill folder (.agents/skills/enable-semantic-search in davekilleen/Dex) into .claude/skills/enable-semantic-search in your project. Claude Code loads it when a task matches its description.
Run `npx skills add davekilleen/Dex --skill enable-semantic-search -a codex`. Or copy the skill folder (.agents/skills/enable-semantic-search in davekilleen/Dex) into .agents/skills/enable-semantic-search in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add davekilleen/Dex --skill enable-semantic-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enable-semantic-search, .gemini/skills/enable-semantic-search, .github/skills/enable-semantic-search and .opencode/skills/enable-semantic-search in your project.
Going by SKILL.md and its folder, Enable Semantic Search needs the command-line tools its instructions call (brew, bun, node, curl, bash and python3). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: bun.sh; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pipes a well-known installer script into a shell), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Enable Semantic Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Enable Semantic Search: Ketch (1broseidon/ketch, 702 stars), Querying Indonesian Gov Data (suryast/indonesia-gov-apis, 172 stars), Media Crawler (tsingyuai/growth-lab, 2k stars) and Octocode Scraping (bgauryy/octocode, 949 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
davekilleen (a GitHub user) maintains it in davekilleen/Dex, which has 494 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on October 9, 2026.
Source: davekilleen/Dex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.