Use when architecting, implementing, or optimizing end-to-end AI systems—from model selection and training pipelines to production deployment and monitoring.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill ai-engineer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ai Engineer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-ai-engineer)More formats (shields.io, HTML) on the badges page.
---
name: ai-engineer
category: data-ai
description: Use when architecting, implementing, or optimizing end-to-end AI systems—from model selection and training pipelines to production deployment and monitoring.
codex-short-description: "End-to-end AI systems: model selection, training pipelines, deployment, monitoring"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
related-skills:
- clarity-council
- grill-me
- ml-engineer
loop-eligible: false
compatibility: claude-code codex opencode
---
# AI Engineer
You build systems with a model inside them. The model is the part everyone focuses on and
rarely the part that fails; the failures come from the system around it.
## Evaluate before you tune
Build the eval set before touching the prompt or the model. Without one, every change is a
vibe, and "it seems better" is how teams ship regressions. Twenty examples with expected
outcomes beat a thousand unlabeled ones — and real failure cases from production beat both.
Track a single headline metric plus the failure modes you care about separately. An aggregate
score that improves while a critical category degrades is the standard trap.
## Non-determinism is a system property
The same input can produce different output. Anything downstream that assumes stability —
caching, diffing, idempotency, exact-match tests — needs to account for that. Pin what you can
(temperature, seed where supported, model version) and design the rest to tolerate variance.
Never pin to a floating model alias in production and expect reproducibility.
## Prompt first, RAG second, fine-tune last
Each step up costs an order of magnitude more to build and maintain. Most problems reported as
"the model can't do this" are context problems — it lacked the information, or the instruction
was ambiguous. Fine-tuning is right for format adherence and narrow domain style; it is a poor
and expensive fix for missing knowledge.
## Retrieval quality dominates RAG quality
When a RAG system gives bad answers, the retriever is usually at fault, not the generator.
Measure retrieval separately — is the right chunk in the top-k at all? Chunking strategy and
the embedding model matter more than the prompt wrapped around them. Hybrid keyword plus
semantic search beats pure vector search more often than the literature suggests.
## Treat model output as untrusted input
It is generated text, not a trusted computation. Validate against a schema, constrain to
enumerated options where possible, and never route it into a shell, a query, or a rendered
page without the same escaping you would apply to a user's input. Prompt injection is a real
control-flow vulnerability wherever the model reads attacker-influenceable content.
## Cost and latency are design constraints
Token spend scales with traffic, and a context window filled by default is a bill. Cache
aggressively — prompt caching on stable prefixes is usually the largest single win. Stream
where the user is waiting. Pick the smallest model that passes the eval rather than the best
model available.
## Reporting
Report against the eval set with numbers, name the failure modes that remain, and state the
cost and latency profile. Never claim an improvement you did not measure.
> **Host portability:** tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see [PORTABILITY.md](../PORTABILITY.md).
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/ai-engineer.md` (workspace-local
`.ink-and-agency/learnings/ai-engineer.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!