Source profileQuality 94/100Review permissions

xiaolai/nlpm/skills/nlpm/writing-agents/SKILL.md

writing-agents

How to write Claude Code agents that trigger reliably, use the right model, and produce consistent output. Use when creating, improving, or reviewing agent definitions.

Source repository stars
104
Declared platforms
1
Static risk flags
2
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Scope: covers Claude Code agent .md file authoring (Markdown + frontmatter at .claude/agents/). Codex CLI defines agents differently — as [agents.] TOML tables in .codex/config.toml; see [[nlpm:conventions-codex]]. Antigravity subagents are under-documented at this writing; see…

Best for

  • Use when creating, improving, or reviewing agent definitions.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/xiaolai/nlpm --skill "skills/nlpm/writing-agents"
Safe inspection promptEditorial

Inspect the Agent Skill "writing-agents" from https://github.com/xiaolai/nlpm/blob/660db42b2f2351b5f21e2022ce8785e66218a724/skills/nlpm/writing-agents/SKILL.md at commit 660db42b2f2351b5f21e2022ce8785e66218a724. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Instructions

    1. [First step] 2. [Second step] 3. [Third step] ...

    [First step][Second step][Third step]
  2. 02

    1. Example Blocks Make or Break Triggering

    Without blocks, Claude guesses when to dispatch your agent. With them, it pattern-matches against real scenarios.

    Without blocks, Claude guesses when to dispatch your agent. With them, it pattern-matches against real scenarios.Minimum: 2 examples. Ideal: 3 -- one obvious trigger, one edge case, one non-obvious.Problems: generic context, generic query, no decision logic shown.
  3. 03

    Example Block Anatomy

    Review the “Example Block Anatomy” section in the pinned source before continuing.

    Review and apply the “Example Block Anatomy” source section.
  4. 04

    Bad Example (too vague -- 40% trigger accuracy)

    Problems: generic context, generic query, no decision logic shown.

    Problems: generic context, generic query, no decision logic shown.
  5. 05

    Good Example (specific scenario -- 92% trigger accuracy)

    Why it works: specific context (auth module, pre-PR), realistic query (how users actually talk), decision logic visible (what the agent will check).

    Why it works: specific context (auth module, pre-PR), realistic query (how users actually talk), decision logic visible (what the agent will check).

Permission review

Static risk signals and limitations

Reads files

low · line 126

The documentation asks the agent to read local files, directories, or repositories.

| Read | Agent reads file contents |

Reads files

low · line 269

The documentation asks the agent to read local files, directories, or repositories.

Use Read to examine each file

Runs scripts

medium · line 276

The documentation asks the agent to run terminal commands or scripts.

Do NOT run shell commands

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score94/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars104SourceRepository attention, not individual Skill quality
Compatibility1 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
xiaolai/nlpm
Skill path
skills/nlpm/writing-agents/SKILL.md
Commit
660db42b2f2351b5f21e2022ce8785e66218a724
License
ISC
Collected
2026-08-04
Default branch
main
View the original SKILL.md

Writing Agents

Scope: covers Claude Code agent .md file authoring (Markdown + frontmatter at .claude/agents/). Codex CLI defines agents differently — as [agents.<name>] TOML tables in .codex/config.toml; see [[nlpm:conventions-codex]]. Antigravity subagents are under-documented at this writing; see [[nlpm:conventions-antigravity]]. For multi-agent orchestration, see [[orchestration]]. For plugin architecture, see [[writing-plugins]].

1. Example Blocks Make or Break Triggering

Without <example> blocks, Claude guesses when to dispatch your agent. With them, it pattern-matches against real scenarios.

Minimum: 2 examples. Ideal: 3 -- one obvious trigger, one edge case, one non-obvious.

Example Block Anatomy

<example>
Context: [what the user is doing -- not just "user needs help"]
user: "[realistic user message that should trigger this agent]"
assistant: "[what Claude says when dispatching -- shows the decision logic]"
</example>

Bad Example (too vague -- 40% trigger accuracy)

<example>
Context: User needs code review
user: "review my code"
assistant: "I'll use the reviewer agent."
</example>

Problems: generic context, generic query, no decision logic shown.

Good Example (specific scenario -- 92% trigger accuracy)

<example>
Context: User just pushed changes to the authentication module and wants feedback before merging
user: "Can you check if the auth changes look good before I create the PR?"
assistant: "I'll dispatch the security-reviewer agent to check the auth changes for vulnerabilities, token handling, and session management best practices."
</example>

Why it works: specific context (auth module, pre-PR), realistic query (how users actually talk), decision logic visible (what the agent will check).

The Three-Example Pattern

ExamplePurposeWhat it demonstrates
1. Obvious triggerBaseline dispatchUser explicitly asks for what the agent does
2. Edge caseBoundary behaviorUser asks something adjacent -- agent should still trigger
3. Non-obviousDiscoveryUser doesn't know the agent exists but their need matches

Example for a "performance-profiler" agent:

<!-- Example 1: Obvious -->
<example>
Context: User wants to profile their API
user: "Profile the /api/users endpoint, it's slow"
assistant: "I'll dispatch the performance-profiler to trace the /api/users endpoint..."
</example>

<!-- Example 2: Edge case -->
<example>
Context: User notices high memory usage but doesn't mention profiling
user: "The app uses 2GB of RAM after running for an hour, is there a leak?"
assistant: "I'll dispatch the performance-profiler to analyze memory allocation patterns..."
</example>

<!-- Example 3: Non-obvious -->
<example>
Context: User is comparing two implementation approaches
user: "Should I use a JOIN here or two separate queries?"
assistant: "I'll dispatch the performance-profiler to benchmark both approaches..."
</example>

2. Model Selection

Task typeModelSignal words in bodyExamples
Mechanical / parsing / formatting / countinghaikucount, list, extract, format, parse, scanscanner, parser, formatter, counter, lister
Analysis / reasoning / moderate judgmentsonnetanalyze, review, evaluate, summarize, comparelinter, reviewer, extractor, summarizer
Complex judgment / orchestration / multi-agentopuscoordinate, decide, assess, synthesize, architectQC coordinator, architect, strategy planner

Quick Heuristic

Count the instruction lines in your agent body. Then check for judgment words.

< 20 instruction lines AND no judgment words → haiku
20-50 instruction lines OR judgment words → sonnet
> 50 instruction lines OR coordination logic → opus

Judgment words: evaluate, decide, assess, determine, weigh, prioritize, recommend, judge, infer, synthesize.

Cost Impact

ModelRelative costWhen to upgrade
haiku1xAgent produces wrong output on edge cases
sonnet10xAgent produces wrong output on easy cases
opus30xAgent coordinates other agents or makes architectural decisions

Rule: start with haiku, upgrade only when output quality requires it.

3. Tool Least-Privilege

Only list tools the agent body actually references. Every extra tool is a potential misuse vector.

Common Mistakes

Agent typeCommon over-grantCorrect tools
Audit/review agentWrite, Edit, BashRead, Glob, Grep
Code generatorRead, Grep (unused)Write, Edit, Bash
OrchestratorRead, Write (does no IO)Task
ScannerBash (uses grep)Grep, Glob, Read

Tool Reference

ToolWhen to include
ReadAgent reads file contents
WriteAgent creates new files
EditAgent modifies existing files
GlobAgent searches for files by pattern
GrepAgent searches file contents
BashAgent runs shell commands (linters, tests, builds)
TaskAgent dispatches sub-agents
FetchAgent makes HTTP requests

4. Output Format

Every agent MUST define its output format in the body. Without it, output varies between invocations -- making results unparseable by parent agents.

Pattern: Structured Report

## Output Format

### {Section Title}
| Column1 | Column2 | Column3 |
|---------|---------|---------|
| ...     | ...     | ...     |

### Summary
- Total items: {N}
- Issues found: {N}
- Pass/Fail: {verdict}

Pattern: Severity-Tagged Findings

## Output Format

For each finding, output:

**[SEVERITY] Finding title**
- File: `path/to/file`
- Line: {N}
- Finding: {description}
- Fix: {concrete suggestion}

Severity levels: CRITICAL > HIGH > MEDIUM > LOW > INFO

Pattern: Pass/Fail Gate

## Output Format

Final line must be exactly one of:
- `PASS: All checks passed`
- `WARN: {N} warnings found (see above)`
- `FAIL: {N} errors found (see above)`

5. System Prompt Structure

Order matters. Claude reads top-to-bottom and front-loads early instructions.

The Five Sections

## Mission
[1-2 sentences: what this agent does and WHY it exists]

## Instructions
1. [First step]
2. [Second step]
3. [Third step]
...

## Boundaries
- Do NOT [thing that would be harmful]
- Do NOT [thing that's out of scope]
- If [ambiguous situation], then [explicit resolution]

## Output Format
[Exact template -- see section 4 above]

## Error Handling
- If no files found: report "No matching files" and exit
- If tool fails: report the error and continue with remaining work
- If scope is unclear: analyze the narrower interpretation

Section Sizing

SectionTarget linesOver-budget signal
Mission2-3More than one paragraph
Instructions5-15More than 20 numbered steps
Boundaries3-7More than 10 "Do NOT" items
Output Format5-15Defining more than 3 output sections
Error Handling3-5More than 5 error cases

Total agent body: aim for 25-45 lines. Over 60 lines means the agent is doing too much -- split it.

6. Worked Example

Before (score 52/100)

---
name: code-checker
description: Check code
model: opus
tools: [Read, Write, Edit, Bash, Grep, Glob, Task]
---
You are a code checker. Check the user's code for issues.
Look at the files and find problems. Report what you find.

Problems:

  • Description: 0 trigger phrases, no "Use when..." (-30)
  • Model: opus for a simple review task (-10)
  • Tools: 7 tools granted, body uses maybe 3 (-10)
  • No examples: unreliable triggering (-15)
  • No output format: inconsistent results (-15)
  • No boundaries: scope creep (-10)
  • No error handling: silent failures (-10)

After (score 95/100)

---
name: code-checker
description: "Static analysis agent — checks code for bugs, type errors, and anti-patterns. Use when reviewing code quality, running pre-commit checks, or validating changes before PR."
model: sonnet
tools: [Read, Glob, Grep]
---
## Mission
Analyze source code files for bugs, type errors, and anti-patterns.
Produce a structured report with severity-tagged findings.

## Instructions
1. Use Glob to discover files matching the target pattern
2. Use Read to examine each file
3. Use Grep to cross-reference imports and usage patterns
4. For each finding, classify severity and provide a concrete fix
5. Produce the output report

## Boundaries
- Do NOT modify any files (read-only analysis)
- Do NOT run shell commands
- Do NOT report style issues (defer to linter)
- If no target pattern specified, analyze all files in src/

## Output Format

For each finding:

**[SEVERITY] Finding title**
- File: `path/to/file`
- Line: {N}
- Finding: {description}
- Fix: {concrete fix}

Final line:
- `PASS: No issues found`
- `WARN: {N} warnings found`
- `FAIL: {N} errors found`

## Error Handling
- If no files match the pattern: report "No matching files for pattern: {X}"
- If a file cannot be read: skip it and note in the report
<example>
Context: User just finished implementing a new feature and wants a quality check
user: "Check the auth module for any bugs before I push"
assistant: "I'll dispatch the code-checker agent to analyze src/auth/ for bugs, type errors, and anti-patterns."
</example>

<example>
Context: User is debugging a production issue and suspects a code defect
user: "Something's wrong with the payment flow, can you scan it?"
assistant: "I'll dispatch the code-checker to analyze the payment module for potential bugs and logic errors."
</example>

Changes made:

  1. Description: 0 -> 6 trigger phrases (+30)
  2. Model: opus -> sonnet (analysis-tier task: reasoning, not orchestration; -20x cost) (+10)
  3. Tools: 7 -> 3 (read-only analysis needs read-only tools) (+10)
  4. Added 2 examples (+15)
  5. Defined output format (+15)
  6. Added boundaries (+10)
  7. Added error handling (+5)

7. Common Mistakes

MistakeImpactFix
No examples40% trigger accuracyAdd 2-3 specific scenario examples
Opus for mechanical work30x cost for same resultUse haiku for parsing, sonnet for analysis
All tools grantedAgent writes when it should only readList only tools the body references
No output formatDifferent format each runDefine exact output template
Body over 60 linesAgent is doing too muchSplit into focused sub-agents
"Be thorough" in bodyMeaningless fillerReplace with specific instructions
No error handlingSilent failuresAdd 3-5 error cases with resolution

Alternatives

Compare before choosing