.agents/skills/create-agnostic-skill/SKILL.md
Use when adding a reusable workflow skill for AI coding agents. Scaffolds a new .agents/skills skill using the Agent Skills open standard.
npx skillsauth add tkstang/open-agent-toolkit create-agnostic-skillInstall 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.
Create a new skill for AI coding agents using the Agent Skills open standard. Skills live in .agents/skills/ (canonical source) and work across Claude Code, Cursor, Codex CLI, Gemini CLI, GitHub Copilot, and 20+ other compatible agents.
For deep-dive research on cross-provider compatibility, frontmatter behavior, and distribution patterns, see .agents/docs/skills-guide.md.
Use when:
If you are creating a new oat-* skill:
/create-oat-skill (it references this baseline guidance and adds OAT-specific conventions like {PROJECTS_ROOT} resolution and separator progress banners).Don't create a skill when:
Parse the following from $ARGUMENTS:
my-new-skill)If not provided in arguments, ask for:
Required:
create-ticket, docs-review)Use when [trigger condition]. [What it does for disambiguation]. Allowed trigger stems: Use when, Run when, or Trigger when.Optional:
/ menu? (default: yes)The context window is a shared resource. Skills share context with everything else the agent needs. Structure information in three levels:
references/, scripts/, assets/ loaded as-neededWriting principles:
Section structure (adjust based on complexity):
For detailed guidance, see references/skill-template.md.
Template:
---
name: skill-name
version: 1.0.0
description: Use when [trigger condition]. [What it does for disambiguation].
argument-hint: '[arg1] [--flag]'
disable-model-invocation: true
allowed-tools: Read, Write, Glob, Grep
user-invocable: true
---
# Skill Title
Brief description of what this skill does.
## When to Use
Use when:
- Condition 1
- Condition 2
## When NOT to Use
Don't use when:
- Condition 1
- Condition 2
## Arguments
Parse from `$ARGUMENTS`:
- **required-arg**: (required) Description
- **--optional-flag**: (optional) Description with default
## Workflow
### Step 1: First Step
Instructions...
### Step 2: Second Step
Instructions...
## Examples
### Basic Usage
\`\`\`
/skill-name arg1 --flag
\`\`\`
### Conversational
\`\`\`
Natural language request that triggers this skill
\`\`\`
## Troubleshooting
**Common issue:**
- Solution
## Success Criteria
- ✅ Criterion 1
- ✅ Criterion 2
Frontmatter notes:
argument-hint, allowed-tools, user-invocable, context, hooks are Claude Code specificname: max 64 chars for cross-provider portability (Codex allows 100, but 64 is the spec limit)version: include valid semver and start new skills at 1.0.0description: single line, ≤ 500 chars (Codex enforces single-line ≤ 500 chars; spec allows 1024)version on future edits: patch for fixes/clarifications, minor for backward-compatible behavior additions, major for breaking workflow/interface changesWriting the description field:
The description is your primary routing mechanism — agents load only name + description at startup across all installed skills, then semantic-match against the user's prompt. The SKILL.md body handles "what it does" once loaded. The description's job is to win the routing decision.
Use when [trigger condition]. [What it does for disambiguation]. Run when and Trigger when are also valid trigger stems when wording is clearer.Examples:
Present the plan and wait for user approval before creating files.
Create the skill at .agents/skills/{skill-name}/SKILL.md
Key requirements:
version: 1.0.0 in frontmatterSupporting files (create if needed):
Skills can include supporting files in subdirectories:
.agents/skills/{skill-name}/
├── SKILL.md # Main instructions (required)
├── scripts/ # Executable code agents can run
│ └── setup.sh
├── references/ # Additional docs loaded on demand
│ └── api-spec.md
└── assets/ # Templates, images, data files
└── template.md
| Directory | Purpose |
| ------------- | --------------------------------------------- |
| scripts/ | Executable code that agents can run |
| references/ | Additional documentation loaded on demand |
| assets/ | Static resources like templates or data files |
After creating the skill, run OAT sync to update provider views:
oat sync
Verify:
.agents/skills/{skill-name}/SKILL.mdversion: (new skills start at 1.0.0)AGENTS.mdoat-, run pnpm oat:validate-skills and fix any findingsProvide:
/skill-namecreate-pr-description, docs-new)docs-new, docs-update, docs-review)name field in frontmatterversion for edits: patch = fixes/clarifications, minor = backward-compatible additions, major = breaking changesSkills that need user decisions (parameter choices, confirmations, disambiguation) should include interactive prompts in their workflow steps.
Write instructions portably: Use natural language like "Ask the user which approach they prefer" in workflow prose. All providers can handle this conversationally.
Host-specific structured input guidance: If the skill benefits from structured prompts, document the host split explicitly in the workflow:
AskUserQuestion when availableDo not hard-code a specific Codex question tool name in skill prose unless the runtime contract is guaranteed. Prefer capability-based wording ("structured user-input tooling when available") so the skill remains portable across Codex hosts.
Claude Code enhancement: Add AskUserQuestion to allowed-tools in frontmatter. Claude Code renders these as structured UI prompts with selectable options, headers, and multi-select support. Other providers ignore the field and handle the same instructions as conversational questions.
When to include interactive input:
When NOT to:
For multi-step skills, print brief progress updates so the user knows what's happening:
[N/N] step indicators for sequential work (e.g., [1/3] Resolving dependencies…).agents/docs/ (not duplicated per skill)references/ directory[guide](../../docs/my-guide.md)Legend: ✅ supported | ⚠️ provider-specific | 💤 ignored | ❓ unknown
| Field | Spec | Claude Code | Cursor | Codex CLI | Gemini CLI |
| -------------------------- | --------------- | ----------- | ------ | ----------- | ---------- |
| name | ✅ required | ✅ | ✅ | ✅ required | ✅ |
| description | ✅ required | ✅ | ✅ | ✅ required | ✅ |
| license | ✅ optional | ❓ | ✅ | 💤 | ❓ |
| compatibility | ✅ optional | ❓ | ✅ | 💤 | ❓ |
| metadata | ✅ optional | ❓ | ✅ | 💤 | ❓ |
| allowed-tools | ⚠️ experimental | ✅ | ❓ | 💤 | ❓ |
| disable-model-invocation | ❌ | ✅ | ✅ | 💤 | ❓ |
| user-invocable | ❌ | ✅ | ❓ | 💤 | ❓ |
| argument-hint | ❌ | ✅ | ❓ | 💤 | ❓ |
| context / agent | ❌ | ✅ | ❌ | 💤 | ❓ |
| hooks | ❌ | ✅ | ❌ | 💤 | ❓ |
Key takeaway: name + description are the only truly portable interface. Codex ignores unknown keys (safe to include Claude fields), so layer tool-specific fields on top of a portable baseline. For the full matrix, see .agents/docs/skills-guide.md.
| Skill Type | Detail Level | Examples | | --------------------- | ------------ | ------------------------------ | | Complex workflows | Detailed | docs-new, docs-review | | Simple command-like | Concise | update-doc-refs, create-ticket | | Reference/standards | Detailed | repo-documentation | | Helper (auto-invoked) | Moderate | read-relevant-docs |
/create-agnostic-skill my-new-skill
/create-agnostic-skill deploy-preview
Create a new skill called code-review that helps review pull requests
I need a skill for running database migrations
.agents/docs/skills-guide.md — local deep-dive: compatibility matrix, resolved questions, patterns.agents/docs/reference-architecture.md — local: where skills/agents/docs live and whySkill not appearing in menu:
oat sync to regenerate provider viewsuser-invocable is not set to false (Claude Code)Skill invocation fails:
.agents/skills/{name}/SKILL.mdSupporting files not loading:
Successful skill creation:
.agents/skills/{name}/SKILL.mdoat sync run successfullyoat-* skills, pnpm oat:validate-skills passes/skill-namedocumentation
Use when OAT implementation changes and repository reference docs must be synchronized. Updates .oat/repo/reference to match current behavior.
business
Merge multiple analysis artifacts into a single coherent report with provenance tracking. Reads existing artifacts from /deep-research, /analyze, and /compare.
testing
Use when the user questions or suspects an agent claim is wrong. Adversarially gathers evidence to verify or refute the claim using the best sources available in the current environment.
tools
Use when prioritizing backlog work or evaluating a roadmap. Produces value-effort ratings, dependency mapping, and execution recommendations.