skills/design-first/SKILL.md
Triage whether a task needs architecture planning before implementation. Use this skill at the start of every non-trivial task to decide whether to design first or implement directly. Especially important when the task involves new modules, data model changes, API design, technology choices, or cross-cutting changes affecting 3+ files. If you're about to start coding a complex feature without a design, pause and use this skill first.
npx skillsauth add maestria-co/ai-playbook design-firstInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Not every task needs an architecture design phase. This skill provides the triage criteria to decide: design first, or implement directly? It prevents two failure modes:
When unsure, use this heuristic:
If you can describe the implementation in 3 sentences or fewer, implement directly. If you need more than 3 sentences, design first.
When the triage says "design first":
designing-systems to produce an ADR (Architecture Decision Record)implementing-featuresFor changes that need some design but not a full ADR:
## Design Note: [Feature Name]
**Problem:** [What needs to be built/changed]
**Approach:** [How you'll do it]
**Key decisions:**
- [Decision 1]: [rationale]
- [Decision 2]: [rationale]
**Files affected:** [list]
**Risks:** [what could go wrong]
Write this in the task's plan.md under a "## Design" section. No need for a
separate ADR unless the decision has long-term implications.
For decisions that affect the project long-term:
designing-systems skill.context/decisions/When the triage says "implement directly":
.context/standards.md and existing code patternsimplementing-featureswriting-testsverification-checklistNo design document needed. If during implementation you discover the change is more complex than expected, stop and switch to the design-first workflow.
Watch for these signals during a task — they indicate you should pause and design:
| Signal | What it means | | -------------------------------------- | ------------------------------------ | | "I need to change 5+ files" | Cross-cutting concern — design first | | "I'm not sure which approach to take" | Multiple options — design first | | "This might break the existing API" | Interface change — design first | | "I need to restructure the data model" | Schema change — design first | | "Other teams depend on this" | Coordination needed — design first | | "I keep going back and forth" | Unclear approach — stop and design |
Task: "Change the error message for invalid emails"
BAD: Write a 3-page ADR about error message architecture
GOOD: Just change the string
Task: "Add multi-tenant support to the database layer"
BAD: Start coding immediately, figure out the approach as you go
GOOD: Design the tenancy model first, document the schema changes, then implement
BAD: Build three prototypes to "see which feels right"
GOOD: List the options, evaluate trade-offs on paper, pick one, build it once
plan.md; formal designs go in .context/decisions/.context/ for existing patterns that may applydevelopment
Writes and runs a test suite for a piece of code, covering happy path, edge cases, error cases, and security cases. Use when: implementation is complete and needs test coverage, a bug needs a reproduction test and fix validation, or code needs coverage before a refactor. Do not use when: the code under test is not yet implemented, or the spec is still unclear.
testing
Use when creating a new skill, editing an existing skill, or helping a user author a skill for this system. Covers structure, discoverability, quality, and discipline hardening.
development
Evidence-based verification process to run before marking any task complete. Use this skill every time you're about to report that work is done — for features, bug fixes, refactoring, or any code change. This catches the most common failure mode: declaring "done" without proof. If you're finishing up and about to tell the user the task is complete, run this checklist first.
development
Teaches agents how to discover, select, and invoke skills from the skill library. Use this skill whenever you're uncertain which skill applies to a task, when composing multiple skills for complex work, or when you need to understand what skills are available. This is your go-to when facing an ambiguous task and need to figure out the right approach before diving into implementation.