[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J75F1VDHCGAEC4CRENR3BZ":3,"skill-same:01M6J75F1VDHCGAEC4CRENR3BZ":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6J75F1VDHCGAEC4CRENR3BZ","search",null,"Semantic codebase search — use for exploring code, finding implementations, and answering questions about any project. Searches using natural language queries, identifier names, or file paths. Returns ranked results using embedding-based similarity, BM25 keyword matching, symbol matching, import graph analysis, and git recency. Best for exploring a large code or text corpus when you don't know the exact keywords; use grep when you know the exact text.","aebrer\u002Fdreb","aebrer","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16313135?v=4","01M6J72TA43F9MBRZJE5W6B8DR","Drew Brereton","01M6J72TEDDHRA5AT4X9TR64AD",34,"MIT","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fsemantic-search\u002Fskills\u002Fsearch\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"when","code","for","you","questions","about","embedding","import","similarity","bm25","matching","project","natural language","queries","import graph","use","results","text","analysis","file","2026-11-10 10:12:30",false,"---\nname: search\ndescription: \"Semantic codebase search — use for exploring code, finding implementations, and answering questions about any project. Searches using natural language queries, identifier names, or file paths. Returns ranked results using embedding-based similarity, BM25 keyword matching, symbol matching, import graph analysis, and git recency. Best for exploring a large code or text corpus when you don't know the exact keywords; use grep when you know the exact text.\"\n---\n\n# Semantic Codebase Search\n\n`search` is one optional tool in your exploration toolkit — best for open-ended exploration of a large code or text corpus (especially code repos) when you don't know the exact keywords. Use `grep` when you already know the exact text or pattern you're looking for.\n\n## Indexing\n\nThe first query builds the index — this may take 10–60 seconds depending on project size. Subsequent queries are fast because the index is incrementally updated (only changed files are re-processed).\n\n## Query Types\n\nThe search tool supports three kinds of queries, automatically classified:\n\n- **Identifier queries** — e.g. `AuthMiddleware`, `handleRequest`, `SearchEngine` — finds definitions, usages, and related code for a specific symbol\n- **Natural language queries** — e.g. `where is rate limiting handled`, `how does authentication work` — semantic search across code and documentation\n- **Path queries** — e.g. `src\u002Fauth\u002F`, `packages\u002Fai` — finds code within a directory structure\n\n## Parameters\n\n| Parameter    | Required | Description                                                                 |\n| ------------ | -------- | --------------------------------------------------------------------------- |\n| `query`      | Yes      | Search query — natural language, identifier, or path                        |\n| `searchDir` | Yes      | Directory to index and search — each unique value gets its own independent index |\n| `restrictToDir` | No       | Filter results to files under this subdirectory within the already-built index (does not affect which files are indexed) |\n| `limit`      | No       | Maximum number of results to return (default: 20)                           |\n| `rebuild`    | No       | Force a clean index rebuild — use when files have changed significantly     |\n\n## Ranking\n\nResults are ranked using 6 signals fused via **POEM** (Pareto-Optimal Embedded Modeling):\n\n1. **BM25** — keyword matching via FTS5 full-text search\n2. **Cosine similarity** — embedding-based semantic similarity (all-MiniLM-L6-v2)\n3. **Path match** — query terms appearing in the file path\n4. **Symbol match** — query terms matching function\u002Fclass\u002Ftype names\n5. **Import graph proximity** — files imported by or importing high-scoring files\n6. **Git recency** — recently modified files ranked higher\n\nThe weight given to each signal varies by query type. Identifier queries emphasize symbol match and BM25; natural language queries emphasize cosine similarity; path queries emphasize path match.\n\n## Results\n\nEach result includes:\n\n- **File path** and **line range** (start–end)\n- **Chunk kind** (function, class, method, interface, heading_section, etc.) and **name**\n- **Metric scores** for each of the 6 signals\n- **Content preview** of the matching code or text\n\n## Tips\n\n- Start broad, then narrow with `restrictToDir` if you get too many results from different areas\n- Use `limit` to get more results when exploring a broad topic (e.g. `limit: 50`)\n- Use `rebuild: true` after major refactors, branch switches, or large file changes\n- Identifier queries work best for finding where something is defined or used\n- Natural language queries work best for understanding how a feature or concept is implemented\n- Combine search with `grep` for a powerful workflow: search to find the right files, then grep for exact patterns within them\n","# Semantic Codebase Search\n\n`search` is one optional tool in your exploration toolkit — best for open-ended exploration of a large code or text corpus (especially code repos) when you don't know the exact keywords. Use `grep` when you already know the exact text or pattern you're looking for.\n\n## Indexing\n\nThe first query builds the index — this may take 10–60 seconds depending on project size. Subsequent queries are fast because the index is incrementally updated (only changed files are re-processed).\n\n## Query Types\n\nThe search tool supports three kinds of queries, automatically classified:\n\n- **Identifier queries** — e.g. `AuthMiddleware`, `handleRequest`, `SearchEngine` — finds definitions, usages, and related code for a specific symbol\n- **Natural language queries** — e.g. `where is rate limiting handled`, `how does authentication work` — semantic search across code and documentation\n- **Path queries** — e.g. `src\u002Fauth\u002F`, `packages\u002Fai` — finds code within a directory structure\n\n## Parameters\n\n| Parameter    | Required | Description                                                                 |\n| ------------ | -------- | --------------------------------------------------------------------------- |\n| `query`      | Yes      | Search query — natural language, identifier, or path                        |\n| `searchDir` | Yes      | Directory to index and search — each unique value gets its own independent index |\n| `restrictToDir` | No       | Filter results to files under this subdirectory within the already-built index (does not affect which files are indexed) |\n| `limit`      | No       | Maximum number of results to return (default: 20)                           |\n| `rebuild`    | No       | Force a clean index rebuild — use when files have changed significantly     |\n\n## Ranking\n\nResults are ranked using 6 signals fused via **POEM** (Pareto-Optimal Embedded Modeling):\n\n1. **BM25** — keyword matching via FTS5 full-text search\n2. **Cosine similarity** — embedding-based semantic similarity (all-MiniLM-L6-v2)\n3. **Path match** — query terms appearing in the file path\n4. **Symbol match** — query terms matching function\u002Fclass\u002Ftype names\n5. **Import graph proximity** — files imported by or importing high-scoring files\n6. **Git recency** — recently modified files ranked higher\n\nThe weight given to each signal varies by query type. Identifier queries emphasize symbol match and BM25; natural language queries emphasize cosine similarity; path queries emphasize path match.\n\n## Results\n\nEach result includes:\n\n- **File path** and **line range** (start–end)\n- **Chunk kind** (function, class, method, interface, heading_section, etc.) and **name**\n- **Metric scores** for each of the 6 signals\n- **Content preview** of the matching code or text\n\n## Tips\n\n- Start broad, then narrow with `restrictToDir` if you get too many results from different areas\n- Use `limit` to get more results when exploring a broad topic (e.g. `limit: 50`)\n- Use `rebuild: true` after major refactors, branch switches, or large file changes\n- Identifier queries work best for finding where something is defined or used\n- Natural language queries work best for understanding how a feature or concept is implemented\n- Combine search with `grep` for a powerful workflow: search to find the right files, then grep for exact patterns within them\n",{"name":5,"description":7},"master","c9f9063dab2d32cd49fc2b250075b578f25431b9","packages\u002Fsemantic-search\u002Fskills\u002Fsearch",11,"https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb","https:\u002F\u002Fgithub.com\u002Faebrer","https:\u002F\u002Fentropist.ca","Currently working on:\r\n- DEEP YELLOW: a turn based backrooms game in godot game engine\r\n- dreb: agentic coding harness\r\n- Professionally: AI in drug-discovery","2026-11-13 23:50:50",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add aebrer\u002Fdreb --skill search",{"tool":59,"command":60},"bunx","bunx skills add aebrer\u002Fdreb --skill search",{"tool":62,"command":63},"pnpm","pnpm dlx skills add aebrer\u002Fdreb --skill search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fsemantic-search\u002Fskills\u002Fsearch\u002FSKILL.md",true,[],[68,83,95,108,119,130],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":39},"01M6J75DJ172W73T7GX993YR25","valid-skill","A valid skill for testing purposes.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fvalid-skill\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[80,81,82,21],"valid skill","valid","testing",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":39},"01M6J75A2GVQ5QHPMSF9Z355GC","unknown-field","A skill with an unknown frontmatter field.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Funknown-field\u002FSKILL.md",[],[90,91,92,93,94],"unknown field","unknown","frontmatter","with","unknown frontmatter field",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":104,"publishedAt":39},"01M6J758HV5H5BWXH28AVMH3HA","substitution-test","A skill for testing content substitution.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fsubstitution-test\u002FSKILL.md",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000008","测试与质量",[105,106,82,21,107],"substitution test","test","content",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":39},"01M6J757BHN1NZPYEZNANVYW5Q","nested-child","Nested skill should be ignored.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002Fnested-child\u002FSKILL.md",[],[115,116,117,118],"nested child","child","nested","ignored",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":39},"01M6J754D441E7R785DG009DSG","root-skill-preferred","Root skill should win.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002FSKILL.md",[125],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[127,128,129],"root","root skill preferred","root skill",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":39},"01M6J752X18P8YFBCYTZ5BERKZ","not-user-invocable","A skill only the agent can invoke.","https:\u002F\u002Fgithub.com\u002Faebrer\u002Fdreb\u002Fblob\u002Fmaster\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fnot-user-invocable\u002FSKILL.md",[136],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[138,139,140,141,142,143],"user","not user invocable","invoke","can","false","only"]