pragmatic-guard

$npx mdskill add codenamev/ai-software-architect/pragmatic-guard

Enables Pragmatic Guard Mode to prevent over-engineering

  • Identifies and configures current Pragmatic Guard settings in `config.yml`.
  • Deploys Pragmatic Guard based on user request or default configuration.
  • Determines intensity level of Pragmatic Guard (strict, balanced, lenient) based on user preference or defaults.
  • Communicates new Pragmatic Guard status and current settings to the user.

SKILL.md

.github/skills/pragmatic-guardView on GitHub ↗
---
name: pragmatic-guard
description: Enables and configures Pragmatic Guard Mode (YAGNI Enforcement) to prevent over-engineering. Use when the user requests "Enable pragmatic mode", "Turn on YAGNI enforcement", "Activate simplicity guard", "Challenge complexity", or similar phrases.
allowed-tools: Read,Edit
disable-model-invocation: true
---

# Pragmatic Guard Mode

Enables and configures the Pragmatic Guard Mode to actively challenge over-engineering.

## Process

### 1. Check Current Configuration
- Read `.architecture/config.yml` to check current settings
- If config.yml doesn't exist, offer to create it from `.architecture/templates/config.yml`
- Check if `pragmatic_mode.enabled` is true
- Note the intensity level (strict/balanced/lenient)
- Review exemption categories and triggers

### 2. Enable Pragmatic Mode (if requested)
If user wants to enable:
- If config.yml doesn't exist:
  ```bash
  cp .architecture/templates/config.yml .architecture/config.yml
  ```
- Set `pragmatic_mode.enabled: true`
- Confirm intensity level with user or use default (balanced)
- Create `.architecture/deferrals.md` from template if it doesn't exist:
  ```bash
  cp .architecture/templates/deferrals.md .architecture/deferrals.md
  ```
- Inform user about mode activation and current settings

### 3. Configure Intensity Level
Ask user which intensity they prefer if not specified:

**Strict Mode**:
- Challenges aggressively, requires strong justification for any complexity
- Questions every "should" and "could"
- Pushes for absolute minimal implementation
- Best for: New projects, MVPs, startups with limited resources

**Balanced Mode** (RECOMMENDED):
- Challenges thoughtfully, accepts justified complexity
- Seeks middle ground between simplicity and best practices
- Questions "should" but accepts reasonable "must"
- Best for: Most projects, growing teams, moderate complexity

**Lenient Mode**:
- Raises concerns without blocking
- Suggests simpler alternatives as options
- Focuses on major complexity additions only
- Best for: Established projects, teams with strong architecture practices

### 4. Configure Triggers (optional)
Ask if user wants to customize which situations trigger pragmatic analysis:
- New abstraction layers (interfaces, base classes, DI containers)
- New external dependencies (libraries, frameworks, services)
- New architectural patterns (repository, strategy, observer)
- Scope expansion beyond initial requirements
- Performance optimizations without evidence
- Test infrastructure upfront
- Flexibility/configurability additions

### 5. Configure Exemptions (optional)
Confirm exemption categories where best practices should be maintained:
- Security-critical features (always exempt by default)
- Data integrity (always exempt by default)
- Compliance requirements (always exempt by default)
- Accessibility (always exempt by default)

### 6. Understanding the Pragmatic Enforcer
Explain how the Pragmatic Enforcer will participate:

**In Architecture Reviews**:
- Reviews each architect's recommendations
- Applies necessity assessment (0-10 scoring)
- Applies complexity assessment (0-10 scoring)
- Proposes simpler alternatives
- Calculates pragmatic score (complexity/necessity ratio, target <1.5)

**In ADR Creation**:
- Challenges proposed decisions
- Questions whether complexity is justified by current needs
- Suggests phased approaches or deferrals
- Documents trigger conditions for deferred decisions

**Question Framework**:
- **Necessity**: "Do we need this right now?" "What breaks without it?"
- **Simplicity**: "What's the simplest thing that could work?"
- **Cost**: "What's the cost of implementing now vs waiting?"
- **Alternatives**: "What if we just...?" "Could we use existing tools?"
- **Best Practices**: "Does this best practice apply to our context?"

### 7. Deferrals Tracking
If `behavior.track_deferrals` is true:
- Maintain `.architecture/deferrals.md` with deferred decisions
- Include trigger conditions for each deferral
- Track when deferrals are implemented or remain deferred

### 8. Report to User
```
Pragmatic Guard Mode: [Enabled | Disabled]

Configuration:
- Intensity: [strict | balanced | lenient]
- Apply to: [List of phases where it applies]
- Deferrals tracking: [enabled | disabled]

Exemptions:
- Security-critical: [enabled | disabled]
- Data integrity: [enabled | disabled]
- Compliance: [enabled | disabled]
- Accessibility: [enabled | disabled]

Triggers:
[List of active triggers]

The Pragmatic Enforcer will now:
- Challenge recommendations from other architects
- Question complexity and abstractions
- Propose simpler alternatives
- Calculate pragmatic scores (target ratio <1.5)
- [If enabled] Track deferred decisions in .architecture/deferrals.md

Next Steps:
- Create an ADR: "Create ADR for [topic]" (will include pragmatic analysis)
- Start a review: "Start architecture review for [target]" (will include pragmatic challenges)
- Adjust settings: Edit .architecture/config.yml
```

## When to Use Pragmatic Mode

**Enable for**:
- New projects or MVPs
- Teams prone to over-engineering
- Resource-constrained environments
- Learning environments (teaching YAGNI)
- Projects with tight deadlines

**Consider disabling for**:
- Mature systems with established patterns
- High-complexity domains requiring abstractions
- Teams already practicing strong YAGNI principles
- Projects with specific architectural requirements

## Notes
- Pragmatic mode is about finding balance, not blocking progress
- The Pragmatic Enforcer's role is to question and challenge, not to veto
- Intensity level should match team maturity and project complexity
- Exemptions ensure critical areas maintain appropriate rigor
- Deferrals can always be implemented when triggered by actual needs

More from codenamev/ai-software-architect

SkillDescription
architecture-reviewConducts a comprehensive multi-perspective architecture review using ALL architecture team members. Use when the user requests "Start architecture review", "Full architecture review", "Review architecture for version X.Y.Z", "Conduct comprehensive review", or when they want assessment from multiple perspectives. Do NOT use for single-specialist reviews (use specialist-review instead) or for status checks (use architecture-status instead).
architecture-statusReports on the health and state of architecture documentation (counts of ADRs, reviews, activity levels, documentation gaps). Use when the user asks "What's our architecture status?", "Show architecture documentation", "How many ADRs do we have?", "What decisions are documented?", "Architecture health check", or wants an overview/summary of documentation state. Do NOT use for listing team members (use list-members), creating new documents (use create-adr), or conducting reviews (use architecture-review or specialist-review).
list-membersDisplays the roster of architecture team members with their specialties and expertise areas. Use when the user asks "Who's on the architecture team?", "List architecture members", "Show me the architects", "What specialists are available?", "Who can I ask for reviews?", or wants to discover available experts. Do NOT use for requesting reviews (use specialist-review or architecture-review) or checking documentation status (use architecture-status).
setup-architectSets up and installs the AI Software Architect framework in a NEW project for the FIRST time. Use when the user requests "Setup .architecture", "Setup ai-software-architect", "Initialize architecture framework", "Install software architect", or similar setup/installation phrases. Do NOT use for checking status (use architecture-status), creating documents (use create-adr or reviews), or when framework is already set up.
specialist-reviewConducts a focused review from ONE specific specialist's perspective (e.g., Security Specialist, Performance Expert). Use when the user requests "Ask [specialist role] to review [target]", "Get [specialist]'s opinion on [topic]", "Have [role] review [code/component]", or when they want deep expertise in ONE specific domain. Do NOT use for comprehensive multi-perspective reviews (use architecture-review instead) or for listing available specialists (use list-members instead).