283 lines
4.0 KiB
Markdown
283 lines
4.0 KiB
Markdown
# Skill Templates & Examples
|
|
|
|
Complete, copy-paste templates for each skill type.
|
|
|
|
---
|
|
|
|
## Template: Technique Skill
|
|
|
|
For how-to guides that teach a specific method.
|
|
|
|
```markdown
|
|
---
|
|
name: technique-name
|
|
description: >-
|
|
Use when [specific symptom].
|
|
metadata:
|
|
category: technique
|
|
triggers: error-text, symptom, tool-name
|
|
---
|
|
|
|
# Technique Name
|
|
|
|
## Overview
|
|
|
|
[1-2 sentence core principle]
|
|
|
|
## When to Use
|
|
|
|
- [Symptom A]
|
|
- [Symptom B]
|
|
- [Error message text]
|
|
|
|
**NOT for:**
|
|
- [When to avoid]
|
|
|
|
## The Problem
|
|
|
|
```javascript
|
|
// Bad example
|
|
function badCode() {
|
|
// problematic pattern
|
|
}
|
|
```
|
|
|
|
## The Solution
|
|
|
|
```javascript
|
|
// Good example
|
|
function goodCode() {
|
|
// improved pattern
|
|
}
|
|
```
|
|
|
|
## Step-by-Step
|
|
|
|
1. [First step]
|
|
2. [Second step]
|
|
3. [Final step]
|
|
|
|
## Quick Reference
|
|
|
|
| Scenario | Approach |
|
|
|----------|----------|
|
|
| Case A | Solution A |
|
|
| Case B | Solution B |
|
|
|
|
## Common Mistakes
|
|
|
|
**Mistake 1:** [Description]
|
|
- Wrong: `bad code`
|
|
- Right: `good code`
|
|
```
|
|
|
|
---
|
|
|
|
## Template: Reference Skill
|
|
|
|
For documentation, APIs, and lookup tables.
|
|
|
|
```markdown
|
|
---
|
|
name: reference-name
|
|
description: >-
|
|
Use when working with [domain].
|
|
metadata:
|
|
category: reference
|
|
triggers: tool, api, specific-terms
|
|
---
|
|
|
|
# Reference Name
|
|
|
|
## Quick Reference
|
|
|
|
| Command | Purpose |
|
|
|---------|---------|
|
|
| `cmd1` | Does X |
|
|
| `cmd2` | Does Y |
|
|
|
|
## Common Patterns
|
|
|
|
**Pattern A:**
|
|
```bash
|
|
example command
|
|
```
|
|
|
|
**Pattern B:**
|
|
```bash
|
|
another example
|
|
```
|
|
|
|
## Detailed Docs
|
|
|
|
For more options, run `--help` or see:
|
|
- patterns.md
|
|
- [examples.md](examples.md)
|
|
```
|
|
|
|
---
|
|
|
|
## Template: Discipline Skill
|
|
|
|
For rules that agents must follow. Requires anti-rationalization techniques.
|
|
|
|
```markdown
|
|
---
|
|
name: discipline-name
|
|
description: >-
|
|
Use when [BEFORE violation].
|
|
metadata:
|
|
category: discipline
|
|
triggers: new feature, code change, implementation
|
|
---
|
|
|
|
# Rule Name
|
|
|
|
## Iron Law
|
|
|
|
**[SINGLE SENTENCE ABSOLUTE RULE]**
|
|
|
|
Violating the letter IS violating the spirit.
|
|
|
|
## The Rule
|
|
|
|
1. ALWAYS [step 1]
|
|
2. NEVER [step 2]
|
|
3. [Step 3]
|
|
|
|
## Violations
|
|
|
|
[Action before rule]? **Delete it. Start over.**
|
|
|
|
**No exceptions:**
|
|
- Don't keep it as "reference"
|
|
- Don't "adapt" it
|
|
- Delete means delete
|
|
|
|
## Common Rationalizations
|
|
|
|
| Excuse | Reality |
|
|
|--------|---------|
|
|
| "Too simple" | Simple code breaks. Rule takes 30 seconds. |
|
|
| "I'll do it after" | After = never. Do it now. |
|
|
| "Spirit not ritual" | The ritual IS the spirit. |
|
|
|
|
## Red Flags - STOP
|
|
|
|
- [Flag 1]
|
|
- [Flag 2]
|
|
- "This is different because..."
|
|
|
|
**All mean:** Delete. Start over.
|
|
|
|
## Valid Exceptions
|
|
|
|
- [Exception 1]
|
|
- [Exception 2]
|
|
|
|
**Everything else:** Follow the rule.
|
|
```
|
|
|
|
---
|
|
|
|
## Template: Pattern Skill
|
|
|
|
For mental models and design patterns.
|
|
|
|
```markdown
|
|
---
|
|
name: pattern-name
|
|
description: >-
|
|
Use when [recognizable symptom].
|
|
metadata:
|
|
category: pattern
|
|
triggers: complexity, hard-to-follow, nested
|
|
---
|
|
|
|
# Pattern Name
|
|
|
|
## The Pattern
|
|
|
|
[1-2 sentence core idea]
|
|
|
|
## Recognition Signs
|
|
|
|
- [Sign that pattern applies]
|
|
- [Another sign]
|
|
- [Code smell]
|
|
|
|
## Before
|
|
|
|
```typescript
|
|
// Complex/problematic
|
|
function before() {
|
|
// nested, confusing
|
|
}
|
|
```
|
|
|
|
## After
|
|
|
|
```typescript
|
|
// Clean/improved
|
|
function after() {
|
|
// flat, clear
|
|
}
|
|
```
|
|
|
|
## When NOT to Use
|
|
|
|
- [Over-engineering case]
|
|
- [Simple case that doesn't need it]
|
|
|
|
## Impact
|
|
|
|
**Before:** [Problem metric]
|
|
**After:** [Improved metric]
|
|
```
|
|
|
|
---
|
|
|
|
## Real Example: Condition-Based Waiting
|
|
|
|
```yaml
|
|
---
|
|
name: condition-based-waiting
|
|
description: >-
|
|
Use when tests have race conditions or timing dependencies.
|
|
metadata:
|
|
category: technique
|
|
triggers: flaky tests, timeout, race condition, sleep, setTimeout
|
|
---
|
|
```
|
|
|
|
```markdown
|
|
# Condition-Based Waiting
|
|
|
|
## Overview
|
|
|
|
Replace `sleep(ms)` with `waitFor(() => condition)`.
|
|
|
|
## When to Use
|
|
|
|
- Tests pass sometimes, fail other times
|
|
- Tests use `sleep()` or `setTimeout()`
|
|
- "Works on my machine"
|
|
|
|
## The Fix
|
|
|
|
```typescript
|
|
// ❌ Bad
|
|
await sleep(2000);
|
|
expect(element).toBeVisible();
|
|
|
|
// ✅ Good
|
|
await waitFor(() => element.isVisible(), { timeout: 5000 });
|
|
expect(element).toBeVisible();
|
|
```
|
|
|
|
## Impact
|
|
|
|
- Flaky tests: 15/100 → 0/100
|
|
- Speed: 40% faster (no over-waiting)
|
|
```
|