skills/lint-agent/SKILL.md
Lint a Claude Code agent against best practices. Triggers on 'lint this agent', 'check my agent', 'review this agent', or /lint-agent.
npx skillsauth add agentic-cookbook/tools lint-agentInstall 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.
If $ARGUMENTS is --version, respond with exactly:
lint-agent v1.1.0
Then stop. Do not continue with the rest of the skill.
Otherwise, print lint-agent v1.1.0 as the first line of output, then proceed.
Version check: Read ${CLAUDE_SKILL_DIR}/SKILL.md from disk and extract the version: field from frontmatter. If it differs from this skill's version (1.0.1), print:
⚠ This skill is running v1.1.0 but vA.B.C is installed. Restart the session to use the latest version.
Continue running — do not stop.
Lint a Claude Code agent file against best practices and structural requirements. Produces a structured report with PASS/WARN/FAIL ratings and actionable recommendations.
Resolve $ARGUMENTS to an agent .md file.
$ARGUMENTS is provided:Path check: If $ARGUMENTS contains / or ends with .md, treat it as a file path.
tools, disallowedTools, permissionMode, maxTurns) — it's an agent, use it.SKILL.md, print: ERROR: Not an agent — detected a skill. Use /lint-skill instead. and stop..md without agent frontmatter: ERROR: Not an agent — no agent frontmatter found. Use /lint-rule instead. and stop.Search string: Otherwise, treat $ARGUMENTS as a search string. Use Glob to find .claude/agents/*.md. Filter to files whose name contains the search string (case-insensitive).
$ARGUMENTS is empty:Session context: Check if an agent file was recently created, edited, or read in this conversation. If so, offer it with AskUserQuestion: "Lint <filename>?" with options "Yes" and "No, choose another".
Current directory: Check if the current directory is inside .claude/agents/ and contains a .md file — use it.
Prompt: If nothing found, use AskUserQuestion: "Which agent? Enter a name or path." The user's response re-enters the search string flow above.
.md filePrint a brief header:
=== LINT: <name> ===
Type: Agent
Path: <path>
Lines: <line count>
Fetch these URLs using WebFetch to get the latest official guidance:
https://code.claude.com/docs/en/sub-agentshttps://code.claude.com/docs/en/best-practicesIf any fetch fails, note it and continue with the bundled checklist alone.
Load the review criteria:
${CLAUDE_SKILL_DIR}/references/agent-checklist.md${CLAUDE_SKILL_DIR}/references/agent-structure-reference.mdEvaluate every criterion from the checklist against the target. For each check:
--- STRUCTURE & FORMAT ---
[PASS] S01: YAML frontmatter present
[WARN] S05: Description could use more natural trigger keywords
-> Add phrases users would say when requesting this agent
...
--- CONTENT QUALITY ---
[PASS] C01: Single responsibility — clear, focused purpose
[WARN] C04: No error handling instructions found
-> Add guidance for what to do when <specific scenario> fails
...
--- BEST PRACTICES ---
[PASS] B01: Verification method provided
[WARN] B07: No scoping for file exploration — agent could read unbounded files
-> Add limits on exploration scope
...
--- AGENT CRITERIA ---
[PASS] A01: name and description present
[WARN] A06: No maxTurns set — agent could run indefinitely
-> Add maxTurns: <suggested-value> for bounded execution
...
After all sections, print the summary:
=== SUMMARY ===
Pass: <n> | Warn: <n> | Fail: <n> | N/A: <n>
If there are any WARN or FAIL results, print a prioritized recommendations list (FAILs first, then WARNs, max 10).
The review is complete. Do not modify any files.
testing
Validate cookbook integrity — frontmatter, cross-references, indexes, skills, rules, file placement. Run from cookbook or consuming project.
tools
Remove the agentic cookbook from your project. Removes rules, state files, CLAUDE.md section, and optionally global plugins and status line.
tools
Analyze a macOS SwiftUI app and plan its conversion to native AppKit. Triggers on 'port to AppKit', 'convert SwiftUI to AppKit', 'remove SwiftUI', or /port-swiftui-to-appkit.
tools
--- name: plan-cookbook-recipe version: 2.3.0 description: Interactively design a new cookbook recipe through guided discussion disable-model-invocation: true context: fork allowed-tools: Read, Glob, Grep, Agent, Write, Edit, AskUserQuestion, Bash(git *), Bash(mkdir *), Bash(ls *) argument-hint: [recipe-name] [--version] --- # Plan Agentic Cookbook Recipe v2.3.0 ## Startup **First action**: If `$ARGUMENTS` is `--version`, print `plan-cookbook-recipe v2.3.0` and stop. Otherwise, print `plan-c