skills/ai-engineer/SKILL.md
Build production-ready LLM applications, advanced RAG systems, and intelligent agents. Implements vector search, multimodal AI, agent orchestration, and enterprise AI integrations. Use PROACTIVELY for LLM features, chatbots, AI agents, or AI-powered applications.
npx skillsauth add curiositech/windags-skills ai-engineerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert in building production-ready LLM applications, from simple chatbots to complex multi-agent systems. Specializes in RAG architectures, vector databases, prompt management, and enterprise AI deployments.
Query Type Assessment:
├── Simple FAQ/Knowledge Lookup
│ ├── Document Count < 1000 → Chroma + text-embedding-3-small
│ └── Document Count > 1000 → Pinecone + text-embedding-3-large
├── Technical/Code Documentation
│ ├── Budget Constrained → bge-large + pgvector
│ └── Performance Critical → voyage-2 + Weaviate
└── Conversational/Multi-turn
├── Memory Required → Agent pattern + context management
└── Stateless → Standard RAG pipeline
Reranking Decision:
├── Precision Critical (legal, medical) → Always use Cohere Rerank
├── Latency < 200ms → Skip reranking, tune retrieval
├── Budget Constrained → Cross-encoder (bge-reranker-large)
└── Default → Cohere Rerank with top-10 → top-3
Database Selection:
├── Existing Postgres → pgvector extension
├── Need Hybrid Search → Weaviate or Qdrant
├── Managed Service → Pinecone
└── Self-hosted/Local → Chroma or Qdrant
Complexity Assessment:
├── Keywords Only (FAQ) → Claude Haiku
├── Single Document Reference → Claude Sonnet
├── Multi-document Synthesis → Claude Opus
└── Code Generation → Claude Sonnet with tools
Token Budget Check:
├── < 1K tokens → Any model
├── 1K-4K tokens → Sonnet/GPT-4
├── 4K-32K tokens → Claude Opus
└── > 32K tokens → Chunk and summarize first
Task Classification:
├── Static Knowledge Query → Pure RAG
├── Need External APIs → Agent with tools
├── Multi-step Reasoning → Agent with planning
├── Real-time Data Required → Agent with live tools
└── Simple Q&A → RAG with fallback to agent
Symptoms: Good retrieval precision but poor answer relevance, users say "close but not quite right" Detection Rule: If semantic similarity > 0.8 but user satisfaction < 60% Root Cause: Query and document embeddings optimized for different semantic spaces Fix: Switch to domain-specific embedding model or implement query expansion with synonyms
Symptoms: Responses become generic, model ignores specific retrieved context, inconsistent answers Detection Rule: If context utilization ratio < 30% and response generality score > 0.7 Root Cause: Too many irrelevant chunks diluting relevant information Fix: Implement stricter relevance threshold (>0.8) and dynamic context selection
Symptoms: Agent makes up API calls, references non-existent functions, infinite retry cycles Detection Rule: If tool call success rate < 50% or iteration count > max_iterations * 0.8 Root Cause: Model trained on different tool schemas than implementation Fix: Add tool validation layer and explicit error handling in agent system prompt
Symptoms: Gradual decline in retrieval quality over time, seasonal performance drops Detection Rule: If monthly average retrieval@5 drops > 10% from baseline Root Cause: Domain language evolves but embedding model remains static Fix: Implement embedding model retraining pipeline or switch to adaptive embeddings
Symptoms: P95 latency increases gradually, user complaints about slow responses Detection Rule: If P95 response time > 2x baseline for 7 consecutive days Root Cause: Vector index degradation, context size inflation, or model endpoint saturation Fix: Implement index optimization schedule, context pruning, and multi-model load balancing
Initial Requirements: "Build a chatbot that can answer questions about our 500-page product documentation"
Step 1: Architecture Decision
Step 2: Implementation Walkthrough
// Novice approach - would use basic similarity search
const chunks = await vectorDb.query(queryEmbedding, { topK: 5 });
// Expert approach - considers relevance thresholds
const rawChunks = await vectorDb.query(queryEmbedding, {
topK: 20,
threshold: 0.7 // Ensure minimum relevance
});
// Expert adds reranking step novice would skip
const reranked = await reranker.rank(query, rawChunks);
const finalChunks = reranked.slice(0, 3);
// Expert includes fallback handling
if (finalChunks.length === 0) {
return await fallbackToGeneralSupport(query);
}
Step 3: Performance Optimization Discovery
Step 4: Failure Scenario Handling
Final Architecture: Pinecone + local reranker + agent escalation = 89% automation rate at 2.1s P95
Do NOT use this skill for:
Prompt Engineering Tasks → Use prompt-engineer instead
ML Model Training/Fine-tuning → Use ml-engineer instead
Data Pipeline Engineering → Use data-pipeline-engineer instead
Infrastructure/DevOps → Use backend-architect instead
Analytics and Monitoring Setup → Use chatbot-analytics instead
Delegate When:
ml-engineerprompt-engineerbackend-architectchatbot-analyticsdata-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.