원클릭으로
nodejs-project-quality-guardrails
再利用可能なNode.js/TypeScript品質担保ガードレールを定義し、テストカバレッジ・Lint・ドキュメント・設計原則・CIゲートを網羅して、生成・修正時に一貫した高品質を維持する。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
再利用可能なNode.js/TypeScript品質担保ガードレールを定義し、テストカバレッジ・Lint・ドキュメント・設計原則・CIゲートを網羅して、生成・修正時に一貫した高品質を維持する。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | nodejs-project-quality-guardrails |
| description | 再利用可能なNode.js/TypeScript品質担保ガードレールを定義し、テストカバレッジ・Lint・ドキュメント・設計原則・CIゲートを網羅して、生成・修正時に一貫した高品質を維持する。 |
このスキルは、Node.js(TypeScript)プロジェクトの品質担保のために 一貫したテスト、静的解析、ドキュメント、設計ルール、CI 条件 を AI エージェント(GitHub Copilot / Claude / OpenAI Codex)に理解させ、 生成・修正・レビュー作業 に常に適用させることを目的とします。
jest.unit.config.js, jest.spec.config.js, jest.coverage.config.js)npm run test:ci を定義し jest --coverage を実行するdocs/typedoc-md/sonarjs/no-duplicate-string(閾値: 3回以上で違反)と sonarjs/no-identical-functions を有効化npm run depcruise では || exit 0 などの失敗回避を禁止する--min-lines 5 / --min-tokens 50 / --threshold 0(1件でも失敗)⚠ DI は避けるが、外部アクセス用ラッパーの差し替えは許容(DI コンテナを使わないという意味での「DI 回避」)
"type": "commonjs"を明示的に指定.js形式のみ使用(.cjs形式は禁止)npm run test と npm run build が成功していることdocs/spec/vx.y.z/ 配下に要件または監査結果を配置プロジェクトフォルダ/
├─ docs/
│ └─ typedoc-md/ # typedoc Markdown 出力
│ └─ spec/vx.y.z/ # バージョン付き仕様・監査メモ
├─ src/ # 本体ソース
├─ test/
│ ├─ unit/ # 単体テスト(Jest)
│ └─ e2e/ # E2E テスト
├─ .dependency-cruiser.js # dependency-cruiser 設定
├─ eslint.config.js # ESLint flat-config
├─ jest.unit.config.js # Jest unit 設定
├─ jest.spec.config.js # 任意: 仕様・設計テスト設定
├─ jest.coverage.config.js # 任意: coverage 専用設定
├─ jest.e2e.config.js # 任意: Jest を使う E2E 設定
└─ typedoc.js # typedoc 設定
npm run test:ci で jest --coverage を実行し、coverage 50% 未満は失敗npm run type-check で tsc --noEmit を実行し、型エラーがあれば CI を失敗させるnpm run lint で ESLint を実行し、エラーがあれば CI を失敗させるnpm run depcruise の違反があれば CI を失敗させるnpm run cpd で jscpd を実行し、重複コード検出時は CI を失敗させるnpm run docs で typedoc の Markdown 生成を実行し、失敗時は CI を失敗させるnpm run test ではなく npm run test:ci を利用するnpm run depcruise に失敗回避オプションを含めてはならないnpm run test が成功することnpm run type-check が型エラーなし(tsc --noEmit、esbuild/webpack 等でビルドする場合も必須)npm run lint がエラーを出さないことnpm run depcruise が違反なしnpm run cpd が重複コード検出なし(jscpd、min-lines 5 / min-tokens 50 / threshold 0)npm run build が成功しバンドル生成されることnpm run test:ci を利用することnpm run docs が成功し、docs/typedoc-md/ が生成されることdocs/spec/vx.y.z/ に仕様または監査記録が存在し、受け入れ条件と設計判断が記載されていることCognitive Complexity ≤ 10
文字列重複: sonarjs/no-duplicate-string(threshold: 3)
関数重複: sonarjs/no-identical-functions
フレームワーク利用時は parser / plugin の override を追加する(例: Vue なら vue-eslint-parser と eslint-plugin-vue)
JSDoc コメント必須
JSDoc 内で param / returns を記載
ESLint エラーは必ずソースコードを修正して解消すること。以下の回避手段はいかなる理由でも禁止する。
// eslint-disable-next-line、/* eslint-disable */、ファイル先頭 eslint-disable コメントの追加・流用禁止eslint.config.js のルール削除・閾値引き上げ・severity を error → warn / off へ変更禁止eslint.config.js の ignores パターンや .eslintignore へのファイル・ディレクトリ追加禁止@ts-ignore / @ts-expect-error による TypeScript エラー隠蔽禁止| エラー種別 | 根本対処 |
|---|---|
| Cognitive Complexity 超過 | 関数・メソッドを分割しロジックを単純化する |
| JSDoc 未記載 | 全 public API に JSDoc を追記する |
| 未使用変数 | 変数を削除するか設計を見直す |
| 型エラー | 正しい型定義を追加・修正する |
/**
* 処理名: タスク保存
*
* 処理概要: WebView から受け取ったタスク差分を永続化する
*
* 実装理由: ユーザーの編集内容を保存し再起動時に復元するため
*/
function saveTasks(...) {}
.dependency-cruiser.js を用意するdepcruise --config ... src || exit 0 のような失敗回避は許可しないpackage.json に "cpd": "jscpd src --min-lines 5 --min-tokens 50 --threshold 0" を定義する|| exit 0 などの失敗回避は禁止する| オプション | 意味 | 設定値 |
|---|---|---|
--min-lines | 重複とみなす最小行数 | 5 |
--min-tokens | 重複とみなす最小トークン数 | 50 |
--threshold | 失敗とみなす重複率(%) | 0(1件でも失敗) |
npm run test 成功npm run lint エラーなしnpm run build 成功dist/index.bundle.js が生成されていること