analyzthis_design 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +162 -0
  2. package/bin/cli.js +99 -0
  3. package/lib/install.js +180 -0
  4. package/package.json +34 -0
  5. package/skills/anuj/SKILL.md +72 -0
  6. package/skills/arjun/SKILL.md +69 -0
  7. package/skills/design-critic/SKILL.md +89 -0
  8. package/skills/design-personas/SKILL.md +100 -0
  9. package/skills/design-reference/SKILL.md +67 -0
  10. package/skills/design-reference/app-interface.csv +31 -0
  11. package/skills/design-reference/charts.csv +26 -0
  12. package/skills/design-reference/colors.csv +162 -0
  13. package/skills/design-reference/google-fonts.csv +1924 -0
  14. package/skills/design-reference/icons.csv +106 -0
  15. package/skills/design-reference/landing.csv +35 -0
  16. package/skills/design-reference/products.csv +162 -0
  17. package/skills/design-reference/react-performance.csv +45 -0
  18. package/skills/design-reference/stacks/angular.csv +51 -0
  19. package/skills/design-reference/stacks/astro.csv +54 -0
  20. package/skills/design-reference/stacks/flutter.csv +53 -0
  21. package/skills/design-reference/stacks/html-tailwind.csv +56 -0
  22. package/skills/design-reference/stacks/jetpack-compose.csv +53 -0
  23. package/skills/design-reference/stacks/laravel.csv +51 -0
  24. package/skills/design-reference/stacks/nextjs.csv +53 -0
  25. package/skills/design-reference/stacks/nuxt-ui.csv +51 -0
  26. package/skills/design-reference/stacks/nuxtjs.csv +59 -0
  27. package/skills/design-reference/stacks/react-native.csv +52 -0
  28. package/skills/design-reference/stacks/react.csv +54 -0
  29. package/skills/design-reference/stacks/shadcn.csv +61 -0
  30. package/skills/design-reference/stacks/svelte.csv +54 -0
  31. package/skills/design-reference/stacks/swiftui.csv +51 -0
  32. package/skills/design-reference/stacks/threejs.csv +54 -0
  33. package/skills/design-reference/stacks/vue.csv +50 -0
  34. package/skills/design-reference/styles.csv +85 -0
  35. package/skills/design-reference/typography.csv +74 -0
  36. package/skills/design-reference/ui-reasoning.csv +162 -0
  37. package/skills/design-reference/ux-guidelines.csv +100 -0
  38. package/skills/meera/SKILL.md +59 -0
  39. package/skills/noor/SKILL.md +70 -0
  40. package/skills/priya/SKILL.md +61 -0
  41. package/skills/raj/SKILL.md +54 -0
  42. package/skills/ux-ideator/SKILL.md +141 -0
  43. package/skills/zara/SKILL.md +64 -0
package/README.md ADDED
@@ -0,0 +1,162 @@
1
+ # Analyzthis_Design
2
+
3
+ 7 AI design personas for Cursor. Run structured UX critiques and multi-phase ideation sessions — right inside your AI chat.
4
+
5
+ ## Install
6
+
7
+ Works with **Cursor**, **Claude Code**, and **Codex CLI**.
8
+
9
+ ```bash
10
+ # Cursor (default)
11
+ npx analyzthis_design
12
+
13
+ # Claude Code
14
+ npx analyzthis_design --target claude
15
+
16
+ # Codex CLI
17
+ npx analyzthis_design --target codex
18
+
19
+ # All three at once
20
+ npx analyzthis_design --target all
21
+ ```
22
+
23
+ Skills are copied to the correct directory for each tool and available immediately.
24
+
25
+ | Tool | Install path |
26
+ |---|---|
27
+ | Cursor | `~/.cursor/skills/` |
28
+ | Claude Code | `~/.claude/commands/` |
29
+ | Codex CLI | `~/.codex/skills/` |
30
+
31
+ ---
32
+
33
+ ## What gets installed
34
+
35
+ ### 2 Orchestrating Skills
36
+
37
+ | Skill | What it does |
38
+ |---|---|
39
+ | `/design-critic` | 4-persona critique → returns a `SHIP / REVISE / BLOCK` verdict with a Composite Score |
40
+ | `/ux-ideator` | 6-phase ideation workflow → produces two competing IA concepts, deliberates between them, and delivers an implementation-ready wireframe |
41
+
42
+ ### 7 Individual Persona Skills
43
+
44
+ You can also invoke each persona directly.
45
+
46
+ | Skill | Persona | Role |
47
+ |---|---|---|
48
+ | `/arjun` | UX Agent | Scores designs on the UX Honeycomb (7 dimensions, A–F) |
49
+ | `/meera` | Business Agent | Evaluates retention, ARR, GTM lever, adoption risk by segment |
50
+ | `/priya` | Feasibility Agent | T-shirt sizes engineering effort using a 2-axis model, flags state machine traps |
51
+ | `/zara` | Delight Agent | Picks exactly ONE peak delight moment (or says "speed is the craft") |
52
+ | `/noor` | IA Architect | Produces Concept A — minimalist, progressive disclosure, ≤3 nav levels |
53
+ | `/anuj` | Power-User Advocate | Produces Concept B — dense, bulk actions, keyboard shortcuts |
54
+ | `/raj` | Arbitrator | Resolves stalemates using 5 ranked product principles — never speaks first |
55
+
56
+ ### 1 Context Template
57
+
58
+ | Skill | Purpose |
59
+ |---|---|
60
+ | `/design-personas` | Session context template — fill in once before any session so all 7 personas have project-specific grounding |
61
+
62
+ ---
63
+
64
+ ## How to use
65
+
66
+ ### Quick design critique
67
+
68
+ Open a Cursor chat and type:
69
+
70
+ ```
71
+ /design-critic
72
+
73
+ [Paste your screen description, mockup link, or component spec]
74
+ ```
75
+
76
+ Arjun, Meera, Priya, and Zara each evaluate the design independently. You get a Composite Score out of 20 and a clear `SHIP / REVISE / BLOCK` verdict.
77
+
78
+ ---
79
+
80
+ ### Full UX ideation from scratch
81
+
82
+ ```
83
+ /design-personas
84
+ [Fill in the session context template]
85
+
86
+ /ux-ideator
87
+ [Describe the feature you need to design]
88
+ ```
89
+
90
+ The 6-phase workflow runs:
91
+
92
+ 1. **Meera** reframes the request as a business outcome
93
+ 2. **Noor + Anuj + Arjun** audit the existing IA for gaps
94
+ 3. **Noor** produces Concept A (minimalist), **Anuj** produces Concept B (dense)
95
+ 4. They deliberate — **Raj** arbitrates if they deadlock
96
+ 5. **Arjun** validates the synthesized concept on the UX Honeycomb
97
+ 6. **Zara** adds one delight moment (or says it's a working surface, skip)
98
+ 7. **Priya** sizes the engineering effort and flags risks
99
+
100
+ ---
101
+
102
+ ### Single persona
103
+
104
+ ```
105
+ /arjun review this form flow — [description]
106
+ /priya estimate this feature — [description]
107
+ /zara find the delight moment in this onboarding — [description]
108
+ ```
109
+
110
+ ---
111
+
112
+ ## CLI commands
113
+
114
+ ```bash
115
+ # Install for Cursor (default)
116
+ npx analyzthis_design
117
+
118
+ # Install for Claude Code
119
+ npx analyzthis_design --target claude
120
+
121
+ # Install for Codex CLI
122
+ npx analyzthis_design --target codex
123
+
124
+ # Install for all tools at once
125
+ npx analyzthis_design --target all
126
+
127
+ # Force overwrite existing skills
128
+ npx analyzthis_design --target all --force
129
+
130
+ # Remove all installed skills (from a specific tool)
131
+ npx analyzthis_design remove --target cursor
132
+ npx analyzthis_design remove --target all
133
+
134
+ # Check what's installed
135
+ npx analyzthis_design list
136
+ npx analyzthis_design list --target all
137
+ ```
138
+
139
+ ---
140
+
141
+ ## How it works
142
+
143
+ This package copies 10 SKILL.md files into your `~/.cursor/skills/` directory. Cursor automatically makes them available as `/skill-name` commands in any chat session. The skills are plain markdown — no backend, no API keys, no runtime dependencies.
144
+
145
+ Each persona has:
146
+ - A defined **lens** (what they evaluate and how)
147
+ - A **mandatory output format** (so you get structured, comparable output)
148
+ - **Canonical failure patterns** (real anti-patterns they watch for)
149
+ - **Failure modes** (where the persona itself can go wrong — so the AI self-corrects)
150
+
151
+ ---
152
+
153
+ ## Requirements
154
+
155
+ - [Cursor](https://cursor.com) with Agent Mode
156
+ - Node.js 16+
157
+
158
+ ---
159
+
160
+ ## License
161
+
162
+ MIT
package/bin/cli.js ADDED
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const path = require('path');
5
+ const os = require('os');
6
+ const fs = require('fs');
7
+ const { install, remove, SKILLS, TARGET_DIRS } = require('../lib/install');
8
+
9
+ const HELP = `
10
+ Analyzthis_Design — 7 AI design personas for Cursor, Claude, and Codex
11
+
12
+ Usage:
13
+ npx analyzthis_design [command] [options]
14
+
15
+ Commands:
16
+ install Copy all skills to the target AI tool's skills directory (default)
17
+ remove Delete installed skills from the target AI tool's directory
18
+ list Show installed skills for a target
19
+
20
+ Options:
21
+ --target AI tool to install into: cursor | claude | codex | all (default: cursor)
22
+ --force Overwrite existing skills on install
23
+ --help Show this help message
24
+
25
+ Examples:
26
+ npx analyzthis_design # install for Cursor
27
+ npx analyzthis_design --target claude # install for Claude Code
28
+ npx analyzthis_design --target codex # install for Codex CLI
29
+ npx analyzthis_design --target all # install for all tools
30
+ npx analyzthis_design remove --target all # remove from all tools
31
+
32
+ Install paths:
33
+ Cursor → ~/.cursor/skills/
34
+ Claude → ~/.claude/commands/
35
+ Codex → ~/.codex/skills/
36
+
37
+ Personas installed:
38
+ Arjun UX Agent (UX Honeycomb critique)
39
+ Meera Business Agent (retention, ARR, GTM)
40
+ Priya Feasibility Agent (effort sizing, risks)
41
+ Zara Delight Agent (Peak-End, one moment)
42
+ Noor IA Architect (Concept A, minimalist)
43
+ Anuj Power-User Advocate (Concept B, dense)
44
+ Raj Arbitrator (stalemate only)
45
+
46
+ Orchestrating skills:
47
+ design-critic 4-persona critique → SHIP/REVISE/BLOCK
48
+ ux-ideator 6-phase ideation workflow
49
+ design-personas Session context template
50
+
51
+ Docs: https://github.com/rishikeshjoshi/analyzthis_design
52
+ `;
53
+
54
+ const [,, cmd, ...flags] = process.argv;
55
+ const force = flags.includes('--force');
56
+ const targetFlag = flags.find(f => f.startsWith('--target=')) || flags[flags.indexOf('--target') + 1];
57
+ const target = (typeof targetFlag === 'string' && !targetFlag.startsWith('--'))
58
+ ? targetFlag
59
+ : 'cursor';
60
+
61
+ switch (cmd) {
62
+ case undefined:
63
+ case 'install':
64
+ install({ force, target });
65
+ break;
66
+
67
+ case 'remove':
68
+ case 'uninstall':
69
+ remove({ target });
70
+ break;
71
+
72
+ case 'list': {
73
+ const targets = target === 'all' ? Object.keys(TARGET_DIRS) : [target];
74
+ for (const t of targets) {
75
+ const dir = TARGET_DIRS[t];
76
+ console.log(`\nInstalled Analyzthis_Design skills [${t}] (${dir}):\n`);
77
+ for (const skill of SKILLS) {
78
+ // Check both directory and flat .md forms
79
+ const asDir = path.join(dir, skill);
80
+ const asFile = path.join(dir, `${skill}.md`);
81
+ const exists = fs.existsSync(asDir) || fs.existsSync(asFile);
82
+ console.log(` ${exists ? '✅' : '✗ '} ${skill}`);
83
+ }
84
+ }
85
+ console.log('');
86
+ break;
87
+ }
88
+
89
+ case '--help':
90
+ case 'help':
91
+ case '-h':
92
+ console.log(HELP);
93
+ break;
94
+
95
+ default:
96
+ console.error(`\nUnknown command: "${cmd}"\n`);
97
+ console.log(HELP);
98
+ process.exit(1);
99
+ }
package/lib/install.js ADDED
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const os = require('os');
7
+
8
+ const PACKAGE_SKILLS_DIR = path.join(__dirname, '..', 'skills');
9
+
10
+ // Directory each AI tool uses for custom skills/commands
11
+ const TARGET_DIRS = {
12
+ cursor: path.join(os.homedir(), '.cursor', 'skills'),
13
+ claude: path.join(os.homedir(), '.claude', 'commands'),
14
+ codex: path.join(os.homedir(), '.codex', 'skills'),
15
+ };
16
+
17
+ const SKILLS = [
18
+ 'arjun',
19
+ 'meera',
20
+ 'priya',
21
+ 'zara',
22
+ 'noor',
23
+ 'anuj',
24
+ 'raj',
25
+ 'design-critic',
26
+ 'ux-ideator',
27
+ 'design-personas',
28
+ 'design-reference',
29
+ ];
30
+
31
+ // Copies a directory recursively
32
+ function copyDir(src, dest) {
33
+ fs.mkdirSync(dest, { recursive: true });
34
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
35
+ const srcPath = path.join(src, entry.name);
36
+ const destPath = path.join(dest, entry.name);
37
+ if (entry.isDirectory()) {
38
+ copyDir(srcPath, destPath);
39
+ } else {
40
+ fs.copyFileSync(srcPath, destPath);
41
+ }
42
+ }
43
+ }
44
+
45
+ // For Claude/Codex: install each skill as a single flat .md file
46
+ // (these tools don't support sub-directories the way Cursor does)
47
+ function installFlat(skill, skillsDir, force) {
48
+ const src = path.join(PACKAGE_SKILLS_DIR, skill, 'SKILL.md');
49
+ const dest = path.join(skillsDir, `${skill}.md`);
50
+
51
+ if (!fs.existsSync(src)) return 'missing';
52
+ if (fs.existsSync(dest) && !force) return 'skipped';
53
+
54
+ try {
55
+ fs.mkdirSync(skillsDir, { recursive: true });
56
+ fs.copyFileSync(src, dest);
57
+ return 'installed';
58
+ } catch {
59
+ return 'error';
60
+ }
61
+ }
62
+
63
+ // For Cursor: install each skill as a directory (existing behaviour)
64
+ function installDir(skill, skillsDir, force) {
65
+ const src = path.join(PACKAGE_SKILLS_DIR, skill);
66
+ const dest = path.join(skillsDir, skill);
67
+
68
+ if (!fs.existsSync(src)) return 'missing';
69
+ if (fs.existsSync(dest) && !force) return 'skipped';
70
+
71
+ try {
72
+ copyDir(src, dest);
73
+ return 'installed';
74
+ } catch {
75
+ return 'error';
76
+ }
77
+ }
78
+
79
+ function install({ silent = false, force = false, target = 'cursor' } = {}) {
80
+ const log = silent ? () => {} : console.log;
81
+ const warn = silent ? () => {} : console.warn;
82
+
83
+ // Resolve list of targets
84
+ const targets = target === 'all' ? Object.keys(TARGET_DIRS) : [target];
85
+
86
+ for (const t of targets) {
87
+ if (!TARGET_DIRS[t]) {
88
+ warn(` ⚠ Unknown target "${t}". Choose: cursor, claude, codex, all`);
89
+ continue;
90
+ }
91
+
92
+ const skillsDir = TARGET_DIRS[t];
93
+ const installed = [], skipped = [], errors = [];
94
+
95
+ for (const skill of SKILLS) {
96
+ // design-reference has sub-directories — always install as full dir
97
+ const result = (t === 'cursor' || skill === 'design-reference')
98
+ ? installDir(skill, skillsDir, force)
99
+ : installFlat(skill, skillsDir, force);
100
+
101
+ if (result === 'installed') installed.push(skill);
102
+ else if (result === 'skipped') skipped.push(skill);
103
+ else if (result === 'missing') { warn(` ⚠ Skill source not found: ${skill}`); errors.push(skill); }
104
+ else { warn(` ✗ Failed to install ${skill}`); errors.push(skill); }
105
+ }
106
+
107
+ if (installed.length > 0) {
108
+ log(`\n✅ Analyzthis_Design installed ${installed.length} skill(s) to ${skillsDir}:`);
109
+ for (const s of installed) log(` • ${s}`);
110
+ }
111
+ if (skipped.length > 0) {
112
+ log(`\n⏭ Skipped ${skipped.length} already-existing skill(s) (use --force to overwrite):`);
113
+ for (const s of skipped) log(` • ${s}`);
114
+ }
115
+ if (errors.length > 0) {
116
+ log(`\n✗ ${errors.length} skill(s) failed to install.`);
117
+ }
118
+ if ((installed.length > 0 || skipped.length > 0) && t === 'cursor') {
119
+ log(`\n💡 Usage in Cursor:`);
120
+ log(` /design-critic — multi-persona critique (Arjun, Meera, Priya, Zara)`);
121
+ log(` /ux-ideator — full ideation workflow (all 7 personas, 6 phases)`);
122
+ log(` /design-personas — fill in session context before a session\n`);
123
+ }
124
+ if ((installed.length > 0 || skipped.length > 0) && t === 'claude') {
125
+ log(`\n💡 Usage in Claude Code:`);
126
+ log(` /design-critic — multi-persona critique`);
127
+ log(` /ux-ideator — full ideation workflow\n`);
128
+ }
129
+ if ((installed.length > 0 || skipped.length > 0) && t === 'codex') {
130
+ log(`\n💡 Usage in Codex CLI:`);
131
+ log(` Skills installed to ~/.codex/skills/ — reference them in your AGENTS.md or instructions\n`);
132
+ }
133
+ }
134
+ }
135
+
136
+ function remove({ silent = false, target = 'cursor' } = {}) {
137
+ const log = silent ? () => {} : console.log;
138
+
139
+ const targets = target === 'all' ? Object.keys(TARGET_DIRS) : [target];
140
+
141
+ for (const t of targets) {
142
+ if (!TARGET_DIRS[t]) continue;
143
+
144
+ const skillsDir = TARGET_DIRS[t];
145
+ const removed = [], missing = [];
146
+
147
+ for (const skill of SKILLS) {
148
+ // Try both directory and flat .md file
149
+ const asDir = path.join(skillsDir, skill);
150
+ const asFile = path.join(skillsDir, `${skill}.md`);
151
+
152
+ if (fs.existsSync(asDir)) {
153
+ fs.rmSync(asDir, { recursive: true, force: true });
154
+ removed.push(skill);
155
+ } else if (fs.existsSync(asFile)) {
156
+ fs.rmSync(asFile, { force: true });
157
+ removed.push(skill);
158
+ } else {
159
+ missing.push(skill);
160
+ }
161
+ }
162
+
163
+ if (removed.length > 0) {
164
+ log(`\n🗑 [${t}] Removed ${removed.length} skill(s) from ${skillsDir}:`);
165
+ for (const s of removed) log(` • ${s}`);
166
+ }
167
+ if (missing.length > 0) {
168
+ log(`\n [${t}] ${missing.length} skill(s) were not installed (nothing to remove).`);
169
+ }
170
+ }
171
+ log('');
172
+ }
173
+
174
+ module.exports = { install, remove, SKILLS, TARGET_DIRS };
175
+
176
+ // Run directly (postinstall) — always installs Cursor by default
177
+ if (require.main === module) {
178
+ const silent = process.argv.includes('--silent');
179
+ install({ silent, target: 'cursor' });
180
+ }
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "analyzthis_design",
3
+ "version": "1.1.0",
4
+ "description": "7 AI design personas for Cursor — run structured UX critiques and ideation sessions with Arjun (UX), Meera (Business), Priya (Feasibility), Zara (Delight), Noor (IA), Anuj (Power-User), and Raj (Arbitrator).",
5
+ "keywords": [
6
+ "cursor",
7
+ "cursor-skill",
8
+ "claude",
9
+ "claude-command",
10
+ "codex",
11
+ "ai-persona",
12
+ "ux",
13
+ "design",
14
+ "design-critic",
15
+ "ux-ideator"
16
+ ],
17
+ "author": "Rishikesh Joshi",
18
+ "license": "MIT",
19
+ "bin": {
20
+ "analyzthis_design": "bin/cli.js"
21
+ },
22
+ "files": [
23
+ "bin/",
24
+ "lib/",
25
+ "skills/",
26
+ "README.md"
27
+ ],
28
+ "scripts": {
29
+ "postinstall": "node lib/install.js --silent"
30
+ },
31
+ "engines": {
32
+ "node": ">=16"
33
+ }
34
+ }
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: anuj
3
+ description: Activate Anuj (also known as Dev), a power-user advocate who audits IA for information density, bulk operations, keyboard shortcuts, and expert-user gaps. Use when designing for expert users, reviewing data tables, auditing high-frequency workflows, or producing Concept B in a UX ideation session.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Anuj — Power-User Advocate
8
+
9
+ You are Anuj (alias: Dev). 6 years as a domain analyst in high-volume operations before moving to product. Filed 50+ internal tickets against products that made him click 3 times for what should take 1. Information density is a feature, not a flaw.
10
+
11
+ ## Non-negotiables
12
+
13
+ - Every data table has bulk selection
14
+ - Any action taken >10×/session has a keyboard shortcut
15
+ - Column configuration is user-controllable
16
+ - Data tables never hide columns by default unless there are >12 of them
17
+
18
+ ## What you fight against
19
+
20
+ Wizard flows that fragment a single task across multiple screens. Progressive disclosure that hides data expert users need immediately. "Clean" interfaces that strip data under the banner of simplicity.
21
+
22
+ ## Output — Concept B (text wireframe format)
23
+
24
+ ```
25
+ ## Concept B — Anuj
26
+
27
+ Screen: [name]
28
+ Primary action: [one CTA — but also surfacing critical secondary data]
29
+ Nav level: L[1/2/3]
30
+
31
+ Visible on load (full density):
32
+ - Data table: [columns visible by default + column config toggle]
33
+ - Bulk action toolbar: [actions available on multi-select]
34
+ - Filters/search: [exposed, not hidden]
35
+
36
+ Keyboard shortcuts:
37
+ - [action] → [shortcut]
38
+ - [action] → [shortcut]
39
+
40
+ Progressive disclosure: [only for rarely needed config, not core data]
41
+
42
+ Rationale: [1-2 sentences citing expert user session frequency and entity volume]
43
+ ```
44
+
45
+ ## Canonical failure patterns to watch for
46
+
47
+ - No bulk actions on high-volume management surfaces (9-step daily checklist done one at a time)
48
+ - High-frequency actions requiring 3+ clicks
49
+ - Filters with no search, especially when options exceed 50
50
+ - Power-user configuration hidden behind "Advanced Settings" that 80% of heavy users need daily
51
+
52
+ ## Voice
53
+
54
+ Data-heavy and impatient. "A user managing 200 entities will not use this screen — it doesn't have bulk actions." Quotes specific numbers. Says "I don't have the data for that" when he doesn't.
55
+
56
+ ## Failure modes to avoid
57
+
58
+ 1. Underweighting novice flows — verify whether first-time users land on this surface
59
+ 2. Over-generalizing the expert user — "power users" in one domain behave differently from another
60
+
61
+ ## Reference data
62
+
63
+ Read from `~/.cursor/skills/design-reference/` to ground power-user critique in specific, named patterns:
64
+
65
+ | File | When to read |
66
+ |---|---|
67
+ | `ux-guidelines.csv` | Always — cite specific rows for keyboard nav, bulk action, and data table rules when auditing for power-user gaps |
68
+ | `app-interface.csv` | When mobile or React Native is in scope — cite touch target rules and gesture patterns |
69
+ | `ui-reasoning.csv` | When auditing the default state — check `Recommended_Pattern` for the product category to verify density is appropriate |
70
+ | `stacks/shadcn.csv` | When design system is ShadCN — confirm that DataTable, Command, and bulk-action components exist before specifying them |
71
+
72
+ **How to use:** When auditing a surface for power-user gaps, read `ux-guidelines.csv` and filter by `Category` = "Navigation", "Interaction", or "Data Table". Cite the `Issue`, `Do`, and `Severity` columns to make the gap concrete and actionable.
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: arjun
3
+ description: Activate Arjun, a UX agent who evaluates designs through the UX Honeycomb (Useful, Usable, Findable, Credible, Accessible, Desirable, Valuable). Use when performing a UX critique, reviewing interaction flows, auditing accessibility, or assessing friction and trust signals in a design.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Arjun — UX Agent
8
+
9
+ You are Arjun. Product designer who came up through user research. 200+ user sessions across B2B SaaS — operations, analytics, and workflow tools for expert users in high-pressure, time-scarce environments. You speak for users not in the room.
10
+
11
+ ## Lens: UX Honeycomb
12
+
13
+ Score each dimension A–F. Flag C or below with specific, actionable critique citing exact component + zone.
14
+
15
+ 1. **Useful** — solves a real user problem, or an imagined one?
16
+ 2. **Usable** — primary task in ≤3 clicks? Bulk actions where needed?
17
+ 3. **Findable** — locatable? Nav path obvious?
18
+ 4. **Credible** — data presentation inspires trust? Timestamps, labels, empty states?
19
+ 5. **Accessible** — WCAG 2.1 AA. Keyboard nav, contrast, aria. Cite specific rules.
20
+ 6. **Desirable** — does it *feel* right? (Hand off to Zara if score < B)
21
+ 7. **Valuable** — proportional to the user pain it addresses?
22
+
23
+ ## Output format
24
+
25
+ ```
26
+ ## Arjun — UX Critique
27
+ Useful: [A–F] — [reason]
28
+ Usable: [A–F] — [reason]
29
+ Findable: [A–F] — [reason]
30
+ Credible: [A–F] — [reason]
31
+ Accessible: [A–F] — [WCAG rule if failing]
32
+ Desirable: [A–F] — [hand off to Zara if < B]
33
+ Valuable: [A–F] — [reason]
34
+
35
+ Top friction points:
36
+ 1. [specific: component + zone + what breaks]
37
+ 2. [specific: component + zone + what breaks]
38
+
39
+ Score: [sum /35 scaled to /5]
40
+ ```
41
+
42
+ ## Canonical failure patterns to watch for
43
+
44
+ - Empty states with no explanation — the "0 results — all filtered out" trap
45
+ - Missing timestamps users repeatedly asked for
46
+ - Modal interruptions that break expert mid-flow
47
+ - Single-session generalizations — always qualify with sample size
48
+
49
+ ## Voice
50
+
51
+ Empathetic but precise. "A time-scarce operator with 50 open items will not read this tooltip" — never "users might not understand." Distinguish annoying friction from deal-breaking friction.
52
+
53
+ ## Failure modes to avoid
54
+
55
+ 1. Generalizing from a single session — qualify claims with sample size
56
+ 2. Ignoring cross-segment differences — research from one user type may not apply to another
57
+
58
+ ## Reference data
59
+
60
+ Read from `~/.cursor/skills/design-reference/` when grounding critique in specific values:
61
+
62
+ | File | When to read |
63
+ |---|---|
64
+ | `ux-guidelines.csv` | Always — cite specific rule rows when flagging WCAG or platform violations |
65
+ | `ui-reasoning.csv` | Always — match product type from session context to find recommended patterns and anti-patterns |
66
+ | `app-interface.csv` | When mobile or React Native surfaces are in scope — cite specific rule rows |
67
+ | `charts.csv` | When data visualizations are present — cite chart type, accessibility grade, library recommendation |
68
+
69
+ **How to use:** Filter rows by product type or platform matching the session context. Quote the `Do`, `Don't`, and `Severity` columns directly in your critique instead of giving abstract advice.