agentic-engineering
Use when designing or decomposing a task for agent execution — applies 15-minute task units, eval-first loops, and explicit input/output contracts so agents work reliably without implicit state
Best use case
agentic-engineering is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use when designing or decomposing a task for agent execution — applies 15-minute task units, eval-first loops, and explicit input/output contracts so agents work reliably without implicit state
Teams using agentic-engineering should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/agentic-engineering/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How agentic-engineering Compares
| Feature / Agent | agentic-engineering | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use when designing or decomposing a task for agent execution — applies 15-minute task units, eval-first loops, and explicit input/output contracts so agents work reliably without implicit state
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Agentic Engineering
Design tasks so AI agents can execute them reliably. This is not about *using* Copilot features — it is about **architecting work** so agents succeed on the first attempt, fail loudly when they can't, and hand off cleanly to the next agent.
## Why This is Copilot-Exclusive
The patterns here are specific to Copilot CLI's agent execution model: `task()` dispatch, `read_agent` / `write_agent` lifecycle, SQL session state, and background agents with `mode: "background"`. They don't map directly to interactive coding sessions in other tools.
## When to Use
- Decomposing a large task before dispatching it to an agent or fleet
- Designing a multi-agent workflow where context must transfer between agents
- Debugging why an agent produced incorrect or incomplete output
- Establishing quality standards for a new agentic workflow
## When NOT to Use
| Instead of agentic-engineering | Use |
|-------------------------------|-----|
| You already have tasks and just need to plan them | `plan-mode-mastery` |
| You need to assemble a specialist agent team | `team-planner` |
| You need autonomous execution guardrails | `autopilot-patterns` |
## Core Principles
### 1. The 15-Minute Task Unit
**Rule:** Each agent dispatch should complete in roughly 15 minutes of human-equivalent focused work. In practice: 1–3 files changed, 1 clear outcome, no more than one decision required.
**Why:** Agents fail when context exceeds what fits in a single focused pass. Long tasks require the agent to hold too much state, make too many decisions, and produce outputs that are hard to verify.
**Signs a task is too large:**
- Description contains "and" more than twice
- Requires reading more than 5 files to complete
- Has more than one possible success state
- Cannot be verified by a single test or check
**Signs a task is too small:**
- It is just a file read or a lookup
- A single `edit` call handles it entirely
- No judgment is required
**Decomposition pattern:**
```text
Large task: "Implement user authentication with JWT and refresh tokens"
↓ decompose
T-01: Add User schema + bcrypt password field (DB layer only)
T-02: Implement POST /auth/login endpoint (validate + sign JWT)
T-03: Implement POST /auth/refresh endpoint (validate refresh token)
T-04: Add auth middleware (extract + verify JWT on protected routes)
T-05: Integration tests for T-02, T-03, T-04
```
Each task has one clear output that can be verified independently.
### 2. Eval-First Loop
**Rule:** Define the verification criterion before dispatching the agent, not after.
**Why:** Agents optimized toward a concrete pass/fail signal produce more correct output than agents working toward a vague goal. The verification criterion *is* the specification.
```text
❌ Vague:
"Implement the export function and make sure it works."
✅ Eval-first:
"Implement the export function.
Verification: `npm test -- export.test.ts` must pass with 0 failures.
If tests don't exist, write them first (AC: returns valid CSV for valid input,
returns 422 for invalid date range, returns empty CSV for empty result set)."
```
**Pattern in SQL:**
```sql
INSERT INTO todos (id, title, description) VALUES
('impl-export', 'Implement CSV export',
'Write src/services/export.ts. Verified by: npm test -- export.test.ts (all pass). If tests absent, write tests first.');
```
### 3. Explicit Input/Output Contracts
**Rule:** Every agent task must have a declared input and a declared output. Never rely on implicit context from the conversation history.
**Why:** Background agents start with no conversation history. Fleet agents run in isolated contexts. Agents that assume they "remember" previous turns produce inconsistent results.
**Input contract** — what the agent needs to start:
- Exact file paths to read
- Specific values to use (not "use the same approach as before")
- SQL queries to run for current state
**Output contract** — what the agent produces:
- Files created or modified (exact paths)
- SQL rows inserted or updated
- Return value if used as a sub-agent
```text
# Weak (implicit):
"Continue implementing the auth system."
# Strong (explicit contract):
Input: src/auth/schema.ts (exists), src/auth/middleware.ts (does not exist yet)
Task: Create src/auth/middleware.ts that reads JWT from Authorization header,
verifies with the secret in process.env.JWT_SECRET, attaches user to req.user.
Output: src/auth/middleware.ts created; exports verifyToken middleware function.
Verification: npm test -- auth.middleware.test.ts
```
### 4. Prefer Built-In Composition Over Wrapper Skills
**Rule:** When the platform can programmatically call an existing built-in workflow, reuse that
primitive instead of inventing a thin wrapper file around it.
**Why:** Built-ins already carry user expectations, maintenance, and platform-native behavior.
Duplicating them as near-identical local artifacts adds drift without adding capability.
Design handoffs around the real primitive:
```text
Goal: review the finished change before merge
Weak:
"After implementation, use our custom review wrapper and then summarize it."
Stronger:
"After implementation, trigger the platform's built-in review step, then return BLOCKER /
CONCERN / PASS findings plus the next action."
```
When translating upstream patterns, this is often an **adapt** rather than an **adopt** signal.
For example, Claude Code v2.1.108+ can chain built-in commands such as `/review`,
`/security-review`, or `/init` through its `Skill` tool. In Copilot CLI, preserve that
composition intent by calling the existing built-in command explicitly or routing to the closest
existing skill or agent flow rather than creating a redundant new skill.
### 5. Fail Fast, Surface Errors Early
**Rule:** Agents should stop and surface uncertainty rather than guess and continue.
**Why:** An agent that guesses wrong halfway through a task produces partial, hard-to-revert changes. An agent that stops early saves time.
Configure via prompt:
```text
If you are uncertain about the expected behavior, stop and surface the question
as a BLOCKER rather than making an assumption and continuing.
Format: BLOCKER: [question] [what you would assume if forced to continue]
```
### 6. State via SQL, Not Session Memory
**Rule:** Workflow state must live in SQL, not the agent's conversation memory.
**Why:** Agents compact, context windows expire, background agents start fresh. SQL state is persistent, queryable, and explicit.
```sql
-- Track multi-agent workflow state
CREATE TABLE IF NOT EXISTS workflow_state (
step TEXT PRIMARY KEY,
status TEXT DEFAULT 'pending',
output TEXT,
agent_id TEXT,
completed_at TEXT
);
-- Agent reads its input from SQL, not conversation history
SELECT output FROM workflow_state WHERE step = 'schema-design' AND status = 'done';
```
## Workflow: Decompose a Task for Agent Dispatch
1. **State the outcome** — one sentence: what exists when done?
2. **Identify the smallest completable unit** — can it be done in 15 min?
3. **Define the verification criterion** — what test/check proves it?
4. **Write the input contract** — what files/values does the agent need?
5. **Write the output contract** — what does the agent produce?
6. **Insert into SQL** — description must include verification criterion
```sql
INSERT INTO todos (id, title, description) VALUES
('auth-middleware',
'Create auth middleware',
'Input: src/auth/schema.ts (read).
Task: Create src/auth/middleware.ts, export verifyToken function.
Output: src/auth/middleware.ts created.
Verification: npm test -- auth.middleware.test.ts (all pass).');
```
## Task Decomposition Checklist
Before dispatching an agent task, confirm:
- [ ] Task completes in ~15 min (1–3 files, 1 outcome)
- [ ] Verification criterion is explicit and runnable
- [ ] Input files/values are named explicitly (no "use the context from before")
- [ ] Output artifacts are specified (exact paths or SQL rows)
- [ ] Failure mode is defined (what to do if verification fails)
- [ ] State needed across agents is in SQL, not assumed from conversation
## Anti-Patterns
| Anti-pattern | Fix |
|-------------|-----|
| "Implement feature X end to end" | Decompose into 5–7 15-minute tasks |
| Verification step is "check if it looks right" | Write a specific test, lint, or build check |
| Agent uses values from "our earlier conversation" | Put values in SQL or the task description explicitly |
| Agent silently recovers from errors | Require BLOCKER output when uncertain |
| 20-task plan dispatched at once | Batch 3–5 tasks, verify between batches |
## See Also
- [plan-mode-mastery](../plan-mode-mastery/SKILL.md) — structuring plans for Copilot execution
- [team-planner](../team-planner/SKILL.md) — dispatching multi-agent specialist teams
- [autopilot-patterns](../autopilot-patterns/SKILL.md) — safe autonomous execution patterns
- [eval-harness](../../testing/eval-harness/SKILL.md) — evaluation framework for LLM pipelines
- [product-capability](../../product/product-capability/SKILL.md) — engineering-ready capability specs with ACsRelated Skills
context-engineering
Use when designing prompts or agent tasks to optimize information delivery — minimize noise, maximize signal for AI agents
verification-before-completion
Use before claiming any task is done — run the exact command that proves the fix works, read the output, and only then report success.
using-git-worktrees
Use when you need multiple branches checked out at once — create isolated working directories for parallel development without cloning the repository repeatedly
triage
Use when a single issue needs structured triage — classify it, reproduce if needed, request missing information, and leave a durable brief or close-out note in the tracker.
to-issues
Use when a plan, spec, or PRD must become an actionable backlog — break it into thin dependency-aware issues that each deliver a verifiable vertical slice
sprint-workflow
Use when starting a new feature, refactor, or multi-step dev task — runs the full sprint cycle (Think → Plan → Build → Review → Test → Ship → Monitor) using Copilot CLI's plan/autopilot modes.
sprint-retro
Use at the end of a sprint to run a data-driven retrospective — analyzes session history and git metrics to surface what shipped, what slowed you down, and concrete improvements.
security-audit
Use when a codebase needs a formal security audit beyond a quick scan — applies OWASP Top 10 and STRIDE threat modeling from a CSO perspective to surface systemic vulnerabilities.
release
Use when a sprint or feature is complete and ready to ship — tags the version, generates GitHub Release notes, runs rollout or smoke verification, and publishes to npm/PyPI/Docker registries.
prompt-optimizer
Use when a rough prompt, vague idea, or task description needs to become a finished copy-pasteable prompt for a chat-based LLM - rewrite it into one ready-to-send prompt with no blanks, no placeholders, and a clear output shape.
outside-voice
Use when you need an independent second opinion before, during, or after implementation — run challenge, consult, or review mode in a direct builder-to-builder voice
llm-wiki
Use when research or domain knowledge keeps getting rediscovered across sessions — build a supplementary markdown wiki that compounds synthesized knowledge without replacing GitHub or committed project guidance