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.
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