Use when applying software craftsmanship principles — code quality, professional practices, and continuous improvement drawn from canonical works.
USE FOR: code quality principles, Boy Scout Rule, DRY/KISS/YAGNI, craftsmanship practices, choosing quality improvement approaches
DO NOT USE FOR: specific principle details (use clean-code, solid, refactoring sub-skills), architecture decisions (use dev/architecture), testing strategy (use testing)
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Use when applying software craftsmanship principles — code quality, professional practices, and continuous improvement drawn from canonical works.
USE FOR: code quality principles, Boy Scout Rule, DRY/KISS/YAGNI, craftsmanship practices, choosing quality improvement approaches
DO NOT USE FOR: specific principle details (use clean-code, solid, refactoring sub-skills), architecture decisions (use dev/architecture), testing strategy (use testing)
[{"title":"Manifesto for Software Craftsmanship","url":"http://manifesto.softwarecraftsmanship.org/"},{"title":"The Pragmatic Programmer — pragprog.com","url":"https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/"}]
Software Craftsmanship
Overview
Software craftsmanship is a movement that emphasizes the coding skills of developers themselves. It extends agile development by focusing not just on working software, but on well-crafted software. The Software Craftsmanship Manifesto (2009) declares:
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
Not only working software, but also well-crafted software
Not only responding to change, but also steadily adding value
Not only individuals and interactions, but also a community of professionals
Not only customer collaboration, but also productive partnerships
The Boy Scout Rule
"Leave the code better than you found it." — Robert C. Martin
Every time you touch code, improve it. Fix a name, extract a method, add a missing test, remove dead code. The cumulative effect of small, continuous improvements is a codebase that gets healthier over time rather than decaying.
Applying the Boy Scout Rule:
Rename a variable to be more descriptive while fixing a bug nearby.
Extract a duplicated block into a shared function when adding a feature.
Delete commented-out code that has been dead for months.
Add a missing null check or guard clause when reading through a function.
Write a test for an untested path you discover while investigating an issue.
The Pragmatic Programmer Principles
From The Pragmatic Programmer by Andrew Hunt and David Thomas:
Principle
Meaning
Care About Your Craft
There is no point in developing software unless you care about doing it well.
Think! About Your Work
Turn off the autopilot and take control — constantly critique and appraise your work.
DRY — Don't Repeat Yourself
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
Orthogonality
Eliminate effects between unrelated things. Changes in one area should not ripple into others.
Tracer Bullets
Use code that glows in the dark — build thin, end-to-end slices to validate architecture early.
Prototypes and Post-It Notes
Prototype to learn. Prototypes are disposable — make that clear.
Domain Languages
Program close to the problem domain.
Estimate
Learn to estimate to avoid surprises. "I'll get back to you" is always an acceptable answer.
Good-Enough Software
Know when to stop. Great software today is often preferable to perfect software tomorrow.
Invest Regularly in Your Knowledge Portfolio
Learn at least one new language every year. Read a technical book each month.
It's Both What You Say and the Way You Say It
Know your audience. Communicate effectively.
Principles Quick-Reference
Principle
Definition
Violation Sign
DRY (Don't Repeat Yourself)
Every piece of knowledge has a single, unambiguous representation.