Skip to content
Design
Skill

/design

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.

BOOST
From plugin
modularity
5614 skills
Install
$ npx -y skills add vladikk/modularity --skill design --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/design

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

design.SKILL.md
name: design
description: >
  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.
argument-hint: "[path/to/functional-requirements.md]"
skills:
  - balanced-coupling
allowed-tools: Read, Write, Edit, AskUserQuestion, TaskCreate, TaskUpdate

High-Level Design

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.

Input

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.

Interaction Rules

Always use `AskUserQuestion` for user input. Follow these principles:

  • **One question at a time.** Never batch multiple questions into one message.
  • **Multiple choice preferred.** Provide 2-4 concrete options with descriptions. Easier to answer than open-ended.
  • **"Other" is automatic.** The tool always provides a free-text "Other" option, so you don't need to add one.
  • **Use headers.** Short labels (max 12 chars) like "Approval", "Subdomain", "Coupling".

Process

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.**

Step 1: Understand the Requirements

Read the functional requirements file. Then:

1. **Restate the functional requirements** in your own words. Organize them into cohesive functional areas. 2. **Discover what's missing for coupling-aware design.** Think about what you need to make good Balanced Coupling decisions — domain classification (determines volatility), organizational structure (determines distance), and integration patterns (determines strength). Identify gaps in the requirements, especially:

  • Business areas where core vs supporting vs generic classification is ambiguous — propose your interpretation and ask the user to confirm or correct
  • Organizational constraints that affect module boundaries (team ownership, deployment units, shared infrastructure)
  • Strategic direction that affects where volatility will be highest and where to invest design effort
  • Integration requirements where the appropriate coupling strength is unclear

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.

3. **Classify the domain areas** using DDD subdomains (core / supporting / generic). This determines volatility and where to invest design effort. Analyze the requirements and propose classifications yourself. Present them as a table:

| 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.

Step 2: Design the Modular Architecture

Using the Balanced Coupling model:

1. **Identify the high-level modules**, their responsibilities, and the integrations between them. 2. **Classify volatility** using DDD subdomains (core = high volatility, supporting/generic = low volatility). This determines where to invest design effort. 3. **Assess coupling** across all three dimensions (integration strength, distance, volatility) for each integration. 4. **Apply the balance rule**: `BALANCE = (

Read more
Ships withmodularity

TL;DR: A Claude Code plugin for designing and analyzing modular software systems using the Balanced Coupling model. There's no shortage of AI tools that provide code-level feedback: best practices, edge cases, potential bugs.

Get the whole plugin
Stats
565
Stars
37
Forks
Maintained
Maintenance
HTML
Language
1mo ago
Last commit
6mo ago
Created
4h ago
Added

Repo: vladikk/modularity

Other skills on modularity.