一键导入
coding-standards
コーディング規約。ESLint/TypeScript/React/Next.jsの品質基準と、AIエージェントがコミット前に守るべきルールを定義する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
コーディング規約。ESLint/TypeScript/React/Next.jsの品質基準と、AIエージェントがコミット前に守るべきルールを定義する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
AI開発チームの役割定義。各エージェントの責務・行動指針・実行ステップを規定する。
AI同士のバトンタッチ(タスク委譲)とチェック体制。セッション開始時のPR確認から終了時のIssue作成までのルールを定義する。
バグ修正時のリグレッションテスト作成義務と、グローバル状態共有の禁止ルール。
Defines the standard format and rules for git commit messages in this project.
README.mdとblueprint.mdの役割分担と更新義務を定義するドキュメント管理ポリシー。
ロジックの変更とUIの変更に対するテスト戦略と基準を定義する。
| name | coding_standards |
| description | コーディング規約。ESLint/TypeScript/React/Next.jsの品質基準と、AIエージェントがコミット前に守るべきルールを定義する。 |
ESLint 0 errors / 0 warnings をプロジェクトの 絶対的なコードクオリティゲート とする。
テストコードを変更せずにアプリケーションコードを変更した場合、既存テストの実行・通過を確認するまで git commit してはならない。
npm run lint # 0 errors / 0 warnings
npm run typecheck # 型チェック
npm run test # Unit testsの全パス確認
npm run test:e2e # E2Eテストの全パス確認(特にUI文言変更時は必須)
npm run build # 大規模変更時
以下のケースでは、テストが 意図的に落ちている状態 でのコミットは許容される:
これらのケースでは「テストコード自体を新規追加・変更している」ため、意図的な失敗であることが明確である。
[!CAUTION] アンチパターン: アプリケーションコード(コンポーネント、ユーティリティ、DB層など)を変更し、テストを実行せずにコミットすること。既存テストが壊れていることに気づかないまま不正なコミットが残る原因になる。
英語JSXテキスト内の " と ' は必ずHTMLエンティティを使用する。
// ✅ 正しい
<p>This is a "quoted" text with an apostrophe's usage.</p>
// ❌ 禁止
<p>This is a "quoted" text with an apostrophe's usage.</p>
「」 を使うため通常この問題は起きないnpm run lint で検出可能意図的に未使用のパラメータ・変数には _ プレフィクスを付与する:
// ✅ 正しい
export async function POST(_req: Request) { ... }
} catch (_e) { ... }
interface DBClient {
getCreatorData(_creatorId: string, _locale?: string): Promise<CreatorData>;
}
// ❌ 禁止
export async function POST(req: Request) { ... } // reqを使わないのに_なし
} catch (e) { } // eを使わないのに_なし
<img> vs next/imagenext/image の <Image> を使用する/api/widget/...)や外部プロバイダの動的URL など next/image が不適切な場合は、eslint-disable-next-line + 理由コメントを付与:{/* eslint-disable-next-line @next/next/no-img-element -- 動的APIルート画像のため */}
<img src={`/api/user-avatar/${userId}`} alt={userId} />
useEffect の依存配列に含まれる値が コンポーネント内で定義された安定定数 の場合、eslint-disable-next-line で抑制可能:// eslint-disable-next-line react-hooks/exhaustive-deps -- APP_CONFIGは安定定数
}, [users]);
useState の初期値が localStorage 等のブラウザAPIに依存する場合、lazy initializer パターン を使用する(useEffect + setState ではなく)[!CAUTION]
eslint-disable/@ts-ignoreの追加は、原則コード変更で対処する。どうしても必要な場合はユーザーに相談し承認を得てから追加する。
any 型は新規コードでは可能な限り具体的な型を定義する。既存の any は将来的に排除対象// TODO: Jules: Lint解消 とコメントを残して実装を優先し、後処理をJulesに一任してよい。ただし eslint-disable で黙らせることは禁止<img> vs next/image)とセクション6(React Hooks)で記載の例外パターンのみ、理由コメント付きで eslint-disable-next-line を許容するAIエージェントによる部分的な修正モレを防ぐため、以下のルールを徹底する:
grep_search 等を用いてプロジェクト全域(別ページやウィジェット表示、APIルートなど)に同じ古い表現や依存箇所が残っていないかを自律的に調査し、一括で修正すること。dictionaries (i18n辞書) を利用して一元管理すること。テストコード内で使用するURL・ドメイン名は RFC 6761 予約済み TLD を使用する。実在ドメインのテスト内使用は禁止。
// ✅ 正しい(.test TLD)
vi.stubEnv('NEXT_PUBLIC_BASE_URL', 'https://myapp.test');
expect(isSafeRedirectUrl('https://untrusted.test')).toBe(false);
expect(isSafeRedirectUrl('https://evil.test/path')).toBe(false);
// ❌ 禁止(実在ドメイン)
vi.stubEnv('NEXT_PUBLIC_BASE_URL', 'https://cheernode.com');
expect(isSafeRedirectUrl('https://google.com')).toBe(false);
.test, .example, .invalid, .localhostcheckout.stripe.com 等)は、isSafeRedirectUrl のホワイトリスト検証に必要なため許容