VIRIM Infotech
Your AI Assisted Product Developers

vm-tech-policy-resolver

Skill detail with category, linked agents, and source metadata.

vm-tech-policy-resolver

Reads, parses, and resolves technology decisions from .github/standards/tech-policy-matrix.yaml. Given a surface type, requirements, or technology choice, returns the approved stack, version constraints, applicable global standards, and compliance status. Provides a common interface for technology policy lookups used by standards analysis and architecture agents.

Category: compliance Used by 1 agents

Source: .github/skills/compliance/vm-tech-policy-resolver/SKILL.md

Used By Agents

Preview

View source preview (first 3000 chars)

# VM Tech Policy Resolver

## Overview

This skill provides a structured interface for resolving technology decisions against the `.github/standards/tech-policy-matrix.yaml`. It parses the YAML structure and answers three types of queries:

1. **Stack Resolution** — Given a surface type, return the recommended stack with preferences
2. **Compliance Check** — Given a technology choice, validate against the matrix
3. **Standards Lookup** — Given a stack/surface combination, return all applicable standards

This skill is **read-only** and does not modify the YAML. It is a resolution engine that agents invoke to get consistent, authoritative technology policy answers.

## When to Use

- Architecture decisions need tech stack recommendations (Solution Architect)
- Standards gap analysis needs to compare extracted decisions against the matrix (Standards Gap Analyzer)
- Any agent needs to validate a technology choice against VM policy
- Technology selection justification needs matrix-backed evidence

## When NOT to Use

- Updating the tech-policy-matrix.yaml (the Standards Gap Analyzer handles updates)
- Non-VM technology decisions (the matrix is organization-specific)
- The matrix YAML file doesn't exist or is malformed (report error)

## Inputs

```json
{
  "query_type": "stack_resolution|compliance_check|standards_lookup",
  "stack_resolution": {
    "surface": "spa|webapp|mobile|windows_app|ai_voice",
    "requirements": {
      "nfr_priorities": ["performance", "scalability", "security"],
      "team_skills": ["typescript", "python", "dotnet"],
      "compliance_needs": []
    }
  },
  "compliance_check": {
    "technology": "Technology name",
    "version": "Version string",
    "stack": "react_node_ts_js|python|dotnet|swift",
    "surface": "Surface type"
  },
  "standards_lookup": {
    "stack": "react_node_ts_js|python|dotnet|swift",
    "surface": "spa|webapp|mobile|windows_app|ai_voice",
    "standard_category": "all|security|quality|api|auth|nfr|container|data"
  }
}
```

### Input Normalization

The input values above use **unprefixed short names** (e.g., `"spa"`, `"react_node_ts_js"`). These map to the namespaced keys in `tech-policy-matrix.yaml` as follows:

| Input Value | YAML Key |
|---|---|
| `spa`, `webapp`, `mobile`, `windows_app`, `ai_voice` | `policy.glossary.surfaces.{value}` |
| `react_node_ts_js`, `python`, `dotnet`, `swift` | `policy.glossary.stacks.{value}` |

Callers should pass the short name only. The skill handles the namespace prefix resolution internally.

## Method

### Step 1: Parse Tech-Policy-Matrix

Read and parse `.github/standards/tech-policy-matrix.yaml`:

```yaml
Sections to parse:
  policy.meta          ? Version, last_updated, status
  policy.preferences   ? Stack preference order
  policy.glossary      ? Stack and surface definitions with version constraints
  policy.global_standards ? STD-* entries (security, quality, API, auth, NFR, etc.)
  policy.matrix        ? CELL-{SURFACE}-{STACK} entries with appro