solution-architecture-design
Skill8 starsChanged 6 months agoMITView on GitHub
Write solution architecture design documents from an existing capability overview, covering implementation design, applications, data model, integrations, diagrams, NFRs, and technical design choices. Use when the user asks to create, draft, or update a solution architecture design, capability architecture document, technical capability design, implementation architecture, or detailed technical design for a business capability.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- architecture-decision-recordSkill
- assess-solutionSkill
- capability-overviewSkill
- check-readabilitySkill
- create-an-agentSkill
- create-a-skillSkill
- create-drawio-diagramSkill
- data-architecture-designSkill
- grill-meSkill
- integration-designSkill
- problem-to-solutionSkill
- publish-to-confluenceSkill
- target-architecture-documentSkill
- to-epicsSkill
- ubiquitous-languageSkill
- write-a-principleSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
55 rules. About 0 are common, 37 are distinctive, and 18 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈37
Distinctive · estimate
This author's own choices. Worth a look.
18
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Write solution architecture design documents from an existing capability overview under the consuming repository's root …
- Very specific: line 14
Read the source overview first from capabilities/<capability-slug>/<capability-slug>.md.
- Very specific: line 16
Before creating any output files, run a grill-me style clarification session using ../grill-me/SKILL.md.
- Very specific: line 22
When this toolkit is used as a submodule, do not write generated solution architecture design files under toolkit/solution-architectures/.
- Very specific: line 40
Start with the grill-me clarification session and update <private-lab-root>/GLOSSARY.md with ubiquitous-language as terminology is …
- Distinctive: line 44
Do not overwrite an existing solution architecture design document unless the user explicitly asks.
- Distinctive: line 46
Use repository context where available to validate stated systems, integrations, standards, and existing design decisions.
- Very specific: line 47
Update <private-lab-root>/GLOSSARY.md before or alongside drafting when the document introduces or changes:
- Very specific: line 53
Create the technical document from templates/solution-architecture-design-template.md.
- Very specific: line 54
Create a diagrams/ subfolder next to <slug>-architecture.md, then use ../create-drawio-diagram/SKILL.md to create separate Draw.io source …
- Very specific: line 63
Do not create placeholder .drawio or .svg files for unknown diagrams.
- Distinctive: line 71
Write each chapter as implementation-oriented architecture guidance, not as a restatement of the capability overview.
- Distinctive: line 81
Start each major section with 2-4 plain-language sentences that explain the point of the section before adding details.
- Distinctive: line 82
Use short paragraphs. Prefer 2-4 sentences per paragraph and avoid long blocks of text.
- Distinctive: line 83
Use direct language. Prefer "The order service owns order status" over "Ownership of order status is facilitated by the order service."
- Distinctive: line 85
Use bullets for lists of responsibilities, assumptions, risks, controls, and open questions.
- Distinctive: line 86
Use tables for repeated structures such as components, data objects, integrations, decisions, risks, and dependencies.
- Distinctive: line 87
Keep table cells short. Move long explanations below the table as notes.
- Distinctive: line 88
Put the most important conclusion first, then explain the reasoning.
- Distinctive: line 89
Avoid vague architecture filler such as "robust", "seamless", "future-proof", "best practice", or "enterprise-grade" unless it is tied to a …
- Distinctive: line 90
Prefer examples when a concept may be unclear, especially for data ownership, integration behavior, failure handling, and operational …
- Distinctive: line 92
Write open questions as answerable questions with an owner or target audience when known.
- Distinctive: line 96
Write for senior stakeholders first, including readers who are not deeply technical.
- Distinctive: line 98
Start with the business outcome and what will change for the organization, customers, users, operations, or delivery teams.
- Distinctive: line 102
Do not include generic benefits or marketing language.
- Distinctive: line 103
Keep the summary readable without the rest of the document.
- Distinctive: line 110
Start with the business purpose of the capability and the outcome it enables.
- Distinctive: line 115
Call out any gaps or contradictions found in the source overview.
- Very specific: line 116
Do not link ADRs from this section.
- Distinctive: line 117
Keep this section short. After this section, avoid restating the capability and focus on the application architecture.
- Distinctive: line 121
Use clear bullet lists for in scope, out of scope, and assumptions.
- Distinctive: line 135
Treat this as the core of the document.
- Distinctive: line 139
Use a table when there are multiple components.
- Distinctive: line 143
Do not make the solution architecture the source of truth for the canonical data model.
- Very specific: line 152
Use the same integration summary table format as Data Architecture Design: Integration, From - To, Pattern, Purpose, and Design.
- Distinctive: line 153
Add one row per API, event, file, batch, stream, or manual handoff needed for the solution.
- Very specific: line 154
Write Integration as a short business-readable name, such as Audience sync to Talon.One.
- Very specific: line 155
Write From - To as the producer and consumer path, such as Masif - Talon.One, without endpoint paths, topic names, table names, or payload …
- Very specific: line 156
Write Pattern as the integration pattern and cadence, such as Scheduled morning sync, API lookup, Event publication, Batch file, or Webhook.
- Very specific: line 157
Write Purpose as the business or operational reason for the integration in one concise sentence.
- Very specific: line 158
Write Design as a Markdown link to the detailed integration design when one exists.
- Distinctive: line 159
Keep full contracts out of this table.
- Very specific: line 165
Create editable .drawio files using ../create-drawio-diagram/SKILL.md.
- Distinctive: line 167
Use visual views only where they clarify boundaries, relationships, ownership, or sequence.
- Distinctive: line 182
Use measurable targets where known.
- Distinctive: line 191
Avoid filling the table with obvious implementation facts.
- Distinctive: line 205
Prefer concrete questions that can be answered, such as "Which system is source of truth for Product availability?".
- Distinctive: line 206
Do not use open questions as a place for generic next steps.
- Distinctive: line 210
Use linked document titles as Markdown link labels whenever possible.
- Distinctive: line 212
If a title cannot be found, use the filename without extension.
- Distinctive: line 213
Keep extra relevant links concise and directly related to the solution design.
- Distinctive: line 237
Keep this public toolkit free of company-confidential information, customer names, internal system names, credentials, and non-public …
- Very specific: line 238
If using real company details, work in a private company lab repository and write outputs to that repository's solution-architectures/ …
- Distinctive: line 239
Keep data objects general and canonical.
- Distinctive: line 240
Prefer diagrams and tables that clarify implementation decisions.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Solution Architecture Design
Quick Start
Assume the Solution Architect Agent role from agents/solution-architect.md: translate business needs into coherent application, data, integration, security, operational architecture, and implementation trade-offs.
Write solution architecture design documents from an existing capability overview under the consuming repository's root solution-architectures/<slug>/ folder.
Read the source overview first from capabilities/<capability-slug>/<capability-slug>.md. Store the generated technical document as solution-architectures/<slug>/<slug>-architecture.md, where <slug> is derived from the solution architecture design document name.
Before creating any output files, run a grill-me style clarification session using ../grill-me/SKILL.md. Ask one question at a time until the capability boundary, source overview, systems, data, integrations, constraints, assumptions, terminology, and desired technical depth are clear enough to avoid avoidable misunderstanding.
During that clarification session, use ../ubiquitous-language/SKILL.md whenever terms are vague, overloaded, conflicting, or important enough to become shared domain language. Create or update <private-lab-root>/GLOSSARY.md inline as terms are clarified; do not batch glossary updates until the end. Do not write the glossary inside this public toolkit repository when working with real company context.
After the clarification session, validate that <private-lab-root>/GLOSSARY.md was created or updated during the current run. If it was not created or updated, stop before generating solution architecture design files and ask the user to run the grill-me skill followed by the ubiquitous-language skill so the glossary is updated first.
When this toolkit is used as a submodule, do not write generated solution architecture design files under toolkit/solution-architectures/. Run from the private lab root, or otherwise target the private lab root explicitly, so output goes to <private-lab-root>/solution-architectures/L2-solution-architecture-<slug>/.
Use templates/solution-architecture-design-template.md as the output structure and follow the chapter writing guidance below when replacing placeholders. Preserve the two opening tables: the document metadata table first, followed by the Solution Architecture Overview table. Do not add a table of contents. Replace each complete placeholder block with finished document content; do not leave placeholder names, placeholder guidance, or drafting instructions in the generated document. Create every Draw.io diagram with ../create-drawio-diagram/SKILL.md because it contains the required diagram instructions, style rules, and templates. Store each diagram as an editable .drawio file under a diagrams/ subfolder next to the solution architecture design document. Export every same-basename .svg into that diagrams/ subfolder and embed the SVG in the document.
Required Inputs
- Source capability overview path
- Application name
- Capability name and scope boundary
- Applications and technical components involved
- Data objects, ownership, lifecycle, and persistence needs
- Data integrations, APIs, events, files, batches, and upstream/downstream dependencies
- Non-functional requirements, security, privacy, observability, resilience, and operations constraints
- Domain, owners, technical standards, technology choices, assumptions, risks, and open decisions
Workflow
- Assume the Solution Architect Agent role from
agents/solution-architect.md. - Start with the
grill-meclarification session and update<private-lab-root>/GLOSSARY.mdwithubiquitous-languageas terminology is clarified. - Validate that
<private-lab-root>/GLOSSARY.mdwas created or updated. If not, stop and ask the user to rungrill-meand thenubiquitous-languagebefore continuing. - Locate and read the source capability overview from
capabilities/<capability-slug>/<capability-slug>.md. If multiple matches exist, ask the user which overview to use. - Derive the output path as
solution-architectures/<slug>/<slug>-architecture.md, where<slug>is derived from the solution architecture design document name. - Do not overwrite an existing solution architecture design document unless the user explicitly asks.
- Extract the business objective, scope, applications, data involved, integrations, NFRs, risks, and future-state considerations from the capability overview.
- Use repository context where available to validate stated systems, integrations, standards, and existing design decisions.
- Update
<private-lab-root>/GLOSSARY.mdbefore or alongside drafting when the document introduces or changes:- Domain terms and aliases
- Jargon, deprecated terms, or words to avoid, captured in the glossary
## Jargonsection - Applications and the capabilities or functions they deliver
- General canonical data objects, ownership, source-of-truth, and lifecycle notes
- Relationships between terms, applications, and data objects
- Create the technical document from
templates/solution-architecture-design-template.md. Preserve the document metadata table, theSolution Architecture Overviewtable, and theShort Summarysection. - Create a
diagrams/subfolder next to<slug>-architecture.md, then use../create-drawio-diagram/SKILL.mdto create separate Draw.io source files there when the required architecture relationships are known:diagrams/solution-architecture-diagram.drawiofrom../create-drawio-diagram/templates/solution-architecture-diagram.drawiofor the solution architecture diagram afterSolution Architecture Overviewdiagrams/capability-overview.drawiofrom../create-drawio-diagram/templates/capability-overview.drawiofor the capability overview diagram afterCapability Overviewdiagrams/integration-flow.drawiofrom../create-drawio-diagram/templates/integration-flow.drawiofor the integration flow diagram afterData Integrations and Interface Contracts
- Export a same-basename SVG for each created Draw.io file into the
diagrams/subfolder, using the SVG export rules in../create-drawio-diagram/SKILL.md:diagrams/solution-architecture-diagram.svgdiagrams/capability-overview.svgdiagrams/integration-flow.svg
- Embed each created
.svgfile inline in the relevant section of<slug>-architecture.mdusing adiagrams/<filename>.svgMarkdown image path. Do not add a separateDiagramssection or links to the matching.drawiosource files in the document. - Do not create placeholder
.drawioor.svgfiles for unknown diagrams. Mark missing diagrams as assumptions or open questions in the design document. - Record specific technical design choices in the document. If a choice is durable, hard to reverse, surprising without context, and based on a real trade-off, propose an ADR using
../architecture-decision-record/SKILL.md. - Mark unknowns as assumptions or open questions. Do not invent implementation facts.
- Use linked document titles as Markdown link labels whenever possible. For local Markdown files such as source capability overviews and target architecture documents, derive the title from the first
#heading; otherwise use the filename without extension. Do not use generic labels such as "Target architecture" when a document title is available. - In the
Solution Architecture Overviewtable, link theCapabilityvalue to the source capability overview using{{SOURCE_CAPABILITY_OVERVIEW}}. Use the capability name as the link label unless the user asks to use the source document title.
Chapter Writing Guidance
Write each chapter as implementation-oriented architecture guidance, not as a restatement of the capability overview. Prefer specific decisions, responsibilities, boundaries, data ownership, interfaces, constraints, and trade-offs. Use concise prose plus tables where comparison or accountability is clearer than paragraphs.
The generated document title must stay L2 - {{CAPABILITY_NAME}} Solution Architecture. The generated content should be application-centered: use Application Name as the primary implementation anchor in the body, while using the capability as context in the title, Architecture Summary, and Capability Overview. After that, shift the rest of the document to the application, components, data, integrations, operations, and delivery impact. Avoid repeating the capability name throughout the body unless it prevents ambiguity.
Start the document with the document metadata table, then the Solution Architecture Overview table with application name, capability, target architecture, domain, and owners. Place the solution architecture diagram immediately after the Solution Architecture Overview table when enough detail is known. Include a Short Summary section after that diagram reference that gives the business outcome, application focus, ownership, and main architecture concern in a few plain-language sentences.
Readability Guidance
Make the document easy to read for both architects and delivery teams.
- Start each major section with 2-4 plain-language sentences that explain the point of the section before adding details.
- Use short paragraphs. Prefer 2-4 sentences per paragraph and avoid long blocks of text.
- Use direct language. Prefer "The order service owns order status" over "Ownership of order status is facilitated by the order service."
- Explain acronyms and specialist terms the first time they appear, unless they are already defined in
GLOSSARY.md. - Use bullets for lists of responsibilities, assumptions, risks, controls, and open questions.
- Use tables for repeated structures such as components, data objects, integrations, decisions, risks, and dependencies.
- Keep table cells short. Move long explanations below the table as notes.
- Put the most important conclusion first, then explain the reasoning.
- Avoid vague architecture filler such as "robust", "seamless", "future-proof", "best practice", or "enterprise-grade" unless it is tied to a concrete requirement.
- Prefer examples when a concept may be unclear, especially for data ownership, integration behavior, failure handling, and operational responsibility.
- Split complex sections with
###subheadings when a reader would otherwise have to scan more than 6-8 bullets or several paragraphs. - Write open questions as answerable questions with an owner or target audience when known.
Architecture Summary
- Write for senior stakeholders first, including readers who are not deeply technical.
- State the target solution in 3-6 plain-language paragraphs.
- Start with the business outcome and what will change for the organization, customers, users, operations, or delivery teams.
- Explain the main architectural approach in business-readable terms before naming technical components.
- Name the primary applications or components only when they are important to understand ownership, impact, cost, risk, or delivery.
- Include the key design consequences: what changes, what stays stable, what risk is reduced or introduced, and what must be decided next.
- Do not include generic benefits or marketing language.
- Keep the summary readable without the rest of the document. Avoid acronyms and implementation jargon unless they are expanded and briefly explained.
- Mention the capability once as context, then focus on the application and its business impact.
Capability Overview
- Write for senior stakeholders first, including readers who are not deeply technical.
- Summarize only the capability context needed to understand why this solution architecture exists.
- Start with the business purpose of the capability and the outcome it enables.
- Explain the capability boundary in plain language: what is included, what is not included, and why that matters.
- Describe upstream and downstream capabilities as business dependencies before naming technical systems.
- Explain triggering business events and expected outcomes using business-readable examples when helpful.
- Link to the source capability overview and identify the source sections, assumptions, or statements used.
- Call out any gaps or contradictions found in the source overview.
- Do not link ADRs from this section; ADR links belong in
Technical Design Choices. - Keep this section short. After this section, avoid restating the capability and focus on the application architecture.
Scope and Assumptions
- Use clear bullet lists for in scope, out of scope, and assumptions.
- Scope should define the technical responsibility boundary for the design, not the entire business capability.
- Assumptions must be testable or reviewable. Avoid vague assumptions such as "systems will integrate correctly."
- Move unresolved facts that require a decision or answer to
Open Questions, not assumptions.
Target Technical Implementation
- Describe the target runtime solution around the application: main services, components, platforms, deployment model, environments, and operational ownership.
- Explain build-versus-buy, reuse, replacement, and modernization choices where relevant.
- Identify lifecycle flows from request or event through processing, persistence, integration, observability, and user or system outcome.
- Include important technology standards, constraints, and version or platform assumptions when known.
Application and Component Architecture
- Treat this as the core of the document.
- Identify each application, service, module, integration component, user interface, and shared platform involved.
- For each component, describe responsibility, ownership, key dependencies, and whether it is new, changed, reused, or retired.
- Make boundaries explicit: what each component owns, what it must not own, and where orchestration or business rules live.
- Use a table when there are multiple components.
Data Model and Ownership
- Do not make the solution architecture the source of truth for the canonical data model.
- Link to the relevant data architecture design when it exists. If it does not exist and the model is material, raise an open question or recommend creating one with
../data-architecture-design/SKILL.md. - Summarize only the canonical data objects needed to understand this application.
- Focus on how the application uses the canonical model: local persistence, read/write behavior, mappings, projections, indexes, caches, API payloads, event payloads, and application-specific representations.
- State where the application maps canonical objects to local or vendor-specific structures.
- Capture application-specific data ownership, lifecycle, privacy, quality, or retention implications without redefining the enterprise data model.
Data Integrations and Interface Contracts
- Use the same integration summary table format as Data Architecture Design:
Integration,From - To,Pattern,Purpose, andDesign. - Add one row per API, event, file, batch, stream, or manual handoff needed for the solution.
- Write
Integrationas a short business-readable name, such asAudience sync to Talon.One. - Write
From - Toas the producer and consumer path, such asMasif - Talon.One, without endpoint paths, topic names, table names, or payload fields. - Write
Patternas the integration pattern and cadence, such asScheduled morning sync,API lookup,Event publication,Batch file, orWebhook. - Write
Purposeas the business or operational reason for the integration in one concise sentence. - Write
Designas a Markdown link to the detailed integration design when one exists. UseNo design yetwhen no detailed design exists, and mirror material missing designs inOpen QuestionsorDependencies. - Keep full contracts out of this table. Put payload fields, schemas, endpoint paths, retry policy, idempotency details, error handling, observability, and ownership details in linked integration designs or supporting paragraphs only when they materially affect the solution architecture.
- Distinguish command, query, event, synchronization, and reporting flows.
- Flag unclear interface contracts as open questions instead of inventing fields or endpoints.
Visual Architecture Views
- Create editable
.drawiofiles using../create-drawio-diagram/SKILL.md; do not hand-roll Draw.io files outside that skill's instructions and templates. - Embed the exported SVG for each created view inline where the template places it. Do not add a separate
Diagramssection or.drawiosource links to the document. - Use visual views only where they clarify boundaries, relationships, ownership, or sequence. Do not add decorative views.
- The solution architecture view must use
../create-drawio-diagram/templates/solution-architecture-diagram.drawioand show channels, application components, integration components, data stores, external systems, and ownership boundaries. Follow that skill's rules for separate connector paths and distinct ports. Run its solution architecture routing check, fix every reported issue, then visually inspect the SVG for connector, arrowhead, and label overlaps before embedding it. - The capability overview view must use
../create-drawio-diagram/templates/capability-overview.drawioand show actors, neighboring capabilities, and external dependencies while preserving the template's zone-based layout. - The integration flow view must use
../create-drawio-diagram/templates/integration-flow.drawio, preserve the five adjoining architecture layers and participant grouping required by the create-drawio-diagram skill, and show direction, trigger, protocol or pattern, and important sequencing.
Security, Privacy, and Compliance
- Describe authentication, authorization, identity propagation, secrets, encryption, audit logging, data protection, consent, retention, and regulatory constraints where relevant.
- Tie controls to concrete data objects, interfaces, components, or user roles.
- Identify trust boundaries and privileged operations.
- Mark missing security or privacy decisions as open questions.
NFR and Operational Design
- Cover availability, resilience, performance, scalability, latency, recovery, observability, support model, deployment, release, backup, monitoring, alerting, and incident response.
- Use measurable targets where known. If targets are unknown, identify the decision needed rather than inventing numbers.
- Explain failure modes and recovery behavior for critical integrations and data stores.
- Include operational ownership and handover concerns.
Technical Design Choices
- Record meaningful choices with alternatives, rationale, trade-offs, and whether an ADR is needed or already exists.
- Link existing or newly created ADRs in this section, next to the decision they support.
- Include only choices that affect delivery, reversibility, coupling, cost, risk, operations, security, or future evolution.
- Avoid filling the table with obvious implementation facts.
- Propose an ADR when a choice is durable, hard to reverse, surprising without context, and based on a real trade-off.
Risks, Dependencies, and Migration Notes
- Separate risks, dependencies, and migration notes clearly.
- Risks should include cause, impact, and mitigation or owner where known.
- Dependencies should identify the external decision, team, system, platform, data, vendor, or prerequisite needed.
- Migration notes should explain transition states, coexistence, cutover, rollback, data migration, compatibility, and decommissioning concerns.
Open Questions
- Capture unresolved decisions, missing facts, and review items that block or materially influence the design.
- Each question should have an owner or target audience when known.
- Prefer concrete questions that can be answered, such as "Which system is source of truth for Product availability?".
- Do not use open questions as a place for generic next steps.
Relevant Links
- Use linked document titles as Markdown link labels whenever possible.
- For source capability overviews and target architecture documents, read the first
#heading and use it as the link text. - If a title cannot be found, use the filename without extension.
- Keep extra relevant links concise and directly related to the solution design.
Required Outputs
Each solution architecture design document must include:
- Document metadata table
- Solution Architecture Overview table with application name, capability, target architecture, domain, and owners
- Short Summary in italic text
- Solution architecture design summary
- Source capability overview reference
- Scope and assumptions
- Target technical implementation
- Application and component architecture
- Data model and data ownership
- Data integrations and interface contracts
- Draw.io
.drawiosource files and exported.svgfiles under the design document'sdiagrams/subfolder, with SVGs embedded inline where enough detail is known - Security, privacy, and compliance design
- NFR and operational design
- Technical design choices and trade-offs
- Risks, dependencies, migration notes, and open questions
Guardrails
- Keep this public toolkit free of company-confidential information, customer names, internal system names, credentials, and non-public business context.
- If using real company details, work in a private company lab repository and write outputs to that repository's
solution-architectures/folder. - Keep data objects general and canonical. Do not create application-specific data objects such as API resources, tables, or vendor object names.
- Prefer diagrams and tables that clarify implementation decisions; avoid decorative diagrams.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

