@k2works/claude-code-booster 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: operating-qt
|
|
3
|
+
description: SonarQube によるコード品質管理を支援。ローカル SonarQube のセットアップ、スキャン実行、Quality Gate 確認、イシュー分析、メトリクス確認を行う。「SonarQube をセットアップしたい」「コード品質を分析したい」「Quality Gate を確認したい」「静的解析を実行したい」「SonarQube のイシューを確認したい」「コードの重複を調べたい」「カバレッジを SonarQube で見たい」といった場面で発動する。CI/CD パイプラインの品質ゲートチェックにも使用する。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# コード品質管理(SonarQube)
|
|
7
|
+
|
|
8
|
+
SonarQube を使った静的コード解析環境の構築と運用を支援する。SonarQube は Bug・Vulnerability・Code Smell・重複コード・カバレッジを一元的に可視化し、Quality Gate で品質基準を自動判定する。コード品質を継続的に計測することで、技術的負債の蓄積を早期に検知できる。
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### 1. 参照ドキュメント
|
|
13
|
+
|
|
14
|
+
@docs/reference/SonarQubeローカル環境セットアップ手順書.md にセットアップの詳細手順がある。環境構築時はこのドキュメントを参照する。
|
|
15
|
+
|
|
16
|
+
### 2. 前提条件
|
|
17
|
+
|
|
18
|
+
- Docker Desktop がインストール済みであること
|
|
19
|
+
- RAM 4GB 以上を Docker Desktop に割り当て(推奨 6GB)
|
|
20
|
+
- Windows の場合、WSL2 で `vm.max_map_count=524288` が設定済み
|
|
21
|
+
|
|
22
|
+
### 3. コンポーネント構成
|
|
23
|
+
|
|
24
|
+
| コンポーネント | コンテナ名 | ポート | イメージ |
|
|
25
|
+
|--------------|-----------|-------|---------|
|
|
26
|
+
| SonarQube | sonarqube | 9000 | `sonarqube:community` |
|
|
27
|
+
| PostgreSQL | sonarqube-db | 内部 | `postgres:16-alpine` |
|
|
28
|
+
|
|
29
|
+
Docker Compose ファイルは `ops/docker/sonarqube-local/docker-compose.yml` に配置する。
|
|
30
|
+
|
|
31
|
+
### 4. Gulp タスク
|
|
32
|
+
|
|
33
|
+
既存の `ops/scripts/sonar_local.js` で以下のタスクが利用可能。
|
|
34
|
+
|
|
35
|
+
**セットアップ:**
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx gulp sonar-local:setup # 初回セットアップ(Docker Compose 配置→起動→ヘルスチェック)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**コンテナ操作:**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx gulp sonar-local:start # 起動
|
|
45
|
+
npx gulp sonar-local:stop # 停止
|
|
46
|
+
npx gulp sonar-local:restart # 再起動
|
|
47
|
+
npx gulp sonar-local:status # 状態確認
|
|
48
|
+
npx gulp sonar-local:logs # ログ表示
|
|
49
|
+
npx gulp sonar-local:open # ダッシュボードをブラウザで開く
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**スキャン・分析:**
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx gulp sonar-local:scan # 全プロジェクトのスキャン実行
|
|
56
|
+
npx gulp sonar-local:gate # Quality Gate ステータス確認
|
|
57
|
+
npx gulp sonar-local:issues # メトリクス・イシュー・重複コード詳細
|
|
58
|
+
npx gulp sonar-local:check # スキャン → Quality Gate の一連フロー
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**管理:**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx gulp sonar-local:clean # 環境完全削除(データ含む)
|
|
65
|
+
npx gulp sonar-local:help # ヘルプ表示
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 5. プロジェクト設定
|
|
69
|
+
|
|
70
|
+
プロジェクトルートに `sonarqube.config.json` を配置して複数プロジェクトのスキャンを設定する。
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"projects": [
|
|
75
|
+
{
|
|
76
|
+
"name": "backend",
|
|
77
|
+
"label": "Backend",
|
|
78
|
+
"projectKey": "fleur-memoire-backend",
|
|
79
|
+
"scanType": "sonar-scanner",
|
|
80
|
+
"srcDir": "apps/backend"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "frontend",
|
|
84
|
+
"label": "Frontend",
|
|
85
|
+
"projectKey": "fleur-memoire-frontend",
|
|
86
|
+
"scanType": "sonar-scanner",
|
|
87
|
+
"srcDir": "apps/frontend"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`scanType` は `sonar-scanner`(Node.js)、`sbt`、`maven`、`gradle` に対応。
|
|
94
|
+
|
|
95
|
+
### 6. 環境変数
|
|
96
|
+
|
|
97
|
+
`.env` に以下を設定する。
|
|
98
|
+
|
|
99
|
+
| 変数 | 説明 | デフォルト |
|
|
100
|
+
|------|------|----------|
|
|
101
|
+
| `LOCAL_SONAR_PORT` | SonarQube ポート | 9000 |
|
|
102
|
+
| `LOCAL_SONAR_DB_PASSWORD` | DB パスワード | sonarqube_password |
|
|
103
|
+
| `SONAR_HOST_URL` | SonarQube URL | http://localhost:9000 |
|
|
104
|
+
| `SONAR_TOKEN` | 分析トークン(スキャン時必須) | — |
|
|
105
|
+
| `SONAR_PROJECT_KEY` | Quality Gate / Issues 対象キー | — |
|
|
106
|
+
|
|
107
|
+
### 7. 初回セットアップフロー
|
|
108
|
+
|
|
109
|
+
1. `npx gulp sonar-local:setup` でコンテナを構築・起動
|
|
110
|
+
2. ブラウザで `http://localhost:9000` にアクセス(初期認証: admin / admin)
|
|
111
|
+
3. admin パスワードを変更
|
|
112
|
+
4. 分析トークンを生成(My Account → Security → Generate Tokens)
|
|
113
|
+
5. `.env` に `SONAR_TOKEN=<生成したトークン>` を追加
|
|
114
|
+
6. `sonarqube.config.json` を作成(複数プロジェクト対応時)
|
|
115
|
+
7. `npx gulp sonar-local:scan` でスキャン実行
|
|
116
|
+
|
|
117
|
+
### 8. 品質基準
|
|
118
|
+
|
|
119
|
+
テスト戦略(@docs/design/test_strategy.md)で定義されたカバレッジ目標と SonarQube の Quality Gate を連携する。
|
|
120
|
+
|
|
121
|
+
| メトリクス | 目標 |
|
|
122
|
+
|-----------|------|
|
|
123
|
+
| カバレッジ | ドメイン層 90%、全体 80% |
|
|
124
|
+
| 重複率 | 3% 未満 |
|
|
125
|
+
| Bug | 0 件 |
|
|
126
|
+
| Vulnerability | 0 件 |
|
|
127
|
+
| Code Smell | 可能な限り 0 件 |
|
|
128
|
+
|
|
129
|
+
### 9. CI/CD 連携
|
|
130
|
+
|
|
131
|
+
GitHub Actions で SonarQube スキャンを実行する場合は `operating-cicd` スキルを参照する。ローカルの SonarQube はあくまで開発中の品質確認用で、CI/CD では SonarCloud や別途ホスティングされた SonarQube を使用する。
|
|
132
|
+
|
|
133
|
+
### 10. トラブルシューティング
|
|
134
|
+
|
|
135
|
+
| 症状 | 原因 | 対処 |
|
|
136
|
+
|------|------|------|
|
|
137
|
+
| コンテナ起動後すぐ停止 | `vm.max_map_count` 不足 | WSL2 / Docker VM で `524288` に設定 |
|
|
138
|
+
| ヘルスチェックがタイムアウト | メモリ不足 | Docker Desktop の RAM 割り当てを増やす |
|
|
139
|
+
| スキャン時 401 エラー | トークン未設定 or 無効 | `.env` の `SONAR_TOKEN` を確認 |
|
|
140
|
+
| `DOCKER_HOST` 接続エラー | 環境変数の干渉 | `cleanDockerEnv()` を使用(`shared.js`) |
|
|
141
|
+
|
|
142
|
+
### 関連スキル
|
|
143
|
+
|
|
144
|
+
- `operating-script` — 運用スクリプト作成ガイドに準拠したスクリプト作成
|
|
145
|
+
- `operating-cicd` — CI/CD パイプラインでの品質ゲート連携
|
|
146
|
+
- `operating-setup` — 環境構築の段階的実行
|
|
147
|
+
- `orchestrating-operation` — 運用フェーズ全体のワークフロー
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: operating-script
|
|
3
|
+
description: 運用スクリプト(Gulp タスク)の作成・更新を支援。ops/scripts/ 配下に運用スクリプト作成ガイドに準拠したスクリプトを作成し、gulpfile.js に登録する。「Gulp タスクを作りたい」「デプロイスクリプトを作成したい」「運用タスクを自動化したい」「新しい環境の運用スクリプトを追加したい」「開発タスクランナーを更新したい」といった場面で発動する。環境構築完了後に対応する運用スクリプトを作成する場面でも積極的に使用する。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 運用スクリプト作成
|
|
7
|
+
|
|
8
|
+
環境構築やデプロイ、プロビジョニングなどの運用タスクを自動化する Gulp スクリプトを作成する。スクリプトはプロジェクトの運用効率を左右するため、ネーミング・構造・実装スタイルの一貫性が重要になる。
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### 1. 参照ガイド
|
|
13
|
+
|
|
14
|
+
@docs/reference/運用スクリプト作成ガイド.md に定義されたルールに従う。このガイドがネーミング規則・ディレクトリ構成・コーディング規約の正とする。
|
|
15
|
+
|
|
16
|
+
### 2. ファイル命名規則
|
|
17
|
+
|
|
18
|
+
`{カテゴリ}_{環境}.js` の形式で命名する。
|
|
19
|
+
|
|
20
|
+
| カテゴリ | 説明 | 例 |
|
|
21
|
+
|---------|------|-----|
|
|
22
|
+
| `develop` | アプリケーション開発タスク | `develop.js` |
|
|
23
|
+
| `deploy` | デプロイスクリプト | `deploy_dev.js`, `deploy_stg.js` |
|
|
24
|
+
| `provision` | IaC プロビジョニング | `provision_stg.js` |
|
|
25
|
+
| `ssh` | SSH・踏み台操作 | `ssh_stg.js` |
|
|
26
|
+
|
|
27
|
+
環境サフィックス: `_dev`(開発)、`_stg`(ステージング)、`_prd`(本番)、`_local`(ローカル)、なし(環境非依存)
|
|
28
|
+
|
|
29
|
+
### 3. Gulp タスク命名規則
|
|
30
|
+
|
|
31
|
+
`{カテゴリ}:{環境}:{アクション}` の形式で命名する。
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
deploy:dev:build # 開発環境: ビルド
|
|
35
|
+
provision:stg:vpc # ステージング: VPC プロビジョニング
|
|
36
|
+
dev:db:start # アプリ開発: DB 起動
|
|
37
|
+
tdd:backend # TDD モード: バックエンド
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 4. スクリプトの基本構造
|
|
41
|
+
|
|
42
|
+
すべてのスクリプトは以下のセクション構成に従う。
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
'use strict';
|
|
46
|
+
|
|
47
|
+
import path from 'path';
|
|
48
|
+
import { execSync } from 'child_process';
|
|
49
|
+
import { cleanDockerEnv } from './shared.js';
|
|
50
|
+
|
|
51
|
+
// ============================================
|
|
52
|
+
// 設定
|
|
53
|
+
// ============================================
|
|
54
|
+
|
|
55
|
+
const PREFIX = 'DEV'; // 環境変数プレフィックス
|
|
56
|
+
|
|
57
|
+
/** サービス定義 */
|
|
58
|
+
const SERVICES = [
|
|
59
|
+
{ name: 'backend', port: 8080, label: 'バックエンド' },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
// ============================================
|
|
63
|
+
// ヘルパー関数
|
|
64
|
+
// ============================================
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* JSDoc コメントで関数の目的・引数・戻り値を記述
|
|
68
|
+
* @param {string} param - パラメータの説明
|
|
69
|
+
* @returns {string}
|
|
70
|
+
*/
|
|
71
|
+
function helperFunction(param) {
|
|
72
|
+
// 実装
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ============================================
|
|
76
|
+
// Gulp タスク
|
|
77
|
+
// ============================================
|
|
78
|
+
|
|
79
|
+
export default function(gulp) {
|
|
80
|
+
gulp.task('category:action', (done) => {
|
|
81
|
+
// タスク実装
|
|
82
|
+
done();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// ヘルプタスク(必須)
|
|
86
|
+
gulp.task('category:help', (done) => {
|
|
87
|
+
console.log(`...`);
|
|
88
|
+
done();
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 5. 実装ルール
|
|
94
|
+
|
|
95
|
+
- **ESM**: `import` / `export` を使用。`require` は使わない
|
|
96
|
+
- **strict mode**: ファイル先頭に `'use strict';`
|
|
97
|
+
- **JSDoc**: すべての関数に JSDoc コメント
|
|
98
|
+
- **DOCKER_HOST 対応**: Docker 操作は `cleanDockerEnv()` を使用
|
|
99
|
+
- **ヘルプタスク**: 各カテゴリに `{category}:help` タスクを必ず作成
|
|
100
|
+
- **共通関数**: `shared.js` と `ssh.js` の既存関数を活用
|
|
101
|
+
|
|
102
|
+
### 6. 環境変数
|
|
103
|
+
|
|
104
|
+
`.env` で管理し、環境プレフィックス(`DEV_`, `STG_`, `PRD_`)で名前空間を分離する。新しい環境変数を追加した場合は `.env.example` も更新する。
|
|
105
|
+
|
|
106
|
+
### 7. 作成手順
|
|
107
|
+
|
|
108
|
+
1. カテゴリと環境からファイル名を決定
|
|
109
|
+
2. 基本構造テンプレートに従って実装
|
|
110
|
+
3. `shared.js` / `ssh.js` の既存関数を活用
|
|
111
|
+
4. ヘルプタスクを作成
|
|
112
|
+
5. `gulpfile.js` にインポートとタスク登録を追加
|
|
113
|
+
6. `npx gulp {category}:help` で動作確認
|
|
114
|
+
7. `.env.example` に必要な環境変数を追記
|
|
115
|
+
|
|
116
|
+
### 8. gulpfile.js への登録
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
import newTasks from './ops/scripts/{new_file}.js';
|
|
120
|
+
newTasks(gulp);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 9. 対応する環境とスクリプト
|
|
124
|
+
|
|
125
|
+
| 環境 | スクリプト | 関連スキル |
|
|
126
|
+
|------|----------|----------|
|
|
127
|
+
| アプリケーション開発 | `develop.js` | `operating-setup` |
|
|
128
|
+
| 開発環境サーバー | `deploy_dev.js` | `operating-deploy` |
|
|
129
|
+
| ステージング AWS | `deploy_stg.js`, `provision_stg.js`, `ssh_stg.js` | `operating-deploy`, `operating-provision` |
|
|
130
|
+
| 本番 AWS | `deploy_prd.js`, `provision_prd.js`, `ssh_prd.js` | `operating-deploy`, `operating-provision` |
|
|
131
|
+
|
|
132
|
+
### 10. 注意事項
|
|
133
|
+
|
|
134
|
+
- 運用スクリプト作成ガイド(@docs/reference/運用スクリプト作成ガイド.md)を正として従う
|
|
135
|
+
- Docker 操作では `cleanDockerEnv()` を必ず使う(`DOCKER_HOST` 環境変数による接続エラーを防ぐため)
|
|
136
|
+
- 既存スクリプト(`shared.js`, `ssh.js`, `develop.js` 等)のパターンを踏襲する
|
|
137
|
+
- 新しいスクリプト作成時は `.env.example` とドキュメントも同時に更新する
|
|
138
|
+
|
|
139
|
+
### 関連スキル
|
|
140
|
+
|
|
141
|
+
- `operating-setup` — 環境構築(スクリプト作成のトリガー)
|
|
142
|
+
- `operating-deploy` — デプロイ・ロールバック
|
|
143
|
+
- `operating-provision` — IaC プロビジョニング
|
|
144
|
+
- `operating-cicd` — CI/CD パイプライン構築
|
|
145
|
+
- `orchestrating-operation` — 運用フェーズ全体のワークフロー
|
package/lib/assets/CLAUDE.md
CHANGED
|
@@ -62,9 +62,11 @@
|
|
|
62
62
|
| スキル | 用途 |
|
|
63
63
|
| :--- | :--- |
|
|
64
64
|
| `operating-setup` | 環境構築(段階的セットアップ) |
|
|
65
|
+
| `operating-script` | 運用スクリプト(Gulp タスク)作成 |
|
|
65
66
|
| `operating-provision` | IaC プロビジョニング(Terraform) |
|
|
66
67
|
| `operating-cicd` | CI/CD パイプライン構築 |
|
|
67
68
|
| `operating-deploy` | デプロイ・ロールバック |
|
|
69
|
+
| `operating-qt` | コード品質管理(SonarQube) |
|
|
68
70
|
| `operating-backup` | バックアップ・リストア |
|
|
69
71
|
| `killing-processes` | 開発プロセス強制終了 |
|
|
70
72
|
|