634 lines
11 KiB
Markdown
634 lines
11 KiB
Markdown
# Common Pitfalls
|
|
|
|
Common mistakes that reduce skill quality and how to fix them.
|
|
|
|
## 1. Bloated SKILL.md
|
|
|
|
### Problem
|
|
|
|
Including everything in SKILL.md instead of using references/.
|
|
|
|
**Example**:
|
|
```markdown
|
|
# API Client
|
|
|
|
[500 words of background]
|
|
|
|
## Complete API Documentation
|
|
[5000 words of every endpoint]
|
|
|
|
## All Configuration Options
|
|
[2000 words of config details]
|
|
|
|
## Comprehensive Examples
|
|
[50 examples covering every scenario]
|
|
|
|
## Troubleshooting Guide
|
|
[30 common issues]
|
|
```
|
|
|
|
**Impact**:
|
|
- Loads 10k+ tokens every time skill triggers
|
|
- Context waste for simple tasks
|
|
- Harder to maintain
|
|
- Difficult to navigate
|
|
|
|
### Fix
|
|
|
|
Move detailed content to references/, keep SKILL.md lean:
|
|
|
|
```markdown
|
|
# API Client
|
|
|
|
## Quick Start
|
|
|
|
Set API key:
|
|
```bash
|
|
export API_KEY="your-key"
|
|
```
|
|
|
|
Make request:
|
|
```python
|
|
response = requests.get(url, headers={"Authorization": f"Bearer {API_KEY}"})
|
|
```
|
|
|
|
For complete API documentation, see [api-reference.md](references/api-reference.md).
|
|
For configuration options, see [configuration.md](references/configuration.md).
|
|
```
|
|
|
|
**Target**: SKILL.md under 1500 words (~5k tokens)
|
|
|
|
---
|
|
|
|
## 2. Duplicate Content
|
|
|
|
### Problem
|
|
|
|
Same information repeated in multiple places.
|
|
|
|
**Example**:
|
|
|
|
SKILL.md:
|
|
```markdown
|
|
## Authentication
|
|
Set API_KEY environment variable. Get keys from dashboard at https://example.com/keys.
|
|
Keys must be 32 hex characters. Rotate every 90 days.
|
|
```
|
|
|
|
references/api-reference.md:
|
|
```markdown
|
|
## Authentication
|
|
Set API_KEY environment variable. Obtain from dashboard...
|
|
[same content repeated]
|
|
```
|
|
|
|
**Impact**:
|
|
- Wastes tokens
|
|
- Maintenance nightmare (update must happen in multiple places)
|
|
- Inconsistencies when one copy gets updated
|
|
|
|
### Fix
|
|
|
|
Put detailed info in ONE place, link from others:
|
|
|
|
SKILL.md:
|
|
```markdown
|
|
## Quick Start
|
|
|
|
Set API key:
|
|
```bash
|
|
export API_KEY="your-key"
|
|
```
|
|
|
|
For authentication details, see [api-reference.md](references/api-reference.md#authentication).
|
|
```
|
|
|
|
references/api-reference.md:
|
|
```markdown
|
|
## Authentication
|
|
|
|
Obtain API keys from the dashboard at https://example.com/keys.
|
|
|
|
**Requirements**:
|
|
- Format: 32 hexadecimal characters
|
|
- Rotation: Every 90 days
|
|
- Storage: Environment variable `API_KEY`
|
|
...
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Poor Description in Frontmatter
|
|
|
|
### Problem
|
|
|
|
Vague or incomplete description that doesn't help Claude discover when to use the skill.
|
|
|
|
**Bad examples**:
|
|
```yaml
|
|
description: PDF tool
|
|
```
|
|
- Too vague. What does it do with PDFs?
|
|
|
|
```yaml
|
|
description: Extract text from PDFs using pdfplumber library with support for tables and forms
|
|
```
|
|
- Implementation detail. Doesn't say when to use.
|
|
|
|
```yaml
|
|
description: A helpful utility for working with PDF documents
|
|
```
|
|
- Generic fluff. No specifics.
|
|
|
|
### Fix
|
|
|
|
Include BOTH what it does AND when to use it:
|
|
|
|
```yaml
|
|
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
|
|
```
|
|
|
|
**Good description formula**:
|
|
`[What it does]. Use when [triggering conditions/keywords].`
|
|
|
|
---
|
|
|
|
## 4. Missing Safety Warnings
|
|
|
|
### Problem
|
|
|
|
Destructive operations without warnings or validation.
|
|
|
|
**Example**:
|
|
```markdown
|
|
## Deploy to Production
|
|
|
|
Run: `./deploy.sh production`
|
|
```
|
|
|
|
**Impact**:
|
|
- Users might run dangerous commands accidentally
|
|
- No guidance on prerequisites
|
|
- No rollback plan
|
|
|
|
### Fix
|
|
|
|
Add warnings, validation, and recovery:
|
|
|
|
```markdown
|
|
## Deploy to Production
|
|
|
|
**⚠️ WARNING**: This deploys to production. Ensure tests pass before proceeding.
|
|
|
|
**Prerequisites**:
|
|
- All tests passing: `make test`
|
|
- Code reviewed and merged
|
|
- Staging deployment successful
|
|
|
|
**Deploy**:
|
|
```bash
|
|
# Verify tests first
|
|
make test || { echo "Tests failed"; exit 1; }
|
|
|
|
# Deploy
|
|
./deploy.sh production
|
|
```
|
|
|
|
**If deployment fails**:
|
|
1. Check logs: `tail -f /var/log/deploy.log`
|
|
2. Rollback: `./deploy.sh rollback`
|
|
3. Investigate: Review error messages
|
|
```
|
|
|
|
---
|
|
|
|
## 5. No Examples or Bad Examples
|
|
|
|
### Problem
|
|
|
|
Either no examples, or examples that are too complex/not representative.
|
|
|
|
**No examples**:
|
|
```markdown
|
|
## Usage
|
|
|
|
Use the tool to process files. Various options are available.
|
|
```
|
|
|
|
**Overly complex examples**:
|
|
```markdown
|
|
## Example
|
|
|
|
```python
|
|
# Complete production-ready example with error handling,
|
|
# logging, retries, caching, metrics, and all edge cases
|
|
import logging
|
|
import time
|
|
from functools import wraps
|
|
...
|
|
[200 lines]
|
|
```
|
|
```
|
|
|
|
**Impact**:
|
|
- Users don't know how to start
|
|
- Complex examples obscure the core pattern
|
|
|
|
### Fix
|
|
|
|
Provide minimal, representative examples:
|
|
|
|
```markdown
|
|
## Quick Start
|
|
|
|
Basic usage:
|
|
```python
|
|
import tool
|
|
|
|
result = tool.process("input.txt")
|
|
print(result)
|
|
```
|
|
|
|
With options:
|
|
```python
|
|
result = tool.process("input.txt", format="json", validate=True)
|
|
```
|
|
|
|
For advanced patterns, see [examples.md](references/examples.md).
|
|
```
|
|
|
|
**Good examples are**:
|
|
- Minimal (remove non-essential code)
|
|
- Representative (show common use case)
|
|
- Runnable (actually work if copy-pasted)
|
|
- Focused (one concept per example)
|
|
|
|
---
|
|
|
|
## 6. Inconsistent Terminology
|
|
|
|
### Problem
|
|
|
|
Same concept called by different names throughout the skill.
|
|
|
|
**Example**:
|
|
```markdown
|
|
## Creating a Migration
|
|
|
|
Generate new migration file:
|
|
```bash
|
|
./create-migration.sh add_users
|
|
```
|
|
|
|
## Running Migrations
|
|
|
|
Execute all pending schema changes:
|
|
```bash
|
|
./run-migrations.sh
|
|
```
|
|
|
|
## Rolling Back
|
|
|
|
Revert the last database modification:
|
|
```bash
|
|
./undo-migration.sh
|
|
```
|
|
```
|
|
|
|
**Terms used**:
|
|
- "migration", "schema changes", "database modification"
|
|
- "create", "generate"
|
|
- "run", "execute"
|
|
- "rolling back", "revert", "undo"
|
|
|
|
**Impact**: Confusing. Users wonder if these are different operations.
|
|
|
|
### Fix
|
|
|
|
Use consistent terminology:
|
|
|
|
```markdown
|
|
## Creating a Migration
|
|
|
|
```bash
|
|
./migrate.sh create add_users
|
|
```
|
|
|
|
## Running Migrations
|
|
|
|
```bash
|
|
./migrate.sh apply
|
|
```
|
|
|
|
## Rolling Back Migrations
|
|
|
|
```bash
|
|
./migrate.sh rollback
|
|
```
|
|
```
|
|
|
|
**Pick one term and stick to it**:
|
|
- Migration (not "schema change" or "database modification")
|
|
- Create (not "generate")
|
|
- Apply (not "run" or "execute")
|
|
- Rollback (not "revert" or "undo")
|
|
|
|
---
|
|
|
|
## 7. Scope Creep
|
|
|
|
### Problem
|
|
|
|
Skill tries to do too many unrelated things.
|
|
|
|
**Example**:
|
|
```markdown
|
|
# Developer Tools
|
|
|
|
## Features
|
|
- Run tests
|
|
- Deploy code
|
|
- Send emails
|
|
- Process images
|
|
- Generate reports
|
|
- Manage databases
|
|
- Create documentation
|
|
- Monitor logs
|
|
```
|
|
|
|
**Impact**:
|
|
- Unfocused and hard to maintain
|
|
- Overlaps with other skills
|
|
- Users confused about what it's for
|
|
|
|
### Fix
|
|
|
|
Split into focused skills:
|
|
- testing-tools → Run tests
|
|
- deployment → Deploy code
|
|
- email-sender → Send emails
|
|
- image-processor → Process images
|
|
- etc.
|
|
|
|
**Each skill should answer**: "What is the one thing this skill does well?"
|
|
|
|
---
|
|
|
|
## 8. Over-Prescription (High Freedom Task)
|
|
|
|
### Problem
|
|
|
|
Giving step-by-step instructions for a task that needs flexibility.
|
|
|
|
**Example** (high freedom task with low freedom instructions):
|
|
```markdown
|
|
## Code Review
|
|
|
|
1. Check line 1 for indentation
|
|
2. Check line 2 for spacing
|
|
3. Check line 3 for naming
|
|
4. Check line 4 for...
|
|
[prescriptive steps for creative task]
|
|
```
|
|
|
|
**Impact**: Constrains Claude unnecessarily, produces robotic results.
|
|
|
|
### Fix
|
|
|
|
Provide principles for high freedom tasks:
|
|
|
|
```markdown
|
|
## Code Review
|
|
|
|
Review code for:
|
|
- **Readability**: Clear naming, logical structure, appropriate comments
|
|
- **Maintainability**: DRY principle, single responsibility, testable
|
|
- **Performance**: Algorithm efficiency, resource usage
|
|
- **Security**: Input validation, safe dependencies
|
|
|
|
Consider the project's context and constraints when making recommendations.
|
|
```
|
|
|
|
---
|
|
|
|
## 9. Under-Specification (Low Freedom Task)
|
|
|
|
### Problem
|
|
|
|
Vague instructions for a fragile operation that needs exact steps.
|
|
|
|
**Example** (low freedom task with high freedom instructions):
|
|
```markdown
|
|
## Database Migration
|
|
|
|
Migrate the database. Make sure everything works.
|
|
```
|
|
|
|
**Impact**: Critical operations fail due to missed steps or wrong order.
|
|
|
|
### Fix
|
|
|
|
Provide exact steps for low freedom tasks:
|
|
|
|
```markdown
|
|
## Database Migration
|
|
|
|
**⚠️ CRITICAL**: Execute in exact order. Do not skip steps.
|
|
|
|
1. **Backup**:
|
|
```bash
|
|
./backup.sh production_db backup_$(date +%Y%m%d).sql
|
|
```
|
|
|
|
2. **Test migration**:
|
|
```bash
|
|
./migrate.sh --dry-run
|
|
```
|
|
Verify output shows expected changes.
|
|
|
|
3. **Apply migration**:
|
|
```bash
|
|
./migrate.sh apply
|
|
```
|
|
|
|
4. **Verify**:
|
|
```bash
|
|
./health-check.sh database
|
|
```
|
|
Must return "✓ Database healthy".
|
|
|
|
5. **If failure**:
|
|
```bash
|
|
./migrate.sh rollback
|
|
./restore.sh backup_$(date +%Y%m%d).sql
|
|
```
|
|
```
|
|
|
|
---
|
|
|
|
## 10. No Version or Changelog
|
|
|
|
### Problem
|
|
|
|
No way to track what changed or what version is current.
|
|
|
|
**Example**:
|
|
```markdown
|
|
# API Client
|
|
|
|
[no version info]
|
|
[no changelog]
|
|
[no update history]
|
|
```
|
|
|
|
**Impact**:
|
|
- Users don't know if they have latest version
|
|
- No record of what changed
|
|
- Hard to troubleshoot version-specific issues
|
|
|
|
### Fix
|
|
|
|
Include version and changelog:
|
|
|
|
```markdown
|
|
# API Client
|
|
|
|
**Version**: 2.1.0
|
|
**Last Updated**: 2025-11-23
|
|
|
|
...
|
|
|
|
## Changelog
|
|
|
|
### 2.1.0 (2025-11-23)
|
|
- Add batch request support
|
|
- Improve error handling
|
|
|
|
### 2.0.0 (2025-10-15)
|
|
- Breaking: Change authentication method
|
|
- Add retry logic
|
|
|
|
### 1.0.0 (2025-09-01)
|
|
- Initial release
|
|
```
|
|
|
|
---
|
|
|
|
## 11. Broken or Missing Links
|
|
|
|
### Problem
|
|
|
|
Links to references/ don't resolve or are missing.
|
|
|
|
**Example**:
|
|
|
|
SKILL.md:
|
|
```markdown
|
|
For details, see [advanced.md](references/advanced.md).
|
|
```
|
|
|
|
But file doesn't exist, or is named differently (`references/advanced-usage.md`).
|
|
|
|
**Impact**: Users can't access detailed information.
|
|
|
|
### Fix
|
|
|
|
Verify all links:
|
|
|
|
```bash
|
|
# Check all markdown links in SKILL.md
|
|
grep -o '\[.*\](.*\.md)' SKILL.md | while read link; do
|
|
file=$(echo "$link" | sed 's/.*(\(.*\))/\1/')
|
|
if [[ ! -f "$file" ]]; then
|
|
echo "Broken link: $link"
|
|
fi
|
|
done
|
|
```
|
|
|
|
**Best practice**: After creating skill, test all links.
|
|
|
|
---
|
|
|
|
## 12. Marketing Language
|
|
|
|
### Problem
|
|
|
|
Promotional or fluffy language instead of direct instructions.
|
|
|
|
**Example**:
|
|
```markdown
|
|
# Amazing Data Processor
|
|
|
|
Transform your data workflow with our cutting-edge processing engine! Designed with developers in mind, this powerful tool revolutionizes...
|
|
|
|
## Why Choose This Tool?
|
|
|
|
Benefit from industry-leading performance and enterprise-grade reliability...
|
|
```
|
|
|
|
**Impact**: Wastes tokens without providing value.
|
|
|
|
### Fix
|
|
|
|
Be direct and actionable:
|
|
|
|
```markdown
|
|
# Data Processor
|
|
|
|
Process CSV and JSON files with validation and transformation.
|
|
|
|
## Quick Start
|
|
|
|
Process CSV file:
|
|
```bash
|
|
process-data input.csv --format json --validate
|
|
```
|
|
```
|
|
|
|
**Cut**:
|
|
- Marketing superlatives ("amazing", "revolutionary")
|
|
- Benefits lists ("why choose this")
|
|
- Generic introductions
|
|
- Promotional language
|
|
|
|
**Keep**:
|
|
- What it does
|
|
- How to use it
|
|
- Actual capabilities
|
|
|
|
---
|
|
|
|
## Quick Pitfall Checklist
|
|
|
|
Run this check on any skill:
|
|
|
|
**Content**:
|
|
- [ ] No marketing fluff or superlatives
|
|
- [ ] No duplicate content between files
|
|
- [ ] Examples are minimal and representative
|
|
- [ ] Instructions match freedom level
|
|
|
|
**Structure**:
|
|
- [ ] SKILL.md under 1500 words
|
|
- [ ] Detailed content in references/
|
|
- [ ] All links resolve
|
|
- [ ] No scope creep (one focused purpose)
|
|
|
|
**Language**:
|
|
- [ ] No "new feature" or "recommended" hedging
|
|
- [ ] Consistent terminology throughout
|
|
- [ ] Direct, actionable instructions
|
|
- [ ] Appropriate warnings for dangerous operations
|
|
|
|
**Metadata**:
|
|
- [ ] Description includes what and when
|
|
- [ ] Version and changelog present
|
|
- [ ] Clear frontmatter (name, description)
|
|
|
|
**Safety**:
|
|
- [ ] Dangerous operations have warnings
|
|
- [ ] Prerequisites stated
|
|
- [ ] Failure recovery documented
|
|
|
|
If any checkbox fails, you've found a pitfall to fix.
|