← the whole session plugin/skills/ux-criticality-measurement/SKILL.md
Measures how critical it is to get an initiative right from a UX perspective.
UX Criticality Measurement
When to Use
Run this skill BEFORE building anything that touches the user experience. The output tells you whether to engage the ux-pre-execution-reflection skill.
Always run when:
- The work produces something a user will see, receive, or interact with
- The work changes how an existing user-facing feature behaves
- The work touches a delivery chain (email, push notification, SMS, webhook)
Skip when:
- Pure backend refactoring with no UX surface
- Internal tooling used only by agents
- Documentation-only changes
Measurement Dimensions
Answer each dimension honestly. Examples are provided to calibrate scoring.
1. Is This User-Facing? (yes/no)
If no, the criticality score is 0 and you skip reflection entirely.
Examples:
- Yes: Email to user, React component, onboarding flow, notification, pricing page
- No: Database migration script, internal admin-only API, CI/CD config, agent skill file
2. Silent Failure Degradation (1-10)
"If this fails silently, does the user experience degrade?"
| Score | Example |
|---|---|
| 1-2 | Tooltip slightly misaligned, admin dashboard column too wide |
| 3-4 | Settings page loads slowly, non-critical feature hidden behind wrong flag |
| 5-6 | Notification arrives but with wrong formatting, email subject line truncated |
| 7-8 | User receives email but it looks spammy/impersonal, checkout flow has confusing step |
| 9-10 | Email lands in spam/Promotions (user never sees it), payment silently fails, auth token expires without re-auth prompt |
3. Delivery Chain Length (1-10)
"How many layers between your code and the user's eyeballs?"
| Score | Example Chain |
|---|---|
| 1-2 | Code -> React component -> user sees it |
| 3-4 | Code -> API -> React component -> user sees it |
| 5-6 | Code -> API -> background job -> database -> React component -> user |
| 7-8 | Code -> API -> email service -> ESP -> email client classifier -> inbox tab -> user |
| 9-10 | Code -> API -> third-party webhook -> partner system -> partner notification -> end user |
4. First Impression Weight (1-10)
"Is this a first impression or a repeat touchpoint?"
| Score | Example |
|---|---|
| 1-2 | Settings page tweak for power users, admin dashboard refinement |
| 3-4 | Updated tooltip on frequently-used feature, minor copy change |
| 5-6 | New feature announcement for existing users, monthly summary email |
| 7-8 | First email after signup, onboarding step 1, pricing page for prospects |
| 9-10 | First coaching email after 60-day absence, first impression of product for new visitor, recovery email after churn |
5. Harm If Wrong (1-10)
"If wrong, does this cause more harm than not doing it at all?"
| Score | Example |
|---|---|
| 1-2 | Slightly misaligned tooltip — no harm, just imperfect |
| 3-4 | Feature behind wrong flag — user doesn't see it, but no negative impression |
| 5-6 | Email with wrong name — feels impersonal but not harmful |
| 7-8 | Marketing-looking email from "your coach" — erodes personal trust |
| 9-10 | Broken checkout charges wrong amount, coaching email triggers spam report, password reset sends to wrong email |
Formula
criticalityScore = (silentFailureDegradation + deliveryChainLength + firstImpressionWeight + harmIfWrong) / 4
Thresholds
| Score | Level | Reflection Action |
|---|---|---|
| 0 | Not user-facing | Skip reflection entirely |
| 1-3 | Low criticality | Reflection optional (use judgment) |
| 4-6 | Moderate criticality | Reflection RECOMMENDED — run ux-pre-execution-reflection |
| 7-10 | High criticality | Reflection REQUIRED — run ux-pre-execution-reflection with full depth |
Reflection Level Mapping
- Score 0:
reflectionLevel: "none" - Score 1-3:
reflectionLevel: "none"(optional — agent decides) - Score 4-6:
reflectionLevel: "light"(answer all reflection questions, brief answers acceptable) - Score 7-10:
reflectionLevel: "full"(answer all reflection questions with thorough reasoning)
Output Format
The measurement produces this JSON object, which becomes the uxCriticality field on whatever you use to store session compactions (see /compact-agentic-session and /agentic-session-compactions):
{
"criticalityScore": 8.5,
"isUserFacing": true,
"dimensions": {
"silentFailureDegradation": 10,
"deliveryChainLength": 8,
"firstImpressionWeight": 9,
"harmIfWrong": 7
},
"reasoning": "This is a coaching re-engagement email. If it lands in Promotions, the user never sees it. The delivery chain is long (code -> pipeline -> Mailgun -> ESP -> Gmail -> inbox). First coaching email after 60 days = high first impression weight. A marketing-looking email from 'your coach' actively erodes trust.",
"reflectionRequired": true,
"reflectionLevel": "full"
}
Storing on Compaction
When creating a session compaction (see /compact-agentic-session), include the uxCriticality object shown above as a field on it — the same object, whichever way that skill is currently recording compactions for you: a private admin API if you have one set up (see /alignment-harness:harness-setup), or the local records folder (alignment-harness records compactions) otherwise. Don't call the compaction API directly from this skill — let /compact-agentic-session own that mechanism, and just make sure uxCriticality is part of what you hand it.
Integration with Pre-Execution Reflection
After running this measurement:
- If
reflectionRequiredistrue(score >= 4), proceed to theux-pre-execution-reflectionskill - If
reflectionLevelis"full"(score >= 7), answer every reflection question with thorough reasoning - If
reflectionLevelis"light"(score 4-6), answer all questions but brief answers are acceptable - Store both outputs on the compaction when the session ends
Cross-References
- Pre-Execution Reflection:
ux-pre-execution-reflectionskill (triggered by this measurement) - Session Compactions:
agentic-session-compactionsskill (stores both outputs) - Data shape: one compaction record schema carries this as a
uxCriticalityfield (example path:api/models/SessionCompaction.js) — if you're storing compactions yourself, wherever you define that shape is the equivalent - Admin UI: if you have an admin surface that displays session compactions, a criticality badge + dimension display there is one convention that's been used (example path:
web-app/src/gen4/admin/session-compactions/SessionCompactionsPage.jsx), not a requirement