Initial commit
This commit is contained in:
78
skills/skill-creator/patterns/mode-based.md
Normal file
78
skills/skill-creator/patterns/mode-based.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Mode-Based Skill Pattern
|
||||
|
||||
Use this pattern when your skill has **multiple distinct operating modes** based on user intent.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Skill performs fundamentally different operations based on context
|
||||
- Each mode has its own workflow and outputs
|
||||
- User intent determines which mode to activate
|
||||
- Examples: git-worktree-setup (single/batch/cleanup/list modes)
|
||||
|
||||
## Structure
|
||||
|
||||
### Quick Decision Matrix
|
||||
|
||||
Create a clear mapping of user requests to modes:
|
||||
|
||||
```
|
||||
User Request → Mode → Action
|
||||
───────────────────────────────────────────────────────────
|
||||
"trigger phrase 1" → Mode 1 → High-level action
|
||||
"trigger phrase 2" → Mode 2 → High-level action
|
||||
"trigger phrase 3" → Mode 3 → High-level action
|
||||
```
|
||||
|
||||
### Mode Detection Logic
|
||||
|
||||
Provide clear logic for mode selection:
|
||||
|
||||
```javascript
|
||||
// Mode 1: [Name]
|
||||
if (userMentions("keyword1", "keyword2")) {
|
||||
return "mode1-name";
|
||||
}
|
||||
|
||||
// Mode 2: [Name]
|
||||
if (userMentions("keyword3", "keyword4")) {
|
||||
return "mode2-name";
|
||||
}
|
||||
|
||||
// Ambiguous - ask user
|
||||
return askForClarification();
|
||||
```
|
||||
|
||||
### Separate Mode Documentation
|
||||
|
||||
For complex skills, create separate files for each mode:
|
||||
|
||||
```
|
||||
skill-name/
|
||||
├── SKILL.md # Overview and mode detection
|
||||
├── modes/
|
||||
│ ├── mode1-name.md # Detailed workflow for mode 1
|
||||
│ ├── mode2-name.md # Detailed workflow for mode 2
|
||||
│ └── mode3-name.md # Detailed workflow for mode 3
|
||||
```
|
||||
|
||||
## Example: Git Worktree Setup
|
||||
|
||||
**Modes:**
|
||||
1. Single Worktree - Create one worktree
|
||||
2. Batch Worktrees - Create multiple worktrees
|
||||
3. Cleanup - Remove worktrees
|
||||
4. List/Manage - Show worktree status
|
||||
|
||||
**Detection Logic:**
|
||||
- "create worktree for X" → Single mode
|
||||
- "create worktrees for A, B, C" → Batch mode
|
||||
- "remove worktree" → Cleanup mode
|
||||
- "list worktrees" → List mode
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Clear Mode Boundaries**: Each mode should be distinct and non-overlapping
|
||||
2. **Explicit Detection**: Provide clear rules for mode selection
|
||||
3. **Clarification Path**: Always have a fallback to ask user when ambiguous
|
||||
4. **Mode Independence**: Each mode should work standalone
|
||||
5. **Shared Prerequisites**: Extract common validation to reduce duplication
|
||||
Reference in New Issue
Block a user