Agent skill

Consumer Experience Review

by jaemk in jaemk/cached

Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface…

MITAuto-check passedFrontend & Design

Install Consumer Experience Review

skills CLI
$ npx skills add jaemk/cached --skill consumer-experience-review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jaemk/cached consumer-experience-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jaemk/cached.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/consumer-experience-review .claude/skills/consumer-experience-review && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
consumer-experience-review
GitHub stars
2.1k
Token cost
~1.9k tokens
SKILL.md length
1,017 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface…

  • Works in 8 steps: Map the public surface (don't trust… → Scaffold a throwaway external consumer → Write naive-but-reasonable consumer code → …
  • Asked to review the consumer/user experience
  • SKILL.md covers Core principle, Procedure, Gap classes to actively check… and Cautions
  • Calls cargo, npm and pip

What it does

Consumer Experience Review is an agent skill from jaemk/cached. Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface gaps, inconsistencies, and inconveniences with compiler-verified evidence. Use when asked to "review the consumer/user experience", "find API gaps/inconsistencies", "evaluate the public API", "is this ready to publish/release", or before a 1.0 / major version bump. Especially valuable for breaking-change releases (the…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering UX design. It works with Rust. The repository describes itself as: Rust cache structures and easy function memoization. The licence is MIT.

When your agent uses it

  • Asked to review the consumer/user experience
  • Find API gaps/inconsistencies
  • Evaluate the public API
  • Is this ready to publish/release

Example prompts

  • “review the consumer/user experience”
  • “find API gaps/inconsistencies”
  • “evaluate the public API”
  • “/consumer-experience-review”

Requirements

  • Python 3
  • Node.js

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Map the public surface (don't trust memory — read it)
  2. Scaffold a throwaway external consumer
  3. Write naive-but-reasonable consumer code
  4. Compile, run, capture exact errors
  5. Isolate each gap in a minimal probe
  6. Severity — weight the release window
  7. Report — evidence first, fixes proposed not applied
  8. Clean up

What it can do on your machine

Read from SKILL.md and the folder at commit 9da0ec2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo
    • npm
    • pip
    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm and pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Consumer Experience Review loads about 1.9k tokens when it runs. Until then it costs about 149 tokens; SKILL.md has 1,017 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~149
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jaemk/cached at commit 9da0ec2, republished under its MIT licence (© jaemk). 1,017 words, ~1,943 tokens.

Download SKILL.mdSave it as .claude/skills/consumer-experience-review/SKILL.md (or your agent's skills folder).
name
consumer-experience-review
description
Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface gaps, inconsistencies, and inconveniences with compiler-verified evidence. Use when asked to "review the consumer/user experience", "find API gaps/inconsistencies", "evaluate the public API", "is this ready to publish/release", or before a 1.0 / major version bump. Especially valuable for breaking-change releases (the only non-breaking window to fix the public surface).

Consumer-experience review

You are auditing a library as the people who will cargo add / npm install / pip install it — not as its author. Internal tests pass through the crate's own privacy and import context and therefore cannot see the gaps a real consumer hits (missing root re-exports, trait-import friction, method-name collisions, feature-flag dead-ends, error types you can't name). The only reliable instrument is a separate project that depends on the library externally and uses it the way a reasonable-but-not-omniscient user would.

Core principle

Write the code a competent user would write on their first try — reaching for conventional names and paths — and let it fail. The natural call that doesn't compile is the finding. Do not pre-correct your consumer code with insider knowledge; that hides exactly what you're looking for. Evidence is a captured compiler error, not an assertion.

Procedure

1. Map the public surface (don't trust memory — read it)

Enumerate what a consumer actually sees:

  • Crate-root re-exports vs what's only reachable via deeper paths (crate::stores::Foo). Asymmetry here is the #1 source of findings.
  • Traits and every method signature — look for two traits that define the same method name (collides when both are in scope; common with sync/async pairs), and for &mut self where a consumer would expect &self.
  • Constructors / builders — is Type::new() returning Type or a builder? Is the fallible path build() or try_build()? Is it consistent across sibling types?
  • Error types — can the error returned by a public function be named via the same path the type came from? (cached::Foo but only cached::stores::FooBuildError is a classic gap.)
  • Feature flags — what's gated, and does a natural feature combination leave a type unreferenceable or a macro unusable?
  • Macros — re-exported at the crate root (use lib::thing;) or only under a submodule? Ecosystem convention is root.
2. Scaffold a throwaway external consumer
  • Put it in $TMPDIR (or another scratch path) — never inside the repo, never in git. Do not pollute the project's examples/, tests/, or working tree.
  • Depend on the library by path with a realistic feature set:
    • Rust: lib = { path = "/abs/path", features = [...] }
    • npm: npm link / file: dependency. Python: pip install -e. Same idea — external module resolution, real package boundary.
  • Exercise the breadth: each macro, direct store/type use, sync and async paths, builders, error handling, and at least one less-common feature combination.
3. Write naive-but-reasonable consumer code

Deliberately reach for conventions first:

  • Import the macro from the crate root (use lib::macro;) before trying submodule paths.
  • Bring the obvious traits into scope together (or glob use lib::*;) — exactly what a real user does.
  • Name the error type returned by a builder/constructor in a let _: Option<lib::TheError> = None; or a function signature.
  • Guess builder method names by convention (max_size, capacity, with_*) — a wrong guess that the compiler can't help disambiguate is a discoverability finding.
4. Compile, run, capture exact errors

cargo build/run (or the ecosystem equivalent). For every failure, record the exact diagnostic code and message (error[E0034]: multiple applicable items, E0432: unresolved import, E0599, etc.). That verbatim error is the evidence in your report.

5. Isolate each gap in a minimal probe

For each suspected issue, create a tiny separate binary/module that triggers only that issue with the smallest natural snippet. This (a) proves it's real and not a side effect, and (b) gives you a clean before/after to re-run once a fix is proposed/applied.

6. Severity — weight the release window

Rank findings, and explicitly factor in the version context:

  • Pre-1.0 / major bump: a hard compile error on a common operation, or any public-surface inconsistency, is high — this is the only non-breaking window to fix the method/type surface. Say so.
  • Post-1.0 minor: a breaking fix is itself a cost; lean toward additive fixes (new re-exports, #[doc(alias)], deprecations) and documentation.
  • Always separate: 🔴 blocks/forces ugly workarounds on common paths · 🟠 awkward but workable · 🟡 docs/discoverability.
Show full SKILL.md (391 more words)Show less
7. Report — evidence first, fixes proposed not applied

For each finding: the natural code that failed → the exact compiler error → root cause (cite file:line) → concrete proposed fix (and whether it's breaking or additive). Recommend a subset to act on given the release window. Do not implement fixes unless the user asks — this skill produces a review. If asked to fix, re-run the isolated probes (step 5) afterward to prove the natural code now works, and run the project's full check (make check/tests/clippy/doctests, golden/snapshot drift).

8. Clean up

Remove or abandon the scratch consumer crate. Never leave it in the repo or stage it.

Gap classes to actively check (the checklist that catches the real ones)

  • Root re-export gaps / asymmetry — type at root but its builder/error only via crate::sub::; one sibling exports *Builder at root, another doesn't.
  • Trait method-name collisions — two in-scope traits with the same method name (sync foo vs async foo) → E0034, forces UFCS. Fix: prefix/rename one (e.g. async_-prefix the async variant), settle it pre-1.0.
  • Unnameable error types — Type::build() returns Result<_, E> but E isn't reachable from the path Type is.
  • Constructor/builder inconsistency — new()→value vs new()→builder; build vs try_build; one shared error enum vs per-type ones. Often documentation-only at 1.0, but flag it.
  • Macro not at crate root — every mainstream crate puts its attribute/derive macro at the root; submodule-only is friction and a migration cost.
  • Feature-flag dead-ends — a plausible feature set where a needed type/trait/macro is unreferenceable.
  • &mut self for reads — forces a lock/wrapper for shared use; note it even if intentional.
  • Discoverability — natural names that don't exist and have no #[doc(alias)]; missing trait-import hints in errors.

Cautions

  • Testing from inside the crate (its own tests/, examples/, or a workspace member) is not a consumer test — it inherits the crate's import/privacy context and will miss the gaps. External path dependency is mandatory.
  • Sandboxed builds may hit registry/network errors; this skill only needs the path-dependency and std/tokio-class deps. If a build fails for sandbox/network reasons (not a real API gap), retry with the sandbox disabled before concluding.
  • A finding is the user's natural code failing, not "the API is unusable" — the API may work fine once you know the trick. The cost being measured is "knowing the trick."
  • Generalize beyond Rust where relevant: npm (root export maps, exports field, dual ESM/CJS), Python (__init__.py re-exports, optional-extra imports) — same methodology, same gap classes.

© jaemk, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/consumer-experience-review of jaemk/cached.

Open the folder on GitHubat commit 9da0ec2

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in jaemk/cached, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Consumer Experience Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Consumer Experience Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Consumer Experience Review this skilljaemk/cached2.1k—~1.9kAutomated safety check: PassMIT
Impeccablebestofjs/bestofjs3.1k26 repos~2.6kAutomated safety check: PassMIT
Interface Design for Dashboards and Appsholaboss-ai/holaOS11k3 repos~6kAutomated safety check: PassMIT
Animategrowupanand/ConvoForm1026 repos~1.9kAutomated safety check: PassApache-2.0
Migrate Content Iadocker/docs4.7k—~5.1kAutomated safety check: PassApache-2.0
UX WalkthroughXiaoMi/hiui879—~1.3kAutomated safety check: PassMIT

Similar skills

  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 26 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Pushes an agent past generic defaults when designing dashboards, admin panels, SaaS apps and tools, with attention to structure, type, navigation and how data is shown.

    11k GitHub starsUsed in 3 repos~6k tokens
    Frontend & DesignAuto-check passed
  • Animate

    growupanand/ConvoForm

    Review a feature and enhance it with purposeful animations, micro-interactions, and motion effects that improve usability and delight.

    102 GitHub starsUsed in 6 repos~1.9k tokens
    Frontend & DesignAuto-check passed
  • Official

    Handle Hugo docs information-architecture moves: discover old vs new URLs, add front matter aliases (Phase 1), update in-repo links (Phase 2), interactive List 2 resolution and fragment validation…

    4.7k GitHub stars~5.1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • UX Walkthrough

    XiaoMi/hiui

    体验走查 skill。适用于代码库、URL、截图三种输入,输出结构化体验问题报告,并同步生成本地 docx 报告。触发词:体验走查、UX review、交互走查、界面审查、体验问题。

    879 GitHub stars~1.3k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Ask Sonner

    leepokai/Codync

    Guide to Sonner, the React toast library — install and wire up the Toaster, pick the right toast() call, promise and loading toasts, updating, dismissing and persisting toasts, styling, theming and…

    232 GitHub starsUsed in 4 repos~1.8k tokens
    Frontend & DesignAuto-check: warnings

More from jaemk/cached

  • PR Cycle

    jaemk/cached

    PR review-and-update cycle — the orchestrator that takes a PR from review to resolved.

    2.1k GitHub stars~4.8k tokensUpdated 8 days ago
    Auto-check: notes
  • PR Review

    jaemk/cached

    Targeted, read-only review of a PR or checked-out branch. An agent skill from jaemk/cached.

    2.1k GitHub stars~2.5k tokensUpdated 8 days ago
    Auto-check: notes
  • Release

    jaemk/cached

    Prepare a release (bump versions across all Cargo.toml files, update CHANGELOG.md, refresh the migration guide, regenerate README, commit), or run a pre-release review.

    2.1k GitHub stars~2.8k tokensUpdated 8 days ago
    Auto-check passed

Works with

Questions about Consumer Experience Review

What does Consumer Experience Review do?

Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface…. Consumer Experience Review is an agent skill from jaemk/cached. Review a library/package from the perspective of an external downstream consumer — build a throwaway crate/project that depends on it the way a real user would, exercise the public API, and surface gaps, inconsistencies, and inconveniences with compiler-verified evidence.

When should I use Consumer Experience Review?

Consumer Experience Review fits situations like: asked to review the consumer/user experience; find API gaps/inconsistencies; evaluate the public API; is this ready to publish/release.

How do I install Consumer Experience Review in Claude Code?

Run `npx skills add jaemk/cached --skill consumer-experience-review -a claude-code`. Or copy the skill folder (.agents/skills/consumer-experience-review in jaemk/cached) into .claude/skills/consumer-experience-review in your project. Claude Code loads it when a task matches its description.

How do I install Consumer Experience Review in Codex?

Run `npx skills add jaemk/cached --skill consumer-experience-review -a codex`. Or copy the skill folder (.agents/skills/consumer-experience-review in jaemk/cached) into .agents/skills/consumer-experience-review in your project. Codex loads it when a task matches its description.

Can I use Consumer Experience Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaemk/cached --skill consumer-experience-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/consumer-experience-review, .gemini/skills/consumer-experience-review, .github/skills/consumer-experience-review and .opencode/skills/consumer-experience-review in your project.

What does Consumer Experience Review need to run?

Going by SKILL.md and its folder, Consumer Experience Review needs the command-line tools its instructions call (cargo, npm, pip and make). Our summary lists: Python 3; Node.js.

Does Consumer Experience Review access the network?

SKILL.md contains no URLs. Its commands use npm and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Consumer Experience Review safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Consumer Experience Review use?

Consumer Experience Review is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Consumer Experience Review use?

About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Consumer Experience Review?

Skills that share tags, products or a category with Consumer Experience Review: Impeccable (bestofjs/bestofjs, 3.1k stars), Interface Design for Dashboards and Apps (holaboss-ai/holaOS, 11k stars), Animate (growupanand/ConvoForm, 102 stars) and Migrate Content Ia (docker/docs, 4.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Consumer Experience Review?

jaemk (a GitHub user) maintains it in jaemk/cached, which has 2,097 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 1, 2026.

Source: jaemk/cached on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.