390 lines
8.6 KiB
Markdown
390 lines
8.6 KiB
Markdown
# Mental Model Shift
|
|
|
|
Guide to positioning skills as canonical approaches rather than optional features.
|
|
|
|
## The Principle
|
|
|
|
When a skill provides a better way to do something, the documentation should reflect confidence in that approach. The feature isn't "new" or "recommended"—it IS the way things are done.
|
|
|
|
**Mental model shift means**:
|
|
- Feature becomes "the way" (not "a new way")
|
|
- Documentation reflects this confidence
|
|
- Alternative approaches are downgraded to "manual" or "advanced"
|
|
|
|
## Language Patterns
|
|
|
|
### ✅ Canonical Language (Good)
|
|
|
|
**Presents as THE way**:
|
|
```markdown
|
|
# Session Registry
|
|
|
|
Use the session registry for automatic session tracking.
|
|
|
|
## Quick Start
|
|
1. Create session: `create-session.sh -n my-session`
|
|
2. Send commands: `safe-send.sh -s my-session -c "command"`
|
|
```
|
|
|
|
**Key phrases**:
|
|
- "Use [tool] for [task]"
|
|
- "Standard workflow"
|
|
- "[Tool] handles [task]"
|
|
- Direct imperatives ("Create a session", "Send commands")
|
|
|
|
---
|
|
|
|
### ❌ Optional Language (Bad)
|
|
|
|
**Presents as A way among many**:
|
|
```markdown
|
|
# Session Registry (NEW!)
|
|
|
|
The session registry is a new recommended feature you can use instead of manual socket management.
|
|
|
|
## Two Approaches
|
|
|
|
### Traditional: Manual Socket Management
|
|
[old way]
|
|
|
|
### New (Recommended): Session Registry
|
|
[new way]
|
|
|
|
You might want to consider using the session registry...
|
|
```
|
|
|
|
**Red flag phrases**:
|
|
- "New feature" or "NEW!"
|
|
- "Recommended" or "optional"
|
|
- "You can use" or "you might want to"
|
|
- "Instead of" or "alternative to"
|
|
- Side-by-side old vs new comparisons
|
|
- "Traditional" vs "modern"
|
|
|
|
---
|
|
|
|
## Documentation Structure
|
|
|
|
### Primary Workflow First
|
|
|
|
Place the canonical approach at the top as the default.
|
|
|
|
**Good structure**:
|
|
```markdown
|
|
# Tool Name
|
|
|
|
## Quick Start
|
|
[Canonical approach]
|
|
|
|
## Common Tasks
|
|
[Using canonical approach]
|
|
|
|
---
|
|
|
|
## Alternative: Manual Approach
|
|
|
|
For advanced users or special cases...
|
|
```
|
|
|
|
**Bad structure**:
|
|
```markdown
|
|
# Tool Name
|
|
|
|
## Choose Your Approach
|
|
|
|
### Option 1: Traditional Method (Still Supported)
|
|
[Old way]
|
|
|
|
### Option 2: New Registry Method (Recommended!)
|
|
[New way]
|
|
```
|
|
|
|
---
|
|
|
|
### Downgrade Alternatives
|
|
|
|
When mentioning alternative approaches, position them as secondary.
|
|
|
|
**Good** (alternative is clearly secondary):
|
|
```markdown
|
|
# Session Management
|
|
|
|
Create and manage sessions using the session registry.
|
|
|
|
## Creating Sessions
|
|
```bash
|
|
create-session.sh -n my-session --python
|
|
```
|
|
|
|
---
|
|
|
|
## Manual Socket Management
|
|
|
|
For advanced use cases requiring explicit socket control, you can manage sockets manually.
|
|
See [manual-socket-management.md](references/manual-socket-management.md).
|
|
```
|
|
|
|
**Bad** (alternatives treated equally):
|
|
```markdown
|
|
# Session Management
|
|
|
|
## Approach 1: Registry (Recommended)
|
|
Use create-session.sh...
|
|
|
|
## Approach 2: Manual Sockets (Traditional)
|
|
Create sockets manually...
|
|
|
|
Both approaches are fully supported. Choose based on your preferences.
|
|
```
|
|
|
|
---
|
|
|
|
## Evolution Example: tmux Skill
|
|
|
|
### Phase 1: Feature Addition (❌ Wrong)
|
|
|
|
```markdown
|
|
# tmux Skill
|
|
|
|
## New Feature: Session Registry!
|
|
|
|
We're excited to announce session registry support! This new recommended feature eliminates the need for manual socket management.
|
|
|
|
### Traditional Workflow (Still Supported)
|
|
1. Create socket: `tmux -S /tmp/my.sock new -d`
|
|
2. Send commands: `tmux -S /tmp/my.sock send-keys...`
|
|
|
|
### New Registry Workflow (Recommended!)
|
|
1. Create session: `create-session.sh -n my-session`
|
|
2. Send commands: `safe-send.sh -s my-session -c "command"`
|
|
|
|
Consider migrating to the registry for a better experience!
|
|
```
|
|
|
|
**Problems**:
|
|
- "New feature" announcement
|
|
- "Recommended" implies optionality
|
|
- Side-by-side comparison treats both as equal
|
|
- "Consider migrating" is hesitant
|
|
|
|
---
|
|
|
|
### Phase 2: Mental Model Shift (✅ Right)
|
|
|
|
```markdown
|
|
# tmux Skill
|
|
|
|
Use the session registry for automatic session tracking.
|
|
|
|
## Quick Start
|
|
|
|
Create a session:
|
|
```bash
|
|
create-session.sh -n my-session --python
|
|
```
|
|
|
|
Send commands:
|
|
```bash
|
|
safe-send.sh -s my-session -c "print('hello')"
|
|
```
|
|
|
|
Wait for output:
|
|
```bash
|
|
wait-for-text.sh -s my-session -p ">>>"
|
|
```
|
|
|
|
## Session Management
|
|
|
|
List sessions:
|
|
```bash
|
|
list-sessions.sh
|
|
```
|
|
|
|
Clean up dead sessions:
|
|
```bash
|
|
cleanup-sessions.sh --dead
|
|
```
|
|
|
|
---
|
|
|
|
## Alternative: Manual Socket Management
|
|
|
|
For advanced scenarios requiring explicit socket control, see [manual-sockets.md](references/manual-sockets.md).
|
|
```
|
|
|
|
**Improvements**:
|
|
- No "new" or "recommended" language
|
|
- Registry is THE approach
|
|
- Direct, confident instructions
|
|
- Manual approach relegated to "Alternative" section
|
|
- Documentation reflects "this is the way"
|
|
|
|
---
|
|
|
|
## Key Transformations
|
|
|
|
### From Feature to Standard
|
|
|
|
**Before**: "Session registry is a new feature"
|
|
**After**: "Use the session registry"
|
|
|
|
**Before**: "You can optionally use create-session.sh"
|
|
**After**: "Create sessions with create-session.sh"
|
|
|
|
**Before**: "The recommended approach is..."
|
|
**After**: [Just describe the approach as the default]
|
|
|
|
### From Optional to Canonical
|
|
|
|
**Before**: "Consider using -s flag for convenience"
|
|
**After**: "Use -s flag to specify the session"
|
|
|
|
**Before**: "The -s flag is a shorthand that may be helpful"
|
|
**After**: "The -s flag identifies the session by name"
|
|
|
|
### From Hedging to Direct
|
|
|
|
**Before**: "You might want to try the session registry"
|
|
**After**: "The session registry tracks sessions automatically"
|
|
|
|
**Before**: "It's recommended to clean up dead sessions regularly"
|
|
**After**: "Clean up dead sessions with cleanup-sessions.sh"
|
|
|
|
---
|
|
|
|
## Section Positioning
|
|
|
|
### Primary Content (80-90% of docs)
|
|
|
|
Focus on the canonical approach:
|
|
- Quick start
|
|
- Common workflows
|
|
- Standard examples
|
|
- Main documentation
|
|
|
|
### Alternative Content (10-20% of docs)
|
|
|
|
Relegated to end or separate files:
|
|
- "Alternative:" sections
|
|
- "Advanced:" sections
|
|
- "Manual:" approaches
|
|
- Legacy compatibility
|
|
|
|
---
|
|
|
|
## Migration Guidance
|
|
|
|
When transitioning from old to new approach:
|
|
|
|
### During Migration
|
|
|
|
Acknowledge the transition but frame it positively:
|
|
|
|
```markdown
|
|
# Tool Name
|
|
|
|
Use [new approach] for [task].
|
|
|
|
## Migrating from Manual Approach
|
|
|
|
If you're currently using manual [old approach]:
|
|
1. Replace [old command] with [new command]
|
|
2. Remove [old pattern]
|
|
3. Adopt [new pattern]
|
|
|
|
Migration is straightforward and improves [benefit].
|
|
```
|
|
|
|
### After Migration Period
|
|
|
|
Remove migration notices, treat new approach as standard:
|
|
|
|
```markdown
|
|
# Tool Name
|
|
|
|
Use [new approach] for [task].
|
|
|
|
## Alternative: Manual Approach
|
|
For advanced cases, see [manual.md](references/manual.md).
|
|
```
|
|
|
|
---
|
|
|
|
## Verification Checklist
|
|
|
|
Mental model shift audit:
|
|
|
|
Language:
|
|
- [ ] No "new feature" or "NEW!" markers
|
|
- [ ] No "recommended" or "optional" hedging
|
|
- [ ] No side-by-side old vs new comparisons
|
|
- [ ] Direct, imperative instructions
|
|
- [ ] Confident tone throughout
|
|
|
|
Structure:
|
|
- [ ] Canonical approach presented first
|
|
- [ ] Primary content focuses on canonical approach
|
|
- [ ] Alternatives relegated to end or separate files
|
|
- [ ] Section titles don't imply choice ("Quick Start" not "Option 1")
|
|
|
|
Content:
|
|
- [ ] Examples use canonical approach
|
|
- [ ] Workflow descriptions assume canonical approach
|
|
- [ ] Troubleshooting assumes canonical approach
|
|
- [ ] Getting started uses canonical approach
|
|
|
|
---
|
|
|
|
## Common Mistakes
|
|
|
|
### Mistake 1: Hedging with "Recommended"
|
|
|
|
❌ "The recommended way is to use the registry"
|
|
✅ "Use the registry for session management"
|
|
|
|
**Why**: "Recommended" implies other approaches are equally valid.
|
|
|
|
### Mistake 2: Feature Announcement Language
|
|
|
|
❌ "We're introducing session registry support"
|
|
✅ "Session registry provides automatic session tracking"
|
|
|
|
**Why**: "Introducing" or "new" frames it as optional addition.
|
|
|
|
### Mistake 3: Choice Architecture
|
|
|
|
❌ "Choose between registry or manual approach based on your needs"
|
|
✅ "Use registry for session management. For advanced cases requiring manual control, see..."
|
|
|
|
**Why**: Presenting choice implies both are equal. Default should be clear.
|
|
|
|
### Mistake 4: Qualification
|
|
|
|
❌ "Session registry can help you manage sessions more easily"
|
|
✅ "Session registry manages sessions automatically"
|
|
|
|
**Why**: "Can help" and "more easily" undermine confidence.
|
|
|
|
### Mistake 5: Comparison to Old Way
|
|
|
|
❌ "Unlike manual socket management, session registry is automatic"
|
|
✅ "Session registry tracks sessions automatically"
|
|
|
|
**Why**: Mentioning the old way keeps it in the mental model.
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
**Mental model shift means**:
|
|
- Documentation reflects the feature as canonical
|
|
- Language is direct and confident
|
|
- Alternatives are clearly secondary
|
|
- No hedging or option-presenting
|
|
|
|
**Key transformation**:
|
|
- From: "New recommended feature you can optionally use"
|
|
- To: "This is how you do it"
|
|
|
|
**Test**: Read your documentation. If someone unfamiliar with the history would see multiple equally-presented approaches, the mental model shift is incomplete.
|