v0.4.0¶
Release Date: 2026-05-24
Highlights¶
- Importance & Priority: Static importance weights with dynamic P0-P3 priority calculation based on maturity gaps
- Priority Framework: Organize capabilities into tiered groups (Existential/Critical/Strategic/Enhancement)
- Overlay System: External modules can inject display data (badges, tooltips) into renderers
- Interactive HTML: Status and maturity filters with badge display
Added¶
Importance Field¶
Capabilities, layers, and categories now have an importance field for static weighting:
| Level | Weight | Description |
|---|---|---|
critical | 4 | Essential "-ilities" (security, availability) |
high | 3 | High business impact |
medium | 2 | Standard importance (default) |
low | 1 | Nice-to-have |
Dynamic Priority (P0-P3)¶
Calculate dynamic priority from importance and maturity gap:
// Priority = Importance Weight × (Target Level - Current Level)
priority := capstack.CalculatePriority("critical", 1, 3) // Returns "P0" (4 × 2 = 8)
priority := capstack.CalculatePriority("medium", 2, 3) // Returns "P2" (2 × 1 = 2)
| Score | Priority | Action |
|---|---|---|
| ≥8 | P0 | Immediate action required |
| ≥4 | P1 | High priority improvement |
| ≥2 | P2 | Scheduled improvement |
| <2 | P3 | Low priority enhancement |
Priority Framework¶
Organize capabilities into priority tiers:
{
"priorityFramework": {
"title": "Capability Priorities",
"tiers": [
{
"id": "tier-1",
"name": "Tier 1",
"orderRange": {"min": 1, "max": 5},
"orders": "Existential",
"focus": ["Security", "Availability", "Compliance"]
}
]
}
}
Capability Sorting¶
Multiple sort methods available:
cs.SortCapabilities(capstack.SortByOrder) // By explicit Order field
cs.SortCapabilities(capstack.SortByImportance) // By importance weight
cs.SortCapabilities(capstack.SortByStatus) // By lifecycle status
// Get sorted copy
sorted := cs.SortedCapabilities(capstack.SortByName)
Overlay Provider¶
External modules can inject display data:
overlays := render.OverlayProvider{
"sast": {
BadgeText: "M3",
BadgeColor: "#22c55e",
TooltipExtra: "Target: M4 by Q3",
},
}
opts := render.DefaultD2Options()
opts.Overlays = overlays
render.RenderD2(doc, opts)
Interactive HTML Filters¶
HTML output now includes:
- Status filter checkboxes (Operational, Implemented, In Progress, Planned, Deprecated)
- Maturity level filters (M1-M5) when overlays are present
- Select All / Clear All buttons
- Badge display for capabilities with overlay data
Refactored¶
CLI Package Extraction¶
CLI commands moved from cmd/capstack/ to reusable cli/ package:
// Embed in another CLI
import "github.com/grokify/prism-capability/cli"
rootCmd.AddCommand(cli.ValidateCmd)
rootCmd.AddCommand(cli.RenderCmd)
Dependencies¶
| Dependency | Version |
|---|---|
github.com/grokify/prism-core | v0.1.0 |
github.com/spf13/cobra | v1.10.2 |
Compatibility¶
- Go 1.24+
- Fully backward compatible with v0.3.0 documents (new fields are optional)
Related¶
- prism-maturity - Uses overlay provider for maturity badges
- prism-core - Shared primitives