# Writing Effective Instructions

## Writing Style

Write entirely in **imperative/infinitive form** (verb-first). Use objective, instructional language.

- **Good:** "To accomplish X, do Y" / "Run `script.py` to validate"
- **Bad:** "You should do X" / "If you need to do X"

## Recommended SKILL.md Structure

```markdown
---
name: your-skill
description: [What + When + Key capabilities]
---
# Skill Name
## Instructions
### Step 1: [First Major Step]
Clear explanation. Example with expected output.
### Step 2: [Next Step]
(Continue as needed)
## Examples
### Example 1: [Common scenario]
**User says:** "[trigger phrase]"
**Actions:** 1. Do X  2. Do Y
**Result:** [Expected outcome]
## Troubleshooting
**Error:** [Message] → **Solution:** [Fix]
```

## Be Specific and Actionable

**Good:**
```markdown
Run `python scripts/validate.py --input {filename}` to check format.
If validation fails, common issues:
- Missing required fields (add to CSV)
- Invalid date formats (use YYYY-MM-DD)
```

**Bad:**
```markdown
Validate the data before proceeding.
```

## Include Error Handling

```markdown
## Common Issues
### MCP Connection Failed
If "Connection refused":
1. Verify MCP server running: Settings > Extensions
2. Confirm API key valid
3. Reconnect: Settings > Extensions > [Service] > Reconnect
```

## Reference Bundled Resources Clearly

```markdown
Before writing queries, consult `references/api-patterns.md` for:
- Rate limiting guidance
- Pagination patterns
- Error codes and handling
```

## Use Progressive Disclosure

Keep SKILL.md focused on core instructions (<150 lines). Move to `references/`:
- Detailed API documentation
- Database schemas
- Extended examples
- Domain-specific rules
- Troubleshooting guides

## Critical Instructions

Put at the top of SKILL.md. Use headers like `## CRITICAL` or `## IMPORTANT`.
Repeat key points if they're frequently missed.

**Advanced technique:** For critical validations, bundle a script that performs checks programmatically rather than relying on language instructions alone. Code is deterministic; language interpretation isn't.

## What NOT to Include

- General knowledge Claude already has
- Tool documentation (teach workflows, not what tools do)
- Verbose explanations (sacrifice grammar for concision)
- Duplicated content between SKILL.md and references
