Correct Multimodal AI CodeOn the First Try

An open-source Agent Skill that equips AI coding assistants with correct patterns, anti-patterns, and production recipes for building multimodal AI applications with Pixeltable: declarative tables that replace LangChain + pandas + vector databases with one system.

Get Started in Seconds

Works with any tool that supports the Agent Skills specification, including Cursor, Claude Code, Windsurf, Cline, Codex CLI, and 40+ more.

Any agent (Cursor, Claude Code, Windsurf, Cline, Codex CLI, …)
npx skills add pixeltable/pixeltable-skill
Claude Code plugin
/plugin marketplace add pixeltable/pixeltable-skill
Manual (shell script)
curl -fsSL https://raw.githubusercontent.com/pixeltable/pixeltable-skill/main/install.sh | bash -s -- --platform claude-code

Compatible with

CursorClaude CodeCodex CLIWindsurfClineOpenCodeGemini+ 40 more

Why This Skill Exists

Pixeltable's declarative model is off-distribution from the imperative Python patterns that dominate LLM training data. Without guidance, agents consistently:

Import LangChain
document_splitter + add_embedding_index
Use pandas as the store
Pixeltable tables persist & version automatically
Write for-loops calling AI
Computed columns handle batching & retry
Install Pinecone or Chroma
Embedding indexes live inside tables
Write while-loops for agents
Agents are tables where insert triggers the chain

The skill explicitly deflects these priors with bold negative prompts at the top of the file, before providing the correct patterns. This “say what NOT to do first” approach consistently improves first-shot code quality for off-distribution frameworks.

What the Skill Provides

Anti-pattern deflection, core API patterns, agent recipes, and production-ready code, loaded progressively to keep your context lean.

Anti-Pattern Deflection

Five macro negative prompts override training-distribution biases. 15 detailed anti-patterns with wrong/right code examples. 7 hallucinated API warnings with correct alternatives.

# STOP: Do NOT use LangChain, pandas-as-store,
# for-loops calling AI, separate vector DBs,
# or while-loop agents.
#
# Pixeltable replaces all of them with
# declarative tables + computed columns.
5 macro deflections15 anti-patterns7 hallucination guards

Core Patterns

Tables with multimodal types, computed columns for declarative AI pipelines, views with iterators for chunking and frame extraction, embedding indexes for one-liner vector search.

class Docs(TableModel, name='docs'):
document: pxt.Document
class Chunks(
TableModel, name='chunks', base=Docs,
iterator=document_splitter(
Docs.document, separators='sentence'
),
):
__indexes__ = [
pxt.EmbeddingIndex(text, embedding=embed_fn)
]
Multimodal typesComputed columnsViews & iteratorsEmbedding indexes

Agent & Tool Patterns

Tool-calling pipelines with pxt.tools() + invoke_tools() for OpenAI, Anthropic, Gemini, Groq, and Bedrock. Persistent memory with semantic retrieval. MCP integration.

tools = pxt.tools(get_weather, search_docs)
agent.add_computed_column(
response=chat_completions(
messages=msgs, tools=tools
)
)
agent.add_computed_column(
result=invoke_tools(agent.response)
)
Tool callingPersistent memoryMCP integration6 agentic patterns

Production Patterns

FastAPIRouter for declarative endpoint generation. Error handling with recompute_columns(). Import/export for CSV, Parquet, Hugging Face, PyTorch. Data sharing via Pixeltable Cloud.

ingest = FastAPIRouter(name='ingest')
ingest.add_insert_route(
Docs, path='/ingest', inputs=[Docs.document]
)
ingest.bind('my_app')
app.include_router(ingest)
t.recompute_columns('summary', errors_only=True)
FastAPIRouterError retryImport/exportData sharing

See It in Action

Ask your agent to build Pixeltable workflows. It writes correct, production-ready code on the first try.

pixeltable_workflow.py
1import pixeltable as pxt
2from pixeltable.functions.document import document_splitter
3from pixeltable.functions.huggingface import sentence_transformer
4from pixeltable.functions.openai import chat_completions
5
6pxt.create_dir('rag', if_exists='ignore')
7docs = pxt.create_table('rag.docs', {
8 'document': pxt.Document,
9}, if_exists='ignore')
10
11chunks = pxt.create_view('rag.chunks', docs,
12 iterator=document_splitter(
13 document=docs.document,
14 separators='sentence', limit=300
15 )
16)
17
18chunks.add_embedding_index('text',
19 string_embed=sentence_transformer.using(
20 model_id='all-MiniLM-L6-v2'
21 )
22)
23
24@pxt.query
25def answer(question: str):
26 sim = chunks.text.similarity(string=question)
27 ctx = chunks.order_by(sim, asc=False).limit(5)
28 return ctx.select(chunks.text, sim)

25+ AI ProvidersCorrect Signatures Built In

Your agent knows the exact function signatures for every supported provider. Just describe what you want. It writes the correct integration code.

ProviderFunctions
OpenAIchat_completions, embeddings, image_generations, speech, transcriptions
Anthropicmessages, invoke_tools
Google Geminigenerate_content, invoke_tools
Hugging Faceclip, sentence_transformer, detr_for_object_detection
Together AIchat_completions, embeddings, image_generations
Fireworkschat_completions, embeddings
Ollamachat_completions, embeddings
Mistralchat_completions, embeddings
Groqchat_completions, invoke_tools
AWS Bedrockconverse, invoke_tools
+ 15 moreSee providers reference →

Progressive Disclosure

The skill loads only what's needed. SKILL.md is the contract. Five reference files load on demand, keeping your agent fast and your context window lean.

LayerFileRoleLoaded when
CoreSKILL.mdcontractAlways (on activation)
Referencereferences/core-api.mdAPITypes, views, UDFs, serving
Referencereferences/cli.mdCLIpxt schema, pxt service, inspect
Referencereferences/providers.mdprovidersProvider import and output shape
Referencereferences/workflows.mdHTTPFastAPIRouter routes and bind()
Referencereferences/anti-patterns.mdstopWrong/right stack

Frequently Asked Questions