Skills
Tank skills are reusable packages of instructions and code that teach AI agents how to perform specific tasks. Think of them as NPM packages for AI capabilities — versioned, dependency-managed, and security-scanned.What is a Skill?
A skill is a packaged collection of:- SKILL.md — Human-readable instructions that explain what the skill does and how to use it
- skills.json — Manifest with metadata, dependencies, and permission declarations
- Supporting files — Code, templates, data files, or configuration needed by the skill
Skills are installed locally in
.tank/skills/ and can be referenced by AI agents to gain new capabilities without modifying the agent’s core code.SKILL.md Format
Every skill must include aSKILL.md file — this is the instruction manual for AI agents. The format is flexible Markdown, but should follow these conventions:
Basic Structure
Example: Google Sheets Skill
Here’s an excerpt from a real skill:Skill Package Structure
A typical skill package looks like this:Naming Conventions
Skill names must follow NPM-style scoped naming:- Format:
@org/skill-name - Lowercase only with hyphens allowed
- Scoped: Must include organization prefix (e.g.,
@tank/google-sheets) - 214 characters or fewer
Example Skills
Simple Tool Skill
Skills with Dependencies
Skills can depend on other skills. This is declared inskills.json:
FAQ: When should I create a new skill vs. update an existing one?
FAQ: When should I create a new skill vs. update an existing one?
Create a new skill when:
- The functionality is unrelated to existing skills
- You want to share it with others or across projects
- It has distinct permission requirements
- You’re adding features to an existing capability
- Fixing bugs or improving documentation
- The change is backward-compatible (minor/patch version bump)
Best Practices
Writing SKILL.md
- Be concise — AI agents have limited context windows
- Use examples — Show specific API calls or command patterns
- Explain permissions — Make it clear why each permission is needed
- List capabilities explicitly — Bullet points work better than prose
- Include error handling — Document common failure modes
Packaging
- Keep it small — Maximum 50MB per package, 1000 files
- No binaries — Text files only (code, markdown, JSON, YAML)
- Minimal dependencies — Fewer dependencies = faster installs and fewer security risks
- Version carefully — Follow semantic versioning strictly
Security
- Declare all permissions — Undeclared permissions will be denied at runtime
- Request minimal access — Only ask for what you need
- No hardcoded secrets — Use environment variables or user-provided credentials
- Scan before publishing —
tank publishautomatically runs security scans
Next Steps
- Manifest Format — Learn about skills.json structure
- Permissions — Understand the permission model
- Security Scanning — How Tank validates skills