skills/mav-bp-solutions-design/SKILL.md
Solutions design conventions for all projects. Covers the requirement for design before implementation, design documentation persistence, requirements traceability, and Architecture Decision Records. Applied before starting implementation of any non-trivial change.
npx skillsauth add thermiteau/maverick mav-bp-solutions-designInstall 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.
Ensure every non-trivial change is designed before it is implemented. Design prevents wasted effort, surfaces risks early, and creates a durable record of decisions for future developers.
Every change — from a one-line bug fix to a multi-sprint feature — requires some level of design. The depth scales with the change's complexity and risk, but the act of thinking through the approach before coding is always required.
Even for the smallest change, the developer must be able to answer:
If these questions cannot be answered clearly, more design work is needed.
A design that does not trace back to a requirement is unanchored — it may solve the wrong problem, over-engineer a simple need, or miss the actual acceptance criteria.
Before proposing a design, explore and understand the relevant parts of the existing codebase:
| Area | Questions | | ---- | --------- | | Architecture | What is the high-level structure? Monolith, microservices, modular monolith? Where does the new change fit? | | Patterns in use | What patterns does the codebase already use for similar functionality? (Repository pattern, service layer, event-driven, etc.) | | Dependencies | What libraries, frameworks, and services are already in use? Can the design leverage existing dependencies rather than adding new ones? | | Data model | What is the current data model? Does the design require schema changes, migrations, or new tables? | | API surface | Does the change affect public APIs, internal APIs, or integration contracts? | | Test infrastructure | What testing patterns exist? How will the design be tested using existing infrastructure? |
The design must explicitly list what will change. This serves as both a planning tool and a review aid.
Before implementation begins, the design must be validated against the original requirements:
Designs must be saved as durable artifacts. A design that exists only in a developer's head or a Slack conversation is not a design — it is a plan that will be lost.
| Change size | Where to persist the design | Format |
| ----------- | --------------------------- | ------ |
| Trivial (bug fix, config change, copy update) | In the issue or PR description | 2-3 sentences: what, why, how |
| Medium (new feature, significant refactor, new integration) | docs/designs/ directory or detailed issue/PR description | Structured design document with sections for context, approach, affected areas, and alternatives considered |
| Large (architectural change, new service, major migration, technology change) | Architecture Decision Record in docs/decisions/ | Full ADR with context, decision, consequences, and alternatives |
For significant architectural decisions, use the ADR format:
# ADR-NNN: Title of Decision
## Status
Proposed | Accepted | Deprecated | Superseded by ADR-XXX
## Context
What is the situation that requires a decision? What forces are at play?
## Decision
What is the decision that was made?
## Consequences
What are the positive and negative consequences of this decision?
## Alternatives Considered
What other options were evaluated and why were they rejected?
ADR-001, ADR-002, etc.docs/decisions/ and follow the same review process as codeFor medium-sized changes that do not warrant a full ADR:
docs/designs/ with a descriptive filename (e.g., user-export-feature.md)For the step-by-step process of producing a solution design (codebase exploration, design structure, validation steps), use the mav-create-solution-design workflow skill. That skill implements the mechanics; this skill defines the standards that every design must meet.
Not every change needs a 10-page design document. The investment in design should be proportional to the risk and complexity of the change:
Examples: fix a typo, update a dependency, change a log message, adjust a CSS value.
Design effort: Mental model only. Capture the "what and why" in the commit message or PR description.
Artifact: 2-3 sentences in the PR description.
Examples: add a new API endpoint, implement a feature behind a flag, refactor a module, add a new integration.
Design effort: 30-60 minutes exploring the codebase, writing a structured design.
Artifact: Structured design in the issue description, PR description, or a document in docs/designs/.
Sections to include:
Examples: introduce a new service, migrate a database, change the authentication system, adopt a new framework, restructure the module layout.
Design effort: Hours to days. May require multiple rounds of review.
Artifact: Full ADR in docs/decisions/ and/or a detailed design document in docs/designs/.
Sections to include:
| Pattern | Issue | Fix | | ------- | ----- | --- | | PR with no design context in description | Missing design artifact | Add design rationale to PR description or link to design doc | | Implementation does not match the design | Design-code drift | Update design or adjust implementation to match | | Change touches many unrelated modules | Possible design gap | Review whether the change should be decomposed differently | | New pattern introduced without justification | Convention violation | Follow existing patterns or create an ADR justifying the new approach | | No acceptance criteria referenced | Requirements traceability gap | Link to the requirement and explain how each criterion is met | | Architectural decision with no ADR | Decision will be lost | Write an ADR before or alongside the implementation | | Design doc exists but is stale | Documentation rot | Update the design doc to reflect what was actually built | | Requirements ambiguity resolved by guessing | Risk of building the wrong thing | Clarify with stakeholder before proceeding |
<!-- maverick-plugin-version: 3.3.7 -->development
--- name: do-test description: Write or update tests for a code change. Operates in two modes: `unit` (module-scoped, fast, deterministic) and `integration` (crosses module / service / database boundaries). Intended to be invoked once per testable change from inside a do-issue-* or do-epic phase. Mode is required. argument-hint: mode: unit or integration user-invocable: true disable-model-invocation: false --- **Depends on:** mav-bp-unit-testing, mav-bp-integration-testing, mav-local-verificati
development
Implement a focused code change. Use this skill as the wrapper for any implementation work so the Maverick workflow report captures what was done and so the agent applies the project's coding standards before editing. Intended to be invoked once per task from inside a do-issue-* or do-epic phase, not standalone.
testing
How to stack a PR on top of an unmerged sibling branch, and how to retarget it to the repo's default branch once the sibling merges. Prevents orphan-merge incidents when a dependent story is ready before its parent.
development
Claim, lease, heartbeat, and release protocols for when multiple Claude Code instances may act on the same issue or epic concurrently. GitHub labels and marker comments are the coordination surface; local state is a cache.