Use when auditing implemented UI for missing UX patterns. Triggers: 'audit UX', 'check UX', 'missing patterns', 'UX gaps'.
Purpose: Ensures UI patterns stay consistent and user-friendly across the application by providing UX guidance based on general best practices, existing patterns in the project, and optional user-specified personas (e.g., ADHD-friendly, elderly users).
User triggers:
Before:
During:
Optional but helpful:
.shipkit/codebase-index.json.shipkit/architecture.json.shipkit/stack.jsonNo prerequisites required - Can provide general guidance even for new projects.
After confirming what the user is building (Step 1), create tasks:
TaskCreate: "Read existing context (codebase-index, ux-decisions, stack)"TaskCreate: "Explore actual UI components (2 parallel agents)"TaskCreate: "Generate UX guidance (terminal output)"TaskCreate: "Log decision to ux-decisions.json + update summary counts"TaskCreate: "Identify and log gaps + update totalGaps count"TaskCreate: "Suggest next steps"Rules:
TaskUpdate the JSON logging task to completed only after verifying ux-decisions.json was written with updated summary countsBefore providing guidance, ask 2-3 questions:
What UI element are you building?
Any specific UX concerns or user needs?
Is this a new pattern or matching existing?
Why ask: Tailor guidance to actual needs, not generic advice.
Check for established patterns:
# Codebase structure and component index (if file exists)
.shipkit/codebase-index.json
# Architecture decisions about UX (if file exists)
.shipkit/architecture.json
# Tech stack (to know UI framework constraints)
.shipkit/stack.json
# Previous UX decisions (if file exists)
.shipkit/ux-decisions.json
Verification before claiming patterns:
| Claim | Required Verification |
|-------|----------------------|
| "Similar pattern exists" | Check codebase-index.json components/directories for matching entries |
| "No existing pattern" | codebase-index.json has no matching components AND Grep confirms |
| "Established UX decision" | Check ux-decisions.json decisions array for similar component |
Never claim "no similar component" without checking codebase-index.json and ux-decisions.json.
Auto-detect:
Token budget: Keep context reading under 1500 tokens.
Before generating guidance, examine the real code — not just JSON metadata.
UX decisions based on .shipkit/ context files alone miss actual component patterns, inconsistencies between components, and accessibility gaps that only show up in source code.
Index-Accelerated Exploration — Read .shipkit/codebase-index.json first:
Read: .shipkit/codebase-index.jsondirectories to find component directories (e.g., src/components, src/app)concepts for UI-related concept mappingsframework to know which UI patterns to look for (React, Vue, Svelte, etc.)Launch explore agents — Use the Agent tool with subagent_type: Explore:
Agent 1 - Component patterns: "Find UI components related to [component type]
in the codebase.
[If index exists, include: 'Framework: [framework]. Component directories: [directories]. Start from these locations — skip broad file discovery.']
Look for: existing component implementations, state management
patterns (loading/error/empty states), form handling patterns, modal patterns,
and shared UI utilities. Report: what patterns are established, which components
handle states well vs poorly, what UI library/primitives are in use."
Agent 2 - Consistency and gaps: "Scan all UI components for consistency in
UX patterns.
[If index exists, include: 'Core files: [coreFiles]. Recently active: [recentlyActive]. Prioritize these for consistency checking.']
Look for: components missing loading states, inconsistent error
handling, missing accessibility attributes (aria-*, role, tabIndex), hardcoded
strings that should be accessible, missing keyboard handlers, touch target sizes.
Report: which components follow good patterns, which have gaps, and what the
most common UX debt is."
Launch both agents in parallel — they are independent scans.
Design system context — If .shipkit/design-system/PRINCIPLES.md exists, check alignment with design principles. If .shipkit/design-system/MATURITY.md exists, reference it for expected component abstractions and reuse opportunities. If neither exists, audit against general UX best practices only.
Synthesize findings — Before generating UX guidance, note:
If exploration reveals inconsistencies: Surface to user. Example: "Your existing components handle loading states inconsistently — ListPage uses skeletons but DetailPage shows nothing. Should we standardize?"
Token budget: Each explore agent should return a focused summary (~500 tokens).
When to skip: If providing guidance for a brand new project with no existing UI code.
Provide terminal output AND log to .shipkit/ux-decisions.json.
Terminal output template:
UX Guidance: [Component Name]
**Recommended Pattern**: [Pattern name and type]
**Why**: [1-2 sentence rationale based on principles below]
**Implementation Checklist**:
- [Specific implementation detail 1]
- [Specific implementation detail 2]
- [Specific implementation detail 3]
- [Accessibility requirement 1]
- [Accessibility requirement 2]
**Accessibility Notes**:
- [WCAG requirement 1]
- [WCAG requirement 2]
- [Keyboard interaction]
- [Screen reader consideration]
**[IF pattern exists in codebase-index.json or ux-decisions.json]**
**Existing Pattern Match**: [ComponentName]
- Reuse: [specific pattern to follow]
- Location: [file path or decision ID]
**[IF new pattern being established]**
**New Pattern**: This establishes a new pattern for your project
**Next Steps**:
- [Specific action 1]
- Run `/shipkit-engineering-definition` to capture this pattern (if new)
- Run `implement (no skill needed)` when ready to build
After providing terminal guidance, update .shipkit/ux-decisions.json:
If file doesn't exist, create with initial structure:
{
"$schema": "shipkit-artifact",
"type": "ux-decisions",
"version": "1.0",
"lastUpdated": "{current date}",
"source": "shipkit-ux-audit",
"summary": {
"totalDecisions": 0,
"totalGaps": 0,
"byCategory": {
"form": 0, "modal": 0, "toggle": 0, "list": 0,
"button": 0, "navigation": 0, "feedback": 0, "other": 0
},
"byPersona": {
"general": 0, "adhd-friendly": 0, "elderly": 0,
"mobile-first": 0, "low-bandwidth": 0, "accessibility-first": 0
}
},
"decisions": [],
"gaps": []
}
Add decision to array:
{
"id": "UX-{next sequential number}",
"component": "{Component name}",
"category": "{form|modal|toggle|list|button|navigation|feedback|other}",
"pattern": "{Specific pattern applied}",
"decision": "{What was decided}",
"rationale": "{Why this pattern - 1-2 sentences}",
"accessibility": ["{WCAG requirements}"],
"existingMatch": "{Reference or null}",
"persona": "{general|adhd-friendly|elderly|mobile-first|low-bandwidth|accessibility-first}",
"checklist": ["{Implementation requirements}"],
"date": "{YYYY-MM-DD}"
}
Update summary counts after adding decision.
Why log as JSON?
When auditing existing UI, if patterns are missing:
Add to gaps array:
{
"id": "GAP-{next sequential number}",
"component": "{Component or area}",
"missingPatterns": ["{patterns needed}"],
"priority": "{high|medium|low}",
"notes": "{additional context or null}",
"identifiedDate": "{YYYY-MM-DD}"
}
Update summary.totalGaps count.
Priority guidelines:
high: Accessibility violations, security concerns, major usability issuesmedium: Missing feedback states, inconsistent patternslow: Polish items, nice-to-havesOnly share relevant principles - Don't dump entire UX knowledge base.
Quick reference by component type:
Apply relevant UX principles:
Copy and track:
/shipkit-spec - Creates feature requirements
/shipkit-plan - Plans implementation approach
/shipkit-project-context - Generates stack information
/shipkit-engineering-definition - Engineering blueprint and architecture
implement (no skill needed) - Implements components
/shipkit-codebase-index - Updates codebase index
Optionally reads:
.shipkit/codebase-index.json - Existing UI components/patterns.shipkit/architecture.json - Past architectural decisions.shipkit/stack.json - UI framework info.shipkit/ux-decisions.json - Previous UX decisions.shipkit/product-discovery.json - Personas, pain points.shipkit/product-definition.json - UX patterns, features.shipkit/design-system/PRINCIPLES.md - Design system principles for audit context (skip if absent).shipkit/design-system/MATURITY.md - Component maturity for expected abstractions (skip if absent)Never reads:
Writes to:
.shipkit/ux-decisions.json - Logs each UX decision with pattern, rationale, and accessibility requirementsWrite Strategy: READ-MODIFY-WRITE
decisions arraygaps array (if auditing)summary countslastUpdated timestampWhy JSON?
This skill loads context on demand:
/shipkit-ux-audit.shipkit/ux-decisions.jsonNot loaded:
Guardrails Check: Before moving to next task, verify:
.shipkit/?/shipkit-work-memory for continuity.Natural capabilities (no skill needed): Implementation, debugging, testing, refactoring, code documentation.
Suggest skill when: User needs to make decisions, create persistence, or check project status.
<!-- /SECTION:after-completion --> <!-- SECTION:success-criteria -->Guidance is complete when:
.shipkit/ux-decisions.jsonBe specific:
Reference existing patterns:
Progressive disclosure:
Accessibility is not optional:
When to defer to full /ux-coherence:
When user specifies a persona, adapt guidance accordingly.
Persona adaptations:
Adapt principles to persona, but maintain accessibility baseline.
Remember: Good UX is invisible. Users shouldn't think about the interface - it should just work. When in doubt, choose the pattern that requires the least cognitive load and follows existing conventions.
Schema reference: See references/output-schema.md for complete JSON schema.
Example: See references/example.json for a sample output.
npx skills add stefan-stepzero/shipkit-ux 审计下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer