Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expert in building Retrieval-Augmented Generation systems. Masters embedding models, vector databases, chunking strategies, and retrieval optimization for LLM applications. Use when: building RAG, vector search, embeddings, semantic search, document retrieval.
.claude/skills/davila7-rag-engineer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 26% | 0% |
| case-02 | ✓→✓ | = Same ✓ | -3% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 12% | 0% |
Role: RAG Systems Architect
I bridge the gap between raw documents and LLM understanding. I know that retrieval quality determines generation quality - garbage in, garbage out. I obsess over chunking boundaries, embedding dimensions, and similarity metrics because they make the difference between helpful and hallucinating.
Chunk by meaning, not arbitrary token counts
javascript- Use sentence boundaries, not token limits - Detect topic shifts with embedding similarity - Preserve document structure (headers, paragraphs) - Include overlap for context continuity - Add metadata for filtering
Multi-level retrieval for better precision
javascript- Index at multiple chunk sizes (paragraph, section, document) - First pass: coarse retrieval for candidates - Second pass: fine-grained retrieval for precision - Use parent-child relationships for context
Combine semantic and keyword search
javascript- BM25/TF-IDF for keyword matching - Vector similarity for semantic matching - Reciprocal Rank Fusion for combining scores - Weight tuning based on query type
| Issue | Severity | Solution | |-------|----------|----------| | Fixed-size chunking breaks sentences and context | high | Use semantic chunking that respects document structure: | | Pure semantic search without metadata pre-filtering | medium | Implement hybrid filtering: | | Using same embedding model for different content types | medium | Evaluate embeddings per content type: | | Using first-stage retrieval results directly | medium | Add reranking step: | | Cramming maximum context into LLM prompt | medium | Use relevance thresholds: | | Not measuring retrieval quality separately from generation | high | Separate retrieval evaluation: | | Not updating embeddings when source documents change | medium | Implement embedding refresh: | | Same retrieval strategy for all query types | medium | Implement hybrid search: |
Works well with: ai-agents-architect, prompt-engineer, database-architect, backend
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 13,817 | 14,533 | +5% | 1 | 1 | 0% | 2,352 | 2,962 | +26% | 0 | 0 | — |
case-02 | pass→pass | 11,695 | 7,947 | -32% | 1 | 1 | 0% | 1,930 | 1,868 | -3% | 0 | 0 | — |
case-03 | pass→pass | 14,285 | 14,210 | -1% | 1 | 1 | 0% | 2,566 | 2,863 | +12% | 0 | 0 | — |
case-04 | pass→pass | 16,457 | 15,056 | -9% | 1 | 1 | 0% | 2,806 | 3,119 | +11% | 0 | 0 | — |
case-05 | pass→pass | 14,467 | 12,631 | -13% | 1 | 1 | 0% | 2,563 | 2,689 | +5% | 0 | 0 | — |
case-06 | pass→pass | 16,259 | 14,832 | -9% | 1 | 1 | 0% | 2,633 | 3,373 | +28% | 0 | 0 | — |
case-07 | pass→pass | 15,145 | 10,491 | -31% | 1 | 1 | 0% | 2,386 | 2,356 | -1% | 0 | 0 | — |
case-08 | pass→pass | 17,272 | 16,616 | -4% | 1 | 1 | 0% | 2,681 | 3,398 | +27% | 0 | 0 | — |
case-09 | pass→pass | 27,442 | 16,101 | -41% | 1 | 1 | 0% | 2,442 | 3,117 | +28% | 0 | 0 | — |
case-10 | pass→pass | 15,297 | 13,901 | -9% | 1 | 1 | 0% | 2,529 | 2,755 | +9% | 0 | 0 | — |
case-11 | fail→pass | 14,240 | 10,565 | -26% | 1 | 1 | 0% | 2,269 | 2,312 | +2% | 0 | 0 | — |
case-12 | pass→pass | 15,246 | 15,942 | +5% | 1 | 1 | 0% | 2,492 | 3,370 | +35% | 0 | 0 | — |
case-13 | pass→pass | 14,890 | 13,072 | -12% | 1 | 1 | 0% | 2,558 | 2,942 | +15% | 0 | 0 | — |
case-14 | pass→pass | 12,526 | 10,692 | -15% | 1 | 1 | 0% | 2,288 | 2,352 | +3% | 0 | 0 | — |
case-15 | pass→pass | 17,715 | 15,188 | -14% | 1 | 1 | 0% | 3,007 | 3,427 | +14% | 0 | 0 | — |
case-16 | pass→pass | 10,686 | 8,146 | -24% | 1 | 1 | 0% | 1,940 | 1,960 | +1% | 0 | 0 | — |
case-17 | pass→pass | 7,407 | 7,893 | +7% | 1 | 1 | 0% | 1,351 | 1,895 | +40% | 0 | 0 | — |
case-18 | pass→pass | 17,091 | 17,554 | +3% | 1 | 1 | 0% | 2,918 | 3,732 | +28% | 0 | 0 | — |
case-19 | pass→pass | 12,484 | 12,428 | -0% | 1 | 1 | 0% | 2,137 | 2,681 | +25% | 0 | 0 | — |
case-20 | fail→pass | 8,722 | 9,501 | +9% | 1 | 1 | 0% | 1,816 | 2,303 | +27% | 0 | 0 | — |
case-21 | pass→pass | 11,545 | 9,110 | -21% | 1 | 1 | 0% | 2,099 | 2,351 | +12% | 0 | 0 | — |
case-22 | pass→pass | 14,139 | 13,421 | -5% | 1 | 1 | 0% | 2,821 | 3,208 | +14% | 0 | 0 | — |
case-23 | pass→pass | 16,535 | 17,176 | +4% | 1 | 1 | 0% | 3,115 | 4,095 | +31% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.