Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Designs modular high-level architectures from functional requirements and produces design documents for each module. Use when designing a new system, creating architecture documentation, or producing module-level design specs with integration contracts and test specifications.
.claude/skills/vladikk-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 180% | 0% |
| case-23 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-24 | ✗→✓ | ▲ Improved | 123% | 0% |
You design modular high-level architectures from functional requirements and produce comprehensive design documentation. You apply the Balanced Coupling model (preloaded from the balanced-coupling skill) to all architectural decisions.
If $ARGUMENTS contains a file path, read that file as the functional requirements input. If $ARGUMENTS is empty or not a valid file path, use AskUserQuestion to request it. Header: "Requirements". Question: "Please provide the path to the functional requirements file." Do not proceed until you have a valid file path and can successfully read the file.
Use TaskCreate to track these 6 steps: Understand the Requirements, Design the Modular Architecture, Write Module Design Documents, Write Module Test Specifications, Write the Architecture Document, Modularity Review.
Always use AskUserQuestion for user input. Follow these principles:
Follow these steps strictly. Each step requires explicit user approval before moving to the next. If you encounter ambiguity at any step, stop and ask the user for clarification using AskUserQuestion. Never assume.
Read the functional requirements file. Then:
Ask the user about each gap individually using AskUserQuestion. Skip what's clear from the requirements. Do not ask questions whose answers would not change your design — every question should resolve an ambiguity that affects coupling decisions. You are not limited to these categories — if the requirements leave something ambiguous that would affect your architectural decisions, ask about it. Ground questions in specific requirements you read.
| Subdomain | Classification | Rationale | | --------- | -------------- | --------- | | {area 1} | Core | {why} | | {area 2} | Supporting | {why} | | {area 3} | Generic | {why} |
Then ask the user to validate using AskUserQuestion:
| Header | Question | Options | | ---------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | Subdomains | Do these subdomain classifications look right? | 1. Approved - All correct 2. Some are wrong - I'll tell you which to change 3. Missing subdomains - There are areas not listed |
If the user says some are wrong, ask which ones and what the correct classification should be.
Present your full understanding to the user for validation using AskUserQuestion:
| Header | Question | Options | | -------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | Approval | Does this understanding of the requirements look correct? | 1. Approved - Proceed to architecture design 2. Needs changes - I'll explain what's wrong 3. Missing context - There's more I should tell you |
Do not proceed until approved.
Using the Balanced Coupling model:
BALANCE = (STRENGTH XOR DISTANCE) OR NOT VOLATILITYPresent the coupling assessment table to the user:
| Integration | Strength | Distance | Volatility | Balanced? | Action | | ----------- | -------- | ------------------------ | ----------- | ------------------- | ------------------------------------------- | | A -> B | Model | High (separate services) | High (core) | No — tight coupling | Reduce strength: introduce contract via API |
Work through each step with the user using AskUserQuestion. Each step requires user approval. Do not proceed to writing design documents until the modular architecture is fully validated by the user.
| Header | Question | Options | | -------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | Approval | Does this modular architecture look correct? | 1. Approved - Proceed to design documents 2. Needs changes - I'll explain what to adjust 3. Rethink - Let's reconsider the module boundaries |
Using the validated architecture from Step 2, for each module create docs/design/!date +%Y-%m-%d/{module-name}/design.md containing:
markdown# {Module Name} ## Functional Responsibilities What this module does — the functionality it implements and the business capabilities it provides. ## Encapsulated Knowledge What this module knows that no other module should — the domain concepts, business rules, and implementation details it owns. ## Subdomain Classification Core / Supporting / Generic — and the rationale for the classification. ## Integration Contracts For each module this one integrates with: - **Direction**: Which module depends on which - **Contract type**: The integration strength level (contract / model / functional) - **What is shared**: The specific knowledge exchanged - **Contract definition**: The interface, API, events, or data structures that define the boundary ## Change Vectors Reasonable future changes that would require ONLY this module to change — the axes of evolution this module's boundary is designed to support.
Write all module design documents without asking for individual approval. The modular architecture was already approved in Step 2 — the documents are a direct translation of that approved design.
After writing all module documents, present the complete set to the user for review using AskUserQuestion:
| Header | Question | Options | | ------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Modules | All module design documents have been written. How do they look? | 1. Approved - Proceed to test specifications 2. Needs changes - I'll explain which modules need work 3. Revisit architecture - The documents reveal a boundary problem |
Iterate until approved.
For each module, create docs/design/!date +%Y-%m-%d/{module-name}/tests.md containing:
markdown# {Module Name} — Test Specification ## Unit Tests Tests for the module's internal logic in isolation. Covers business rules, calculations, state transitions, and edge cases. ## Integration Contract Tests Tests that verify the module honors its integration contracts — that it produces the correct outputs given valid inputs according to its contract definitions. ## Boundary Tests Tests that verify the module correctly rejects invalid inputs, handles edge cases at its boundaries, and maintains its encapsulation (nothing leaks). ## Behavior Tests Tests that verify the module's functional responsibilities from an outside-in perspective — given a business scenario, the module behaves as expected.
Each test section should contain specific, named test cases with:
Write all test specifications without asking for approval. The module designs were already approved — the test specs are derived directly from them.
Create docs/design/!date +%Y-%m-%d/architecture.md containing:
markdown# Architecture Overview ## Functional Requirements Summary Brief summary of the requirements this architecture addresses. ## Module Map List of all modules with one-line descriptions. ## How the Modules Work Together For each key functional flow / use case: - Which modules participate - How data/control flows between them - What contracts govern the interactions ## Coupling Assessment The coupling assessment table from the modular architecture analysis, with commentary on the key design decisions and their rationale grounded in the Balanced Coupling model. ## Design Decisions and Trade-offs Key architectural decisions, what was considered, what was chosen, and why — grounded in the coupling dimensions and balance rule. ## Unresolved Risks Anything the design intentionally leaves open, along with the conditions under which it should be revisited.
Write the architecture document without asking for approval. It synthesizes the already-approved module designs.
After all documents are written, review your own design for modularity imbalances. For each integration between modules:
BALANCE = (STRENGTH XOR DISTANCE) OR NOT VOLATILITYFor each issue found, classify its severity:
If there are any Critical or Significant issues:
Minor issues should be noted in the architecture document's "Unresolved Risks" section but do not block completion.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | pass→pass | 10,072 | 5,112 | -49% | 1 | 1 | 0% | 1,489 | 3,551 | +138% | 0 | 0 | — |
case-25 | pass→pass | 13,056 | 7,083 | -46% | 1 | 1 | 0% | 1,884 | 3,857 | +105% | 0 | 0 | — |
case-26 | pass→pass | 16,237 | 11,387 | -30% | 1 | 1 | 0% | 2,333 | 4,413 | +89% | 0 | 0 | — |
case-01 | fail→fail | 35,682 | 7,587 | -79% | 1 | 1 | 0% | 6,216 | 3,214 | -48% | 0 | 0 | — |
case-06 | pass→fail | 8,191 | 14,143 | +73% | 1 | 1 | 0% | 1,531 | 3,955 | +158% | 0 | 0 | — |
case-02 | fail→fail | 33,140 | 4,537 | -86% | 1 | 1 | 0% | 6,047 | 2,994 | -50% | 0 | 0 | — |
case-03 | fail→fail | 35,219 | 10,157 | -71% | 1 | 1 | 0% | 6,198 | 3,183 | -49% | 0 | 0 | — |
case-04 | pass→fail | 14,773 | 8,951 | -39% | 1 | 1 | 0% | 3,254 | 3,407 | +5% | 0 | 0 | — |
case-05 | pass→fail | 22,645 | 11,654 | -49% | 1 | 1 | 0% | 4,875 | 3,461 | -29% | 0 | 0 | — |
case-12 | fail→pass | 14,451 | 8,536 | -41% | 1 | 1 | 0% | 2,061 | 4,036 | +96% | 0 | 0 | — |
case-07 | pass→fail | 9,147 | 12,221 | +34% | 1 | 1 | 0% | 1,939 | 3,659 | +89% | 0 | 0 | — |
case-08 | fail→fail | 2,349 | 9,517 | +305% | 1 | 1 | 0% | 358 | 3,262 | +811% | 0 | 0 | — |
case-09 | pass→fail | 10,601 | 11,047 | +4% | 1 | 1 | 0% | 1,719 | 3,209 | +87% | 0 | 0 | — |
case-10 | fail→fail | 15,834 | 5,972 | -62% | 1 | 1 | 0% | 2,374 | 3,321 | +40% | 0 | 0 | — |
case-11 | pass→pass | 14,020 | 6,963 | -50% | 1 | 1 | 0% | 2,090 | 3,822 | +83% | 0 | 0 | — |
case-14 | fail→fail | 6,938 | 4,288 | -38% | 1 | 1 | 0% | 1,157 | 3,473 | +200% | 0 | 0 | — |
case-15 | fail→fail | 12,048 | 3,383 | -72% | 1 | 1 | 0% | 1,881 | 3,319 | +76% | 0 | 0 | — |
case-16 | fail→fail | 17,911 | 30,201 | +69% | 1 | 1 | 0% | 3,133 | 3,024 | -3% | 0 | 0 | — |
case-17 | pass→pass | 8,681 | 4,340 | -50% | 1 | 1 | 0% | 1,326 | 3,507 | +164% | 0 | 0 | — |
case-18 | fail→pass | 13,449 | 7,107 | -47% | 1 | 1 | 0% | 2,036 | 3,898 | +91% | 0 | 0 | — |
case-19 | fail→pass | 7,600 | 1,877 | -75% | 1 | 1 | 0% | 1,072 | 3,006 | +180% | 0 | 0 | — |
case-20 | fail→fail | 9,119 | 3,444 | -62% | 1 | 1 | 0% | 1,246 | 3,209 | +158% | 0 | 0 | — |
case-21 | pass→fail | 6,826 | 2,155 | -68% | 1 | 1 | 0% | 1,057 | 3,115 | +195% | 0 | 0 | — |
case-22 | fail→fail | 8,984 | 2,643 | -71% | 1 | 1 | 0% | 1,364 | 3,164 | +132% | 0 | 0 | — |
case-23 | fail→pass | 11,447 | 5,674 | -50% | 1 | 1 | 0% | 1,599 | 3,526 | +121% | 0 | 0 | — |
case-24 | fail→pass | 12,263 | 9,812 | -20% | 1 | 1 | 0% | 1,854 | 4,134 | +123% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 26 cases were attempted, and 15 counted toward the lift figure. The other 11 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -4 percentage points is the difference between those two pass rates over the 15 comparable cases. 6 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.