principle-experience-first — Claude Code skill for UX-first product
A principle skill that shifts priority toward the user when product, UX, or feature-scope tradeoffs come up. Useful when deciding what to cut.
npx skills add backnotprop/pstack --skill principle-experience-first -a claude-codeWhat principle-experience-first does
The skill sets one rule: when implementation convenience conflicts with user delight, choose delight. Every feature, control, and option must be justified, and three polished features beat ten rough ones.
The user is not only the end user of a UI. For a library or internal API, it's the colleague who imports it. The engineer who maintains the code next is a user too. The skill requires weighing their experience the same way and explaining impact from their perspective.
Prototyping gets explicit attention: design decisions are cheaper in throwaway HTML than in production code. The core loop matters as well, since every feature should serve the central workflow or get out of the way.
disable-model-invocation: true in the frontmatter means the model will not trigger the skill by itself. You call it explicitly when a product or UX tradeoff appears.
What it helps with
- decide what to sacrifice when cutting scope
- stop implementation convenience from overriding user experience
- account for the maintainer's perspective in design choices
- validate a design hypothesis before production code
Example prompts for the agent
- Apply principle-experience-first to choosing between two feature variants
- Which features should I cut to make the core flow better?
- Evaluate this decision from the perspective of the library user
How to install principle-experience-first
1Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-experience-first -a claude-code2Manually: put the files in place
~/.claude/skills/principle-experience-first/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/principle-experience-first/
1Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-experience-first -a codex2Manually: put the files in place
.agents/skills/principle-experience-first/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-experience-first -a cursor2Manually: put the files in place
.cursor/skills/principle-experience-first/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install backnotprop/pstack principle-experience-first2Manually: put the files in place
.github/skills/principle-experience-first/SKILL.md1Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-experience-first -a gemini-cli2Platform CLI
gemini skills install https://github.com/backnotprop/pstack --path skills/principle-experience-firstManually: put the files in place
.devin/skills/principle-experience-first/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-experience-first -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about principle-experience-first
How do I install principle-experience-first in Claude Code?
Run npx skills add backnotprop/pstack --skill principle-experience-first -a claude-code. The skill file lands at ~/.claude/skills/principle-experience-first/SKILL.md.
What does principle-experience-first do?
It shifts priority toward the user when product, UX, or scope decisions come up. Ship fewer polished features rather than more rough ones, and justify every feature and option.
Why does the skill not run automatically?
The description sets disable-model-invocation: true, so the model does not invoke it on its own. Ask for it explicitly when a relevant tradeoff shows up.
Source text
SKILL.md · MIT
--- name: principle-experience-first description: "Apply when product, UX, or feature-scope tradeoffs come up. Choose user delight over implementation convenience; ship fewer polished features over more rough ones." disable-model-invocation: true --- # Experience First When implementation convenience conflicts with user delight, choose delight. - Every feature, control, and option must be justified - Ship less, ship better (polished experience with three features beats rough one with ten) - Prototype before committing (design decisions are cheaper in throwaway HTML than production code) - Get the details right (transitions, alignment, spacing, feedback, error states) - Tighten the core loop (every feature should serve the central workflow or get out of the way) The user is whoever consumes the work. For a UI that is the end user. For a library or an internal API it is the colleague who imports it. The engineer who maintains the code next is a user too. Weigh their experience the same way, and explain impact from their perspective. Foundations should serve the experience. Foundational thinking governs the *sequence* of work. This principle governs the *target*.
© backnotprop · MIT · backnotprop/pstack