
Audits
v0.1.0Walk a product, file every friction as a markdown issue, ship fixes with a Senior Product Lead bar โ then hand a stakeholder an interactive review slideshow at the end.
Audits
agents
Product Senior
.agents/product-senior/
Audit fix loop
0 9 * * 1-5
Weekly audit status
0 16 * * 5
1
Agents
2
Jobs
1
Depts
4
Pages
Best-in-class UX/UI for every audit issue โ fix the friction, raise the bar
Audits
A cabinet for running end-to-end product audits โ walk every surface of your product, file every friction as its own markdown issue, ship the fixes with a 20-year Senior Product Lead bar, then hand a stakeholder an interactive review slideshow at the end.
The bar isn't "matches the spec." The bar is "this is the version a competitor will copy."
What this cabinet gives you
- A method.
how-to-audit.mdโ when to audit, the walkthrough order (cold-boot โ primary flows โ empty states โ errors โ edge cases โ a11y โ perf), the Chrome DevTools playbook, the issue-file format with severity rubric and area codes. - An agent. Product Senior โ Senior Product Lead, 20+ years across Netflix, Tesla, X, and Duolingo. Picks up
status: openissues, ships fixes, updates the issue file's## Resolutionsection, appends toprogress.md, and commits. One issue per commit. - A skeleton.
_template/โ copy this when you start a new audit. Walkthrough page, progress tracker, issues directory, screenshots directory, and a one-command review-app generator that turns the audit into a shareable slideshow. - A scheduled job.
.jobs/audit-fix-loop.yamlโ wakes the Product Senior agent on weekday mornings to chip away at the backlog without prompting.
The flow
1. Walk the product cold-boot end-to-end. Screenshot every friction.
2. File each finding as audit-YYYY-MM-DD/issues/NNN-slug.md
3. Write the long-form walkthrough in audit-YYYY-MM-DD/index.md
4. Hand the cabinet to the Product Senior agent
5. Agent ships fixes, updates issue files + progress.md
6. Run `node build-review.mjs` โ a paper-themed slideshow lands in review/
7. Stakeholder clicks Pass / Fail / comment per issue
8. Failures loop back into the fix queue
Folder layout
audits/
โโโ how-to-audit.md โ the guide (read first)
โโโ .agents/product-senior/ โ the fixer agent (UX/UI focused)
โโโ .jobs/ โ scheduled prompts (weekday morning fix loop)
โโโ _template/ โ copy this when starting a new audit
โ โโโ index.md โ walkthrough skeleton
โ โโโ progress.md โ progress-tracker skeleton
โ โโโ issues/ โ drop NNN-slug.md files here as you walk
โ โโโ build-review.mjs โ review-app generator (auto-derives label)
โโโ audit-YYYY-MM-DD/ โ one folder per audit (you create these)
โโโ index.md โ long-form findings + screenshots
โโโ progress.md โ fix tracker (table)
โโโ issues/ โ one .md per finding (NNN-slug.md)
โโโ screenshots/ โ assets
โโโ build-review.mjs โ `node build-review.mjs` โ review/index.html
โโโ review/ โ generated; click `review` in tree to open
โ โโโ index.html โ interactive slideshow (paper theme)
โ โโโ .app โ marker โ renders as fullscreen Cabinet app
โโโ feedback.md โ optional: reviewer's verdict + comment table
Why "Senior Product Lead" as the bar
Most product audits read like enterprise QA reports. This one is opinionated: every finding is judged through the lens of "would a brand-new user love this, or tolerate it?" โ and the standard is the best-in-class reference product (Linear's command palette, Stripe's checkout, Duolingo's streak, Netflix's autoplay rhythm, Tesla's feedback latency). The agent's persona is built around that taste, so the fixes don't just close the issue โ they raise the bar.
Get started
# from inside the audits cabinet
cp -r _template audit-$(date +%Y-%m-%d)
cd audit-$(date +%Y-%m-%d)
# walk your product, drop screenshots into screenshots/, file each finding as issues/NNN-slug.md
# when you're done...
node build-review.mjs # โ review/index.html
The review folder shows up in your sidebar tree as a fullscreen app โ click it, walk every issue with Pass / Fail / comment per slide, export reviews.json for a portable record. Reviewer feedback flows back to the agent as the next fix queue.
Read how-to-audit.md for the full method.
$ git clone --filter=blob:none --sparse https://github.com/cabinetai/cabinets.git && cd cabinets && git sparse-checkout set audits