Lines 5-45javascript
5// AI エージェントは node_modules 配下のファイルを自動で読まないため、
6// プロジェクトルートに AGENTS.md / CLAUDE.md(node_modules 内の DS ルールを
9// 設置は **明示実行のみ**(`npx ksk-ds init`)。install 時に自動で置く
10// postinstall フックは v1.60.0 で廃止した。install-time にプロジェクトルートへ
11// AI 指示ファイルを書き込む挙動は、サプライチェーン検査で
12// 「同意なき AI エージェント制御面の設置」として Critical 判定されるため
13// (LPM Firewall が 1.49.2 / 1.51.1 をこの理由でブロック判定)。
16// npx ksk-design-system init # AGENTS.md + CLAUDE.md を設置
17// npx ksk-design-system init --force # 既存ファイルを上書き
18// npx ksk-design-system demo [dir] # DS リポを clone + setup(お試し用)
19// npx ksk-ds lint src # contracts/rules.json に基づき consumer UI を検査
20// npx ksk-ds check-duplicates src # DS と同名のローカル実装を検査
21// npx ksk-ds codemod <name> ./src # scripts/codemod/<name>.mjs を実行
23import { copyFileSync, existsSync, readdirSync } from "node:fs"
24import { dirname, join, resolve } from "node:path"
25import { fileURLToPath } from "node:url"
26import { spawnSync } from "node:child_process"
28const __dirname = dirname(fileURLToPath(import.meta.url))
29const pkgRoot = resolve(__dirname, "..")
31const args = process.argv.slice(2)
32const cmd = args[0] || "init"
33const force = args.includes("--force")
35/** scripts/codemod/ 配下にあるが codemod として呼べないもの(雛形・読み取り専用スキャナ) */
36const NON_CODEMOD = new Set(["template", "check-migration"])
39 * 出力を掃いてから終了する(issue #394)。
41 * stdout がパイプのとき Node の書き込みは非同期で、process.exit() は未フラッシュ分を
42 * 捨てる。`ksk-ds lint --format json | jq` のように出力が 64KB(パイプバッファ1個分)を
HighEntrypoint Build Divergence
Manifest entrypoint contains risky behavior absent from dist/build output.
bin/init.jsView on unpkg · L25 43 * 超えると、そこで切られた壊れた JSON が相手に渡っていた。ファイルへのリダイレクトでは
44 * 書き込みが同期なので再現せず、パイプのときだけ壊れる。