name: quality-software-manifesto
description: My manifesto on how to write high quality software. ALWAYS read this before writing or designing software.
Principles
Prioritize Quality
Quality is delivering precisely what you have promised reliably and without drama. It is meeting the specification.
Insufficient planning, un-disciplined execution, and superficial specifications lead to quality issues.
Quality is an investment in the long term velocity of the company.
Respect the Complexity of the Craft
Complex environments are characterized by numerous, diverse, and interconnected components that constantly shift and influence each other, making them difficult to predict or understand.
All software systems are complex environments. We must expect non-linearities, and unpredictable behavior.
Careful thought is required to design and operate systems that are resilient in the face of complexity.
The laws of thermodynamics tell us that we must continuously invest energy to prevent the increase in complexity of our systems.
Maximize Velocity; Not Speed
The fastest way between two points is a straight line; clarity of the objective is the critical variable. We must think carefully
Optimize for acceleration rather than velocity. Continuously improving acceleration maximizes the velocity of the company over the long term.
The only way to increase acceleration is to increase leverage.
Practices
1. Keep Things Tidy
Kent Beck’s Tidy First
Small improvements compound over the long term
Software’s core value is it’s ability to change quickly
2. Keep Things Small
Small programs are easier to change and understand.
Writing a small program often takes more time than writing a large program
Elegant design comes from iteration. We must be willing to edit and throw away some of our drafts.
Deleting code aggressively is the best way to keep programs small.
3. Prefer Type Driven Development
Push the responsibility for preventing inconsistent states onto the compiler
Explicit represent the states of domain objects and their transitions
Humans are not good at thinking exhaustively. Avoid trying to enumerate validations for all possible edges entering a node.
Avoid anemic domains.
4. Prefer Functional Design Patterns
Default to immutability
Push side effects as close to the boundaries as possible
Prefer pipelines over imperative control flow
Separate business rules from control flow
5. Expect Failure
Use fault tree analysis to discover and prioritize failure modes
6. Define Success Precisely
Use SMART goals to define success precisely
1---2name: quality-software-manifesto3description: ---4---5---6name: quality-software-manifesto7description: My manifesto on how to write high quality software. ALWAYS read this before writing or designing software.89# Principles1011## Prioritize Quality1213- Quality is delivering precisely what you have promised reliably and without drama. It is meeting the specification.14- Insufficient planning, un-disciplined execution, and superficial specifications lead to quality issues.15- Quality is an investment in the long term velocity of the company.1617## Respect the Complexity of the Craft1819- Complex environments are characterized by numerous, diverse, and interconnected components that constantly shift and influence each other, making them difficult to predict or understand.20- All software systems are complex environments. We must expect non-linearities, and unpredictable behavior.21- Careful thought is required to design and operate systems that are resilient in the face of complexity.22- The laws of thermodynamics tell us that we must continuously invest energy to prevent the increase in complexity of our systems.2324## Maximize Velocity; Not Speed2526- The fastest way between two points is a straight line; clarity of the objective is the critical variable. We must think carefully27- Optimize for acceleration rather than velocity. Continuously improving acceleration maximizes the velocity of the company over the long term.28- The only way to increase acceleration is to increase leverage.2930# Practices3132## 1. Keep Things Tidy3334- Kent Beck’s Tidy First35- Small improvements compound over the long term36- Software’s core value is it’s ability to change quickly3738## 2. Keep Things Small3940- Small programs are easier to change and understand.41- Writing a small program often takes more time than writing a large program42- Elegant design comes from iteration. We must be willing to edit and throw away some of our drafts.43- Deleting code aggressively is the best way to keep programs small.4445## 3. Prefer Type Driven Development4647- Push the responsibility for preventing inconsistent states onto the compiler48- Explicit represent the states of domain objects and their transitions49- Humans are not good at thinking exhaustively. Avoid trying to enumerate validations for all possible edges entering a node.50- Avoid anemic domains.5152## 4. Prefer Functional Design Patterns5354- Default to immutability55- Push side effects as close to the boundaries as possible56- Prefer pipelines over imperative control flow57- Separate business rules from control flow5859## 5. Expect Failure6061- Use fault tree analysis to discover and prioritize failure modes6263## 6. Define Success Precisely6465- Use SMART goals to define success precisely
Run npx skillmds@latest add jordangaston/quality-software-manifesto in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
--- It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
jordangaston (@jordangaston) published this skill. Their other Agent Skills are listed on their SkillMD profile.