Skip to main content

architectural-decision-debate

Debate architectural and design decisions by presenting three positions (adopt, reject, defer) with at least 3 options each, challenging assumptions and existing patterns.

Source facts

Repository
visionarycoder/vc.Ifx
Last source activity
September 10, 2026 at 04:35
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
architectural-decision-debate
title
Architectural Decision Debate
description
Debate architectural and design decisions by presenting three positions (adopt, reject, defer) with at least 3 options each, challenging assumptions and existing patterns.
doc_type
skill
status
active
last_updated
2026-08-30T00:00:00.000Z
target_audience
ai
complexity
high
estimated_tokens
3200
prerequisites
["ste-agent-writing-standard","terminology-dictionary"]
related_skills
["antipattern-detection-bundle","technology-selection","dotnet-architectural-layers","vbd-system-design"]
related_docs
["https://en.wikipedia.org/wiki/List_of_software_development_philosophies","https://learn.microsoft.com/en-us/azure/architecture/guide/"]
appliesTo
**/*.{md,cs,csproj}
tags
["architecture","debate","decision","trade-offs","philosophy"]
# Architectural Decision Debate Agent uses this skill when developer asks about style, approach, pattern, or technology choice. Agent presents three debate positions—adopt, reject, defer—with at least 3 options per position, challenges assumptions, and examines trade-offs. ## When to Use | Condition | Use | |---|---| | Developer asks "should we use X?" | Use this skill | | Team debates architectural approach | Use this skill | | Design pattern selection needed | Use this skill | | Technology or framework choice required | Use this skill | | Refactoring targets established pattern | Use this skill | | Requirements expand beyond current architecture | Use this skill | ## When Not to Use | Condition | Alternative | |---|---| | Anti-pattern already detected | Use `antipattern-detection-bundle` | | Specific technology mandate exists | Use `technology-selection` for validation | | No decision needed | Direct implementation guidance | ## Required Inputs | Input | Required | Notes | |---|---|---| | Decision topic | Yes | Pattern, technology, approach, or style | | Current context | Yes | Existing architecture, constraints, requirements | | Expansion or change driver | No | New requirements or growth pressures | ## Debate Framework Agent presents three positions for every architectural decision: ### Position 1: Adopt (Use It) Agent provides at least 3 distinct options for **why and how** to adopt the proposal. **Structure:** 1. **Option A:** First adoption approach with rationale 2. **Option B:** Second adoption approach with different emphasis 3. **Option C:** Third adoption approach with alternative scope or timing **Considerations:** - Performance benefits - Scalability improvements - Maintainability gains - Team skill alignment - Industry standard adoption - Ecosystem maturity ### Position 2: Reject (Don't Use It) Agent provides at least 3 distinct options for **why and how** to reject the proposal. **Structure:** 1. **Option A:** First rejection rationale with alternative 2. **Option B:** Second rejection rationale with different risk 3. **Option C:** Third rejection rationale with cost or complexity focus **Considerations:** - Complexity cost - Team learning curve - Maintenance burden - Over-engineering risk - Alternative simpler approaches - Technical debt introduction ### Position 3: Defer (Make No Changes / Wait) Agent provides at least 3 distinct options for **when and why** to defer the decision. **Structure:** 1. **Option A:** First deferral scenario (timing-based) 2. **Option B:** Second deferral scenario (information-based) 3. **Option C:** Third deferral scenario (risk-based) **Considerations:** - Current solution adequacy - Missing information or data - Team capacity constraints - Risk of premature optimization - Uncertainty about future requirements - Cost of reverting decision ## Challenge Framework Agent challenges assumptions in each position: ### Assumption Challenges **Current State:** - "Is the existing pattern actually a problem?" (performance data, error rates, maintenance cost) - "Are current constraints permanent or temporary?" (team size, budget, timeline) - "Is the current architecture truly blocking expansion?" (evidence, metrics) **Proposal:** - "Does this solve the real problem or a perceived one?" (root cause analysis) - "Are benefits measured or assumed?" (benchmarks, studies, references) - "What breaks if we're wrong?" (reversal cost, blast radius) **Requirements:** - "Are expanding requirements stable?" (volatility, clarity, stakeholder alignment) - "Do new requirements justify architectural change?" (incremental vs fundamental) - "Can existing architecture absorb expansion with smaller changes?" (adapter, extension) ## Workflow 1. Agent clarifies decision topic and current context. 2. Agent identifies assumptions in proposal and current state. 3. Agent generates 3 options for Adopt position. 4. Agent generates 3 options for Reject position. 5. Agent generates 3 options for Defer position. 6. Agent challenges key assumptions across all positions. 7. Agent summarizes trade-offs and recommends decision-making criteria. Test: Review all three positions and challenge questions. Pass: Developer has clear view of trade-offs and can make informed decision. ## Output Format Agent structures debate as follows: ``` Architectural Decision Debate ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Topic: [Decision Topic] Context: [Current Architecture Summary] Driver: [Change or Expansion Trigger] ━━━ Position 1: ADOPT ━━━ Option A: [First Adoption Approach] Rationale: [Why this works] Benefits: [Performance, scalability, maintainability] Risks: [What could go wrong] Effort: [Implementation cost] Option B: [Second Adoption Approach] Rationale: [Alternative why] Benefits: [Different emphasis] Risks: [Different risks] Effort: [Different cost] Option C: [Third Adoption Approach] Rationale: [Another angle] Benefits: [Yet another benefit set] Risks: [Yet another risk set] Effort: [Yet another cost] ━━━ Position 2: REJECT ━━━ Option A: [First Rejection Rationale] Alternative: [What to do instead] Why: [Core objection] Risk Avoided: [What bad outcome we prevent] Option B: [Second Rejection Rationale] Alternative: [Different alternative] Why: [Different objection] Risk Avoided: [Different bad outcome] Option C: [Third Rejection Rationale] Alternative: [Yet another alternative] Why: [Yet another objection] Risk Avoided: [Yet another bad outcome] ━━━ Position 3: DEFER ━━━ Option A: [First Deferral Scenario] When: [Trigger for revisiting] Why Wait: [What we gain by waiting] Interim Action: [What to do meanwhile] Option B: [Second Deferral Scenario] When: [Different trigger] Why Wait: [Different gain] Interim Action: [Different meanwhile action] Option C: [Third Deferral Scenario] When: [Yet another trigger] Why Wait: [Yet another gain] Interim Action: [Yet another meanwhile action] ━━━ ASSUMPTION CHALLENGES ━━━ Current State: ❓ [Challenge assumption about current architecture] ❓ [Challenge assumption about current constraints] ❓ [Challenge assumption about current pain points] Proposal: ❓ [Challenge assumption about proposal benefits] ❓ [Challenge assumption about proposal cost] ❓ [Challenge assumption about proposal risks] Requirements: ❓ [Challenge assumption about expanding requirements] ❓ [Challenge assumption about requirement stability] ❓ [Challenge assumption about necessity of change] ━━━ DECISION CRITERIA ━━━ Recommend deciding based on: 1. [First decision factor] (measurement, threshold, or condition) 2. [Second decision factor] 3. [Third decision factor] If [condition], lean toward ADOPT. If [condition], lean toward REJECT. If [condition], lean toward DEFER. ``` ## Design Philosophy Integration Agent references relevant design philosophies and principles: ### Common Philosophies - **YAGNI (You Aren't Gonna Need It)** — Defer complexity until proven necessary - **KISS (Keep It Simple, Stupid)** — Favor simplest solution that works - **DRY (Don't Repeat Yourself)** — Eliminate duplication - **SOLID Principles** — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion - **12-Factor App** — Cloud-native application patterns - **CAP Theorem** — Consistency, Availability, Partition Tolerance trade-offs - **Conway's Law** — System design reflects organizational structure - **The Innovator's Dilemma** — Disruptive vs sustaining innovation trade-offs - **Monolith First** — Start simple, extract services when boundaries clear **Reference:** [List of Software Development Philosophies](https://en.wikipedia.org/wiki/List_of_software_development_philosophies) ### Architectural Pattern Philosophy **Monolith → Modular Monolith → Deployment Domains → Microservices** Each evolution adds complexity. Agent recommends moving right only when: - Current pattern pain exceeds next pattern complexity cost - Team has operational maturity for increased complexity - Boundaries are stable and well-understood - Metrics show tipping point reached See `architectural-pattern-tipping-point` skill for detailed tipping point analysis. ## Example Debates ### Example 1: "Should we use microservices?" **Context:** Modular monolith, 22 developers across 4 teams, 180K LOC **Adopt Options:** - A: Extract 2-3 high-value bounded contexts (Accounting, Payroll) as services; keep shared infrastructure monolithic - B: Build strangler façade around existing monolith; migrate one domain at a time over 12 months - C: New features as services; leave stable legacy monolith unchanged; hybrid architecture **Reject Options:** - A: Stay modular monolith; add deployment domains (independent deploys, shared database); lower complexity - B: Refactor to cleaner module boundaries; use feature flags for team autonomy; avoid distributed system cost - C: Wait until team >30 developers and operational excellence for distributed systems proven **Defer Options:** - A: When deployment coupling causes >5 production incidents/month (currently: 3/month) - B: After measuring actual pain points for 6 months (deploy coordination time, merge conflicts, blast radius) - C: When database contention becomes measurable bottleneck (currently: connection pool <50% saturated) **Assumption Challenges:** - ❓ Is deployment coupling the real problem or symptom? (Evidence: deploy coordination 6 hours, merge conflicts 28%) - ❓ Do benefits (team autonomy, independent scaling) outweigh costs (operational complexity, distributed transactions)? - ❓ Are service boundaries stable? (Evidence: bounded contexts unchanged for 8 months = stable) - ❓ Does team have distributed systems expertise? (Monitoring, tracing, circuit breakers, saga patterns) **Decision Criteria:** - If deploy coordination >8 hours AND team has distributed ops expertise → lean ADOPT - If operational maturity lacking OR boundaries unstable → lean REJECT (use deployment domains instead) - If pain points unclear OR team capacity constrained → lean DEFER ### Example 2: "Should we use GraphQL instead of REST?" **Adopt Options:** - A: Use for mobile apps only, keep REST for server-to-server - B: Add GraphQL layer over existing REST services - C: New API surface only, migrate high-traffic endpoints later **Reject Options:** - A: Use REST with field projection (sparse fieldsets) and HATEOAS - B: Use OData for flexible querying over REST - C: Keep REST, add client-specific BFF (Backend for Frontend) services **Defer Options:** - A: When N+1 query problem causes measured performance issues - B: After team completes GraphQL training and POC - C: When mobile app requirements stabilize and need is clear ## Verification Checklist Agent verifies: - [ ] Three positions presented (Adopt, Reject, Defer) - [ ] At least 3 options per position - [ ] Assumptions challenged across current state, proposal, and requirements - [ ] Trade-offs explicitly stated - [ ] Decision criteria provided - [ ] Relevant design philosophies referenced - [ ] Evidence or metrics cited where available
View on GitHub