strategic-planning

Installation
SKILL.md

Strategic Software Design Planner

Software rots because of accumulated tactical decisions — each one small and reasonable at the time, together turning a clean system into a tangle of workarounds. This skill pushes back. It teaches agents to treat design as an investment, favoring simple interfaces over simple implementations, and deep abstractions over shallow wrappers.

The ideas here come from John Ousterhout's A Philosophy of Software Design. The goal is not ceremony — it is to spend the 10–20% of planning time that prevents the next 80% of maintenance pain.

Core Principles

1. Strategic over Tactical Programming

Tactical programming is writing something that works right now. Strategic programming is writing something that is easy to change six months from now.

Every design decision is an investment. Ask: does this choice reduce future complexity, or does it just move it somewhere else? Allocate 10–20% of effort to finding the cleanest design — not because it is perfectionist, but because debt compounds faster than features.

2. Design Deep Modules

A module is deep when its interface is simple relative to the functionality it provides. A module is shallow when the interface cost approaches or exceeds the abstraction benefit.

The Unix file I/O interface (open, read, write, close) is five functions that hide tens of thousands of lines of filesystem and device complexity. That is the target. When designing a module, ask: what is the simplest interface that still lets callers ignore everything they do not need to know?

Related skills

More from vmvarela/skills

Installs
1
Repository
vmvarela/skills
First Seen
Mar 31, 2026