skills/mav-create-solution-design/SKILL.md
How to produce a solution design for a GitHub issue or task. Covers codebase exploration, design structure, and validation. Used as a dependency from workflow skills.
npx skillsauth add thermiteau/maverick mav-create-solution-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.
Produce a solution design before any implementation begins. The design validates the approach, surfaces risks early, and creates a shared understanding of what will be built.
Always. Even for small tasks. A design for a one-line fix might be two sentences, but it forces you to confirm you understand the problem and have identified the right place to make the change.
digraph design {
"Read the issue/task requirements" [shape=box];
"Explore the codebase" [shape=box];
"Identify affected areas" [shape=box];
"Draft the design" [shape=box];
"Validate against requirements" [shape=diamond];
"Design complete" [shape=box];
"Revise design" [shape=box];
"Read the issue/task requirements" -> "Explore the codebase";
"Explore the codebase" -> "Identify affected areas";
"Identify affected areas" -> "Draft the design";
"Draft the design" -> "Validate against requirements";
"Validate against requirements" -> "Design complete" [label="all requirements addressed"];
"Validate against requirements" -> "Revise design" [label="gaps found"];
"Revise design" -> "Validate against requirements";
}
Extract from the issue or task:
Use Glob, Grep, Read, and subagents to understand:
List every file, module, or system that will be created or modified. Be specific — name files, not just "the API layer".
Use the structure below.
Walk through each requirement or acceptance criterion from the issue and confirm the design addresses it. If any are missed, revise.
## Solution Design
### Approach
<1-2 paragraphs describing the solution at a high level. What will be built/changed and how it fits into the existing architecture.>
### Areas Affected
- `path/to/file.ts` — <what changes and why>
- `path/to/other-file.ts` — <what changes and why>
- `path/to/new-file.ts` — <new file, purpose>
### Key Decisions
- <Decision 1> — <rationale, alternatives considered>
- <Decision 2> — <rationale, alternatives considered>
### Risks / Open Questions
- <Risk or unknown that might complicate implementation>
- <Question that needs answering before or during implementation>
### Acceptance Criteria Mapping
- [ ] <Criterion from issue> → addressed by <which part of the approach>
- [ ] <Criterion from issue> → addressed by <which part of the approach>
Scale the design to the task:
| Task size | Design depth | | ---------------------------------------- | ---------------------------------------------- | | Trivial (typo, config change) | 2-3 sentences: what file, what change, why | | Small (single function, simple bug fix) | Approach + areas affected | | Medium (new endpoint, feature addition) | Full design structure | | Large (new system, cross-cutting change) | Full design + architecture diagram description |
Before the design is considered complete:
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.