一键导入
launch-checklist
Pre-launch checklist for web services. Comprehensively audits security, SEO, OGP, performance, accessibility, and more, then generates a report.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Pre-launch checklist for web services. Comprehensively audits security, SEO, OGP, performance, accessibility, and more, then generates a report.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
The pols.dev anti-slop design law — a comprehensive catalog of generic "AI slop" UI patterns to avoid (glowy pill buttons, gradient heroes, kitchen-sink cards, default font pairings, botched glass/shadows/glows, slop layouts) and what premium craft looks like instead. Use EVERY time you design, build, restyle, or review any user interface, landing page, or visual component — read it before starting, and re-check the output against it before calling the work done.
Unified animation and motion skill — Apple-style fluid interface design, Emil Kowalski's craft standards, and an animation vocabulary glossary. Use when designing, building, or reviewing any animation, transition, gesture, or motion effect. Covers springs, easing, gestures, interruptibility, performance, accessibility, and a reverse-lookup glossary for naming effects.
Use when finishing a feature, fixing a bug, before committing React code, or when the user types `/doctor`, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.
On-demand repo-wide audit with the best available model — hunts what deterministic gates cannot (architecture drift vs ADRs, security posture, dependency strategy, doc staleness/DX) and routes outcomes into existing rails (ADR/AGENTS.md via aegis-share, or a plan doc in docs/superpowers/specs/). Use when the user asks for a repo audit, health check, or "what should we improve"; not scheduled, not CI-run.
Unified pre-commit review of the uncommitted diff — a finder agent hunts across all lenses (bugs + AGENTS.md rules), then a separate verifier agent adversarially refutes each finding, and its completion stamps the commit gate (ADR-0009/0011/0015). Run before every commit, or whenever the uncommitted diff needs a full review. Pass "high" for a deeper multi-lens verify pass.
Explicit entry point for ticket-granularity work (implement a component, fix a non-trivial bug, refactor a module, add a feature). The user invokes /start-workflow at the start of such tasks. The skill enforces an orchestration sequence — clarify → aegis → plan → optionally ADR → implement (parent by default, delegate by context impact) → fresh-context review → commit/PR — so the work follows the project's rules-driven standards. Skip for one-line fixes, config tweaks, docs-only changes, and trivial typo fixes — handle those directly.
| name | launch-checklist |
| description | Pre-launch checklist for web services. Comprehensively audits security, SEO, OGP, performance, accessibility, and more, then generates a report. |
| when_to_use | When the user asks for a launch checklist, pre-launch audit, release readiness check, or wants to verify the app is ready for production. |
| argument-hint | [category (optional): security, seo, ogp, performance, a11y, email, payment, env, all] |
| arguments | category |
Comprehensively audit a pre-launch service and write a report to docs/launch-checklist/YYYY-MM-DD.md.
Reference: https://zenn.dev/catnose99/articles/547cbf57e5ad28
!git log --oneline -1
If $category is provided, audit only that category. Otherwise audit all categories.
Valid categories: security, seo, ogp, performance, a11y, email, payment, env, all
For each category in scope, inspect the codebase, configuration, and running application against the checklist below. Use grep, file reads, and chrome-devtools MCP tools as needed.
| # | Item | How to verify |
|---|---|---|
| 1 | Auth cookies have the HttpOnly attribute set | Check the cookie options in auth config files / middleware |
| 2 | Auth cookies have SameSite=Lax or Strict set | Same as above. For Lax, confirm there is no endpoint that performs mutations on GET requests |
| 3 | Auth cookies have the Secure attribute set | Same as above |
| 4 | Auth cookies have an appropriate Domain attribute | Check the risk of cookie leakage to subdomains. Using the __Host- prefix is recommended |
| # | Item | How to verify |
|---|---|---|
| 5 | User input is validated on both the client and the server | Check form submission handling and server-side handlers |
| 6 | URL inputs have protocol restrictions (e.g. blocking javascript: URLs) | Grep form fields that accept URLs and check the validation logic |
| 7 | HTML output is escaped / sanitized | Grep usages of dangerouslySetInnerHTML and innerHTML and check for sanitization |
| 8 | SQL injection is prevented | Check usages of raw SQL queries. Confirm the ORM's parameter binding is used |
| 9 | Usernames are checked for path conflicts and reserved words | Check the username validation logic. Confirm a reserved-word list (admin, contact, etc.) exists |
| # | Item | How to verify |
|---|---|---|
| 10 | The Strict-Transport-Security header is set | Check response headers. Recommended: max-age=31536000; includeSubDomains; preload |
| 11 | X-Frame-Options or CSP frame-ancestors is set | Check response headers. Recommended: DENY or SAMEORIGIN |
| 12 | X-Content-Type-Options: nosniff is set | Check response headers |
| # | Item | How to verify |
|---|---|---|
| 13 | Sensitive operations (account deletion, email change, etc.) require a recent re-authentication | Check the middleware / handlers for the relevant endpoints |
| 14 | Per-user responses are not cached in a CDN / KVS | Check cache settings and Cache-Control headers |
| 15 | Object storage directory listing is private | Check the public access settings of the R2 / S3 bucket |
| 16 | Open redirects are prevented | Check that user-supplied URLs are validated in redirect handling |
| 17 | Authorization checks are in place (prevent unauthenticated / unauthorized users from operating on data) | Check the authorization middleware on API endpoints |
| 18 | DELETE / UPDATE statements have an appropriate WHERE clause | Check the queries in the gateway / repository layer |
| 19 | User input is not injected into response headers | Check where headers are set |
| 20 | Server error details are not exposed to the client | Check error handling |
| 21 | File uploads validate format, size, and filename | Check the upload handling |
| 22 | Periodic DB backups are enabled | Check Cloudflare D1 / infrastructure settings |
| 23 | Two-factor authentication is enabled on cloud accounts | Manual check (note in the report) |
| 24 | A Content Security Policy (CSP) is configured | Check response headers |
| # | Item | How to verify |
|---|---|---|
| 25 | Email address ownership is verified | Check the authentication flow |
| 26 | Email enumeration attacks are mitigated | Check the error messages on login and password reset |
| 27 | Behavior is defined when multiple login methods (OAuth + Email, etc.) share the same email address | Check the auth configuration |
| 28 | A flow exists to change the email address / linked accounts | Check the settings page |
| # | Item | How to verify |
|---|---|---|
| 29 | User input cannot be abused inside email bodies | Check the templates in the email sending logic |
| 30 | Sending large volumes of duplicate emails is prevented | Check the batch processing for notifications |
| 31 | SPF / DKIM / DMARC are configured | Check DNS settings (manual check) |
| 32 | Batch processing prevents duplicate sends (idempotency) | Check the email-sending job implementation |
| 33 | Newsletter unsubscribe is possible without logging in | Check the link inside the email |
| 34 | List-Unsubscribe=One-Click is supported | Check the email headers |
| # | Item | How to verify |
|---|---|---|
| 35 | Every page has an appropriate <title> tag | Check the router config and each page's head settings |
| 36 | Canonical URLs are set | Check <link rel="canonical">. Normalize URLs with query parameters |
| 37 | Error pages return an appropriate status code (40x / 50x), or have noindex set | Check error handling and response codes |
| 38 | Search result pages have noindex or a canonical URL set | Check the meta tags on search pages |
| 39 | noindex is removed in production | Check the robots meta tag and robots.txt |
| 40 | Key pages (top page, etc.) have a meta description | Check the head settings |
| 41 | An XML sitemap is generated and registered | Check the /sitemap.xml route and its contents |
| # | Item | How to verify |
|---|---|---|
| 42 | Shareable pages have og:title set | Check each page's head meta tags |
| 43 | og:description is set | Same as above |
| 44 | og:url is set | Same as above |
| 45 | og:image is set | Same as above. Also check the image's resolution and aspect ratio |
| 46 | twitter:card is set | Same as above. summary_large_image recommended |
| # | Item | How to verify |
|---|---|---|
| 47 | The owner and flow for accounting are confirmed | Manual check |
| 48 | DB inconsistency on payment failure is handled | Check the error handling in payment processing |
| 49 | Duplicate payments are prevented | Check the idempotency key in payment processing |
| 50 | Data inconsistency on account deletion is prevented | Check the account deletion flow |
| 51 | Subscription auto-cancellation is handled | Check the deletion-time processing |
| 52 | Refund / proration terms are explained | Check the terms of service / deletion page |
| 53 | A cancellation flow is provided | Check the UI |
| 54 | Card expiration is handled | Check notifications / flow on renewal failure |
| 55 | Qualified invoice requirements are met | Check the invoice contents |
| # | Item | How to verify |
|---|---|---|
| 56 | Images have appropriate alt attributes | Grep <img> tags and check the presence and content of alt |
| 57 | Icon-only buttons / links have an aria-label | Check SVG icon buttons. Pattern: <a aria-label="..."><svg aria-hidden="true"></svg></a> |
| 58 | Element roles are recognizable by screen readers | Run a Lighthouse a11y audit (use the /lighthouse-audit skill) |
| # | Item | How to verify |
|---|---|---|
| 59 | Unnecessary modules are not included in the bundle | Check with a bundle-analyzer or similar |
| 60 | Static files are cached by the CDN | Check Cache-Control headers and CDN settings |
| 61 | Layout shift is prevented | Check that <img> has aspect-ratio or width / height set |
| 62 | Image sizes are optimized | Check there are no images far larger than their display size |
| 63 | The DB has appropriate indexes | Check the indexes in the schema definition |
| # | Item | How to verify |
|---|---|---|
| 64 | The UI does not break at phone / tablet sizes | Check responsiveness with chrome-devtools |
| 65 | Verified in browsers other than Chrome (Safari, Firefox) | Manual check (note in the report) |
| 66 | No layout jitter from the scrollbar on Windows | Check the scrollbar-gutter setting |
| 67 | The UI does not break when user input is long | Check rendering with long usernames, etc. |
| # | Item | How to verify |
|---|---|---|
| 68 | No problem if local storage / cookies are cleared after 7 days under iOS Safari ITP | Check the auth persistence mechanism |
| 69 | No dependency on third-party cookies | Check cookie settings and external service integrations |
| 70 | <html lang="..."> is set | Check the root HTML template |
| 71 | A server-error detection / alerting mechanism exists | Check the error monitoring configuration |
| 72 | 404 / 50x error pages have a link back to the top page | Check the error page components |
| 73 | A favicon is set | Check <link rel="icon"> |
| 74 | An Apple touch icon is set | Check <link rel="apple-touch-icon"> |
| 75 | Analytics is installed (if needed) | Check for the presence of an analytics script |
Create docs/launch-checklist/YYYY-MM-DD.md:
# Launch Checklist Report — YYYY-MM-DD
Commit: `{short hash}` {commit message}
## Summary
| Category | Pass | Fail | N/A | Score |
|----------|------|------|-----|-------|
| Security — Cookie | x | x | x | x/x |
| Security — Input Validation | x | x | x | x/x |
| Security — Response Headers | x | x | x | x/x |
| Security — Other | x | x | x | x/x |
| Security — Login | x | x | x | x/x |
| Email | x | x | x | x/x |
| SEO | x | x | x | x/x |
| OGP | x | x | x | x/x |
| Payment | x | x | x | x/x |
| Accessibility | x | x | x | x/x |
| Performance | x | x | x | x/x |
| Multi-Environment | x | x | x | x/x |
| Other | x | x | x | x/x |
| **Total** | **x** | **x** | **x** | **x/75** |
## Details
### {Category}
| # | Item | Status | Notes |
|---|------|--------|-------|
| {n} | {item} | PASS / FAIL / N/A | {evidence or fix suggestion} |
(Repeat for each category in scope)
## Action Items
Priority fixes (FAIL items ordered by severity):
1. **[Critical]** {item} — {fix suggestion}
2. **[Important]** {item} — {fix suggestion}
3. **[Minor]** {item} — {fix suggestion}
If a previous report exists in docs/launch-checklist/, compare results. Note newly passing or regressed items under ## Changes from previous audit.
If the user asks to fix issues after the report, address them in priority order: