Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Error-handling, security, logging and performance bar for production code. Use when writing or changing production code, before the run ends.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Acceptance criteria describe the happy path. Production is the unhappy paths: bad input, failed dependencies, concurrent access, hostile users. This skill is the non-negotiable bar every change clears in addition to its AC — the things a reviewer at code_review will bounce you for even when the feature "works."
Core principle: Code isn't done when it works; it's done when it fails safely, leaves a trace, and can't be abused.
if err != nil { } that continues is a review-blocking defect.fmt.Errorf("create task: %w", err).| Stack | Adds |
|---|---|
| Backend | Parameterized queries only — no string-concatenated SQL, ever. |
| Web | No dangerouslySetInnerHTML / innerHTML with unsanitised data. Nothing secret in VITE_* / NEXT_PUBLIC_* — those ship to the browser. Every fetch has error and timeout/abort handling, and every route has an error boundary. No token in localStorage unless the repository already does it that way. |
| Mobile | Tokens in Keychain/Keystore (flutter_secure_storage), never in plain prefs. Explicit offline and timeout paths — a request with no network is a state, not a crash. No PII in logs. Permissions requested at the point of use, not on launch. |
| Check | Pass condition |
|---|---|
| Errors | None swallowed; all wrapped with context |
| Input | Every external field validated and bounded |
| Secrets | None in code, logs, or commits |
| Auth | New endpoints/routes guarded like neighbors |
| Queries/requests | No N+1; result sets bounded |
| Tests | Behavior change ships with a test in this task |
Adding GET /projects/:id/tasks. The AC just says "return the project's tasks." The production bar adds:
:id is a UUID → 400 on garbage, before any DB call.project_id with a bound parameter and a LIMIT/offset — not SELECT * FROM tasks.project_id.The feature "worked" after the first bullet; it was done after all five.
See your prompt's closing step for how to end the run — this skill only sets the bar the diff clears before you get there.
catch/if err != nil block that does nothing.VITE_*/NEXT_PUBLIC_*, or a token written to plain prefs on mobile.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。