Back to skills
Software Engineering

Software Architecture

Software Architecture: Choose boundaries and contracts for an evolving system. Review the relevant code, tests, interfaces, dependency graph, and failure report and produce an architecture decision record with trade-offs.

---
name: software-engineering-software-architecture
description: Use for software architecture when asked to choose boundaries and contracts for an evolving system; produce an architecture decision record with trade-offs.
license: MIT
metadata:
  author: Thrive
  category: software-engineering
---

# Software Architecture

## When to use

Use this skill for software architecture when you need to choose boundaries and contracts for an evolving system. The expected result is an architecture decision record with trade-offs.

## Boundaries

Work within the requested task and its stated acceptance criteria. Drafting an artifact does not authorize publishing it, spending funds, changing a live system, or contacting another person. Identify any such action separately before taking it.

## Inputs

Inspect the relevant code, tests, interfaces, dependency graph, and failure report. Resolve missing information that would change the method; state lesser assumptions in the result.

## Method

1. **Diagnose.** Reproduce the behavior, inspect the call graph and tests, and identify the contract that a fix must preserve.
2. **Decide.** Isolate the behavior, compare implementation options, and make a reversible change.
3. **Produce.** Build an architecture decision record with trade-offs from the inspected material; keep assumptions distinguishable from observed facts.

## Decision rules

- Write the smallest maintainable change that addresses the cause. Include an edge case that would fail with a superficial patch.
- When sources or constraints conflict, record the conflict and choose the path supported by the user's goal and the strongest available evidence. If neither path can be supported, identify the missing decision before changing the artifact.

## Domain rules

- Preserve public contracts or document a migration.
- Record the failure case that the change prevents.

## Verification

Check operational consequences and migration path. Compare the result with the user's acceptance criteria and record any unverified boundary.

Return changed files, test evidence, complexity or performance notes when relevant, and any follow-up migration.

## Stop conditions

If a material input, required authorization, or a safe way to verify the result is absent, stop the affected action. Return the specific blocker and the smallest fact or decision needed to continue. Do not report an unrun check as passed.

## Output

Provide an architecture decision record with trade-offs. Include the decisive evidence and actual verification result. Name any artifact location and unresolved issue that affects its use.

<!--
MIT License

Copyright (c) 2026 Thrive

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->