foundruu 0.4.2 → 0.5.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/README.md CHANGED
@@ -22,11 +22,11 @@ npm install && npm run build && npm link
22
22
 
23
23
  | コマンド | 説明 |
24
24
  |---|---|
25
- | `foundruu init [--template <id>] [--name <name>]` | テンプレート + Workflow + Rules + Doctor設定を一括導入 |
25
+ | `foundruu init [--template <id>] [--features <list>]` | テンプレート + Workflow + Rules + Doctor設定を一括導入 |
26
26
  | `foundruu workflow install` | Workflow / Prompt / Rules(`.ai/`)のみを既存リポジトリへ導入 |
27
27
  | `foundruu doctor [--json]` | リポジトリがAI開発可能な状態か診断(fail ありで exit 1) |
28
- | `foundruu doctor --deep [--since <ref>]` | docs/ git 差分から AI開発プロセス品質をスコア診断 |
29
- | `foundruu update [--force]` | Workflow / Prompt / Rules を最新へ更新 |
28
+ | `foundruu doctor --deep [--since <ref>] [--report <dir>]` | AI開発プロセス品質をスコア診断(md/html/json レポート出力可) |
29
+ | `foundruu update [--force] [--diff] [--only <paths...>]` | Workflow / Prompt / Rules を最新へ更新(パス指定・差分確認可) |
30
30
  | `foundruu session start <name>` / `session list` | AI開発セッションの作成 / 一覧 |
31
31
  | `foundruu templates` | 利用可能なテンプレート一覧 |
32
32
  | `foundruu plugins` | 読み込まれているプラグイン一覧 |
@@ -38,7 +38,7 @@ npm install && npm run build && npm link
38
38
  ```bash
39
39
  # ① 新しいリポジトリにAI開発環境を構築
40
40
  mkdir my-app && cd my-app && git init
41
- foundruu init --template typescript --name my-app
41
+ foundruu init --template typescript --name my-app --features docker,vitest
42
42
 
43
43
  # ② 既存リポジトリには Workflow だけ導入
44
44
  foundruu workflow install
@@ -135,6 +135,11 @@ jobs:
135
135
 
136
136
  結果はジョブサマリに表形式で出力されます。
137
137
 
138
+ ## VSCode Extension
139
+
140
+ [vscode-extension/](vscode-extension/) にコマンドパレット連携の拡張があります(Doctor / セッション作成 / Workflow 導入・更新)。
141
+ `npx @vscode/vsce package` で .vsix を生成してインストールできます。
142
+
138
143
  ## 開発
139
144
 
140
145
  ```bash
@@ -1,3 +1,72 @@
1
+ {{#eq language "laravel"}}
2
+ services:
3
+ app:
4
+ build: .
5
+ ports:
6
+ - "8000:80"
7
+ env_file:
8
+ - .env
9
+ volumes:
10
+ - .:/var/www
11
+ - /var/www/vendor
12
+ depends_on:
13
+ - db
14
+ restart: unless-stopped
15
+
16
+ db:
17
+ image: mysql:8.4
18
+ environment:
19
+ MYSQL_DATABASE: ${DB_DATABASE:-app}
20
+ MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-secret}
21
+ ports:
22
+ - "3306:3306"
23
+ volumes:
24
+ - db-data:/var/lib/mysql
25
+ restart: unless-stopped
26
+
27
+ volumes:
28
+ db-data:
29
+ {{/eq}}
30
+ {{#eq language "python"}}
31
+ services:
32
+ app:
33
+ build: .
34
+ ports:
35
+ - "8000:8000"
36
+ env_file:
37
+ - .env
38
+ volumes:
39
+ - .:/app
40
+ restart: unless-stopped
41
+ {{/eq}}
42
+ {{#eq language "typescript"}}
43
+ services:
44
+ app:
45
+ build: .
46
+ ports:
47
+ - "3000:3000"
48
+ env_file:
49
+ - .env
50
+ volumes:
51
+ - .:/app
52
+ - /app/node_modules
53
+ restart: unless-stopped
54
+ {{/eq}}
55
+ {{#eq language "nextjs"}}
56
+ services:
57
+ app:
58
+ build: .
59
+ ports:
60
+ - "3000:3000"
61
+ env_file:
62
+ - .env
63
+ volumes:
64
+ - .:/app
65
+ - /app/node_modules
66
+ - /app/.next
67
+ restart: unless-stopped
68
+ {{/eq}}
69
+ {{#eq language "nuxt"}}
1
70
  services:
2
71
  app:
3
72
  build: .
@@ -9,3 +78,4 @@ services:
9
78
  - .:/app
10
79
  - /app/node_modules
11
80
  restart: unless-stopped
81
+ {{/eq}}
package/dist/cli.js CHANGED
@@ -37,6 +37,7 @@ program
37
37
  .option("-t, --template <id>", "使用するテンプレートID(未指定なら対話で選択)")
38
38
  .option("-n, --name <name>", "プロジェクト名(デフォルト: ディレクトリ名)")
39
39
  .option("-d, --description <text>", "プロジェクトの説明")
40
+ .option("-f, --features <list>", "導入する feature をカンマ区切りで指定(例: docker,vitest)")
40
41
  .option("-y, --yes", "対話プロンプトを出さずデフォルト値で実行する")
41
42
  .action(async (opts) => {
42
43
  await wrap(() => (0, init_1.runInit)(process.cwd(), opts));
@@ -54,6 +55,7 @@ program
54
55
  .option("--json", "JSON形式で出力する")
55
56
  .option("--deep", "docs/ と git 差分から AI開発プロセスの品質をスコア診断する")
56
57
  .option("--since <ref>", "--deep の差分比較基準", "main")
58
+ .option("--report <dir>", "--deep のレポート(md/html/json)を書き出すディレクトリ")
57
59
  .action(async (opts) => {
58
60
  await wrap(() => (0, doctor_1.runDoctorCommand)(process.cwd(), opts));
59
61
  });
@@ -63,6 +65,7 @@ program
63
65
  .option("-f, --force", "ユーザー編集済みファイルも上書きする")
64
66
  .option("--diff", "差分の表示のみで書き込まない")
65
67
  .option("--local", "GitHub から取得せず CLI 同梱アセットを使う")
68
+ .option("--only <paths...>", "指定パスのみ更新する(例: --only .ai/workflows .ai/prompts/session-workflow.md)")
66
69
  .action(async (opts) => {
67
70
  await wrap(() => (0, update_1.runUpdate)(process.cwd(), opts));
68
71
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,7 @@ export interface DoctorOptions {
2
2
  json?: boolean;
3
3
  deep?: boolean;
4
4
  since?: string;
5
+ /** --deep レポート(md/html/json)の出力先ディレクトリ */
6
+ report?: string;
5
7
  }
6
8
  export declare function runDoctorCommand(cwd: string, options: DoctorOptions): void;
@@ -7,12 +7,18 @@ exports.runDoctorCommand = runDoctorCommand;
7
7
  const picocolors_1 = __importDefault(require("picocolors"));
8
8
  const runner_1 = require("../doctor/runner");
9
9
  const deep_1 = require("../doctor/deep");
10
+ const report_1 = require("../doctor/report");
10
11
  const logger_1 = require("../core/logger");
11
12
  function scoreColor(score) {
12
13
  return score >= 80 ? picocolors_1.default.green : score >= 50 ? picocolors_1.default.yellow : picocolors_1.default.red;
13
14
  }
14
15
  function runDeep(cwd, options) {
15
16
  const report = (0, deep_1.runDeepDoctor)(cwd, options.since ?? "main");
17
+ if (options.report) {
18
+ const files = (0, report_1.writeDeepReports)(report, options.report);
19
+ for (const f of files)
20
+ logger_1.log.step(`レポート出力: ${f}`);
21
+ }
16
22
  if (options.json) {
17
23
  console.log(JSON.stringify(report, null, 2));
18
24
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,11 @@ export interface InitOptions {
2
2
  template?: string;
3
3
  name?: string;
4
4
  description?: string;
5
+ /** カンマ区切りの feature 指定(テンプレートのデフォルトを上書き) */
6
+ features?: string;
5
7
  /** 対話プロンプトを出さずデフォルト値で進める */
6
8
  yes?: boolean;
7
9
  }
10
+ /** --features のパースと検証。テンプレートデフォルトを上書きする */
11
+ export declare function resolveFeatures(spec: string | undefined, defaults: string[]): string[];
8
12
  export declare function runInit(cwd: string, rawOptions: InitOptions): Promise<void>;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveFeatures = resolveFeatures;
6
7
  exports.runInit = runInit;
7
8
  const fs_1 = __importDefault(require("fs"));
8
9
  const path_1 = __importDefault(require("path"));
@@ -12,6 +13,17 @@ const copier_1 = require("../core/copier");
12
13
  const logger_1 = require("../core/logger");
13
14
  const templates_1 = require("../registry/templates");
14
15
  const workflow_1 = require("./workflow");
16
+ /** --features のパースと検証。テンプレートデフォルトを上書きする */
17
+ function resolveFeatures(spec, defaults) {
18
+ if (spec === undefined)
19
+ return defaults;
20
+ const requested = spec.split(",").map((f) => f.trim()).filter(Boolean);
21
+ const unknown = requested.filter((f) => !templates_1.availableFeatures.includes(f));
22
+ if (unknown.length > 0) {
23
+ throw new Error(`不明な feature です: ${unknown.join(", ")}(利用可能: ${templates_1.availableFeatures.join(", ")})`);
24
+ }
25
+ return requested;
26
+ }
15
27
  /** --template 未指定かつ TTY のとき、対話で不足オプションを埋める */
16
28
  async function promptMissing(cwd, options) {
17
29
  const interactive = process.stdin.isTTY && !options.yes && !options.template;
@@ -32,7 +44,21 @@ async function promptMissing(cwd, options) {
32
44
  });
33
45
  const name = options.name ?? (await input({ message: "プロジェクト名", default: path_1.default.basename(cwd) }));
34
46
  const description = options.description ?? (await input({ message: "プロジェクトの説明(任意)" }));
35
- return { ...options, template, name, description };
47
+ // feature をチェックボックスで選択(テンプレートのデフォルトが初期チェック)
48
+ let features = options.features;
49
+ if (features === undefined) {
50
+ const { checkbox } = await importEsm("@inquirer/prompts");
51
+ const defaults = (0, templates_1.findTemplate)(template)?.features ?? [];
52
+ const selected = await checkbox({
53
+ message: "導入する feature を選択してください",
54
+ choices: templates_1.availableFeatures.map((f) => ({
55
+ value: f,
56
+ checked: defaults.includes(f),
57
+ })),
58
+ });
59
+ features = selected.join(",");
60
+ }
61
+ return { ...options, template, name, description, features };
36
62
  }
37
63
  async function runInit(cwd, rawOptions) {
38
64
  const options = await promptMissing(cwd, rawOptions);
@@ -46,6 +72,7 @@ async function runInit(cwd, rawOptions) {
46
72
  throw new Error(`テンプレート "${templateId}" は準備中です。現在利用可能なテンプレート: ` +
47
73
  templates_1.templates.filter((t) => t.status === "available").map((t) => t.id).join(", "));
48
74
  }
75
+ const features = resolveFeatures(options.features, template.features);
49
76
  const ctx = {
50
77
  projectName: options.name ?? path_1.default.basename(cwd),
51
78
  description: options.description ?? "",
@@ -53,8 +80,8 @@ async function runInit(cwd, rawOptions) {
53
80
  languageLabel: template.languageLabel,
54
81
  aiProviders: template.aiProviders,
55
82
  aiProviderLabels: template.aiProviders,
56
- features: template.features,
57
- featureLabels: template.features,
83
+ features,
84
+ featureLabels: features,
58
85
  year: new Date().getFullYear(),
59
86
  };
60
87
  const root = (0, assets_1.templatesRoot)();
@@ -63,7 +90,7 @@ async function runInit(cwd, rawOptions) {
63
90
  const layers = [
64
91
  path_1.default.join(root, "base"),
65
92
  path_1.default.join(root, "languages", template.language),
66
- ...template.features.map((f) => path_1.default.join(root, "features", f)),
93
+ ...features.map((f) => path_1.default.join(root, "features", f)),
67
94
  path_1.default.join(root, "ai", "_common"),
68
95
  ...template.aiProviders.map((p) => path_1.default.join(root, "ai", p)),
69
96
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export interface UpdateOptions {
5
5
  diff?: boolean;
6
6
  /** GitHub から取得せず CLI 同梱アセットを使う */
7
7
  local?: boolean;
8
+ /** 指定パス(ファイル or ディレクトリ)のみ更新する */
9
+ only?: string[];
8
10
  }
9
11
  /**
10
12
  * Workflow / Prompt / Rules を最新アセットへ同期する。
@@ -32,6 +32,7 @@ function runUpdate(cwd, options) {
32
32
  const { plan, hashes } = (0, sync_1.syncTree)(root, cwd, recorded, {
33
33
  force: options.force,
34
34
  dryRun: options.diff,
35
+ only: options.only,
35
36
  });
36
37
  const changed = plan.filter((e) => e.status !== "unchanged");
37
38
  if (changed.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;AA4BA,8BAoDC;AAhFD,4DAA4B;AAC5B,2CAAqE;AACrE,6CAAsD;AACtD,2CAAqC;AACrC,uCAAuD;AAavD,MAAM,YAAY,GAA4C;IAC5D,GAAG,EAAE,oBAAE,CAAC,KAAK,CAAC,YAAY,CAAC;IAC3B,MAAM,EAAE,oBAAE,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,oBAAE,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,eAAe,EAAE,oBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,SAAgB,SAAS,CAAC,GAAW,EAAE,OAAsB;IAC3D,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtB,YAAG,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAChF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAA,6BAAmB,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,YAAG,CAAC,IAAI,CACN,YAAY,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,QAAQ,iBAAiB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CACrH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAA,eAAQ,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;QACrD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,YAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GACT,KAAK,CAAC,MAAM,KAAK,eAAe,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;YAChE,CAAC,CAAC,oBAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,YAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,MAAM,CAAC;IAC/E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,YAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,YAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzC,YAAG,CAAC,IAAI,CAAC,wBAAwB,cAAc,sBAAsB,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,QAAQ,GAAG;QAChB,OAAO,EAAE,IAAA,mBAAU,GAAE;QACrB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,MAAM;KACd,CAAC;IACF,IAAA,oBAAW,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,YAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACnC,CAAC"}
@@ -20,7 +20,10 @@ export declare function listFiles(dir: string, base?: string): string[];
20
20
  * - 導入先 != recorded(ユーザーが編集済み) → user-modified(force 時のみ上書き)
21
21
  * - recorded が無い(旧バージョン導入等) → user-modified 扱いで保護
22
22
  */
23
+ /** relPath が only 指定(完全一致 or ディレクトリ前置一致)に含まれるか */
24
+ export declare function matchesOnly(relPath: string, only: string[]): boolean;
23
25
  export declare function syncTree(srcDir: string, destDir: string, recorded: FileHashes, options?: {
24
26
  force?: boolean;
25
27
  dryRun?: boolean;
28
+ only?: string[];
26
29
  }): SyncResult;
package/dist/core/sync.js CHANGED
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.hashFile = hashFile;
7
7
  exports.listFiles = listFiles;
8
+ exports.matchesOnly = matchesOnly;
8
9
  exports.syncTree = syncTree;
9
10
  const crypto_1 = __importDefault(require("crypto"));
10
11
  const fs_1 = __importDefault(require("fs"));
@@ -33,11 +34,25 @@ function listFiles(dir, base = dir) {
33
34
  * - 導入先 != recorded(ユーザーが編集済み) → user-modified(force 時のみ上書き)
34
35
  * - recorded が無い(旧バージョン導入等) → user-modified 扱いで保護
35
36
  */
37
+ /** relPath が only 指定(完全一致 or ディレクトリ前置一致)に含まれるか */
38
+ function matchesOnly(relPath, only) {
39
+ const normalized = relPath.split(path_1.default.sep).join("/");
40
+ return only.some((o) => {
41
+ const pattern = o.replace(/\/+$/, "");
42
+ return normalized === pattern || normalized.startsWith(pattern + "/");
43
+ });
44
+ }
36
45
  function syncTree(srcDir, destDir, recorded, options = {}) {
37
- const { force = false, dryRun = false } = options;
46
+ const { force = false, dryRun = false, only } = options;
38
47
  const plan = [];
39
48
  const hashes = {};
40
49
  for (const relPath of listFiles(srcDir).sort()) {
50
+ // --only 指定がある場合、対象外ファイルは記録ハッシュを維持したままスキップ
51
+ if (only && only.length > 0 && !matchesOnly(relPath, only)) {
52
+ if (recorded[relPath])
53
+ hashes[relPath] = recorded[relPath];
54
+ continue;
55
+ }
41
56
  const srcPath = path_1.default.join(srcDir, relPath);
42
57
  const destPath = path_1.default.join(destDir, relPath);
43
58
  const srcHash = hashFile(srcPath);
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { DeepReport } from "./deep";
2
+ /** doctor --deep のレポートを md / html / json で書き出し、生成ファイルのパスを返す */
3
+ export declare function writeDeepReports(report: DeepReport, outDir: string): string[];
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeDeepReports = writeDeepReports;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ /** doctor --deep のレポートを md / html / json で書き出し、生成ファイルのパスを返す */
10
+ function writeDeepReports(report, outDir) {
11
+ fs_1.default.mkdirSync(outDir, { recursive: true });
12
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
13
+ const base = path_1.default.join(outDir, `foundruu-deep-report-${stamp}`);
14
+ const files = [
15
+ writeFile(`${base}.json`, JSON.stringify(report, null, 2) + "\n"),
16
+ writeFile(`${base}.md`, renderMarkdown(report)),
17
+ writeFile(`${base}.html`, renderHtml(report)),
18
+ ];
19
+ return files;
20
+ }
21
+ function writeFile(file, content) {
22
+ fs_1.default.writeFileSync(file, content);
23
+ return file;
24
+ }
25
+ function renderMarkdown(report) {
26
+ const lines = [
27
+ "# FoundRuu Deep Report",
28
+ "",
29
+ `- 生成日時: ${new Date().toISOString()}`,
30
+ `- 比較基準: \`${report.since}\``,
31
+ `- 差分: ${report.diff.files}ファイル +${report.diff.insertions} -${report.diff.deletions}`,
32
+ `- **総合スコア: ${report.overall}点**`,
33
+ "",
34
+ "| カテゴリ | スコア | ドキュメント |",
35
+ "|---|---|---|",
36
+ ...report.scores.map((s) => `| ${s.label} | ${s.score}点 | ${s.docPath ?? "(なし)"} |`),
37
+ "",
38
+ ];
39
+ for (const s of report.scores) {
40
+ if (s.failed.length === 0)
41
+ continue;
42
+ lines.push(`## ${s.label} の改善案`, "");
43
+ for (const f of s.failed) {
44
+ lines.push(`- **${f.label}** — ${f.improvement}`);
45
+ }
46
+ lines.push("");
47
+ }
48
+ return lines.join("\n");
49
+ }
50
+ function renderHtml(report) {
51
+ const color = (score) => (score >= 80 ? "#22a06b" : score >= 50 ? "#b38600" : "#c9372c");
52
+ const rows = report.scores
53
+ .map((s) => `
54
+ <tr>
55
+ <td>${escapeHtml(s.label)}</td>
56
+ <td style="color:${color(s.score)};font-weight:bold">${s.score}点</td>
57
+ <td>${escapeHtml(s.docPath ?? "(なし)")}</td>
58
+ <td><ul>${s.failed.map((f) => `<li><b>${escapeHtml(f.label)}</b> — ${escapeHtml(f.improvement)}</li>`).join("")}</ul></td>
59
+ </tr>`)
60
+ .join("");
61
+ return `<!doctype html>
62
+ <html lang="ja">
63
+ <head>
64
+ <meta charset="utf-8">
65
+ <title>FoundRuu Deep Report</title>
66
+ <style>
67
+ body { font-family: -apple-system, "Hiragino Sans", sans-serif; margin: 2rem auto; max-width: 60rem; padding: 0 1rem; color: #1c1c1c; }
68
+ table { border-collapse: collapse; width: 100%; }
69
+ th, td { border: 1px solid #ddd; padding: .5rem .75rem; text-align: left; vertical-align: top; }
70
+ th { background: #f5f5f5; }
71
+ .overall { font-size: 2rem; font-weight: bold; color: ${color(report.overall)}; }
72
+ </style>
73
+ </head>
74
+ <body>
75
+ <h1>FoundRuu Deep Report</h1>
76
+ <p>比較基準: <code>${escapeHtml(report.since)}</code> / 差分: ${report.diff.files}ファイル +${report.diff.insertions} -${report.diff.deletions}</p>
77
+ <p class="overall">総合スコア: ${report.overall}点</p>
78
+ <table>
79
+ <tr><th>カテゴリ</th><th>スコア</th><th>ドキュメント</th><th>改善案</th></tr>
80
+ ${rows}
81
+ </table>
82
+ </body>
83
+ </html>
84
+ `;
85
+ }
86
+ function escapeHtml(s) {
87
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
88
+ }
89
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/doctor/report.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,6 @@ export interface TemplateDefinition {
15
15
  */
16
16
  export declare const templates: TemplateDefinition[];
17
17
  export declare const DEFAULT_TEMPLATE = "typescript";
18
+ /** --features で選択可能な feature 一覧(assets/templates/features/ と対応) */
19
+ export declare const availableFeatures: readonly ["docker", "github-actions", "eslint", "prettier", "vitest", "react", "react-laravel", "vue-laravel", "discord", "line-bot", "lark"];
18
20
  export declare function findTemplate(id: string): TemplateDefinition | undefined;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_TEMPLATE = exports.templates = void 0;
3
+ exports.availableFeatures = exports.DEFAULT_TEMPLATE = exports.templates = void 0;
4
4
  exports.findTemplate = findTemplate;
5
5
  /**
6
6
  * テンプレートレジストリ。
@@ -63,6 +63,20 @@ exports.templates = [
63
63
  },
64
64
  ];
65
65
  exports.DEFAULT_TEMPLATE = "typescript";
66
+ /** --features で選択可能な feature 一覧(assets/templates/features/ と対応) */
67
+ exports.availableFeatures = [
68
+ "docker",
69
+ "github-actions",
70
+ "eslint",
71
+ "prettier",
72
+ "vitest",
73
+ "react",
74
+ "react-laravel",
75
+ "vue-laravel",
76
+ "discord",
77
+ "line-bot",
78
+ "lark",
79
+ ];
66
80
  function findTemplate(id) {
67
81
  return exports.templates.find((t) => t.id === id);
68
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/registry/templates.ts"],"names":[],"mappings":";;;AA2EA,oCAEC;AAjED;;;GAGG;AACU,QAAA,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,YAAY;QAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACtE,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,iBAAiB;QAChC,QAAQ,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACvD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,oBAAoB;QACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAC/E,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACxC,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;CACF,CAAC;AAEW,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAE7C,SAAgB,YAAY,CAAC,EAAU;IACrC,OAAO,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/registry/templates.ts"],"names":[],"mappings":";;;AA0FA,oCAEC;AAhFD;;;GAGG;AACU,QAAA,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,YAAY;QAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACtE,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,iBAAiB;QAChC,QAAQ,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACvD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,oBAAoB;QACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAC/E,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACxC,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;CACF,CAAC;AAEW,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAE7C,mEAAmE;AACtD,QAAA,iBAAiB,GAAG;IAC/B,QAAQ;IACR,gBAAgB;IAChB,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,OAAO;IACP,eAAe;IACf,aAAa;IACb,SAAS;IACT,UAAU;IACV,MAAM;CACE,CAAC;AAEX,SAAgB,YAAY,CAAC,EAAU;IACrC,OAAO,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foundruu",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "FoundRuu CLI - AI開発を標準化するためのプラットフォームCLI",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",