By mhenke
Use when writing, reviewing, or modifying any code. Applies complexity-driven design principles from A Philosophy of Software Design, 2nd Edition by John Ousterhout.
Quantitative design audit. Counts pass-throughs, duplication, doc gaps, naming issues, and exceptions across 5 dimensions, scored 0-4.
Qualitative design review. Two independent personas evaluate your code against 18 APOSD principles and flag top issues by severity.
Always-on design rules for AI coding agents. 15 principles from A Philosophy of Software Design — applies to every task without explicit invocation.
Use when creating a new release — drafting a changelog entry, creating git tags, publishing via GitHub Releases, or updating README install examples to pin to the latest tagged version.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Behavioral guidelines for AI coding agents inspired by A Philosophy of Software Design, 2nd Edition by John Ousterhout (Yaknyam Press, 2021).
Designed for Claude Code, OpenCode, Cursor, and any AI coding agent.
Software complexity is the fundamental challenge in writing programs. As systems grow, complexity accumulates and makes code harder to understand, modify, and extend. Most programmers focus on getting code working quickly ("tactical programming") without investing in design quality, which accelerates the accumulation of complexity.
"The greatest limitation in writing software is our ability to understand the systems we are creating."
Ousterhout identifies three symptoms of complexity:
| Symptom | Description |
|---|---|
| Change amplification | A single change requires edits in many places |
| Cognitive load | How much a developer must hold in their head to make a change |
| Unknown unknowns | You don't know what code to change or what to consider |
Every principle and red flag in this skill traces to one of these three.
Fifteen behavioral rules in one CLAUDE.md file that make agents design software strategically, not tactically:
| Rule | Addresses |
|---|---|
| Strategic Over Tactical | Design debt, "just make it work" pressure |
| Design Deep Modules | Shallow interfaces, classitis |
| Information Hiding | Leaky abstractions, exposed internals |
| Design General-Purpose Modules | Special-purpose code, narrow interfaces |
| Different Layer, Different Abstraction | Pass-through methods and variables |
| Pull Complexity Downward | Complex callers, simple implementations |
| Comments First | Missing or useless documentation |
| Choosing Names | Vague names, inconsistent conventions |
| Design for Reading | Obscure code, cognitive load |
| Define Errors Out of Existence | Error-handling duplication |
| Better Together or Better Apart | Wrong module boundaries |
| Design It Twice | First-design bias |
| Design for the Future | Unencapsulated volatility |
| Increments Are Abstractions | Feature-driven decomposition |
| Modify Strategically | Code rot during maintenance |
Plus two on-demand analysis commands:
| Command | Purpose |
|---|---|
aposd critique [target] | Evaluate design against 18 principles + dual-persona assessment (Strategic Thinker + Tactical Tornado). P0–P3 severity tagging. Results saved to .aposd/critique/ for trend tracking. Suppress recurring findings in .aposd/critique/ignore.md. |
aposd audit [target] | Countable design audit: 5 dimensions scored 0–4, total /20. Tactical Tornado risk assessment. P0–P3 severity tagging. |
See docs/output-interpretation.md for how to interpret scoring, severity, personas, and snapshot persistence.
Option A (Recommended): npx skills
npx skills add mhenke/john-ousterhout-skills
Option B: Claude Code Plugin
From within Claude Code, add the marketplace and install:
/plugin marketplace add mhenke/john-ousterhout-skills
/plugin install john-ousterhout-skills@aposd-skills
Option C: Cursor
Copy .cursor/rules/aposd-guidelines.mdc into your project's .cursor/rules/ directory. See CURSOR.md.
Option D: OpenCode
Clone the repo and symlink skills into ~/.config/opencode/skills/:
git clone https://github.com/mhenke/john-ousterhout-skills.git
cd john-ousterhout-skills
ln -s $(pwd)/skills/aposd ~/.config/opencode/skills/aposd
ln -s $(pwd)/skills/aposd-critique ~/.config/opencode/skills/aposd-critique
ln -s $(pwd)/skills/aposd-audit ~/.config/opencode/skills/aposd-audit
These guidelines are working if you see:
From Ousterhout:
"The overall goal is to reduce complexity; this is more important than any particular principle or idea you read here."
When principles conflict, the one that better reduces cognitive load wins. Every red flag traces to one of the three complexity symptoms. If a principle isn't reducing complexity, don't apply it dogmatically.
These guidelines are designed to be merged with project-specific instructions. Add them to your existing CLAUDE.md or create a new one.
npx claudepluginhub mhenke/john-ousterhout-skills --plugin aposd-skillsUI/UX design intelligence. 67 styles, 161 palettes, 57 font pairings, 25 charts, 15 stacks (React, Next.js, Vue, Svelte, Astro, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui, Nuxt, Jetpack Compose). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
This skill should be used when users need to generate ideas, explore creative solutions, or systematically brainstorm approaches to problems. Use when users request help with ideation, content planning, product features, marketing campaigns, strategic planning, creative writing, or any task requiring structured idea generation. The skill provides 30+ research-validated prompt patterns across 14 categories with exact templates, success metrics, and domain-specific applications.
Develop, test, build, and deploy Godot 4.x games with Claude Code. Includes GdUnit4 testing, web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
A growing collection of Claude-compatible academic workflow bundles. Covers scientific figures, manuscript writing and polishing, reviewer assessment, citation retrieval, data availability, paper reading, literature search, response letters, paper-to-PPTX conversion, and evidence-grounded Chinese invention patent drafting. Rules are organized as reusable skill folders with explicit workflows and quality checks.