Personal development philosophy emphasizing experiment-driven, fail-fast approach. Activate when planning implementations, reviewing code architecture, making design decisions, or when user asks to apply development principles. Guides against over-engineering and towards solving real problems with simple solutions. (project, gitignored)
Auto-activate when: User mentions planning, architecture, design decisions, MVP, over-engineering, simplicity, fail-fast, experiment-driven, or asks to apply development principles. Should activate during planning phases of new features or when reviewing proposed implementations.
Execute immediately. Solve real problems. Start simple, iterate based on evidence.
Four pillars:
~/.claude/skills/least-astonishment/)Execute tasks without verbose explanations:
✅ Do this:
❌ Never do this:
Complete requests fully before returning control.
Only ask when:
Always:
Never:
When errors occur, fix them autonomously:
✅ CORRECT flow:
1. Run tests → 3 failures
2. "Fixing import errors..."
3. Add missing dependencies
4. Run tests → All pass
5. "Tests passing. Done."
❌ WRONG flow:
1. Run tests → 3 failures
2. "Tests failed. What should I do?"
[STOP - never leave errors unfixed]
Error recovery: Identify error → State fix → Apply → Verify → Continue
Before completing ANY task, verify you have NOT:
If file was deleted, assume intentional - never recreate without request.
File rules:
.spec/ or .chat_planning/Code should explain itself. Comment to explain WHY, not WHAT.
# ❌ BAD - Obvious comment
# Increment counter by 1
counter += 1
# ✅ GOOD - No comment needed
counter += 1
# ✅ GOOD - Comment explains WHY (not obvious)
# Binary search because list is sorted and large (10M+ items)
index = binary_search(sorted_list, target)
When to comment: Non-obvious trade-offs, performance optimizations, workarounds (with ticket reference), complex algorithms
When NOT to comment: Variable assignments, function calls, loop iterations, return statements, standard patterns
Start simple, iterate based on real needs, avoid speculative over-engineering.
Scope discipline: Change only what's requested. No unsolicited refactoring. No speculative features.
Don't build abstractions before you have 3+ concrete cases.
| Principle/Pattern | When to Apply | When to Skip | |------------------|---------------|--------------| | SOLID | Production code, unclear responsibilities | Experiments, simple scripts | | DRY | Duplication causes pain (3+ cases) | First occurrence, learning code | | CQRS | Read/write patterns differ significantly | Simple CRUD, experiments | | Dependency Injection | Testing requires mocking, framework encourages | Simple imports work fine | | Test-First | Non-obvious/critical behavior | Trivial getters/setters |
| Problem | Consider Pattern | |---------|-----------------| | Constructor has 8+ parameters | Builder | | Need dynamic features | Decorator | | Simplify complex library | Facade | | State change notifications | Observer | | Undo/redo needed | Command/Memento | | Behavior changes by state | State | | Swap algorithms | Strategy |
Before applying ANY pattern:
Pattern Anti-Patterns:
Never interrupt between steps to ask permission.
Verification after code changes:
uv run pytestBefore adding abstraction:
Before adding complexity:
During implementation:
| Phase | Approach | |-------|----------| | Experiment | Simplest code → Notice pain → Extract patterns → Document learnings | | Production | Apply SOLID → Comprehensive tests → Inject dependencies → Consider CQRS → Enforce DRY |
Quality standards: Plan before each tool call. Test thoroughly. Handle edge cases. Follow project conventions.
Stay focused: Minimal changes. No over-engineering. No speculative features. Respect existing patterns.
Execute immediately. Communicate concisely. Let code speak. Experiment fast, learn from failures, solve real problems.
Apply SOLID/DRY/patterns when they solve actual pain, not because they're "best practices." Start simple, iterate based on evidence. Complete tasks fully without asking permission for obvious steps.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer