Skill Authoring Rule
Guidelines for creating MoAI skills following the Agent Skills open standard (agentskills.io).
Skill Authoring
Guidelines for creating MoAI skills following the Agent Skills open standard (agentskills.io).
YAML Frontmatter Schema
MoAI skills follow the Agent Skills standard with MoAI-specific extensions.
Standard Fields (agentskills.io)
Required fields:
- name: Skill identifier, lowercase with hyphens, max 64 characters (pattern: moai-{category}-{name})
- description: Purpose description using YAML folded scalar (>), max 1024 characters
Optional standard fields:
- license: SPDX license identifier (default: Apache-2.0)
- compatibility: Target platform description, max 500 characters (default: Designed for Claude Code)
- allowed-tools: Space-delimited string of tool names the skill can use (experimental)
- user-invocable: Boolean to control slash command menu visibility (default: true, set to false to hide from / menu)
metadata Map
Key-value pairs where both keys and values MUST be strings. Used for simple custom properties.
Common metadata keys:
- version: Semantic version as string (e.g., "1.0.0")
- category: foundation, workflow, domain, language, platform, library, tool
- status: active, experimental, deprecated
- updated: ISO date as string (e.g., "2026-01-28")
- modularized: Whether content is split into modules ("true" or "false")
- tags: Comma-separated tag list as single string
- author: Skill author name
- context7-libraries: Comma-separated library identifiers for Context7 MCP
- related-skills: Comma-separated related skill names
- aliases: Comma-separated alternative names
- argument-hint: Usage hint for user-invocable skills
- context: Contextual description for skill behavior
- agent: Target agent name
MoAI Extension Fields
Complex structured fields kept at top level with standardized comments.
progressive_disclosure: Token optimization configuration
- enabled: boolean
- level1_tokens: approximate tokens for metadata level
- level2_tokens: approximate tokens for body level
triggers: Loading trigger conditions
- keywords: list of trigger keywords
- agents: list of agent names that load this skill
- phases: list of workflow phases
- languages: list of programming languages
Schema Example
---
name: moai-example-skill
description: >
Brief description of what this skill does, max 1024 characters.
Use YAML folded scalar (>) for multi-line descriptions.
license: Apache-2.0
compatibility: Designed for Claude Code
allowed-tools: Read Grep Glob Bash mcp__context7__resolve-library-id mcp__context7__get-library-docs
user-invocable: false
metadata:
version: "1.0.0"
category: "domain"
status: "active"
updated: "2026-01-28"
modularized: "false"
tags: "example, demo, template"
# MoAI Extension: Progressive Disclosure
progressive_disclosure:
enabled: true
level1_tokens: 100
level2_tokens: 5000
# MoAI Extension: Triggers
triggers:
keywords: ["example", "demo"]
agents: ["expert-backend"]
phases: ["run"]
---
Key Format Rules
allowed-tools format: Space-delimited string, not YAML array.
- Correct:
allowed-tools: Read Grep Glob Bash - Wrong:
allowed-tools: [Read, Grep, Glob, Bash]
metadata values: All values must be quoted strings.
- Correct:
version: "1.0.0" - Wrong:
version: 1.0.0
description format: Use YAML folded scalar (>) for readability.
- Correct:
description: >\n Multi-line description here. - Wrong:
description: "Long description in quotes"
Progressive Disclosure
Three-level system for token efficiency:
Level 1 (Metadata):
- Tokens: ~100
- Content: name, description, version, triggers
- Loading: Always for skills in agent frontmatter
Level 2 (Body):
- Tokens: ~5000
- Content: Full documentation, code examples
- Loading: When trigger conditions match
Level 3 (Bundled):
- Tokens: Variable
- Content: reference.md, modules/, examples/
- Loading: On-demand by Claude
Tool Permissions by Category
Foundation Skills:
- Allowed: Read, Grep, Glob, Context7 MCP
- Never: Bash, Task
Workflow Skills:
- Allowed: Read, Write, Edit, Grep, Glob, Bash, TodoWrite
- Conditional: AskUserQuestion (MoAI only), Task (managers only)
Domain Skills:
- Allowed: Read, Grep, Glob, Bash
- Conditional: Write, Edit (implementation tasks only)
- Never: AskUserQuestion, Task
Language Skills:
- Allowed: Read, Grep, Glob, Bash, Context7 MCP
- Conditional: Write, Edit (implementation tasks only)
- Never: AskUserQuestion, Task
Trigger Configuration
triggers:
keywords: ["api", "database", "authentication"]
agents: ["manager-spec", "expert-backend"]
phases: ["plan", "run"]
languages: ["python", "typescript"]
Best Practices
- Use minimum required permissions
- Prefer Read before Write/Edit operations
- Prefer Edit over Bash for file modifications
- Include 5-10 keywords per skill for accurate triggering
- Overestimate token usage by 10-20% for safety
- Use YAML folded scalar (>) for description field
- Keep all metadata values as quoted strings
- Use space-delimited format for allowed-tools
- Mark MoAI extension fields with standardized comments