Otto Skills Writing Guide
> **Version**: 1.0.0 > **Last Updated**: 2025-11-04 > **Audience**: Skill authors, Otto contributors, domain experts
Version: 1.0.0
Last Updated: 2025-11-04
Audience: Skill authors, Otto contributors, domain experts
Table of Contents
- Introduction
- What Are Skills?
- When to Create a Skill
- Skill Architecture
- File Structure
- Frontmatter Reference
- Content Structure
- Writing Effective Descriptions
- Step-by-Step Creation Guide
- Complete Skill Examples
- Tool Integration
- Testing Your Skill
- Best Practices
- Common Mistakes
- Troubleshooting
- Publishing & Sharing
Introduction
This guide teaches you how to create effective skills for Otto, an AI agent platform. Skills are markdown files that provide Otto with specialized knowledge, workflows, and best practices for specific domains or tasks.
What You'll Learn
- How to structure skill files
- Writing descriptions that match user intent
- Creating actionable instructions
- Integrating with Otto's tools
- Testing and debugging skills
- Best practices for skill authorship
Prerequisites
- Basic understanding of Otto's architecture
- Familiarity with Markdown syntax
- YAML knowledge for frontmatter
- Understanding of your skill's domain
What Are Skills?
Definition
Skills are modular knowledge packages that enhance Otto's capabilities in specific domains. They provide:
- Structured workflows - Step-by-step processes
- Best practices - DO/DON'T guidelines
- Domain expertise - Specialized knowledge
- Tool integration - How to use specific tools
- Templates - Reusable patterns
How Skills Work
Key Characteristics
- Semantic Matching - Found automatically via embeddings
- Context Injection - Added to agent's prompt
- Tool Awareness - Can restrict available tools
- Modular - One skill = one capability
- Reusable - Applied across multiple tasks
When to Create a Skill
Good Candidates for Skills
✅ Structured Processes
- Multi-step workflows
- Methodologies (Agile, TDD, etc.)
- Review processes
- Troubleshooting procedures
✅ Domain Expertise
- Industry-specific knowledge
- Technical standards
- Compliance requirements
- Best practices
✅ Common Patterns
- Recurring task types
- Standard formats
- Communication templates
- Analysis frameworks
✅ Quality Gates
- Code review criteria
- Security checklists
- Testing strategies
- Documentation standards
Poor Candidates for Skills
❌ Simple Actions
- Single tool calls
- Basic file operations
- Simple queries
❌ Overly General Knowledge
- "How to use computers"
- "General productivity tips"
- Too broad to be actionable
❌ Constantly Changing Information
- Real-time data
- Current events
- Version-specific details (unless versioned skills)
❌ Personal Preferences Without Rationale
- "I like it this way"
- No documented benefit
- Arbitrary style choices
Decision Matrix
| Scenario | Create Skill? | Why |
|---|---|---|
| 4-phase debugging process | ✅ Yes | Structured, reusable workflow |
| Professional email templates | ✅ Yes | Common pattern with best practices |
| API design best practices | ✅ Yes | Domain expertise, quality gates |
| "Send an email" | ❌ No | Simple tool call |
| "Be nice" | ❌ No | Too general, not actionable |
| Today's stock prices | ❌ No | Real-time data, use tools instead |
Skill Architecture
Directory Structure
Skill Discovery Paths
Otto searches for skills in three locations (priority order):
- Project Skills:
skills/(team-shared, in repo) - Global Skills:
~/.otto/skills/(user-wide) - Plugin Skills: Via marketplace (future)
Recommendation:
- Use project skills for team-specific workflows
- Use global skills for personal productivity patterns
Category Organization
Organize skills into logical categories:
File Structure
Anatomy of a Skill File
Required Sections
Every skill MUST include:
- Frontmatter - Metadata for matching and organization
- Title - Clear, descriptive heading
- When to Use - Explicit trigger conditions
- Core Content - Main instructions/workflow
- Best Practices - DO/DON'T guidelines
Recommended Sections
Enhance your skill with:
- Overview - Brief introduction
- Examples - Concrete demonstrations
- Integration with Tools - Tool usage guidance
- Remember - Key takeaways
- Common Pitfalls - What to avoid
- Further Reading - References
Frontmatter Reference
Required Fields
name
Type: String
Purpose: Display name for the skill
Guidelines:
- Clear and descriptive
- 2-5 words ideal
- Use title case
- Unique within category
Examples:
description
Type: String
Purpose: CRITICAL - Used for semantic matching
Guidelines:
- Be VERY specific with keywords
- Include common user phrases
- Mention trigger scenarios
- Include technical terms
- 20-50 words ideal
Examples:
✅ Good:
❌ Bad:
Why the difference?
- Good: Contains user phrases ("debugging issues", "investigating errors")
- Good: Specific trigger words ("troubleshooting", "root cause analysis")
- Bad: Too short, generic, won't match user queries
Optional Fields
category
Type: String
Purpose: Organization and filtering
Common Categories:
debuggingcommunicationdata-analysisdevelopmentproject-managementsecuritytesting
Example:
version
Type: String (Semantic Versioning)
Purpose: Track skill evolution
Format: MAJOR.MINOR.PATCH
Example:
When to increment:
MAJOR: Breaking changes (workflow restructure)MINOR: New sections or featuresPATCH: Fixes, typos, clarifications
author
Type: String
Purpose: Credit and contact
Examples:
tags
Type: List of strings
Purpose: Additional keywords for discovery
Guidelines:
- 3-10 tags
- Include synonyms
- Technical terms
- Related concepts
Example:
allowed-tools
Type: List of tool names
Purpose: Restrict available tools when skill is active
Use Cases:
- Read-only operations
- Security-constrained tasks
- Focused workflows
Example:
How it works:
- If specified: ONLY these tools available
- If omitted: All tools available (default)
- Multiple skills: UNION (additive)
When to use:
- ✅ Code review (read-only)
- ✅ Security audit (no file writes)
- ✅ Analysis tasks (no modifications)
- ❌ Most skills (let Otto choose tools)
Complete Frontmatter Example
Content Structure
Writing Principles
- Be Specific - Concrete steps over abstract concepts
- Be Actionable - Tell Otto what to DO
- Be Complete - Include all necessary steps
- Be Structured - Use headings, lists, emphasis
- Be Clear - Simple language, short sentences
Markdown Formatting
Use Headers for Structure
Use Lists for Steps
Numbered lists for sequential steps:
Bullet lists for non-sequential items:
Emphasize Key Information
Use Code Blocks
Use Blockquotes for Important Notes
Section Templates
Overview Section
Purpose: Brief introduction (2-3 sentences)
Example:
When to Use Section
Purpose: Explicit trigger conditions
Example:
Guidelines:
- 5-10 specific triggers
- Use user language ("debugging" not "defect remediation")
- Include synonyms and variations
- Be concrete, not abstract
Core Content (Main Instructions)
Purpose: The skill's primary content
For Workflows - Use numbered phases/steps:
For Guidelines - Use categorized lists:
For Templates - Show actual examples:
Example:
Integration with Tools Section
Purpose: Show how to use Otto's tools with this skill
Example:
Guidelines:
- List relevant tools
- Explain WHEN to use each
- Explain HOW to use each
- Use backticks for tool names
Examples Section
Purpose: Concrete demonstrations
Example:
Remember Section
Purpose: Key takeaways (2-5 points)
Example:
Writing Effective Descriptions
The description field is THE MOST CRITICAL part of your skill. It determines whether Otto will find and use your skill.
How Matching Works
- User input embedded using the configured embedding model (Gemini, OpenAI, or Ollama)
- Skill descriptions embedded (cached)
- Cosine similarity computed
- Top-K skills above threshold selected
Implication: Your description must semantically match user queries.
Description Formula
Components:
- User phrases - How users actually talk
- Action variations - Synonyms and related terms
- Scenarios - When they'd use it
- Value proposition - What they get
Examples Analyzed
Example 1: Systematic Debugging
What makes this good:
- ✅ "debugging issues" - exact user phrase
- ✅ "investigating errors" - synonym
- ✅ "troubleshooting problems" - another synonym
- ✅ "analyzing bugs" - yet another variant
- ✅ "4-phase approach" - specific method
- ✅ "root cause analysis" - technical term users know
Matches queries like:
- "Debug the API error"
- "Investigate authentication issue"
- "Troubleshoot performance problem"
- "Analyze production bug"
Example 2: Professional Email Writing
What makes this good:
- ✅ "composing emails" - user action
- ✅ "team members, clients, stakeholders" - recipients
- ✅ "templates and guidelines" - what it provides
- ✅ "professional communication" - quality aspect
- ✅ "email etiquette" - specific domain
- ✅ "effective messaging" - outcome
Matches queries like:
- "Write an email to the client"
- "Compose professional message"
- "Send update to stakeholders"
Example 3: API Security Review (fictional)
What makes this good:
- ✅ "reviewing API endpoints" - action + context
- ✅ "security vulnerabilities" - concern
- ✅ "authentication issues" - specific problem
- ✅ "authorization problems" - related problem
- ✅ "security best practices" - broader scope
- ✅ "comprehensive security checklist" - deliverable
- ✅ "common vulnerability patterns" - expertise
Matches queries like:
- "Review API security"
- "Check for authentication vulnerabilities"
- "Audit endpoint authorization"
- "Security best practices for API"
Common Description Mistakes
Mistake 1: Too Vague
❌ Bad:
Problems:
- Only 2 words
- No variations or synonyms
- No context or specifics
- Won't match real queries
✅ Good:
Mistake 2: Too Technical
❌ Bad:
Problems:
- Users don't say "PDCA cycle" or "defect remediation"
- Overly formal language
- No common user phrases
- Won't match natural queries
✅ Good:
Mistake 3: Too General
❌ Bad:
Problems:
- "Various" and "activities" are too vague
- Could match EVERYTHING
- No specific triggers
- No clear use case
✅ Good:
Mistake 4: Missing Variations
❌ Bad:
Problems:
- Only one phrase
- Misses "writing", "sending", "drafting"
- Misses different email types
- Limited matching potential
✅ Good:
Description Checklist
Use this checklist when writing descriptions:
- Includes primary user phrase
- Includes 3-5 synonyms or variations
- Mentions specific scenarios
- Contains technical terms users know
- States what skill provides
- 20-50 words total
- Uses natural language
- Avoids overly formal terms
- Specific enough to avoid false matches
- Broad enough to catch variations
Testing Your Description
Before publishing, test if your description would match target queries:
Quick test: Read each test query. Does your description contain words from it?
Step-by-Step Creation Guide
Let's create a complete skill from scratch: "Code Review Checklist"
Step 1: Define the Skill Purpose
Questions to answer:
- What problem does this solve?
- When would someone use it?
- What outcome do they want?
Our answers:
- Problem: Inconsistent code reviews, missed issues
- When: Reviewing pull requests, code changes
- Outcome: Thorough, consistent review coverage
Step 2: Identify User Phrases
How will users ask for this?
Brainstorm:
- "Review this code"
- "Check the pull request"
- "Code review for PR #123"
- "Look at these changes"
- "Review this function"
- "Check for bugs"
Extract keywords:
- review, check, look at
- code, pull request, PR, changes, function
- bugs, issues, problems
Step 3: Create the Directory Structure
Step 4: Write the Frontmatter
Why these choices:
- description: Contains user phrases + variations + specifics
- category: "development" fits the domain
- tags: Keywords for additional matching
- allowed-tools: Read-only review (no modifications)
Step 5: Write the Content
Suggested:
Step 6: Save and Test
Save the file as SKILL.md in your skill directory:
Step 7: Test Semantic Matching
Create a test script or use the API:
Expected result: Your skill should appear in results with similarity > 0.6
Step 8: Test in Practice
Create a test task:
Verify:
- Skill was matched (check logs)
- Skill context was injected (check LangSmith trace)
- Otto followed the checklist (check task output)
Step 9: Iterate and Improve
Based on usage:
- Did it match when expected?
- If no → improve description
- Did Otto follow the guidance?
- If no → make instructions clearer
- Did it provide value?
- If no → revise content
Update version number with each change:
1.0.0→1.0.1(minor fix)1.0.1→1.1.0(added section)1.1.0→2.0.0(major restructure)
Complete Skill Examples
Example 1: Data Analysis Skill
Visualization Guidelines
Chart Type Selection
| Data Type | Use Chart | Example |
|---|---|---|
| Trends over time | Line chart | Sales by month |
| Categories comparison | Bar chart | Revenue by region |
| Part-to-whole | Pie chart | Market share |
| Correlation | Scatter plot | Price vs demand |
| Distribution | Histogram | Customer ages |
Chart Best Practices
- ✅ Clear, descriptive titles
- ✅ Labeled axes with units
- ✅ Legend when needed
- ✅ Consistent color scheme
- ✅ Remove chart junk
- ❌ 3D charts (misleading)
- ❌ Too many data series
- ❌ Unlabeled axes
Best Practices
DO:
- ✅ Start with questions, not data
- ✅ Document your assumptions
- ✅ Check for data quality issues
- ✅ Validate findings with multiple approaches
- ✅ Focus on actionable insights
DON'T:
- ❌ Cherry-pick data to support preconceptions
- ❌ Ignore outliers without investigation
- ❌ Confuse correlation with causation
- ❌ Over-complicate visualizations
- ❌ Present data without context
Integration with Tools
For data analysis:
read_file- Load datasets (CSV, JSON)write_file- Save analysis resultsconvert_markdown_to_docx- Create report documentsattach_file- Attach reports for delivery to the user
Remember
Good analysis:
- Answers specific questions
- Provides actionable insights
- Is backed by data
- Considers context
- Acknowledges limitations
The goal is insight, not just numbers.
4. Send Pre-Read Materials
24 hours before the meeting:
- Send agenda
- Share relevant documents
- Include questions to consider
- Set expectations
During the Meeting
Opening (5 minutes)
- Welcome everyone
- State the objective - Why we're here
- Review the agenda - What we'll cover
- Set ground rules:
- Start and end on time
- One conversation at a time
- Everyone participates
- Decisions are final
Facilitation Techniques
For Discussions:
- Round robin - Everyone speaks once before anyone speaks twice
- Parking lot - Table off-topic items for later
- Dot voting - Quick consensus on multiple options
- Silent brainstorming - Write ideas before sharing
For Decisions:
- RACI clarity - Who decides? Who consults? Who is informed?
- Thumbs vote - Quick temperature check (up/side/down)
- Two-way doors - Reversible decisions need less debate
- Disagree and commit - Not consensus, but alignment
For Participation:
- Direct questions - "Alex, what do you think?"
- Build on ideas - "Yes, and..." not "Yes, but..."
- Summarize often - "What I'm hearing is..."
- Track action items - Document in real-time
Handling Challenges
If discussion goes off-track:
"That's important, but let's parking lot it. Back to [topic]..."
If someone dominates:
"Thanks, Sarah. Let's hear from others. Kim, your thoughts?"
If energy is low:
"Let's take a 5-minute break and reconvene."
If conflict arises:
"I hear two different perspectives. Let's understand both..."
Closing (5 minutes)
- Summarize decisions made
- Review action items:
- What will be done?
- Who is responsible?
- By when?
- Next steps and follow-ups
- Thank everyone
After the Meeting
Send Meeting Notes (Within 24 hours)
Meeting Types & Templates
1. Status Update Meeting
Purpose: Share progress, identify blockers Frequency: Weekly Duration: 30 minutes Structure:
- Wins this week
- Progress on goals
- Blockers and risks
- Priorities for next week
2. Decision-Making Meeting
Purpose: Make a specific decision Frequency: As needed Duration: 45-60 minutes Structure:
- Context and background
- Options with pros/cons
- Discussion and questions
- Decision and next steps
3. Brainstorming Session
Purpose: Generate ideas Frequency: As needed Duration: 60 minutes Structure:
- Problem definition
- Silent idea generation
- Idea sharing (no judgment)
- Grouping and prioritization
4. Retrospective
Purpose: Reflect and improve Frequency: End of sprint/project Duration: 60 minutes Structure:
- What went well
- What could improve
- Action items for next time
Best Practices
DO:
- ✅ Start and end on time
- ✅ Have a clear agenda
- ✅ Document decisions and actions
- ✅ Assign owners to action items
- ✅ Follow up on commitments
- ✅ Limit meeting to 60 minutes max
DON'T:
- ❌ Schedule back-to-back meetings
- ❌ Multi-task during meetings
- ❌ Let discussions spiral
- ❌ Make decisions without key people
- ❌ Skip sending notes
- ❌ Have recurring meetings without reviewing value
Integration with Tools
For meetings:
write_file- Create agenda and notessend_email- Send invites and follow-upsask_human- Get input from participantsconvert_markdown_to_docx- Format meeting documents
Remember
Good meetings:
- Have a clear purpose
- Include the right people
- Start and end on time
- Result in decisions or actions
- Are followed up with documentation
If a meeting has no purpose, it shouldn't happen.
Example:
Pattern 2: Inline Tool References
Use backticks when mentioning tools in instructions:
Pattern 3: Tool Workflows
Show complete tool usage sequences:
list_directory("data/") # Find data files read_file("data/sales.csv") # Read the data
write_file("report.md", markdown_content) # Save as markdown
convert_markdown_to_docx(markdown_content, "report.docx")
send_email( recipients="stakeholder@company.com", subject="Q4 Sales Report", body="Please find attached...", attachments="report.docx" )
Tool Restrictions with allowed-tools
Restrict tools when skill requires limited scope:
Use cases:
Read-Only Analysis:
Documentation Tasks:
Communication Only:
Best Practices for Tool Integration
DO:
- ✅ Mention tools explicitly by name using backticks
- ✅ Explain WHEN to use each tool
- ✅ Explain HOW to use each tool
- ✅ Show complete workflows
- ✅ Use
allowed-toolsfor read-only or constrained tasks
DON'T:
- ❌ Assume Otto knows when to use tools
- ❌ Reference tools without context
- ❌ Use
allowed-toolsunnecessarily - ❌ Forget that tools are asynchronous
Testing Your Skill
Testing Checklist
Before publishing your skill, verify:
-
File structure is correct
- SKILL.md exists
- Proper directory path
- Valid YAML frontmatter
- Valid Markdown content
-
Frontmatter is complete
-
nameis clear and unique -
descriptionhas 20-50 words -
descriptionincludes user phrases -
categoryis appropriate -
tagsinclude relevant keywords -
versionfollows semver
-
-
Content is structured
- Has "When to Use" section
- Has main content sections
- Has "Best Practices" section
- Has "Integration with Tools" section
- Uses clear formatting
-
Semantic matching works
- Test queries match the skill
- Similarity scores > threshold
- No false positives
-
Otto follows guidance
- Instructions are clear
- Steps are actionable
- Examples are concrete
- Tool usage is explicit
Manual Testing
Test 1: File Validation
Test 2: Reload Skills
Expected: Success response with skill count
Test 3: List Skills
Expected: Your skill in the list
Test 4: Test Matching
Expected: Your skill in results with decent similarity score (>0.6)
If not matching:
- Description needs more keywords
- Description too vague
- Query not representative
Test 5: End-to-End Task Test
Verify in logs/LangSmith:
- Skill was matched
- Skill context was injected into prompt
- Otto followed the skill guidance
- Task outcome aligns with skill
Debugging Matching Issues
Issue: Skill doesn't match expected queries
Debug steps:
- Check similarity scores:
Look at your skill's score. If < 0.6, description needs work.
-
Compare descriptions:
- What words are in the query?
- Are those words in your description?
- Are there synonyms you're missing?
-
Test with exact description words:
If THIS doesn't match, frontmatter might be invalid.
- Check for YAML errors:
Issue: Skill matches wrong queries (false positives)
Solution: Make description MORE specific
Before (too general):
After (more specific):
Issue: Otto doesn't follow skill guidance
Possible causes:
- Instructions too vague
- Steps not actionable
- Missing tool references
- Content too long (LLM attention)
Solutions:
- Make instructions more explicit
- Use numbered steps, not paragraphs
- Explicitly mention tools with backticks
- Keep skill under 500 lines
A/B Testing Different Descriptions
Test multiple description variations:
Test each:
- Update description
- Reload skills
- Test same queries
- Compare similarity scores
- Keep best performer
Best Practices
Content Writing
1. Be Specific and Actionable
❌ Vague:
✅ Specific:
2. Use Clear Structure
❌ Unstructured:
✅ Structured:
3. Provide Examples
❌ Abstract:
✅ Concrete:
4. Balance Detail and Brevity
❌ Too short:
❌ Too long:
✅ Just right:
Skill Organization
1. One Skill = One Capability
❌ Too broad:
✅ Focused:
2. Logical Category Structure
3. Reference, Don't Duplicate
❌ Duplicate content:
✅ Reference:
Maintenance
1. Version Your Skills
2. Track Changes
Add a changelog at the bottom:
3. Review and Update Regularly
- Monthly: Check if skill is being used (logs/metrics)
- Quarterly: Update examples and references
- Annually: Major review and restructure if needed
Common Mistakes
Mistake 1: Generic Descriptions
❌ Problem:
Why it's bad:
- Only 3 words
- No variations
- Won't match real queries
✅ Fix:
Mistake 2: No Clear Structure
❌ Problem:
Why it's bad:
- Wall of text
- Hard to scan
- Otto can't extract structured steps
✅ Fix:
Mistake 3: Missing "When to Use"
❌ Problem:
Why it's bad:
- Not clear when skill applies
- Harder for Otto to know context
- Reduces matching confidence
✅ Fix:
Mistake 4: Vague Instructions
❌ Problem:
Why it's bad:
- Not actionable
- No specifics
- Otto doesn't know what "problems" means
✅ Fix:
Mistake 5: Tool Restrictions Without Reason
❌ Problem:
Why it's bad:
- Might need other tools
- No flexibility
- Breaks workflows
✅ Fix:
Option A - Remove restriction (let Otto choose):
Option B - Only restrict for good reason:
Mistake 6: Too Much Content
❌ Problem:
Why it's bad:
- LLM attention limits
- Otto loses focus
- Context window overflow
✅ Fix:
Option A - Split into multiple skills:
Option B - Use templates directory:
Mistake 7: No Examples
❌ Problem:
Why it's bad:
- Abstract
- Hard to understand
- Not actionable
✅ Fix:
Troubleshooting
Problem: Skill Not Loading
Symptoms:
- Skill doesn't appear in
/api/skills/ - Reload doesn't help
Diagnosis:
- Check file location:
Must be exactly SKILL.md (case-sensitive).
- Check YAML validity:
- Check file encoding:
- Check Otto logs:
Look for parsing errors.
Solutions:
- Fix YAML syntax errors
- Ensure UTF-8 encoding
- Check required fields present
- Verify file named exactly
SKILL.md
Problem: Skill Not Matching
Symptoms:
- Skill appears in list
- Doesn't match expected queries
- Low similarity scores
Diagnosis:
Solutions based on score:
Score < 0.3: Description completely wrong
- Rewrite description with keywords from query
- Add synonyms and variations
- Include user phrases
Score 0.3-0.6: Close but not enough
- Add more trigger keywords
- Include technical terms
- Add common user phrases
Score > 0.6 but still not matching: Threshold too high
- Lower
OTTO_SKILL_THRESHOLD(default 0.35) - Or improve description to get higher scores
Problem: False Positives
Symptoms:
- Skill matches unrelated queries
- Applied in wrong contexts
- Too generic
Solution: Make description MORE specific
Before:
After:
Problem: Otto Doesn't Follow Skill
Symptoms:
- Skill matched (confirmed in logs)
- Context injected (confirmed in LangSmith)
- Otto ignores guidance
Possible causes:
- Instructions too vague - Make more specific
- Too much content - LLM attention limit
- No tool references - Otto doesn't know how to act
- Conflicting with base prompt - Skill conflicts with Otto's core behavior
Solutions:
- Make instructions explicit:
- Reduce content length:
- Remove fluff
- Keep core instructions
- Move details to templates
- Add tool references:
- Avoid conflicts:
- Don't contradict Otto's core behavior
- Don't override fundamental instructions
- Provide additive guidance
Publishing & Sharing
Sharing Within Team
Project skills (skills/):
- Committed to git repository
- Shared automatically with team
- Version controlled
- Team can review changes
Setup:
Team members get it:
Sharing Globally (User Skills)
Global skills (~/.otto/skills/):
- Personal productivity patterns
- Not project-specific
- User-specific workflows
Setup:
Share with others:
Others install:
Contributing to Otto Marketplace (Future)
When marketplace is available:
-
Prepare skill:
- Ensure quality (test thoroughly)
- Add comprehensive documentation
- Include examples
- Add license (MIT, Apache, etc.)
-
Submit:
- Fork Otto skills repository
- Add skill to
marketplace/directory - Create pull request
- Await review
-
Maintain:
- Respond to issues
- Update for new Otto versions
- Improve based on feedback
Skill Distribution Best Practices
1. Documentation
Include a README in skill directory:
2. Licensing
Add LICENSE file:
3. Examples
Include example tasks in README:
4. Version Information
Document versions and changes:
Conclusion
You now have everything you need to create effective Otto skills!
Quick Checklist
Before publishing, verify:
- Clear, specific description (20-50 words)
- "When to Use" section with 5+ triggers
- Structured content (headings, lists, code blocks)
- Best practices (DO/DON'T)
- Tool integration guidance
- Examples included
- Tested semantic matching
- Tested in real tasks
- Version number set
- Category appropriate
Remember
Good skills:
- Match user intent semantically
- Provide actionable guidance
- Reference tools explicitly
- Include concrete examples
- Are focused and maintainable
The formula:
- Description = User phrases + Variations + Specific triggers
- Content = Clear structure + Actionable steps + Examples
- Tools = Explicit references + When to use + How to use
Next Steps
- Identify a domain or workflow you know well
- Create your first skill using this guide
- Test thoroughly with real queries and tasks
- Iterate based on performance
- Share with your team or community
Resources
- Examples:
skills/in Otto repository - API Docs: http://localhost:8000/docs
- LangSmith: https://smith.langchain.com for tracing
- Support: Open issues on GitHub
Version: 1.0.0
Last Updated: 2025-11-04
License: MIT
Questions?: Open an issue or discussion on GitHub
Happy skill writing! 🎯