Architecture Options Analysis
Purpose
Prevent premature convergence on the first architecture idea.
This skill is for moments when a system change is large enough that choosing the wrong structure is expensive:
- architecture update
- new subsystem
- major refactor
- migration strategy
- interface redesign
- splitting or merging modules
- introducing new processing, storage, or orchestration patterns
The goal is not to generate many ideas.
The goal is to compare a small number of realistic options and choose deliberately.
Use when
Use this skill when the user wants:
- architecture options
- design alternatives
- refactor strategy variants
- migration strategy comparison
- explicit trade-off analysis before implementation
- a recommendation grounded in constraints
Typical trigger phrases:
- "давай подумаем над архитектурой"
- "разложи варианты решения"
- "сравни архитектурные варианты"
- "какой вариант лучше"
- "какие есть правдоподобные варианты"
- "analyze architecture options"
- "compare design alternatives"
- "what architecture should we choose"
Do not use when
Do not use this skill for:
- generic brainstorming with no implementation target
- full implementation planning after the architecture is already chosen
- small local code changes
- bug fixing
- PR review
- product roadmap planning
- personal planning
If the user already chose the target architecture and wants staged execution, use an implementation-planning skill instead.
Inputs
Expected inputs:
- target change or problem
- current codebase or system context
- constraints
- existing interfaces, modules, flows, or deployment assumptions
Optional inputs:
- non-functional requirements
- scaling expectations
- operational constraints
- org or team constraints
- migration urgency
- backward compatibility requirements
Outputs
Always produce:
- current state summary
- constraints and decision criteria
- 2-4 realistic architecture options
- trade-off analysis for each
- comparison table or structured comparison
- recommended option
- explicit rejection reasons for the non-selected options
- optional next step if the recommendation should move into implementation planning
Core principles
- Do not invent options that are not realistic for the actual constraints.
- Do not analyze only one favored option.
- Do not silently add future-proofing that the current task does not justify.
- Compare options on engineering consequences, not on aesthetics.
- Keep the analysis anchored to migration and validation realities.
Constraints
- Start from the current state, not from abstract option generation.
- Limit the comparison to 2-4 plausible options.
- Every option must differ in a meaningful architectural dimension.
- Every non-selected option must have explicit rejection reasons.
- Do not turn the result into an execution plan.
- Do not recommend a migration-heavy option unless the benefit clearly pays for the migration cost under current constraints.
Procedure
Summarize the current state.
First identify:
- what exists now
- what hurts now
- what must remain stable
- what interfaces or behaviors cannot be broken
- what technical debt or coupling already exists
The current state should be specific enough to explain why the architectural choice matters.
Extract real constraints.
List only constraints that actually affect the decision, such as:
- compatibility requirements
- latency, throughput, or memory limits
- data volume or request volume
- deployment model
- failure tolerance
- observability requirements
- team ownership or maintenance cost
- migration constraints
- time-to-delivery constraints
Define decision criteria.
Make the evaluation dimensions explicit before comparing options.
Common criteria:
- implementation complexity
- operational complexity
- delivery cost
- correctness risk
- migration pain
- testing surface
- observability implications
- scaling implications
- maintainability or extensibility
- rollback simplicity
Generate only 2-4 plausible options.
Each option must be:
- technically coherent
- compatible with the real constraints
- different in a meaningful architectural dimension
- concrete enough to evaluate
Do not generate fake variety by renaming the same structure.
For each option, describe:
- the core architectural idea
- the main components or boundaries
- the data or control flow
- what changes relative to the current state
- where the complexity moves
- what assumptions the option relies on
Analyze trade-offs for each option.
For every option, explicitly cover:
- strengths
- weaknesses
- complexity and cost
- correctness risk
- migration pain
- testing implications
- scaling implications
- operational implications
- likely failure modes
- where this option is clearly better or worse than the others
Make migration pain concrete.
Do not say "migration is harder" vaguely.
Specify:
- what must be rewritten
- what interfaces change
- whether dual-path support is needed
- how incremental rollout could work
- whether rollback is easy or painful
Make testing implications concrete.
For each option, identify:
- what new seams become testable
- what becomes harder to validate
- whether integration surface grows
- whether mocking or stubbing becomes easier or worse
- what lightweight validation would be needed during migration
Make scaling implications concrete.
For each option, identify:
- what bottlenecks move
- how the option behaves under larger data, traffic, or concurrency
- whether the option improves isolation or only hides coupling
- whether horizontal growth, batching, partitioning, or caching become easier or harder
Recommend one option.
The recommended option must be justified against the decision criteria, not personal taste.
Explain:
- why it is best under current constraints
- what trade-offs are being consciously accepted
- what assumptions must remain true for the recommendation to hold
Reject the other options explicitly.
For every non-selected option, give concrete rejection reasons.
Good rejection reasons:
- too much migration pain for current benefit
- adds operational burden without removing the main bottleneck
- weak rollback story
- increases coupling in the wrong place
- testing surface becomes too fragile
- only pays off at scale far beyond current needs
Avoid weak rejection like "less ideal" or "not preferred".
Decision rules
Realism rule
Only compare options that a serious engineer could actually implement in this context.
Constraint rule
If an option violates an important constraint, say so directly instead of compensating with vague advantages.
Minimality rule
Prefer the option that solves the stated problem with the least additional architecture,
unless a heavier option clearly pays for itself under current constraints.
Migration rule
Do not recommend an option with large migration pain unless the benefit is material and near-term.
Testing rule
If an option makes correctness much harder to validate, treat that as a major negative.
Scaling rule
Do not over-optimize for hypothetical scale.
But do account for foreseeable scaling pain if the current architecture already points there.
Rejection rule
Every non-selected option must have explicit rejection reasons.
Optional subagent use
For large or cross-cutting systems, explicitly spawn bounded subagents before finalizing the comparison:
- one subagent to map current architecture, module boundaries, and interfaces
- one subagent to inspect migration and testing surface
- one subagent to inspect scaling or operational implications when those are central
Wait for their memos, then synthesize the final comparison.
Do not spawn subagents for a small local design decision.
References
Use the supporting references when needed:
references/options-analysis-template.md
references/current-state-and-constraints-checklist.md
references/rejection-reasons-checklist.md
Definition of done
- The current state and real constraints are explicit.
- The comparison covers 2-4 realistic options.
- Each option is evaluated on concrete engineering consequences.
- One option is recommended with explicit assumptions.
- All other options are explicitly rejected with concrete reasons.
- The result stops before implementation planning.
Final response format
Return the result in this structure:
- Current state
- Constraints
- Decision criteria
- Options:
- Option A
- core idea
- strengths
- weaknesses
- migration pain
- testing implications
- scaling implications
- Option B
...
- Option C
...
- Comparison summary
- Recommended option
- Rejected options and why
- What would invalidate this recommendation
Positive examples
Use this skill for:
- "разложи архитектурные варианты"
- "сравни варианты рефактора"
- "какую архитектуру выбрать"
- "дай 2-4 правдоподобных варианта решения"
- "compare design options for this subsystem"
- "analyze migration architecture choices"
Negative examples
Do not use this skill for:
- "сделай план реализации"
- "исправь баг"
- "сделай summary architecture"
- "напиши PR"
- "распланируй неделю"
1---2name: architecture-options-analysis3description: Analyze 2-4 plausible architecture options for a non-trivial software change instead of jumping to a single design. Trigger when the user asks for an architecture plan, design options, trade-off analysis, solution variants, refactor strategy options, migration options, or phrases like "давай подумаем над архитектурой", "разложи варианты", "сравни варианты решения", "какой вариант архитектуры лучше", or similar. Start from the current state and real constraints, enumerate only realistic options, compare them on trade-offs, complexity, cost, risk, migration pain, testing implications, and scaling implications, then recommend one option and explicitly reject the others with concrete reasons. Keep the analysis implementation-oriented and minimal: do not invent unnecessary layers, subsystems, abstractions, or future-proofing unless they are justified by current constraints. Do not use for generic brainstorming, roadmap planning, or writing a full implementation plan after the architecture has already been chosen.4---56# Architecture Options Analysis78## Purpose910Prevent premature convergence on the first architecture idea.1112This skill is for moments when a system change is large enough that choosing the wrong structure is expensive:13- architecture update14- new subsystem15- major refactor16- migration strategy17- interface redesign18- splitting or merging modules19- introducing new processing, storage, or orchestration patterns2021The goal is not to generate many ideas.22The goal is to compare a small number of realistic options and choose deliberately.2324## Use when2526Use this skill when the user wants:27- architecture options28- design alternatives29- refactor strategy variants30- migration strategy comparison31- explicit trade-off analysis before implementation32- a recommendation grounded in constraints3334Typical trigger phrases:35- "давай подумаем над архитектурой"36- "разложи варианты решения"37- "сравни архитектурные варианты"38- "какой вариант лучше"39- "какие есть правдоподобные варианты"40- "analyze architecture options"41- "compare design alternatives"42- "what architecture should we choose"4344## Do not use when4546Do not use this skill for:47- generic brainstorming with no implementation target48- full implementation planning after the architecture is already chosen49- small local code changes50- bug fixing51- PR review52- product roadmap planning53- personal planning5455If the user already chose the target architecture and wants staged execution, use an implementation-planning skill instead.5657## Inputs5859Expected inputs:60- target change or problem61- current codebase or system context62- constraints63- existing interfaces, modules, flows, or deployment assumptions6465Optional inputs:66- non-functional requirements67- scaling expectations68- operational constraints69- org or team constraints70- migration urgency71- backward compatibility requirements7273## Outputs7475Always produce:761. current state summary772. constraints and decision criteria783. 2-4 realistic architecture options794. trade-off analysis for each805. comparison table or structured comparison816. recommended option827. explicit rejection reasons for the non-selected options838. optional next step if the recommendation should move into implementation planning8485## Core principles8687- Do not invent options that are not realistic for the actual constraints.88- Do not analyze only one favored option.89- Do not silently add future-proofing that the current task does not justify.90- Compare options on engineering consequences, not on aesthetics.91- Keep the analysis anchored to migration and validation realities.9293## Constraints9495- Start from the current state, not from abstract option generation.96- Limit the comparison to 2-4 plausible options.97- Every option must differ in a meaningful architectural dimension.98- Every non-selected option must have explicit rejection reasons.99- Do not turn the result into an execution plan.100- Do not recommend a migration-heavy option unless the benefit clearly pays for the migration cost under current constraints.101102## Procedure1031041. Summarize the current state.105 First identify:106 - what exists now107 - what hurts now108 - what must remain stable109 - what interfaces or behaviors cannot be broken110 - what technical debt or coupling already exists111112 The current state should be specific enough to explain why the architectural choice matters.1131142. Extract real constraints.115 List only constraints that actually affect the decision, such as:116 - compatibility requirements117 - latency, throughput, or memory limits118 - data volume or request volume119 - deployment model120 - failure tolerance121 - observability requirements122 - team ownership or maintenance cost123 - migration constraints124 - time-to-delivery constraints1251263. Define decision criteria.127 Make the evaluation dimensions explicit before comparing options.128 Common criteria:129 - implementation complexity130 - operational complexity131 - delivery cost132 - correctness risk133 - migration pain134 - testing surface135 - observability implications136 - scaling implications137 - maintainability or extensibility138 - rollback simplicity1391404. Generate only 2-4 plausible options.141 Each option must be:142 - technically coherent143 - compatible with the real constraints144 - different in a meaningful architectural dimension145 - concrete enough to evaluate146147 Do not generate fake variety by renaming the same structure.1481495. For each option, describe:150 - the core architectural idea151 - the main components or boundaries152 - the data or control flow153 - what changes relative to the current state154 - where the complexity moves155 - what assumptions the option relies on1561576. Analyze trade-offs for each option.158 For every option, explicitly cover:159 - strengths160 - weaknesses161 - complexity and cost162 - correctness risk163 - migration pain164 - testing implications165 - scaling implications166 - operational implications167 - likely failure modes168 - where this option is clearly better or worse than the others1691707. Make migration pain concrete.171 Do not say "migration is harder" vaguely.172 Specify:173 - what must be rewritten174 - what interfaces change175 - whether dual-path support is needed176 - how incremental rollout could work177 - whether rollback is easy or painful1781798. Make testing implications concrete.180 For each option, identify:181 - what new seams become testable182 - what becomes harder to validate183 - whether integration surface grows184 - whether mocking or stubbing becomes easier or worse185 - what lightweight validation would be needed during migration1861879. Make scaling implications concrete.188 For each option, identify:189 - what bottlenecks move190 - how the option behaves under larger data, traffic, or concurrency191 - whether the option improves isolation or only hides coupling192 - whether horizontal growth, batching, partitioning, or caching become easier or harder19319410. Recommend one option.195 The recommended option must be justified against the decision criteria, not personal taste.196 Explain:197 - why it is best under current constraints198 - what trade-offs are being consciously accepted199 - what assumptions must remain true for the recommendation to hold20020111. Reject the other options explicitly.202 For every non-selected option, give concrete rejection reasons.203 Good rejection reasons:204 - too much migration pain for current benefit205 - adds operational burden without removing the main bottleneck206 - weak rollback story207 - increases coupling in the wrong place208 - testing surface becomes too fragile209 - only pays off at scale far beyond current needs210211 Avoid weak rejection like "less ideal" or "not preferred".212213## Decision rules214215### Realism rule216217Only compare options that a serious engineer could actually implement in this context.218219### Constraint rule220221If an option violates an important constraint, say so directly instead of compensating with vague advantages.222223### Minimality rule224225Prefer the option that solves the stated problem with the least additional architecture,226unless a heavier option clearly pays for itself under current constraints.227228### Migration rule229230Do not recommend an option with large migration pain unless the benefit is material and near-term.231232### Testing rule233234If an option makes correctness much harder to validate, treat that as a major negative.235236### Scaling rule237238Do not over-optimize for hypothetical scale.239But do account for foreseeable scaling pain if the current architecture already points there.240241### Rejection rule242243Every non-selected option must have explicit rejection reasons.244245## Optional subagent use246247For large or cross-cutting systems, explicitly spawn bounded subagents before finalizing the comparison:248- one subagent to map current architecture, module boundaries, and interfaces249- one subagent to inspect migration and testing surface250- one subagent to inspect scaling or operational implications when those are central251252Wait for their memos, then synthesize the final comparison.253Do not spawn subagents for a small local design decision.254255## References256257Use the supporting references when needed:258- `references/options-analysis-template.md`259- `references/current-state-and-constraints-checklist.md`260- `references/rejection-reasons-checklist.md`261262## Definition of done263264- The current state and real constraints are explicit.265- The comparison covers 2-4 realistic options.266- Each option is evaluated on concrete engineering consequences.267- One option is recommended with explicit assumptions.268- All other options are explicitly rejected with concrete reasons.269- The result stops before implementation planning.270271## Final response format272273Return the result in this structure:274275- Current state276- Constraints277- Decision criteria278- Options:279 1. Option A280 - core idea281 - strengths282 - weaknesses283 - migration pain284 - testing implications285 - scaling implications286 2. Option B287 ...288 3. Option C289 ...290- Comparison summary291- Recommended option292- Rejected options and why293- What would invalidate this recommendation294295## Positive examples296297Use this skill for:298- "разложи архитектурные варианты"299- "сравни варианты рефактора"300- "какую архитектуру выбрать"301- "дай 2-4 правдоподобных варианта решения"302- "compare design options for this subsystem"303- "analyze migration architecture choices"304305## Negative examples306307Do not use this skill for:308- "сделай план реализации"309- "исправь баг"310- "сделай summary architecture"311- "напиши PR"312- "распланируй неделю"