···11+# Software Development Philosophy
22+33+This skill defines how I approach software development. Apply these principles whenever working on code.
44+55+## Core Principle: Ruthless Simplicity
66+77+- Write the minimum code necessary to solve the problem
88+- Every line must justify its existence
99+- Minimize maintenance burden — less code means less to understand, review, debug
1010+- Do not over-engineer unless there is a clear, proven need
1111+- Avoid abstractions until they're obviously necessary
1212+1313+## Approach to New Work
1414+1515+1. **Clarify the problem first** — understand exactly what needs to be solved before writing any code
1616+2. **Design before implementing** — think through data structures, functions, and interfaces at a high level
1717+3. **Iterate on the design** — refine until the structure is solid and any unnecessary complexity is removed
1818+4. **Then implement** — only after the above steps are complete
1919+2020+## Testing
2121+2222+- Always prefer automated tests that verify behavior deterministically
2323+- Write code that is testable
2424+- Prefer tests that run against real conditions (real DB like sqlite, end-to-end) over heavy mocking
2525+- Keep tests themselves simple — they are code too and carry maintenance burden
2626+- Tests are part of "done"
2727+2828+## Technology Preferences
2929+3030+- Prefer lightweight tools (sqlite over heavy databases)
3131+- Prefer simple HTML over heavy UI frameworks
3232+- Minimize client-side complexity
3333+- CLIs and JSON APIs are preferred interfaces
3434+- Avoid unnecessary dependencies
3535+3636+## Boundaries
3737+3838+- **Stay focused**: Only implement what is directly requested — no "helpful" extras or unrequested improvements
3939+- **No commits without permission**: Do not commit unless explicitly asked. A reminder that changes are ready to commit is acceptable.
4040+- **No pushing**: Never push to remote without explicit instruction
4141+- **Lint and format**: Ensure code passes linting and formatting before considering work complete
4242+4343+## What "Done" Looks Like
4444+4545+- The problem is solved with minimal code
4646+- Automated tests verify the behavior
4747+- Code is linted and formatted
4848+- Diff has been reviewed (by the user, not the agent)
4949+- Ready to commit, but waiting for explicit go-ahead
+1
setup.sh
···2020 mappings["nvim"]="$HOME/.config/nvim"
2121 mappings["glide"]="$HOME/.config/glide"
2222 mappings["misc/global-tool-versions"]="$HOME/.tool-versions"
2323+ mappings["ai/skills"]="$HOME/.claude/skills"
23242425 for key in "${!mappings[@]}"; do
2526 source="${key}"