agentsclimarketplace

App best practices

Skill kopon1/app-best-practices/skills/app-best-practices

Checklists for the expected-but-forgotten parts of any app — CRUD flows, destructive-action confirmations, undo/redo, loading and cursor feedback, empty and error states, forms, tables, settings pages, import/export, AI chat UI and response parsing, auth and permissions, routing and redirects, page/header anatomy, visual design and spacing, microcopy, performance, security, payments, email and notifications, legal/consent, and i18n. Use in BUILD mode when implementing any user-facing feature (a table, a form, a delete button, a header, a settings screen, an AI panel, a checkout, an importer) so nothing obvious is missed, and in AUDIT mode when asked to review a screen/flow/app for missing states, rough edges, "what's missing here", "make this feel finished/production-ready", or a UX/quality pass. Framework-agnostic.From its SKILL.md

Install
npx -y skills add kopon1/app-best-practices --skill app-best-practices

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.1 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

App best practices

The gap between a demo and a product is almost never the happy path. It's the forty small things every user expects and nobody writes down: what the button looks like while it's saving, what the list says when it's empty, what happens when the delete was a mistake, whether the filter survives a refresh.

This skill is that written-down list.

Two modes

BUILD — you're implementing something. Before writing code, open the reference file(s) for what you're building and treat the checklist as part of the requirements. Implement what applies; skip what genuinely doesn't and say which and why in your summary. Do not ask permission to add expected behavior (a delete confirm, a disabled state, an empty state) — it's table stakes, just build it.

AUDIT — you're reviewing existing code or a screen. Follow Audit workflow below.

Pick the mode from the request. If someone says "build the members table," that's BUILD. "What's missing on the members table?" is AUDIT. "Finish this" is both: audit, then fix.

Router

Load only the files you need. Most tasks need one or two. Never load more than four — if a task seems to need more than that, it's several tasks.

Interaction

Building / reviewingRead
Create, edit, delete, duplicate, archive, bulk actionsreferences/crud.md
Anything destructive or irreversiblereferences/destructive-actions.md
Undo/redo stack, edit history, Cmd+Z in an editor or canvasreferences/undo-redo.md
Loading, saving, hover/cursor, toasts, optimistic updates, progressreferences/feedback.md
Empty, error, offline, partial, loading-forever statesreferences/states.md
Forms, validation, autosave, unsaved changes, multi-stepreferences/forms.md
Lists, tables, search, filter, sort, pagination, selectionreferences/lists-and-tables.md
A settings / preferences / account screenreferences/settings.md
Import, export, upload, download, backup, CSV/JSONreferences/import-export.md
LLM features: chat UI, streaming, parsing, attachments, cost, failurereferences/ai-features.md
Sign-in, sessions, roles, permissions, sharing, invitesreferences/auth-and-permissions.md
URL/deep links, back button, tabs, modals, refresh persistencereferences/navigation-and-state.md
Keyboard, focus, screen readers, contrast, motion, touch targetsreferences/accessibility.md

Structure & appearance

Building / reviewingRead
Headers, nav, sidebars, breadcrumbs, footers, the page shellreferences/page-anatomy.md
Spacing, type, color, elevation, radius, density, dark modereferences/visual-design.md
Routes, redirects, guards, slugs, 404/410, tenant & locale pathsreferences/routing.md
Wording: labels, errors, empty states, tone, terminologyreferences/content-and-microcopy.md

Engineering quality

Building / reviewingRead
Timeouts, retries, races, concurrency, stale data, rate limitsreferences/resilience.md
Core Web Vitals, bundle size, images, fonts, perceived speedreferences/performance.md
Authz/IDOR, XSS, CSRF, SSRF, headers, secrets, upload safetyreferences/security.md

Business & obligation

Building / reviewingRead
Checkout, plans, trials, proration, dunning, refunds, invoicesreferences/payments-and-billing.md
Transactional email, push, digests, deliverability, notif centerreferences/notifications-and-email.md
Consent banners, privacy rights, retention, ToS, AI disclosurereferences/legal-and-compliance.md
Translation, RTL, timezones, locale formatting, name/addressreferences/internationalization.md

Cross-cutting rules that apply to everything: references/universal.md. Skim it once per task regardless of which other file you open.

Some files separate a Baseline set (table stakes — a competent app has all of it) from an Advanced set (hardening and maturity). In BUILD mode, treat baseline as required and advanced as a judgement call you surface to the user rather than silently skip.

Audit workflow

  1. Scope it. Identify the screens/flows in question and the entry points in code. Don't audit the whole app when asked about one page.
  2. Enumerate the surfaces. For each screen list: every action a user can take, every piece of data displayed, every state it can be in.
  3. Run the relevant checklists against each surface. Verify in the code — grep for the handler, read the component. A missing disabled attribute is a finding; a suspected missing one is not.
  4. Rank by severity:
    • P0 — Data loss, breach, or lockout. Destructive action with no confirm or undo, lost form input, unsaved-changes navigation, silent write failure, missing server-side authorization, exposed secret, cross-tenant leak.
    • P1 — User gets stuck or misled. No error state, infinite spinner, no empty state on a first-run screen, action with zero feedback, double-submit creating duplicates.
    • P2 — Feels unfinished. Missing hover/cursor affordance, no loading skeleton, filters not in URL, no keyboard support, unlabeled icon button.
    • P3 — Polish. Motion, copy tone, density, micro-interaction.
  5. Report as a table: Location | Severity | What's missing | Fix. Lead with P0/P1. Cap at ~15 findings unless asked for exhaustive; more than that means summarize by theme instead.
  6. Offer to fix, grouped by severity — don't fix during the audit unless the request was "finish this."

Working rules

  • Match the codebase. These checklists say what must exist, never how. Use the app's existing toast system, modal, button variants, query layer. If a pattern already exists for one screen, copy it — consistency beats the checklist.
  • Don't invent infrastructure. If there's no toast system and the app needs one, say so and propose it; don't quietly add a dependency.
  • Never bulk-apply. Ten checklist items landing at once in unrelated files is a bad diff. Do the feature you were asked about.
  • Copy matters. Every state you add needs real words, not TODO or "Something went wrong." See references/universal.md for the copy rules.

What ships with it: 26 files

142.6 KB alongside SKILL.md

agents/

Keep looking

Skills are one crate of 326,645. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.