lism-cli 0.7.0 → 0.8.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
@@ -1,6 +1,6 @@
1
1
  # lism-cli
2
2
 
3
- [Lism CSS](https://lism-css.com) / [Lism UI](https://lism-css.com/ui) のための CLI ツール。`lism` コマンドで新規プロジェクト生成・UI コンポーネント追加・AI スキル配置を行います。
3
+ [Lism CSS](https://lism-css.com) / [Lism UI](https://lism-css.com/ui) のためのCLIツール。`lism-cli` コマンドで新規プロジェクト生成・UIコンポーネント追加・AIスキル配置を行います。
4
4
 
5
5
  ## 前提条件
6
6
 
@@ -9,9 +9,10 @@
9
9
  ## コマンド体系
10
10
 
11
11
  ```
12
- lism create [targetDir] [--template <name|category>] # templates から新規プロジェクト
13
- lism ui { init | add <names...> | list } # Lism UI コンポーネントの追加
14
- lism skill { add | check | update } # AI エージェント向け SKILL.md 配置
12
+ lism-cli create [targetDir] [--template <name|category>] [--lang <ja|en>] # templates から新規プロジェクト
13
+ lism-cli init [--ui-framework <react|astro>] [--ui-dir <path>] # lism.config ファイルの新規生成
14
+ lism-cli ui { add <names...> | list } # Lism UI コンポーネントの追加
15
+ lism-cli skill { add [skill] | check | update } # AI エージェント向け SKILL.md 配置
15
16
  ```
16
17
 
17
18
  ## 使い方
@@ -34,9 +35,28 @@ pnpm dlx lism-cli create --template blog-astro-minimal --lang en ./my-blog
34
35
 
35
36
  同じ動作は `pnpm create lism` / `npm create lism@latest` でも呼び出せます(`create-lism` パッケージ経由)。挙動は両者で共通です。
36
37
 
37
- `--lang <ja|en>` は CLI の表示言語に加えて、**生成されるテンプレート本体の言語**にも反映されます。`--lang` を指定しない場合は、対話端末(TTY)ではほかのどの選択よりも先に言語選択プロンプトが表示され、選んだ言語で以降の表示とテンプレート生成が確定します(非対話環境・CI 等では `en` にフォールバック)。対応言語版を持つテンプレート(`blog-astro-minimal` / `blog-astro-personal` / `blog-astro-techlog` / `lp-astro-corporate` / `lp-astro-interior`)では、指定言語のサイト文言・サンプルコンテンツで生成されます。言語版が無いテンプレートは、指定言語に関わらず既存(ベース)の内容で生成されます。
38
+ `--lang <ja|en>` は CLIの表示言語に加えて、**生成されるテンプレート本体の言語**にも反映されます。`--lang` を指定しない場合は、対話端末(TTY)ではほかのどの選択よりも先に言語選択プロンプトが表示され、選んだ言語で以降の表示とテンプレート生成が確定します(非対話環境・CI等では `en` にフォールバック)。対応言語版を持つテンプレート(`blog-astro-minimal` / `blog-astro-personal` / `blog-astro-techlog` / `lp-astro-corporate` / `lp-astro-interior`)では、指定言語のサイト文言・サンプルコンテンツで生成されます。言語版が無いテンプレートは、指定言語に関わらず既存(ベース)の内容で生成されます。
38
39
 
39
- ### UI コンポーネントの追加
40
+ ### lism.config の生成
41
+
42
+ 既存プロジェクトに Lism CSS を後付けする場合など、設定ファイルのひな形が必要なときは `init` を使います。
43
+
44
+ ```bash
45
+ pnpm dlx lism-cli init
46
+ ```
47
+
48
+ core 設定(`tokens` / `props` 等、コメントアウトされたひな形)を持つ `lism.config.js` を新規作成します。対話の中で「Lism UI のコンポーネントも使いますか?」と確認され(デフォルト: No)、Yes と答えた場合のみ `ui` セクション(`framework` / `dir`)も併せて生成されます。
49
+
50
+ `ui` セクションの値はオプションで先渡しできます。指定されなかった質問だけが対話で行われます。
51
+
52
+ - `--ui-framework <react|astro>`: framework の選択をスキップし、UI 利用の確認のみ行います(この場合のデフォルトは Yes)
53
+ - `--ui-dir <path>`: UI コンポーネントの出力先。指定すると UI 利用の意思とみなし、確認を省略して framework の選択のみ行います
54
+
55
+ 非対話環境(CI 等)では質問を出せないため、`--ui-framework` があれば `ui` セクション込みで生成し、無ければ `ui` セクション無しで生成します(`--ui-dir` のみの指定はエラーになります)。
56
+
57
+ 既に `lism.config.{ts,mjs,js}` がある場合は何も変更しません(`ui` セクションの後付けは、後述の `ui add` 実行時に表示されるスニペットを貼り付けてください)。
58
+
59
+ ### UIコンポーネントの追加
40
60
 
41
61
  ```bash
42
62
  # 単一 / 複数
@@ -53,27 +73,38 @@ pnpm dlx lism-cli ui list
53
73
  pnpm dlx lism-cli ui add accordion --ref dev
54
74
  ```
55
75
 
56
- コンポーネントは [`packages/lism-ui/src/components`](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components) から [giget](https://github.com/unjs/giget) 経由で直接取得されます。`lism-ui` を更新するだけで CLI 側も自動で追従します。
76
+ コンポーネントは [`packages/lism-ui/src/components`](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components) から [giget](https://github.com/unjs/giget) 経由で直接取得されるため、既存コンポーネントの実装を更新するだけでCLI側も自動で追従します。ただし、コンポーネントを追加・削除した場合は `lism-ui` 側で `registry-index.json` を再生成(ビルド時の `gen:registry`)してcommitする必要があります(`ui list` / `ui add --all` が参照するカタログのため)。
57
77
 
58
- 初回実行時に `lism.config.js` が無い場合は対話式セットアップが走り、`cli` セクションを書き込みます。
78
+ `ui` セクションの設定が見つからない状態で `ui add` を実行すると、対話式セットアップが走ります。
59
79
 
60
80
  ```
61
81
  ? フレームワークを選択してください: React
62
- ? コンポーネントの出力先ディレクトリ: src/components/ui
63
- ? helper の出力先ディレクトリ: src/components/ui/_helper
64
- ✔ lism.config.js を作成しました。
65
82
  ```
66
83
 
67
- `ui init` で設定の生成のみ行うこともできます。既存の `lism.config.js` には `cli` セクションのみ追記されます。
84
+ 出力先ディレクトリは既定値(`src/components/ui`)が使われます。変更したい場合は `--ui-dir` フラグで指定してください。
85
+
86
+ `ui add` は入力した値をその回の実行に使うだけで設定ファイルは書き換えず、最後に `lism.config.*` へ貼り付けるための `ui` セクションのスニペットを案内します(CSSカスタマイズ用に先に作られた設定を壊さないため)。
87
+
88
+ 設定をファイルとして残すには、`lism.config.*` が無い場合は `lism-cli init`(前述)で `ui` セクション込みの設定ファイルを生成し、既にある場合は上記スニペットを貼り付けてください。
68
89
 
69
90
  ### AI エージェント向けスキルの配置
70
91
 
71
- `SKILL.md` を各種 AI ツールの所定ディレクトリへ展開します。
92
+ 同梱スキル(`SKILL.md` ほか一式)を各種AIツールの所定ディレクトリへ展開します。
93
+
94
+ 同梱スキルは以下の2つです:
95
+
96
+ | スキル | 説明 |
97
+ |--------|------|
98
+ | `lism-css-guide` | Lism CSSでUI・ページを実装・修正する時に使う実装ガイド |
99
+ | `lism-css-refactor` | 既存の Lism CSSコードを、見た目や挙動を変えずにLismらしい書き方へ整理するリファクタガイド |
72
100
 
73
101
  ```bash
74
102
  # 対話モード(使用中のツールを自動検出)
75
103
  pnpm dlx lism-cli skill add
76
104
 
105
+ # スキル名を指定して個別に導入
106
+ pnpm dlx lism-cli skill add lism-css-refactor
107
+
77
108
  # ツールを明示指定
78
109
  pnpm dlx lism-cli skill add --claude --cursor
79
110
 
@@ -87,46 +118,51 @@ pnpm dlx lism-cli skill check
87
118
  pnpm dlx lism-cli skill update --claude
88
119
  ```
89
120
 
90
- 配置先の対応表:
121
+ `skill add` は引数なしで実行すると同梱スキルすべてを一括導入し、`skill add <skill>` でスキル名を指定すると、そのスキルだけを配置します。`check` / `update` はスキル引数を取らず、常に同梱スキル全体が対象です。
122
+
123
+ 配置先の対応表(`<skill>` にはスキル名が入ります):
91
124
 
92
125
  | ツール | 配置先 |
93
126
  |--------|--------|
94
- | `--claude` | `.claude/skills/lism-css-guide` |
95
- | `--codex` | `.agents/skills/lism-css-guide` |
96
- | `--cursor` | `.cursor/skills/lism-css-guide` |
97
- | `--windsurf` | `.windsurf/skills/lism-css-guide` |
98
- | `--cline` | `.cline/skills/lism-css-guide` |
99
- | `--copilot` | `.github/skills/lism-css-guide` |
100
- | `--gemini` | `.gemini/skills/lism-css-guide` |
101
- | `--junie` | `.junie/skills/lism-css-guide` |
127
+ | `--claude` | `.claude/skills/<skill>` |
128
+ | `--codex` | `.agents/skills/<skill>` |
129
+ | `--cursor` | `.cursor/skills/<skill>` |
130
+ | `--windsurf` | `.windsurf/skills/<skill>` |
131
+ | `--cline` | `.cline/skills/<skill>` |
132
+ | `--copilot` | `.github/skills/<skill>` |
133
+ | `--gemini` | `.gemini/skills/<skill>` |
134
+ | `--junie` | `.junie/skills/<skill>` |
102
135
 
103
136
  ## lism.config.js
104
137
 
105
- `ui init` / `ui add` が生成・読み込む設定ファイル。CSS の設定(`tokens` 等)と CLI 設定を同居できます。
138
+ `ui add` が読み込む設定ファイル(新規作成するのは `init`)。CSSの設定(`tokens` 等)とUI設定を同居できます。
106
139
 
107
140
  ```js
108
141
  export default {
109
- cli: {
142
+ ui: {
110
143
  framework: 'react', // 'react' | 'astro'
111
- componentsDir: 'src/components/ui',
112
- helperDir: 'src/components/ui/_helper',
144
+ dir: 'src/components/ui',
113
145
  },
114
146
  };
115
147
  ```
116
148
 
117
- `lism.config.mjs` も同様に読み込まれます。旧 `lism-ui.json` は廃止予定(互換ロードのみ。起動時に deprecation 警告)。
149
+ helper の配置先は個別に設定できず、常に `{dir}/_helper` に固定されます。旧キー `ui.componentsDir` `ui.dir` が無い場合のみ後方互換として読み込まれます。
118
150
 
119
- > **Note:** TypeScript `lism.config.ts` は現在未対応です。`lism-css` 本体の設定読込(`@lism-css/plugin` / `lism-css build`)も `.ts` を読み込まない設計のため、設定ファイルは `.js` / `.mjs` で記述してください。
151
+ 設定ファイルは `lism.config.ts` / `lism.config.mjs` / `lism.config.js` に対応しており、この順で探索して最初に見つかったものを読み込みます。`lism-css` 本体の設定読込(`@lism-css/plugin` / `lism-css build`)も同じ探索順です。
152
+
153
+ 旧 `cli` セクション名も後方互換のため読み込めますが、deprecation警告が出るので `ui` へのリネームを推奨します。
120
154
 
121
155
  ## パッケージが見つからないエラーが出る場合
122
156
 
123
- npm / pnpm の Safe Supply Chain 機能により、公開から間もないパッケージがブロックされる場合があります。
157
+ npm / pnpmには、公開から間もないバージョンのインストールを一定期間ブロックする仕組みがあります(npmの`min-release-age`設定、pnpmの`minimumReleaseAge`設定)。公開直後の`lism-cli`を実行すると、このガードによりパッケージが見つからないエラーになる場合があります。次のように一時的に無効化して実行できます。
124
158
 
125
159
  ```bash
126
- npm exec --safe-chain-skip-minimum-package-age lism-cli create
127
- pnpm --safe-chain-skip-minimum-package-age dlx lism-cli create
160
+ npm exec --min-release-age 0 lism-cli create
161
+ pnpm dlx --config.minimumReleaseAge=0 lism-cli create
128
162
  ```
129
163
 
164
+ Aikido Securityのsafe-chainなど、サードパーティのサプライチェーン保護ツールを導入している場合は、そのツール側の設定(例: `SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=0`)も確認してください。
165
+
130
166
  ## License
131
167
 
132
168
  MIT
@@ -1,5 +1,29 @@
1
1
  // <define:__LISM_PACKAGE_VERSIONS__>
2
- var define_LISM_PACKAGE_VERSIONS_default = { "lism-css": "0.23.0", "@lism-css/ui": "0.23.0", "@lism-css/plugin": "0.3.0" };
2
+ var define_LISM_PACKAGE_VERSIONS_default = { "lism-css": "0.24.0", "@lism-css/ui": "0.24.0", "@lism-css/plugin": "0.3.0" };
3
+
4
+ // src/logger.ts
5
+ import pc from "picocolors";
6
+ var logger = {
7
+ info(msg) {
8
+ console.log(pc.cyan(msg));
9
+ },
10
+ success(msg) {
11
+ console.log(pc.green(msg));
12
+ },
13
+ warn(msg) {
14
+ console.log(pc.yellow(`WARN: ${msg}`));
15
+ },
16
+ error(msg) {
17
+ console.error(pc.red(`ERROR: ${msg}`));
18
+ },
19
+ log(msg) {
20
+ console.log(msg);
21
+ },
22
+ heading(msg) {
23
+ console.log(pc.bold(pc.cyan(`
24
+ \u25B8 ${msg}`)));
25
+ }
26
+ };
3
27
 
4
28
  // src/i18n.ts
5
29
  import { execFileSync } from "child_process";
@@ -34,31 +58,24 @@ var messages = {
34
58
  ja: "\u65E2\u5B58\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u5F37\u5236\u4E0A\u66F8\u304D",
35
59
  en: "Overwrite existing directory"
36
60
  },
61
+ // init
62
+ "cli.init.description": {
63
+ ja: "lism.config \u30D5\u30A1\u30A4\u30EB\u3092\u65B0\u898F\u751F\u6210\u3059\u308B",
64
+ en: "Generate a new lism.config file"
65
+ },
66
+ "cli.init.opt.uiFramework": {
67
+ ja: "UI \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\uFF08ui.framework\uFF09",
68
+ en: "Framework for UI components (ui.framework)"
69
+ },
70
+ "cli.init.opt.uiDir": {
71
+ ja: "UI \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u51FA\u529B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08ui.dir\uFF09",
72
+ en: "Output directory for UI components (ui.dir)"
73
+ },
37
74
  // ui
38
75
  "cli.ui.description": {
39
76
  ja: "Lism UI \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u8FFD\u52A0\u30FB\u7BA1\u7406",
40
77
  en: "Manage Lism UI components"
41
78
  },
42
- "cli.ui.init.description": {
43
- ja: "lism.config.js \u306E cli \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u751F\u6210\u3059\u308B",
44
- en: "Generate the cli section of lism.config.js"
45
- },
46
- "cli.ui.init.opt.framework": {
47
- ja: "\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",
48
- en: "Framework"
49
- },
50
- "cli.ui.init.opt.componentsDir": {
51
- ja: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u51FA\u529B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA",
52
- en: "Output directory for components"
53
- },
54
- "cli.ui.init.opt.helperDir": {
55
- ja: "helper \u306E\u51FA\u529B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA",
56
- en: "Output directory for helpers"
57
- },
58
- "cli.ui.init.opt.force": {
59
- ja: "\u65E2\u5B58\u306E cli \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u4E0A\u66F8\u304D",
60
- en: "Overwrite the existing cli section"
61
- },
62
79
  "cli.ui.add.description": {
63
80
  ja: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
64
81
  en: "Add components"
@@ -92,6 +109,10 @@ var messages = {
92
109
  ja: "\u30B9\u30AD\u30EB\u3092\u914D\u7F6E\u3059\u308B",
93
110
  en: "Deploy skills"
94
111
  },
112
+ "cli.skill.add.arg.skill": {
113
+ ja: "\u914D\u7F6E\u3059\u308B\u30B9\u30AD\u30EB\u540D\uFF08\u7701\u7565\u6642\u306F\u5168\u30B9\u30AD\u30EB\uFF09",
114
+ en: "Skill name to deploy (all skills if omitted)"
115
+ },
95
116
  "cli.skill.add.opt.overwrite": {
96
117
  ja: "\u78BA\u8A8D\u306A\u3057\u3067\u4E0A\u66F8\u304D",
97
118
  en: "Overwrite without confirmation"
@@ -212,17 +233,40 @@ var messages = {
212
233
  en: "Failed to rewrite package.json: {reason}"
213
234
  },
214
235
  // ---------------------------------------------------------------------------
236
+ // init
237
+ // ---------------------------------------------------------------------------
238
+ "init.alreadyExists": {
239
+ ja: "{filename} \u306F\u65E2\u306B\u5B58\u5728\u3059\u308B\u305F\u3081\u3001\u4F55\u3082\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
240
+ en: "{filename} already exists; nothing was changed."
241
+ },
242
+ "init.promptUseUi": {
243
+ ja: "Lism UI \u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3082\u4F7F\u3044\u307E\u3059\u304B\uFF1F\uFF08ui \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0\u3057\u307E\u3059\uFF09",
244
+ en: "Will you also use Lism UI components? (adds a ui section)"
245
+ },
246
+ "init.created": {
247
+ ja: "{path} \u3092\u4F5C\u6210\u3057\u307E\u3057\u305F\u3002",
248
+ en: "Created {path}."
249
+ },
250
+ "init.uiFrameworkRequired": {
251
+ ja: "\u975E\u5BFE\u8A71\u74B0\u5883\u3067\u306F --ui-dir \u5358\u72EC\u3067 ui \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002--ui-framework \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
252
+ en: "Cannot generate the ui section from --ui-dir alone in a non-interactive environment. Specify --ui-framework."
253
+ },
254
+ // ---------------------------------------------------------------------------
215
255
  // ui
216
256
  // ---------------------------------------------------------------------------
217
- // ui 共通(add / list で共有)
257
+ // ui 共通(add / init で共有)
258
+ "ui.promptFramework": {
259
+ ja: "\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",
260
+ en: "Select a framework:"
261
+ },
218
262
  "ui.catalogFailed": {
219
263
  ja: "\u30AB\u30BF\u30ED\u30B0\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F{refInfo}: {reason}",
220
264
  en: "Failed to fetch catalog{refInfo}: {reason}"
221
265
  },
222
266
  // ui add
223
267
  "ui.add.noConfig": {
224
- ja: "lism.config.js \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u958B\u59CB\u3057\u307E\u3059...\n",
225
- en: "lism.config.js not found. Starting setup...\n"
268
+ ja: "ui \u30BB\u30AF\u30B7\u30E7\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u3044\u304F\u3064\u304B\u8CEA\u554F\u3057\u307E\u3059\u3002",
269
+ en: "No ui section found. A few questions to get you started."
226
270
  },
227
271
  "ui.add.addingAll": {
228
272
  ja: "\u5168 {count} \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u8FFD\u52A0\u3057\u307E\u3059...",
@@ -288,46 +332,9 @@ var messages = {
288
332
  ja: " \u30B9\u30AD\u30C3\u30D7: {path}",
289
333
  en: " Skipped: {path}"
290
334
  },
291
- // ui init
292
- "ui.init.promptFramework": {
293
- ja: "\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",
294
- en: "Select a framework:"
295
- },
296
- "ui.init.promptComponentsDir": {
297
- ja: "\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u51FA\u529B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA:",
298
- en: "Output directory for components:"
299
- },
300
- "ui.init.promptHelperDir": {
301
- ja: "helper \u306E\u51FA\u529B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA:",
302
- en: "Output directory for helpers:"
303
- },
304
- "ui.init.patchedUpdate": {
305
- ja: "{path} \u306B cli \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F\u3002",
306
- en: "Updated the cli section in {path}."
307
- },
308
- "ui.init.patchedAdd": {
309
- ja: "{path} \u306B cli \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u8FFD\u8A18\u3057\u307E\u3057\u305F\u3002",
310
- en: "Added the cli section to {path}."
311
- },
312
- "ui.init.notPatched": {
313
- ja: "{path} \u306B\u65E2\u306B cli \u30BB\u30AF\u30B7\u30E7\u30F3\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u304B\u3001export default \u304C\u691C\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u624B\u52D5\u3067\u8FFD\u8A18\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
314
- en: "Either {path} already contains a cli section or no export default was detected. Please add it manually."
315
- },
316
- "ui.init.created": {
317
- ja: "{path} \u3092\u4F5C\u6210\u3057\u307E\u3057\u305F\u3002",
318
- en: "Created {path}."
319
- },
320
- "ui.init.legacyDetected": {
321
- ja: "{filename} \u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002lism.config.js \u3078\u79FB\u884C\u3057\u307E\u3059\u3002\u53E4\u3044\u30D5\u30A1\u30A4\u30EB\u306F\u5F8C\u3067\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
322
- en: "Detected {filename}. Migrating to lism.config.js. Please remove the old file afterwards."
323
- },
324
- "ui.init.alreadyExists": {
325
- ja: "{filename} \u306B\u306F\u65E2\u306B cli \u30BB\u30AF\u30B7\u30E7\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3059\u308B\u306B\u306F --force \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
326
- en: "{filename} already has a cli section. Use --force to overwrite."
327
- },
328
- "ui.init.willOverwrite": {
329
- ja: "{filename} \u306E\u65E2\u5B58\u306E cli \u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002",
330
- en: "Overwriting the existing cli section in {filename}."
335
+ "ui.add.snippetGuide": {
336
+ ja: "\u6B21\u56DE\u304B\u3089\u540C\u3058\u8CEA\u554F\u3092\u3055\u308C\u306A\u3044\u305F\u3081\u306B\u3001{filename} \u306E export default \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u5185\u306B\u4EE5\u4E0B\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044:\n\n{snippet}\n",
337
+ en: "To avoid being asked these questions again, paste the following inside the exported config object in {filename}:\n\n{snippet}\n"
331
338
  },
332
339
  // ui list
333
340
  "ui.list.fetching": {
@@ -359,8 +366,12 @@ var messages = {
359
366
  en: "No target tools were selected."
360
367
  },
361
368
  "skill.add.fetching": {
362
- ja: "\u30B9\u30AD\u30EB\u3092\u53D6\u5F97\u4E2D\uFF08ref: {ref}\uFF09...",
363
- en: "Fetching skills (ref: {ref})..."
369
+ ja: "\u30B9\u30AD\u30EB {skill} \u3092\u53D6\u5F97\u4E2D\uFF08ref: {ref}\uFF09...",
370
+ en: "Fetching skill {skill} (ref: {ref})..."
371
+ },
372
+ "skill.unknownSkill": {
373
+ ja: '\u30B9\u30AD\u30EB "{name}" \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u5229\u7528\u53EF\u80FD: {list}',
374
+ en: 'Unknown skill "{name}". Available: {list}'
364
375
  },
365
376
  "skill.add.skippedSame": {
366
377
  ja: " \u30B9\u30AD\u30C3\u30D7\uFF08\u5DEE\u5206\u306A\u3057\uFF09: {label}",
@@ -400,8 +411,8 @@ var messages = {
400
411
  en: "No installed skills found. Run `{invoke} skill add` to deploy them."
401
412
  },
402
413
  "skill.check.fetching": {
403
- ja: "\u30EA\u30E2\u30FC\u30C8\u30B9\u30AD\u30EB\u3092\u53D6\u5F97\u4E2D\uFF08ref: {ref}\uFF09...",
404
- en: "Fetching remote skills (ref: {ref})..."
414
+ ja: "\u30EA\u30E2\u30FC\u30C8\u30B9\u30AD\u30EB {skill} \u3092\u53D6\u5F97\u4E2D\uFF08ref: {ref}\uFF09...",
415
+ en: "Fetching remote skill {skill} (ref: {ref})..."
405
416
  },
406
417
  "skill.check.upToDate": {
407
418
  ja: " \u2713 {label} (\u6700\u65B0)",
@@ -412,8 +423,8 @@ var messages = {
412
423
  en: "All skills are up to date."
413
424
  },
414
425
  "skill.check.outdated": {
415
- ja: "{count} \u4EF6\u306E\u30C4\u30FC\u30EB\u306B\u5DEE\u5206\u304C\u3042\u308A\u307E\u3059\u3002`{invoke} skill update` \u3067\u6700\u65B0\u306B\u66F4\u65B0\u3067\u304D\u307E\u3059\u3002",
416
- en: "{count} tools have changes. Run `{invoke} skill update` to update them."
426
+ ja: "{count} \u4EF6\u306E\u914D\u7F6E\u306B\u5DEE\u5206\u304C\u3042\u308A\u307E\u3059\u3002`{invoke} skill update` \u3067\u6700\u65B0\u306B\u66F4\u65B0\u3067\u304D\u307E\u3059\u3002",
427
+ en: "{count} deployment(s) differ from the remote. Run `{invoke} skill update` to update them."
417
428
  },
418
429
  "skill.check.diffModified": {
419
430
  ja: "\u5909\u66F4 {count}",
@@ -430,34 +441,26 @@ var messages = {
430
441
  // ---------------------------------------------------------------------------
431
442
  // config
432
443
  // ---------------------------------------------------------------------------
433
- "config.legacyWarning": {
434
- ja: '[deprecated] {filename} \u306F\u5EC3\u6B62\u4E88\u5B9A\u3067\u3059\u3002"{invoke} ui init" \u3067 lism.config.js \u3078\u79FB\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002',
435
- en: '[deprecated] {filename} is deprecated. Run "{invoke} ui init" to migrate to lism.config.js.'
436
- },
437
- "config.notFound": {
438
- ja: "lism.config.js / lism.config.mjs / lism-ui.json \u306E\u3044\u305A\u308C\u3082\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",
439
- en: "None of lism.config.js / lism.config.mjs / lism-ui.json were found."
440
- },
441
- "config.cliSectionMissing": {
442
- ja: "{filename} \u304B\u3089 CLI \u8A2D\u5B9A\uFF08cli \u30AD\u30FC\uFF09\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
443
- en: "Failed to read the CLI config (cli key) from {filename}."
444
- },
445
444
  "config.invalidFramework": {
446
- ja: 'cli.framework \u306F "react" \u307E\u305F\u306F "astro" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002',
447
- en: 'cli.framework must be "react" or "astro".'
445
+ ja: 'ui.framework \u306F "react" \u307E\u305F\u306F "astro" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002',
446
+ en: 'ui.framework must be "react" or "astro".'
448
447
  },
449
- "config.invalidComponentsDir": {
450
- ja: "cli.componentsDir \u306F\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
451
- en: "cli.componentsDir must be a string."
448
+ "config.invalidDir": {
449
+ ja: "ui.dir \u306F\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
450
+ en: "ui.dir must be a string."
452
451
  },
453
- "config.invalidHelperDir": {
454
- ja: "cli.helperDir \u306F\u6587\u5B57\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
455
- en: "cli.helperDir must be a string."
452
+ "config.cliKeyDeprecated": {
453
+ ja: '[deprecated] {filename} \u306E "cli:" \u30AD\u30FC\u306F "ui:" \u3078\u306E\u5909\u66F4\u304C\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u3059\u3002',
454
+ en: '[deprecated] The "cli:" key in {filename} is recommended to be renamed to "ui:".'
456
455
  },
457
456
  "config.loadFailed": {
458
457
  ja: "{path} \u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u69CB\u6587\u30A8\u30E9\u30FC\u7B49\uFF09\u3002\u4FEE\u6B63\u3057\u3066\u304B\u3089\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044: {reason}",
459
458
  en: "Failed to load {path} (syntax error, etc). Please fix it and retry: {reason}"
460
459
  },
460
+ "config.freshConfigExists": {
461
+ ja: "{path} \u306F\u65E2\u306B\u5B58\u5728\u3059\u308B\u305F\u3081\u65B0\u898F\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002",
462
+ en: "Cannot create {path} because it already exists."
463
+ },
461
464
  // ---------------------------------------------------------------------------
462
465
  // common
463
466
  // ---------------------------------------------------------------------------
@@ -543,36 +546,12 @@ import path from "path";
543
546
  import { downloadTemplate } from "giget";
544
547
  import { select, input, confirm } from "@inquirer/prompts";
545
548
 
546
- // src/logger.ts
547
- import pc from "picocolors";
548
- var logger = {
549
- info(msg) {
550
- console.log(pc.cyan(msg));
551
- },
552
- success(msg) {
553
- console.log(pc.green(msg));
554
- },
555
- warn(msg) {
556
- console.log(pc.yellow(`WARN: ${msg}`));
557
- },
558
- error(msg) {
559
- console.error(pc.red(`ERROR: ${msg}`));
560
- },
561
- log(msg) {
562
- console.log(msg);
563
- },
564
- heading(msg) {
565
- console.log(pc.bold(pc.cyan(`
566
- \u25B8 ${msg}`)));
567
- }
568
- };
569
-
570
549
  // src/version.ts
571
- var LISM_CSS_VERSION = "0.23.0" ? "0.23.0" : "unknown";
550
+ var LISM_CSS_VERSION = "0.24.0" ? "0.24.0" : "unknown";
572
551
  var LISM_PACKAGE_VERSIONS = typeof define_LISM_PACKAGE_VERSIONS_default !== "undefined" && define_LISM_PACKAGE_VERSIONS_default ? define_LISM_PACKAGE_VERSIONS_default : {
573
552
  "lism-css": LISM_CSS_VERSION
574
553
  };
575
- var CLI_VERSION = "0.7.0" ? "0.7.0" : "unknown";
554
+ var CLI_VERSION = "0.8.0" ? "0.8.0" : "unknown";
576
555
 
577
556
  // src/constants.ts
578
557
  var SOURCE_REPO = "lism-css/lism-css";
@@ -584,7 +563,8 @@ var DEFAULT_TEMPLATES_REF = "main";
584
563
  var UI_COMPONENTS_PATH = "packages/lism-ui/src/components";
585
564
  var UI_HELPER_PATH = "packages/lism-ui/src/helper";
586
565
  var UI_REGISTRY_INDEX_PATH = "packages/lism-ui/registry-index.json";
587
- var SKILL_SOURCE_PATH = "skills/lism-css-guide";
566
+ var SKILL_SOURCE_BASE = "skills";
567
+ var SKILL_NAMES = ["lism-css-guide", "lism-css-refactor"];
588
568
  var TEMPLATES_PATH = "templates";
589
569
 
590
570
  // ../../templates/manifest.ts
@@ -1173,7 +1153,8 @@ export {
1173
1153
  UI_COMPONENTS_PATH,
1174
1154
  UI_HELPER_PATH,
1175
1155
  UI_REGISTRY_INDEX_PATH,
1176
- SKILL_SOURCE_PATH,
1156
+ SKILL_SOURCE_BASE,
1157
+ SKILL_NAMES,
1177
1158
  CLI_VERSION,
1178
1159
  runCreate,
1179
1160
  createCommand