phasegate 0.31.0 → 0.39.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.
- package/CHANGELOG.md +87 -1
- package/README.ja.md +498 -660
- package/README.md +8 -11
- package/docs/folder_management_rules.md +251 -0
- package/package.json +6 -4
- package/scripts/delegate-sonnet.sh +105 -0
- package/scripts/harness/main.ts +92 -7
- package/scripts/harness/setup/skill-deployer.ts +99 -0
- package/skills/environment-designer/SKILL.md +1 -1
- package/skills/implementation-planner/SKILL.md +1 -1
- package/skills/it-test-designer/SKILL.md +3 -3
- package/skills/it-test-logic-designer/SKILL.md +2 -2
- package/skills/mock-designer/SKILL.md +1 -1
- package/skills/scenario-test-designer/SKILL.md +3 -3
- package/skills/scenario-test-logic-designer/SKILL.md +2 -2
- package/skills/story-mapper/SKILL.md +1 -1
- package/skills/story-writer/SKILL.md +1 -1
- package/skills/unit-designer/SKILL.md +1 -1
- package/skills/unit-test-designer/SKILL.md +3 -3
- package/skills/unit-test-logic-designer/SKILL.md +2 -2
- package/templates/.claude/settings.json +3 -3
- package/templates/.husky/pre-commit +1 -1
- package/templates/phasegate.config.json +0 -30
|
@@ -292,3 +292,102 @@ export async function initHarnessConfig(
|
|
|
292
292
|
await fs.writeFile(configPath, JSON.stringify(template, null, 2) + '\n', 'utf-8');
|
|
293
293
|
return { created: true, path: configPath };
|
|
294
294
|
}
|
|
295
|
+
|
|
296
|
+
export interface DeployDesignDocsResult {
|
|
297
|
+
copiedFiles: string[];
|
|
298
|
+
skippedFiles: string[];
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* 設計原則ドキュメントを対象プロジェクトの docs/ にデプロイする。
|
|
303
|
+
* - docs/folder_management_rules.md → <projectRoot>/docs/folder_management_rules.md
|
|
304
|
+
* - docs/principles/*.md → <projectRoot>/docs/principles/*.md
|
|
305
|
+
* 既存ファイルは上書きせずスキップする。
|
|
306
|
+
*/
|
|
307
|
+
export async function deployDesignDocs(
|
|
308
|
+
harnessRoot: string,
|
|
309
|
+
projectRoot: string,
|
|
310
|
+
): Promise<DeployDesignDocsResult> {
|
|
311
|
+
const copiedFiles: string[] = [];
|
|
312
|
+
const skippedFiles: string[] = [];
|
|
313
|
+
const docsTargetDir = join(projectRoot, 'docs');
|
|
314
|
+
const principlesTargetDir = join(docsTargetDir, 'principles');
|
|
315
|
+
|
|
316
|
+
await fs.mkdir(docsTargetDir, { recursive: true });
|
|
317
|
+
await fs.mkdir(principlesTargetDir, { recursive: true });
|
|
318
|
+
|
|
319
|
+
const folderRulesRelativePath = join('docs', 'folder_management_rules.md');
|
|
320
|
+
const folderRulesSource = join(harnessRoot, folderRulesRelativePath);
|
|
321
|
+
const folderRulesTarget = join(projectRoot, folderRulesRelativePath);
|
|
322
|
+
|
|
323
|
+
try {
|
|
324
|
+
await fs.access(folderRulesTarget);
|
|
325
|
+
skippedFiles.push(folderRulesRelativePath);
|
|
326
|
+
} catch {
|
|
327
|
+
try {
|
|
328
|
+
await fs.access(folderRulesSource);
|
|
329
|
+
await fs.copyFile(folderRulesSource, folderRulesTarget);
|
|
330
|
+
copiedFiles.push(folderRulesRelativePath);
|
|
331
|
+
} catch {
|
|
332
|
+
// 配置元が存在しない場合はスキップ
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const principlesSourceDir = join(harnessRoot, 'docs', 'principles');
|
|
337
|
+
|
|
338
|
+
try {
|
|
339
|
+
const principleEntries = await fs.readdir(principlesSourceDir, { withFileTypes: true });
|
|
340
|
+
const principleFiles = principleEntries
|
|
341
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith('.md'))
|
|
342
|
+
.map((entry) => entry.name)
|
|
343
|
+
.sort();
|
|
344
|
+
|
|
345
|
+
for (const principleFile of principleFiles) {
|
|
346
|
+
const relativePath = join('docs', 'principles', principleFile);
|
|
347
|
+
const sourcePath = join(principlesSourceDir, principleFile);
|
|
348
|
+
const targetPath = join(projectRoot, relativePath);
|
|
349
|
+
|
|
350
|
+
try {
|
|
351
|
+
await fs.access(targetPath);
|
|
352
|
+
skippedFiles.push(relativePath);
|
|
353
|
+
} catch {
|
|
354
|
+
await fs.copyFile(sourcePath, targetPath);
|
|
355
|
+
copiedFiles.push(relativePath);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
} catch {
|
|
359
|
+
// principles ディレクトリが存在しない場合はスキップ
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
return { copiedFiles, skippedFiles };
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export interface DeployHuskyHookResult {
|
|
366
|
+
created: boolean;
|
|
367
|
+
path: string;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* husky pre-commit フックを対象プロジェクトの .husky/ にデプロイする。
|
|
372
|
+
* 既存があればスキップする。実行権限 0o755 を付与する。
|
|
373
|
+
*/
|
|
374
|
+
export async function deployHuskyHook(
|
|
375
|
+
harnessRoot: string,
|
|
376
|
+
projectRoot: string,
|
|
377
|
+
): Promise<DeployHuskyHookResult> {
|
|
378
|
+
const targetPath = join(projectRoot, '.husky', 'pre-commit');
|
|
379
|
+
|
|
380
|
+
try {
|
|
381
|
+
await fs.access(targetPath);
|
|
382
|
+
return { created: false, path: targetPath };
|
|
383
|
+
} catch {
|
|
384
|
+
// 配置先が存在しない場合は新規作成
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
const sourcePath = join(harnessRoot, 'templates', '.husky', 'pre-commit');
|
|
388
|
+
await fs.mkdir(join(projectRoot, '.husky'), { recursive: true });
|
|
389
|
+
await fs.copyFile(sourcePath, targetPath);
|
|
390
|
+
await fs.chmod(targetPath, 0o755);
|
|
391
|
+
|
|
392
|
+
return { created: true, path: targetPath };
|
|
393
|
+
}
|
|
@@ -68,7 +68,7 @@ review: opus
|
|
|
68
68
|
|
|
69
69
|
**このスキルは3フェーズで実行する。**
|
|
70
70
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
71
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
71
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
72
72
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
73
73
|
|
|
74
74
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -26,7 +26,7 @@ UnitドキュメントとConstructionのドメインモデル設計を元に、*
|
|
|
26
26
|
|
|
27
27
|
**このスキルは3フェーズで実行する。**
|
|
28
28
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
29
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
29
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
30
30
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
31
31
|
|
|
32
32
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -18,7 +18,7 @@ review: opus
|
|
|
18
18
|
### 任意インプット(あれば参照)
|
|
19
19
|
- **ドメインモデル** — `docs/product/construction/{unit}/domain_model.md`
|
|
20
20
|
- **環境設計** — `docs/product/environment_contract.md`
|
|
21
|
-
- **テスト規約** — `docs/principles/
|
|
21
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
22
22
|
- **既存ITテスト** — 既存パターンの参考
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -68,7 +68,7 @@ review: opus
|
|
|
68
68
|
|
|
69
69
|
**このスキルは3フェーズで実行する。**
|
|
70
70
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
71
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
71
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
72
72
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
73
73
|
|
|
74
74
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -183,7 +183,7 @@ ITテスト設計のスコープ・テスト対象・不明点を整理し、人
|
|
|
183
183
|
- **テストコードは生成しない**(設計文書のみ)— 実装は `story-implementor` スキル(codex-delegator経由、またはメインセッションで直接実行)が行う
|
|
184
184
|
- 論理設計のすべてのユースケース・エンドポイントをカバーする
|
|
185
185
|
- TDDプロセスの「正しくRED」になる状態を目指す設計を行う
|
|
186
|
-
- テスト規約(`docs/principles/
|
|
186
|
+
- テスト規約(`docs/principles/testing-rules.md`)がある場合は遵守する
|
|
187
187
|
- AAAパターン(Arrange-Act-Assert)を前提としたケース設計を行う
|
|
188
188
|
|
|
189
189
|
---
|
|
@@ -38,7 +38,7 @@ TDD実装フェーズ
|
|
|
38
38
|
### 推奨インプット(あれば参照)
|
|
39
39
|
- **カバレッジレポート** — `docs/product/construction/{unit}/coverage_report.md`
|
|
40
40
|
- **既存ITテスト** — `backend/test/integration/**/*.test.ts`(パターン参考)
|
|
41
|
-
- **テスト規約** — `docs/principles/
|
|
41
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
42
42
|
- **ストーリー固有論理設計** — `docs/inception/{unit}/{story_id}/logical_design.md`
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -71,7 +71,7 @@ TDD実装フェーズ
|
|
|
71
71
|
|
|
72
72
|
**このスキルは3フェーズで実行する。**
|
|
73
73
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
74
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
74
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
75
75
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
76
76
|
|
|
77
77
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -64,7 +64,7 @@ review: opus
|
|
|
64
64
|
|
|
65
65
|
**このスキルは3フェーズで実行する。**
|
|
66
66
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
67
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
67
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
68
68
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
69
69
|
|
|
70
70
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -17,7 +17,7 @@ review: opus
|
|
|
17
17
|
|
|
18
18
|
### 任意インプット(あれば参照)
|
|
19
19
|
- **UIモック** — `/mock/*.html`(画面フローの参考)
|
|
20
|
-
- **テスト規約** — `docs/principles/
|
|
20
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
21
21
|
- **既存シナリオテスト** — 既存パターンの参考
|
|
22
22
|
|
|
23
23
|
---
|
|
@@ -95,7 +95,7 @@ story-implementor ← TDD実装
|
|
|
95
95
|
|
|
96
96
|
**このスキルは3フェーズで実行する。**
|
|
97
97
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
98
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
98
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
99
99
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
100
100
|
|
|
101
101
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -200,7 +200,7 @@ story-implementor ← TDD実装
|
|
|
200
200
|
- **テストコードは生成しない**(設計文書のみ)— 実装は `story-implementor` スキル(codex-delegator経由、またはメインセッションで直接実行)が行う
|
|
201
201
|
- 受け入れ基準を漏れなくカバーする
|
|
202
202
|
- TDDプロセスの「正しくRED」になる状態を目指す設計を行う
|
|
203
|
-
- テスト規約(`docs/principles/
|
|
203
|
+
- テスト規約(`docs/principles/testing-rules.md`)がある場合は遵守する
|
|
204
204
|
- Playwrightの使用を前提とする(プロジェクト固有の要件がある場合は調整)
|
|
205
205
|
|
|
206
206
|
---
|
|
@@ -37,7 +37,7 @@ TDD実装フェーズ
|
|
|
37
37
|
- **カバレッジレポート** — `docs/product/construction/{unit}/coverage_report.md`
|
|
38
38
|
- **既存シナリオテスト** — `e2e/tests/**/*.spec.ts`(パターン参考)
|
|
39
39
|
- **UIUX設計** — `docs/inception/{unit}/{story_id}/uiux_design.md`
|
|
40
|
-
- **テスト規約** — `docs/principles/
|
|
40
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -62,7 +62,7 @@ TDD実装フェーズ
|
|
|
62
62
|
## 3フェーズ実行ルール
|
|
63
63
|
|
|
64
64
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
65
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
65
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
66
66
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
67
67
|
|
|
68
68
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -65,7 +65,7 @@ review: opus
|
|
|
65
65
|
|
|
66
66
|
**このスキルは3フェーズで実行する。**
|
|
67
67
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
68
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
68
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
69
69
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
70
70
|
|
|
71
71
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -24,7 +24,7 @@ review: opus
|
|
|
24
24
|
|
|
25
25
|
**このスキルは3フェーズで実行する。**
|
|
26
26
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
27
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
27
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
28
28
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
29
29
|
|
|
30
30
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -64,7 +64,7 @@ review: opus
|
|
|
64
64
|
|
|
65
65
|
**このスキルは3フェーズで実行する。**
|
|
66
66
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
67
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
67
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
68
68
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
69
69
|
|
|
70
70
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -16,7 +16,7 @@ review: opus
|
|
|
16
16
|
|
|
17
17
|
### 任意インプット(あれば参照)
|
|
18
18
|
- **論理設計** — `docs/product/construction/{unit}/logical_design.md`
|
|
19
|
-
- **テスト規約** — `docs/principles/
|
|
19
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
20
20
|
- **既存ユニットテスト** — 既存パターンの参考
|
|
21
21
|
|
|
22
22
|
---
|
|
@@ -77,7 +77,7 @@ story-implementor ← TDD実装
|
|
|
77
77
|
|
|
78
78
|
**このスキルは3フェーズで実行する。**
|
|
79
79
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
80
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
80
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
81
81
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
82
82
|
|
|
83
83
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -182,7 +182,7 @@ story-implementor ← TDD実装
|
|
|
182
182
|
- **テストコードは生成しない**(設計文書のみ)— 実装は `story-implementor` スキル(codex-delegator経由、またはメインセッションで直接実行)が行う
|
|
183
183
|
- ドメインモデルの不変条件を漏れなくカバーする
|
|
184
184
|
- TDDプロセスの「正しくRED」になる状態を目指す設計を行う
|
|
185
|
-
- テスト規約(`docs/principles/
|
|
185
|
+
- テスト規約(`docs/principles/testing-rules.md`)がある場合は遵守する
|
|
186
186
|
- Vitest/Jest等のテストフレームワークを前提とする
|
|
187
187
|
|
|
188
188
|
---
|
|
@@ -36,7 +36,7 @@ TDD実装フェーズ
|
|
|
36
36
|
### 推奨インプット(あれば参照)
|
|
37
37
|
- **カバレッジレポート** — `docs/product/construction/{unit}/coverage_report.md`
|
|
38
38
|
- **既存ユニットテスト** — `backend/test/unit/**/*.test.ts`(パターン参考)
|
|
39
|
-
- **テスト規約** — `docs/principles/
|
|
39
|
+
- **テスト規約** — `docs/principles/testing-rules.md`
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -60,7 +60,7 @@ TDD実装フェーズ
|
|
|
60
60
|
## 3フェーズ実行ルール
|
|
61
61
|
|
|
62
62
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
63
|
-
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`
|
|
63
|
+
- **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`npx phasegate delegate-sonnet` 経由)
|
|
64
64
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
65
65
|
|
|
66
66
|
**Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"hooks": [
|
|
16
16
|
{
|
|
17
17
|
"type": "command",
|
|
18
|
-
"command": "npx
|
|
18
|
+
"command": "npx phasegate hook pre-tool-use"
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"type": "command",
|
|
41
|
-
"command": "npx
|
|
41
|
+
"command": "npx phasegate hook post-tool-use"
|
|
42
42
|
}
|
|
43
43
|
]
|
|
44
44
|
}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"hooks": [
|
|
50
50
|
{
|
|
51
51
|
"type": "command",
|
|
52
|
-
"command": "npx
|
|
52
|
+
"command": "npx phasegate hook stop"
|
|
53
53
|
}
|
|
54
54
|
]
|
|
55
55
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
npx lint-staged
|
|
2
|
-
npx
|
|
2
|
+
npx phasegate pre-commit
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "1.0",
|
|
3
|
-
"preset": "standard",
|
|
4
|
-
"project": {
|
|
5
|
-
"name": "my-project",
|
|
6
|
-
"architecture": "clean-architecture",
|
|
7
|
-
"paths": {
|
|
8
|
-
"source": [
|
|
9
|
-
"backend/src",
|
|
10
|
-
"frontend/src"
|
|
11
|
-
],
|
|
12
|
-
"docs": {
|
|
13
|
-
"units": "docs/product/units",
|
|
14
|
-
"inception": "docs/inception",
|
|
15
|
-
"construction": "docs/product/construction"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"naming": {
|
|
19
|
-
"fileCase": "kebab-case",
|
|
20
|
-
"classCase": "PascalCase",
|
|
21
|
-
"unitToPath": "kebab-to-snake"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"layers": {
|
|
25
|
-
"L1_editor": { "enabled": true },
|
|
26
|
-
"L2_precommit": { "enabled": true },
|
|
27
|
-
"L3_ci": { "enabled": true },
|
|
28
|
-
"L4_scheduled": { "enabled": false }
|
|
29
|
-
}
|
|
30
|
-
}
|