install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/haystack" ~/.claude/skills/comeonoliver-skillshub-haystack && rm -rf "$T"
manifest:
skills/TerminalSkills/skills/haystack/SKILL.mdsource content
Haystack — LLM Application Framework by deepset
You are an expert in Haystack, the open-source framework by deepset for building production RAG pipelines and LLM applications. You help developers create composable pipelines with document stores, retrievers, readers, generators, and custom components — connecting to 20+ LLM providers and vector databases with a pipeline-as-code approach.
Core Capabilities
RAG Pipeline
from haystack import Pipeline from haystack.components.embedders import OpenAIDocumentEmbedder, OpenAITextEmbedder from haystack.components.writers import DocumentWriter from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever from haystack.components.generators import OpenAIGenerator from haystack.components.builders import PromptBuilder from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack import Document store = InMemoryDocumentStore() # Indexing pipeline indexing = Pipeline() indexing.add_component("embedder", OpenAIDocumentEmbedder()) indexing.add_component("writer", DocumentWriter(document_store=store)) indexing.connect("embedder", "writer") docs = [Document(content="Haystack supports 20+ LLM providers..."), Document(content="Pipelines are composable...")] indexing.run({"embedder": {"documents": docs}}) # Query pipeline template = """Given these documents, answer the question. Documents: {% for doc in documents %}{{ doc.content }}{% endfor %} Question: {{ question }} Answer:""" rag = Pipeline() rag.add_component("embedder", OpenAITextEmbedder()) rag.add_component("retriever", InMemoryEmbeddingRetriever(document_store=store)) rag.add_component("prompt", PromptBuilder(template=template)) rag.add_component("llm", OpenAIGenerator(model="gpt-4o")) rag.connect("embedder.embedding", "retriever.query_embedding") rag.connect("retriever", "prompt.documents") rag.connect("prompt", "llm") result = rag.run({"embedder": {"text": "What providers does Haystack support?"}, "prompt": {"question": "What providers?"}}) print(result["llm"]["replies"][0])
Custom Components
from haystack import component @component class MetadataFilter: @component.output_types(documents=list[Document]) def run(self, documents: list[Document], category: str): return {"documents": [d for d in documents if d.meta.get("category") == category]}
Installation
pip install haystack-ai
Best Practices
- Pipeline-as-code — Connect components explicitly; clear data flow, easy debugging
- Document stores — InMemory for dev, Qdrant/Pinecone/Weaviate for production
- PromptBuilder — Jinja2 templates for dynamic prompts; inject documents, history, metadata
- Custom components — Use
decorator; define inputs/outputs, Haystack handles wiring@component - Branching — Pipelines support conditional routing; different paths based on query type
- Serialization —
/pipeline.dumps()
for saving/loading pipeline configsPipeline.loads() - Evaluation — Built-in eval components for faithfulness, relevance, answer correctness
- Streaming — Use
for real-time token deliveryOpenAIGenerator(streaming_callback=...)