Receber por email
← Voltar para o catálogo

design

Projeta arquiteturas modulares de alto nível a partir de requisitos funcionais e produz documentos de design para cada módulo. Utilize ao projetar um novo sistema, criar documentação de arquitetura ou produzir especificações de design em nível de módulo com contratos de integração e especificações de teste.

465estrelas
Atualizado há 6 meses

Ver no GitHub ↗ Licença: NOASSERTION

Como adicionar

/plugin marketplace add vladikk/modularity

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/design/svg)](https://www.skillteca.com.br/skills/design)

Alerta por categoria

Receba novas skills de Design e Frontend toda segunda

1 email curto, só com as skills novas de Design e Frontend. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

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:
  3. Business areas where core vs supporting vs generic classification is ambiguous — propose your interpretation and ask the user to confirm or correct
  4. Organizational constraints that affect module boundaries (team ownership, deployment units, shared infrastructure)
  5. Strategic direction that affects where volatility will be highest and where to invest design effort
  6. 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.

  1. 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 = (STRENGTH XOR DISTANCE) OR NOT VOLATILITY
  5. For high-volatility components, design integrations so that strength and distance are balanced:
  6. Components that must share high knowledge (functional/model coupling) should be co-located (low distance) -> high cohesion.
  7. Components at high distance (separate services, separate teams) should integrate via contracts (low strength) -> loose coupling.
  8. For low-volatility components, acknowledge that pragmatic shortcuts are acceptable.
  9. Flag unbalanced coupling: high strength + high distance (distributed monolith risk) or low strength + low distance (low cohesion / big ball of mud risk).
  10. Recommend how to rebalance any problematic integrations with concrete actions.

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

Step 3: Write Module Design Documents

Using the validated architecture from Step 2, for each module create docs/design/!date +%Y-%m-%d/{module-name}/design.md containing:

# {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 — 
Compartilhar X LinkedIn