@vibe-coder/cli 1.0.2 โ†’ 1.0.4

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.
Files changed (5) hide show
  1. package/README.md +155 -142
  2. package/README.zh.md +154 -140
  3. package/bin/vibe +14 -14
  4. package/dist/cli.js +121 -23
  5. package/package.json +1 -1
package/README.md CHANGED
@@ -1,142 +1,155 @@
1
- <div align="center">
2
-
3
- # ๐ŸŒŠ Vibe Coding CLI
4
-
5
- **A vibe coding ecosystem builder tailored for OpenCode**
6
-
7
- [![npm version](https://img.shields.io/npm/v/@vibe-coder/cli.svg?style=flat-square)](https://www.npmjs.com/package/@vibe-coder/cli)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](../../LICENSE.md)
9
- [![Built with Bun](https://img.shields.io/badge/Bun-%23000000.svg?style=flat-square&logo=bun&logoColor=white)](https://bun.sh)
10
-
11
- **English** ยท [็ฎ€ไฝ“ไธญๆ–‡](https://github.com/HelloGGX/skill/blob/main/packages/vibe/README.zh.md)
12
-
13
- > *Seamlessly aggregate AI tools and context rules, making your Agent truly understand your codebase.*
14
-
15
- </div>
16
-
17
- ## ๐Ÿ“– Introduction
18
-
19
- `@vibe-coder/cli` is a modern command-line scaffolding tool built specifically for the **OpenCode** platform. Its core objective is to quickly set up a Vibe Coding development environment and simplify resource management for specification-driven development.
20
-
21
- With the `vibe` command, you can pull TypeScript/Python tool scripts or Markdown rule files from remote GitHub repositories with a single click. It seamlessly registers them into your OpenCode configuration and manages the underlying runtime dependency environments, allowing you to focus entirely on "co-creating code with AI."
22
-
23
- ## โœจ Features
24
-
25
- * ๐Ÿ›  **Fully Automated Tool Management:** Quickly parse, select, and download `.ts` / `.py` scripts from any GitHub repository straight to your local setup, ready to use out of the box.
26
- * ๐Ÿ“œ **Context & Capabilities United:** A unique ecosystem aggregation capability that perfectly blends the **tools/skills** needed for Agent execution with your **guidelines and best practices**. Supports on-demand installation of `.md` rule files so the AI truly understands your architectural intent.
27
- * ๐Ÿ“ฆ **Smart Configuration Injection:** Automatically intercepts and updates `.opencode/opencode.jsonc`, silently injecting tool enable-switches and Prompt instruction paths. Say goodbye to manual configuration forever.
28
- * โšก **Lightning-Fast Parallel Updates:** Designed with a concurrency model to simultaneously handle resource comparison and pulling from multiple source repositories, drastically reducing update wait times.
29
- * ๐Ÿช„ **Standard Skills Aggregation:** Deeply integrated with Vercel's `pnpx skills` ecosystem, allowing you to manage standard Agent skill libraries alongside local extension resources within a unified CLI workflow.
30
-
31
- ---
32
-
33
- ## ๐Ÿš€ Quick Start
34
-
35
- ### Prerequisites
36
-
37
- * [Node.js](https://www.google.com/search?q=https://nodejs.org/) >= 18.0.0 or [Bun](https://bun.sh/) >= 1.0.0
38
-
39
- ### Installation
40
-
41
- Install as a global package:
42
-
43
- ```bash
44
- # Using npm
45
- npm i -g @vibe-coder/cli
46
-
47
- # Using bun
48
- bun add -g @vibe-coder/cli
49
- ```
50
-
51
- ### Basic Usage
52
-
53
- Initialize and add an ecosystem library (e.g., `helloggx/skill` from this project):
54
-
55
- ```bash
56
- vibe add helloggx/skill
57
- ```
58
-
59
- *The CLI will pop up an interactive menu, allowing you to flexibly select the **Tools** and **Rules** you want to install, automatically configuring the entire environment for you.*
60
-
61
- ---
62
-
63
- ## ๐Ÿ“š Commands
64
-
65
- | Command | Alias | Description |
66
- | --- | --- | --- |
67
- | `vibe add <repo>` | `a` | Parses the target GitHub repository, pops up a UI list, installs selected tools and rules on demand, and automatically injects configurations. |
68
- | `vibe list` | `ls` | Prints a clear status map of all installed resources (local tools, context rules, global standard skills) in the current project. |
69
- | `vibe update` | `up` | Concurrently pulls all source repositories recorded in `vibe-lock.json`, intelligently comparing and overwriting local scripts and rules. |
70
- | `vibe remove [resource]` | `rm` | **No arguments:** Opens a UI multi-select list to remove local items.<br>
71
-
72
- <br>**With arguments:** Quickly matches and removes specified standard skills or local tools, cleaning up configurations synchronously. |
73
-
74
- ---
75
-
76
- ## ๐Ÿ—๏ธ Build Your Own Resource Repository
77
-
78
- We highly encourage you or your team to create a dedicated Vibe Coding resource repository on GitHub to standardize your favorite AI tools and custom coding guidelines across all your projects.
79
-
80
- ### Recommended Directory Structure
81
-
82
- To ensure perfect compatibility with `@vibe-coder/cli`, we recommend the following convention (referencing the `helloggx/skill` repository):
83
-
84
- ```text
85
- your-custom-repo/
86
- โ”œโ”€โ”€ skill/ # (Optional) Standard Vercel AI Agent skills
87
- โ”œโ”€โ”€ tool/ # Custom TS/Python executable tools
88
- โ”‚ โ”œโ”€โ”€ get_dsl.ts
89
- โ”‚ โ”œโ”€โ”€ get_dsl.py # ๐Ÿ’ก Python scripts should share the exact name as the TS tool calling them
90
- โ”‚ โ””โ”€โ”€ shadcn_vue_init.ts
91
- โ””โ”€โ”€ rules/ # Personalized Markdown context rules
92
- โ”œโ”€โ”€ common/ # Global rules applicable to all projects
93
- โ”‚ โ”œโ”€โ”€ coding-style.md
94
- โ”‚ โ””โ”€โ”€ security.md
95
- โ””โ”€โ”€ typescript/ # Tech-stack specific rules
96
- โ””โ”€โ”€ coding-style.md # ๐Ÿ’ก Recommended to share the name with the extended common rule
97
-
98
- ```
99
-
100
- ### Organization Best Practices
101
-
102
- * **Cross-Language Tool Linkage**: If your `.ts` tool script relies on an underlying `.py` script, **ensure both files share the exact same base name** (e.g., `get_dsl.ts` and `get_dsl.py`). The CLI intelligently detects and pulls both files together.
103
- * **Rule Inheritance & Overrides**:
104
- * Always place your global, universal coding rules in the `rules/common/` directory.
105
- * When creating tech-stack specific rules (e.g., under `rules/typescript/`) that need to inherit from a `common` rule, it is highly recommended to **use the exact same file name** and explicitly state the inheritance at the top of the file:
106
- *> This file extends [common/coding-style.md](https://www.google.com/search?q=../common/coding-style.md) with TypeScript specific content.*
107
-
108
-
109
-
110
- ---
111
-
112
- ## ๐Ÿ“‚ Workspace Structure
113
-
114
- After running `vibe add`, the tool will automatically take over and maintain the following structure in your project's root directory:
115
-
116
- ```text
117
- your-project/
118
- โ”œโ”€โ”€ .opencode/
119
- โ”‚ โ”œโ”€โ”€ tool/ # Pulled underlying .ts / .py tool scripts
120
- โ”‚ โ”œโ”€โ”€ rules/ # Pulled .md rule files (categorized by type)
121
- โ”‚ โ”œโ”€โ”€ opencode.jsonc # Core OpenCode config (CLI auto-injects tool switches and paths)
122
- โ”‚ โ””โ”€โ”€ vibe-lock.json # State lock file, accurately recording resource sources and versions
123
- โ”œโ”€โ”€ .venv/ # (Auto-created as needed) Isolated Python virtual environment
124
- โ””โ”€โ”€ requirements.txt # (Auto-maintained as needed) Python script dependencies
125
- ```
126
-
127
- ---
128
-
129
- ## ๐Ÿ› ๏ธ Development
130
-
131
- This project is built on top of the lightning-fast [Bun](https://bun.sh/) runtime.
132
-
133
- ```bash
134
- bun install # 1. Install dependencies
135
- bun run dev --help # 2. Local debugging
136
- bun run typecheck # 3. Type checking
137
- bun run build # 4. Build production version (outputs to ./dist)
138
- ```
139
-
140
- ## ๐Ÿ“„ License
141
-
142
- [MIT License](https://www.google.com/search?q=../../LICENSE.md) ยฉ 2026 [HelloGGX](https://github.com/HelloGGX)
1
+ <div align="center">
2
+
3
+ # ๐ŸŒŠ Vibe Coding CLI
4
+
5
+ **The vibe coding ecosystem builder, specifically designed for OpenCode.**
6
+
7
+ [![vibe-coding: enabled](https://img.shields.io/badge/vibe--coding-enabled-BD00FF?style=flat-square&logo=github&logoColor=white&labelColor=2D3748)](https://github.com/HelloGGX/vibe-coding-cli)
8
+ [![npm version](https://img.shields.io/npm/v/@vibe-coder/cli.svg?style=flat-square)](https://www.npmjs.com/package/@vibe-coder/cli)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](../../LICENSE.md)
10
+ [![Built with Bun](https://img.shields.io/badge/Bun-%23000000.svg?style=flat-square&logo=bun&logoColor=white)](https://bun.sh)
11
+
12
+ **English** ยท [็ฎ€ไฝ“ไธญๆ–‡](https://github.com/HelloGGX/skill/blob/main/packages/vibe/README.zh.md)
13
+
14
+ > *One-click aggregation of AI tools and contextual rules, enabling Agents to truly understand your codebase architecture.*
15
+
16
+ </div>
17
+
18
+ ## ๐Ÿ“– Introduction
19
+
20
+ `@vibe-coder/cli` is a modern command-line scaffolding tool built specifically for the **OpenCode** platform. Its core mission is to quickly set up a Vibe Coding development environment and simplify resource management for rule-driven development.
21
+
22
+ With the `vibe` command, you can pull TypeScript/Python tool scripts or Markdown rule files from remote GitHub repositories with a single click. These are seamlessly and automatically registered into your OpenCode configuration while managing underlying runtime dependencies, allowing you to focus entirely on **"co-creating code with AI."**
23
+
24
+ ## โœจ Features
25
+
26
+ * ๐Ÿ›  **Fully Automated Tool Management**: Rapidly parse, multi-select, and download `.ts` / `.py` scripts from any GitHub repository for out-of-the-box local usage.
27
+ * ๐Ÿ“œ **Perfect Fusion of Context and Capabilities**: Innovative ecosystem aggregation that deeply binds the **tool skills** required by Agents with your **behavioral guidelines**. Supports on-demand installation of `.md` rule files, ensuring AI truly understands your architectural intent.
28
+ * ๐Ÿ“ฆ **Smart Configuration Injection**: Automatically intercepts and updates `.opencode/opencode.jsonc`, silently injecting tool toggles and prompt directive paths. Say goodbye to tedious manual configuration.
29
+ * โšก **Blazing Fast Parallel Updates**: Designed with a concurrency model to simultaneously process resource comparisons and pulls across multiple source repositories, drastically reducing update wait times.
30
+ * ๐Ÿช„ **Standard Skill Aggregation**: Deeply integrated with Vercel's `pnpx skills` ecosystem, allowing you to manage both standard Agent skill libraries and local extension resources within a unified CLI workflow.
31
+
32
+ ---
33
+
34
+ ## ๐Ÿš€ Quick Start
35
+
36
+ ### Prerequisites
37
+
38
+ * [Node.js](https://nodejs.org/) >= 18.0.0 or [Bun](https://bun.sh/) >= 1.0.0
39
+
40
+ ### Installation
41
+
42
+ Install globally:
43
+
44
+ ```bash
45
+ # Using npm
46
+ npm i -g @vibe-coder/cli
47
+
48
+ # Using bun
49
+ bun add -g @vibe-coder/cli
50
+ ```
51
+
52
+ ### Basic Usage
53
+
54
+ Initialize and add an ecosystem repository (e.g., `helloggx/skill` from this project):
55
+
56
+ ```bash
57
+ vibe add helloggx/skill
58
+ ```
59
+
60
+ *The CLI will launch an interactive menu, allowing you to flexibly multi-select the **Tools** and **Rules** you want to install, and will automatically handle all environment configurations for you.*
61
+
62
+ ---
63
+
64
+ ## ๐Ÿ“š Commands
65
+
66
+ | Command | Alias | Description |
67
+ | --- | --- | --- |
68
+ | `vibe add <repo>` | `a` | Parses the target GitHub repo, launches a UI list for on-demand installation of tools/rules, and auto-injects configurations. |
69
+ | `vibe list` | `ls` | Prints a clear status map of all installed resources (local tools, context rules, global standard skills) in the current project. |
70
+ | `vibe update` | `up` | Concurrently pulls all source repositories listed in `vibe-lock.json` with one click, intelligently comparing and overwriting local scripts and rules. |
71
+ | `vibe remove [resource]` | `rm` | **Run without args**: Launches a UI multi-select list to delete local items.<br>
72
+
73
+ <br>
74
+
75
+ <br>**Run with args**: Quickly matches and removes specified standard skills or local tools, synchronously cleaning up configurations. |
76
+ ---
77
+
78
+ ## ๐Ÿ—๏ธ Build Your Own Resource Repository
79
+
80
+ We strongly encourage you or your team to create dedicated Vibe Coding resource repositories on GitHub to standardize your team's favorite AI tools and custom coding conventions across all projects.
81
+
82
+ ### Recommended Directory Structure
83
+
84
+ To ensure perfect compatibility with `@vibe-coder/cli`, we recommend adopting the following conventions (refer to `helloggx/skill`):
85
+
86
+ ```text
87
+ your-custom-repo/
88
+ โ”œโ”€โ”€ skill/ # (Optional) Standard Vercel AI Agent skill library
89
+ โ”œโ”€โ”€ tool/ # Custom TS/Python executable tools
90
+ โ”‚ โ”œโ”€โ”€ get_dsl.ts
91
+ โ”‚ โ”œโ”€โ”€ get_dsl.py # ๐Ÿ’ก Python scripts should share the same name as the TS tool calling them
92
+ โ”‚ โ””โ”€โ”€ shadcn_vue_init.ts
93
+ โ””โ”€โ”€ rules/ # Personalized Markdown context rules
94
+ โ”œโ”€โ”€ common/ # Global common rules applicable to all projects
95
+ โ”‚ โ”œโ”€โ”€ coding-style.md
96
+ โ”‚ โ””โ”€โ”€ security.md
97
+ โ””โ”€โ”€ typescript/ # Tech-stack specific rules
98
+ โ””โ”€โ”€ coding-style.md # ๐Ÿ’ก Recommended to share the same name as the extended common rule
99
+
100
+ ```
101
+
102
+ ### Organization Best Practices
103
+
104
+ * **Cross-language tool linkage**: If your `.ts` tool relies on an underlying `.py` script, **ensure the base names of both files are exactly the same** (e.g., `get_dsl.ts` and `get_dsl.py`). The CLI will intelligently recognize and pull them together.
105
+ * **Rule inheritance and extension**:
106
+ * Global common rules must be placed under `rules/common/`.
107
+ * When writing rules for a specific tech stack (e.g., `rules/typescript/`), if you need to inherit a `common` rule, it is recommended to **keep the same name** and explicitly declare the inheritance at the top of the file:
108
+ *> This file extends [common/coding-style.md](https://www.google.com/search?q=../common/coding-style.md) and adds TS-specific content.*
109
+
110
+ ---
111
+
112
+ ## ๐Ÿ“‚ Workspace Structure
113
+
114
+ After running `vibe add`, the tool will automatically take over and maintain the following structure in your project's root directory:
115
+
116
+ ```text
117
+ your-project/
118
+ โ”œโ”€โ”€ .opencode/
119
+ โ”‚ โ”œโ”€โ”€ tool/ # Underlying .ts / .py tool scripts
120
+ โ”‚ โ”œโ”€โ”€ rules/ # .md rule files (archived by category)
121
+ โ”‚ โ”œโ”€โ”€ opencode.jsonc # Core OpenCode configuration (CLI auto-injects tool toggles & directive paths)
122
+ โ”‚ โ””โ”€โ”€ vibe-lock.json # State lock file, accurately recording resource origins and versions
123
+ โ”œโ”€โ”€ .venv/ # (Created on demand) Isolated Python virtual environment
124
+ โ””โ”€โ”€ requirements.txt # (Maintained on demand) Python script dependency list
125
+
126
+ ```
127
+
128
+ ---
129
+
130
+ ## ๐Ÿค Join the Ecosystem
131
+
132
+ If your open-source project (like Agent Skills, Tools, or Rules) is compatible with and utilizes the vibe-coding specification, you are welcome to add this exclusive badge to your `README.md` to show off your modern workflow to the community!
133
+
134
+ Copy the following Markdown code to add it to your project:
135
+
136
+ ```markdown
137
+ [![vibe-coding: enabled](https://img.shields.io/badge/vibe--coding-enabled-BD00FF?style=flat-square&logo=github&logoColor=white&labelColor=2D3748)](https://github.com/HelloGGX/vibe-coding-cli)
138
+ ```
139
+
140
+ *(By adding the badge, you'll have the opportunity to be featured in the official Hall of Fame curated list!)*
141
+
142
+ ## ๐Ÿ› ๏ธ Development
143
+
144
+ This project is built on top of the blazing-fast [Bun](https://bun.sh/) runtime.
145
+
146
+ ```bash
147
+ bun install # 1. Install dependencies
148
+ bun run dev --help # 2. Local debugging
149
+ bun run typecheck # 3. Type checking
150
+ bun run build # 4. Build production version (outputs to ./dist)
151
+ ```
152
+
153
+ ## ๐Ÿ“„ License
154
+
155
+ [MIT License](https://www.google.com/search?q=../../LICENSE.md) ยฉ 2026 [HelloGGX](https://github.com/HelloGGX)
package/README.zh.md CHANGED
@@ -1,140 +1,154 @@
1
- <div align="center">
2
-
3
- # ๐ŸŒŠ Vibe Coding CLI
4
-
5
- **ไธ“ไธบ OpenCode ๆ‰“้€ ็š„ vibe coding ็”Ÿๆ€ๆž„ๅปบๅทฅๅ…ท**
6
-
7
- [![npm version](https://img.shields.io/npm/v/@vibe-coder/cli.svg?style=flat-square)](https://www.npmjs.com/package/@vibe-coder/cli)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](../../LICENSE.md)
9
- [![Built with Bun](https://img.shields.io/badge/Bun-%23000000.svg?style=flat-square&logo=bun&logoColor=white)](https://bun.sh)
10
-
11
- [English](https://github.com/HelloGGX/skill/blob/main/packages/vibe/README.md) ยท **็ฎ€ไฝ“ไธญๆ–‡**
12
-
13
- > *ไธ€้”ฎ่šๅˆ AI ๅทฅๅ…ทไธŽไธŠไธ‹ๆ–‡่ง„่Œƒ๏ผŒ่ฎฉ Agent ็œŸๆญฃๆ‡‚ไฝ ็š„ไปฃ็ ๆžถๆž„ใ€‚*
14
-
15
- </div>
16
-
17
- ## ๐Ÿ“– ็ฎ€ไป‹ (Introduction)
18
-
19
- `@vibe-coder/cli` ๆ˜ฏไธ€ไธชไธ“ไธบ **OpenCode** ๅนณๅฐๆ‰“้€ ็š„็Žฐไปฃๅ‘ฝไปค่กŒ่„šๆ‰‹ๆžถๅทฅๅ…ทใ€‚ๅฎƒ็š„ๆ ธๅฟƒ็›ฎๆ ‡ๆ˜ฏๅฟซ้€Ÿๆญๅปบ Vibe Coding ็š„ๅผ€ๅ‘็Žฏๅขƒ๏ผŒ็ฎ€ๅŒ–่ง„่Œƒ้ฉฑๅŠจๅผ€ๅ‘็š„่ต„ๆบ็ฎก็†ใ€‚
20
-
21
- ้€š่ฟ‡ `vibe` ๅ‘ฝไปค๏ผŒไฝ ๅฏไปฅไธ€้”ฎๆ‹‰ๅ–่ฟœ็จ‹ GitHub ไป“ๅบ“ไธญ็š„ TypeScript/Python ๅทฅๅ…ท่„šๆœฌๆˆ– Markdown ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒ่‡ชๅŠจๆ— ็ผๆณจๅ†Œๅˆฐ OpenCode ้…็ฝฎไธญ๏ผŒๅนถๆŽฅ็ฎกๅบ•ๅฑ‚่ฟ่กŒไพ่ต–๏ผŒ่ฎฉไฝ ไธ“ๆณจไบŽ**โ€œไธŽ AI ๅ…ฑๅˆ›ไปฃ็ โ€**ๆœฌ่บซใ€‚
22
-
23
- ## โœจ ๆ ธๅฟƒ็‰นๆ€ง (Features)
24
-
25
- - ๐Ÿ›  **ๅ…จ่‡ชๅŠจๅŒ–ๅทฅๅ…ท็ฎก็†**: ๆ”ฏๆŒไปŽไปปๆ„ GitHub ไป“ๅบ“ๅฟซ้€Ÿ่งฃๆžใ€ๅคš้€‰ๅนถไธ‹่ฝฝ `.ts` / `.py` ่„šๆœฌ่‡ณๆœฌๅœฐๅผ€็ฎฑๅณ็”จใ€‚
26
- - ๐Ÿ“œ **Context ไธŽ Capabilities ๅฎŒ็พŽ่žๅˆ**: ็‹ฌๅˆ›็”Ÿๆ€่šๅˆ่ƒฝๅŠ›๏ผŒๅฐ† Agent ๆ‰ง่กŒๆ‰€้œ€็š„**ๅทฅๅ…ทๆŠ€่ƒฝ**ไธŽ**่กŒไธบๅ‡†ๅˆ™**ๆทฑๅบฆ็ป‘ๅฎšใ€‚ๆ”ฏๆŒๆŒ‰้œ€ๅฎ‰่ฃ… `.md` ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒ่ฎฉ AI ็œŸๆญฃๆ‡‚ไฝ ็š„ๆžถๆž„ๆ„ๅ›พใ€‚
27
- - ๐Ÿ“ฆ **ๆ™บ่ƒฝ้…็ฝฎๆณจๅ…ฅ**: ่‡ชๅŠจๆ‹ฆๆˆชๅนถๆ›ดๆ–ฐ `.opencode/opencode.jsonc`๏ผŒๆ— ๆ„Ÿๆณจๅ…ฅๅทฅๅ…ทๅผ€ๅ…ณไธŽ Prompt ๆŒ‡ไปค่ทฏๅพ„๏ผŒๅ‘Šๅˆซ็น็็š„ๆ‰‹ๅŠจ้…็ฝฎใ€‚
28
- - โšก **ๅนถ่กŒๆž้€Ÿๆ›ดๆ–ฐ**: ๅŸบไบŽๅนถๅ‘ๆจกๅž‹่ฎพ่ฎก๏ผŒๅŒๆ—ถๅค„็†ๅคšไธชๆบไป“ๅบ“็š„่ต„ๆบๅฏนๆฏ”ไธŽๆ‹‰ๅ–๏ผŒๅคงๅน…็ผฉ็Ÿญๆ›ดๆ–ฐ็ญ‰ๅพ…ๆ—ถ้—ดใ€‚
29
- - ๐Ÿช„ **ๆ ‡ๅ‡†ๆŠ€่ƒฝ่šๅˆ**: ไธŽ Vercel ็š„ `pnpx skills` ็”Ÿๆ€ๆทฑๅบฆ้›†ๆˆ๏ผŒๅœจ็ปŸไธ€็š„ CLI ๆต็จ‹ไธญๅŒๆ—ถ็ฎก็†ๆ ‡ๅ‡† Agent ๆŠ€่ƒฝๅบ“ๅ’Œๆœฌๅœฐๆ‰ฉๅฑ•่ต„ๆบใ€‚
30
-
31
- ---
32
-
33
- ## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹ (Quick Start)
34
-
35
- ### ็Žฏๅขƒ่ฆๆฑ‚ (Prerequisites)
36
- - [Node.js](https://nodejs.org/) >= 18.0.0 ๆˆ– [Bun](https://bun.sh/) >= 1.0.0
37
-
38
- ### ๅฎ‰่ฃ…
39
-
40
- ไฝœไธบๅ…จๅฑ€ๅŒ…ๅฎ‰่ฃ…๏ผš
41
-
42
- ```bash
43
- # ไฝฟ็”จ npm
44
- npm i -g @vibe-coder/cli
45
-
46
- # ไฝฟ็”จ bun
47
- bun add -g @vibe-coder/cli
48
- ```
49
-
50
- ### ๅŸบ็ก€็”จๆณ•
51
-
52
- ๅˆๅง‹ๅŒ–ๅนถๆทปๅŠ ไธ€ไธช็”Ÿๆ€ๅบ“๏ผˆไพ‹ๅฆ‚ๆœฌ้กน็›ฎ็š„ `helloggx/skill`๏ผ‰๏ผš
53
-
54
- ```bash
55
- vibe add helloggx/skill
56
- ```
57
-
58
- *CLI ๅฐ†ๅ”ค่ตทไบคไบ’ๅผ่œๅ•๏ผŒๅ…่ฎธไฝ ็ตๆดปๅคš้€‰ๆƒณ่ฆๅฎ‰่ฃ…็š„ **Tools (ๅทฅๅ…ท)** ๅ’Œ **Rules (่ง„ๅˆ™)**๏ผŒๅนถ่‡ชๅŠจไธบไฝ ๅฎŒๆˆๆ‰€ๆœ‰็Žฏๅขƒ้…็ฝฎใ€‚*
59
-
60
- ---
61
-
62
- ## ๐Ÿ“š ๅ‘ฝไปคๆŒ‡ๅ— (Commands)
63
-
64
- | ๅ‘ฝไปค | ๅˆซๅ | ๅŠŸ่ƒฝๆ่ฟฐ |
65
- | --- | --- | --- |
66
- | `vibe add <repo>` | `a` | ่งฃๆž็›ฎๆ ‡ GitHub ไป“ๅบ“๏ผŒๅ”ค่ตท UI ๅˆ—่กจ๏ผŒๆŒ‰้œ€ๅฎ‰่ฃ…ๅทฅๅ…ทๅ’Œ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒๅนถ่‡ชๅŠจๆณจๅ…ฅ้…็ฝฎใ€‚ |
67
- | `vibe list` | `ls` | ๆธ…ๆ™ฐๆ‰“ๅฐๅฝ“ๅ‰้กน็›ฎไธญๆ‰€ๆœ‰ๅทฒๅฎ‰่ฃ…่ต„ๆบ๏ผˆๆœฌๅœฐๅทฅๅ…ทใ€ไธŠไธ‹ๆ–‡่ง„ๅˆ™ใ€ๅ…จๅฑ€ๆ ‡ๅ‡†ๆŠ€่ƒฝ๏ผ‰็š„ๆ€ๅŠฟๅ›พใ€‚ |
68
- | `vibe update` | `up` | ไธ€้”ฎๅนถๅ‘ๆ‹‰ๅ– `vibe-lock.json` ไธญ็š„ๆ‰€ๆœ‰ๆบไป“ๅบ“๏ผŒๆ™บ่ƒฝๆฏ”ๅฏนๅนถ่ฆ†็›–ๆœฌๅœฐ่„šๆœฌไธŽ่ง„ๅˆ™ใ€‚ |
69
- | `vibe remove [่ต„ๆบ]` | `rm` | **ๆ— ๅ‚่ฟ่กŒ**๏ผšๅ”ค่ตท UI ๅคš้€‰ๅˆ—่กจๅˆ ้™คๆœฌๅœฐ้กนใ€‚<br>
70
-
71
- <br>**ๅธฆๅ‚่ฟ่กŒ**๏ผšๅฟซๆทๅŒน้…ๅนถ็งป้™คๆŒ‡ๅฎš็š„ๆ ‡ๅ‡†ๆŠ€่ƒฝๆˆ–ๆœฌๅœฐๅทฅๅ…ท๏ผŒๅนถๅŒๆญฅๆธ…็†้…็ฝฎใ€‚ |
72
-
73
- ---
74
-
75
- ## ๐Ÿ—๏ธ ๆž„ๅปบไฝ ่‡ชๅทฑ็š„่ต„ๆบไป“ๅบ“
76
-
77
- ๆˆ‘ไปฌๅผบ็ƒˆ้ผ“ๅŠฑไฝ ๆˆ–ๅ›ข้˜Ÿๅœจ GitHub ไธŠๅˆ›ๅปบไธ“ๅฑž็š„ Vibe Coding ่ต„ๆบไป“ๅบ“๏ผŒไปฅๅœจๆ‰€ๆœ‰้กน็›ฎไธญๆ ‡ๅ‡†ๅŒ–ๅ›ข้˜Ÿๆœ€ๅ–œๆฌข็š„ AI ๅทฅๅ…ทๅ’Œ่‡ชๅฎšไน‰็ผ–็ ่ง„่Œƒใ€‚
78
-
79
- ### ๆŽจ่็›ฎๅฝ•็ป“ๆž„
80
-
81
- ไธบ็กฎไฟไธŽ `@vibe-coder/cli` ๅฎŒ็พŽๅ…ผๅฎน๏ผŒๆŽจ่้‡‡็”จไปฅไธ‹็บฆๅฎš๏ผˆๅฏๅ‚่€ƒ `helloggx/skill`๏ผ‰๏ผš
82
-
83
- ```text
84
- your-custom-repo/
85
- โ”œโ”€โ”€ skill/ # (ๅฏ้€‰) ๆ ‡ๅ‡†็š„ Vercel AI Agent ๆŠ€่ƒฝๅบ“
86
- โ”œโ”€โ”€ tool/ # ่‡ชๅฎšไน‰ TS/Python ๅฏๆ‰ง่กŒๅทฅๅ…ท
87
- โ”‚ โ”œโ”€โ”€ get_dsl.ts
88
- โ”‚ โ”œโ”€โ”€ get_dsl.py # ๐Ÿ’ก Python ่„šๆœฌๅบ”ไธŽๅ…ถ่ฐƒ็”จ็š„ TS ๅทฅๅ…ทๅŒๅ
89
- โ”‚ โ””โ”€โ”€ shadcn_vue_init.ts
90
- โ””โ”€โ”€ rules/ # ไธชๆ€งๅŒ– Markdown ไธŠไธ‹ๆ–‡่ง„ๅˆ™
91
- โ”œโ”€โ”€ common/ # ้€‚็”จไบŽๆ‰€ๆœ‰้กน็›ฎ็š„ๅ…จๅฑ€้€š็”จ่ง„ๅˆ™
92
- โ”‚ โ”œโ”€โ”€ coding-style.md
93
- โ”‚ โ””โ”€โ”€ security.md
94
- โ””โ”€โ”€ typescript/ # ็‰นๅฎšๆŠ€ๆœฏๆ ˆ่ง„ๅˆ™
95
- โ””โ”€โ”€ coding-style.md # ๐Ÿ’ก ๅปบ่ฎฎไธŽ่ขซๆ‰ฉๅฑ•็š„้€š็”จ่ง„ๅˆ™ๅŒๅ
96
- ```
97
-
98
- ### ็ป„็ป‡ๆœ€ไฝณๅฎž่ทต
99
-
100
- * **่ทจ่ฏญ่จ€ๅทฅๅ…ท่”ๅŠจ**๏ผš่‹ฅไฝ ็š„ `.ts` ๅทฅๅ…ทไพ่ต–ๅบ•ๅฑ‚็š„ `.py` ่„šๆœฌ๏ผŒ**่ฏท็กฎไฟไธคๆ–‡ไปถๅŸบ็ก€ๅ็งฐๅฎŒๅ…จไธ€่‡ด**๏ผˆๅฆ‚ `get_dsl.ts` ๅ’Œ `get_dsl.py`๏ผ‰ใ€‚CLI ไผšๆ™บ่ƒฝ่ฏ†ๅˆซๅนถไธ€ๅนถๆ‹‰ๅ–ใ€‚
101
- * **่ง„ๅˆ™็ปงๆ‰ฟไธŽๆ‰ฉๅฑ•**๏ผš
102
- * ๅ…จๅฑ€้€š็”จ่ง„ๅˆ™ๅŠกๅฟ…ๆ”พๅœจ `rules/common/` ไธ‹ใ€‚
103
- * ไธบ็‰นๅฎšๆŠ€ๆœฏๆ ˆ็ผ–ๅ†™่ง„ๅˆ™ๆ—ถ๏ผˆๅฆ‚ `rules/typescript/`๏ผ‰๏ผŒ่‹ฅ้œ€็ปงๆ‰ฟ `common` ่ง„ๅˆ™๏ผŒๅปบ่ฎฎ**ไฟๆŒๅŒๅ**๏ผŒๅนถๅœจๆ–‡ไปถ้กถ้ƒจๆ˜พๅผๅฃฐๆ˜Ž็ปงๆ‰ฟๅ…ณ็ณป๏ผš
104
- *> ๆญคๆ–‡ไปถๆ‰ฉๅฑ•ไบ† [common/coding-style.md](https://www.google.com/search?q=../common/coding-style.md) ๅนถๅขžๅŠ ไบ† TS ็‰นๅฎšๅ†…ๅฎนใ€‚*
105
-
106
-
107
-
108
- ---
109
-
110
- ## ๐Ÿ“‚ ็›ฎๅฝ•ไธŽ้…็ฝฎ่ง„่Œƒ (Workspace Structure)
111
-
112
- ่ฟ่กŒ `vibe add` ๅŽ๏ผŒๅทฅๅ…ทๅฐ†ๅœจ้กน็›ฎๆ น็›ฎๅฝ•่‡ชๅŠจๆŽฅ็ฎกๅนถ็ปดๆŠคไปฅไธ‹็ป“ๆž„๏ผš
113
-
114
- ```text
115
- your-project/
116
- โ”œโ”€โ”€ .opencode/
117
- โ”‚ โ”œโ”€โ”€ tool/ # ๅบ•ๅฑ‚ .ts / .py ๅทฅๅ…ท่„šๆœฌ
118
- โ”‚ โ”œโ”€โ”€ rules/ # .md ่ง„ๅˆ™ๆ–‡ไปถ๏ผˆๆŒ‰็ฑปๅˆซๅฝ’ๆกฃ๏ผ‰
119
- โ”‚ โ”œโ”€โ”€ opencode.jsonc # OpenCode ๆ ธๅฟƒ้…็ฝฎ๏ผˆCLI ่‡ชๅŠจๆณจๅ…ฅๅทฅๅ…ทๅผ€ๅ…ณไธŽๆŒ‡ไปค่ทฏๅพ„๏ผ‰
120
- โ”‚ โ””โ”€โ”€ vibe-lock.json # ็Šถๆ€้”ๆ–‡ไปถ๏ผŒ็ฒพๅ‡†่ฎฐๅฝ•่ต„ๆบๆฅๆบไธŽ็‰ˆๆœฌ
121
- โ”œโ”€โ”€ .venv/ # (ๆŒ‰้œ€่‡ชๅŠจๅˆ›ๅปบ) ้š”็ฆป็š„ Python ่™šๆ‹Ÿ็Žฏๅขƒ
122
- โ””โ”€โ”€ requirements.txt # (ๆŒ‰้œ€่‡ชๅŠจ็ปดๆŠค) Python ่„šๆœฌไพ่ต–ๆธ…ๅ•
123
- ```
124
-
125
- ---
126
-
127
- ## ๐Ÿ› ๏ธ ๅผ€ๅ‘่€…ๆŒ‡ๅ— (Development)
128
-
129
- ๆœฌ้กน็›ฎๅŸบไบŽๆž้€Ÿ็š„ [Bun](https://bun.sh/) ่ฟ่กŒๆ—ถๆž„ๅปบใ€‚
130
-
131
- ```bash
132
- bun install # 1. ๅฎ‰่ฃ…ไพ่ต–
133
- bun run dev --help # 2. ๆœฌๅœฐ่ฐƒ่ฏ•
134
- bun run typecheck # 3. ็ฑปๅž‹ๆฃ€ๆŸฅ
135
- bun run build # 4. ๆž„ๅปบ็”Ÿไบง็‰ˆๆœฌ (่พ“ๅ‡บ่‡ณ ./dist)
136
- ```
137
-
138
- ## ๐Ÿ“„ ่ฎธๅฏ่ฏ (License)
139
-
140
- [MIT License](https://www.google.com/search?q=../../LICENSE.md) ยฉ 2026 [HelloGGX](https://github.com/HelloGGX)
1
+ <div align="center">
2
+
3
+ # ๐ŸŒŠ Vibe Coding CLI
4
+
5
+ **ไธ“ไธบ OpenCode ๆ‰“้€ ็š„ vibe coding ็”Ÿๆ€ๆž„ๅปบๅทฅๅ…ท**
6
+
7
+ [![vibe-coding: enabled](https://img.shields.io/badge/vibe--coding-enabled-BD00FF?style=flat-square&logo=github&logoColor=white&labelColor=2D3748)](https://github.com/HelloGGX/vibe-coding-cli)
8
+ [![npm version](https://img.shields.io/npm/v/@vibe-coder/cli.svg?style=flat-square)](https://www.npmjs.com/package/@vibe-coder/cli)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](../../LICENSE.md)
10
+ [![Built with Bun](https://img.shields.io/badge/Bun-%23000000.svg?style=flat-square&logo=bun&logoColor=white)](https://bun.sh)
11
+
12
+ [English](https://github.com/HelloGGX/skill/blob/main/packages/vibe/README.md) ยท **็ฎ€ไฝ“ไธญๆ–‡**
13
+
14
+ > *ไธ€้”ฎ่šๅˆ AI ๅทฅๅ…ทไธŽไธŠไธ‹ๆ–‡่ง„่Œƒ๏ผŒ่ฎฉ Agent ็œŸๆญฃๆ‡‚ไฝ ็š„ไปฃ็ ๆžถๆž„ใ€‚*
15
+
16
+ </div>
17
+
18
+ ## ๐Ÿ“– ็ฎ€ไป‹ (Introduction)
19
+
20
+ `@vibe-coder/cli` ๆ˜ฏไธ€ไธชไธ“ไธบ **OpenCode** ๅนณๅฐๆ‰“้€ ็š„็Žฐไปฃๅ‘ฝไปค่กŒ่„šๆ‰‹ๆžถๅทฅๅ…ทใ€‚ๅฎƒ็š„ๆ ธๅฟƒ็›ฎๆ ‡ๆ˜ฏๅฟซ้€Ÿๆญๅปบ Vibe Coding ็š„ๅผ€ๅ‘็Žฏๅขƒ๏ผŒ็ฎ€ๅŒ–่ง„่Œƒ้ฉฑๅŠจๅผ€ๅ‘็š„่ต„ๆบ็ฎก็†ใ€‚
21
+
22
+ ้€š่ฟ‡ `vibe` ๅ‘ฝไปค๏ผŒไฝ ๅฏไปฅไธ€้”ฎๆ‹‰ๅ–่ฟœ็จ‹ GitHub ไป“ๅบ“ไธญ็š„ TypeScript/Python ๅทฅๅ…ท่„šๆœฌๆˆ– Markdown ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒ่‡ชๅŠจๆ— ็ผๆณจๅ†Œๅˆฐ OpenCode ้…็ฝฎไธญ๏ผŒๅนถๆŽฅ็ฎกๅบ•ๅฑ‚่ฟ่กŒไพ่ต–๏ผŒ่ฎฉไฝ ไธ“ๆณจไบŽ**โ€œไธŽ AI ๅ…ฑๅˆ›ไปฃ็ โ€**ๆœฌ่บซใ€‚
23
+
24
+ ## โœจ ๆ ธๅฟƒ็‰นๆ€ง (Features)
25
+
26
+ - ๐Ÿ›  **ๅ…จ่‡ชๅŠจๅŒ–ๅทฅๅ…ท็ฎก็†**: ๆ”ฏๆŒไปŽไปปๆ„ GitHub ไป“ๅบ“ๅฟซ้€Ÿ่งฃๆžใ€ๅคš้€‰ๅนถไธ‹่ฝฝ `.ts` / `.py` ่„šๆœฌ่‡ณๆœฌๅœฐๅผ€็ฎฑๅณ็”จใ€‚
27
+ - ๐Ÿ“œ **Context ไธŽ Capabilities ๅฎŒ็พŽ่žๅˆ**: ็‹ฌๅˆ›็”Ÿๆ€่šๅˆ่ƒฝๅŠ›๏ผŒๅฐ† Agent ๆ‰ง่กŒๆ‰€้œ€็š„**ๅทฅๅ…ทๆŠ€่ƒฝ**ไธŽ**่กŒไธบๅ‡†ๅˆ™**ๆทฑๅบฆ็ป‘ๅฎšใ€‚ๆ”ฏๆŒๆŒ‰้œ€ๅฎ‰่ฃ… `.md` ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒ่ฎฉ AI ็œŸๆญฃๆ‡‚ไฝ ็š„ๆžถๆž„ๆ„ๅ›พใ€‚
28
+ - ๐Ÿ“ฆ **ๆ™บ่ƒฝ้…็ฝฎๆณจๅ…ฅ**: ่‡ชๅŠจๆ‹ฆๆˆชๅนถๆ›ดๆ–ฐ `.opencode/opencode.jsonc`๏ผŒๆ— ๆ„Ÿๆณจๅ…ฅๅทฅๅ…ทๅผ€ๅ…ณไธŽ Prompt ๆŒ‡ไปค่ทฏๅพ„๏ผŒๅ‘Šๅˆซ็น็็š„ๆ‰‹ๅŠจ้…็ฝฎใ€‚
29
+ - โšก **ๅนถ่กŒๆž้€Ÿๆ›ดๆ–ฐ**: ๅŸบไบŽๅนถๅ‘ๆจกๅž‹่ฎพ่ฎก๏ผŒๅŒๆ—ถๅค„็†ๅคšไธชๆบไป“ๅบ“็š„่ต„ๆบๅฏนๆฏ”ไธŽๆ‹‰ๅ–๏ผŒๅคงๅน…็ผฉ็Ÿญๆ›ดๆ–ฐ็ญ‰ๅพ…ๆ—ถ้—ดใ€‚
30
+ - ๐Ÿช„ **ๆ ‡ๅ‡†ๆŠ€่ƒฝ่šๅˆ**: ไธŽ Vercel ็š„ `pnpx skills` ็”Ÿๆ€ๆทฑๅบฆ้›†ๆˆ๏ผŒๅœจ็ปŸไธ€็š„ CLI ๆต็จ‹ไธญๅŒๆ—ถ็ฎก็†ๆ ‡ๅ‡† Agent ๆŠ€่ƒฝๅบ“ๅ’Œๆœฌๅœฐๆ‰ฉๅฑ•่ต„ๆบใ€‚
31
+
32
+ ---
33
+
34
+ ## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹ (Quick Start)
35
+
36
+ ### ็Žฏๅขƒ่ฆๆฑ‚ (Prerequisites)
37
+ - [Node.js](https://nodejs.org/) >= 18.0.0 ๆˆ– [Bun](https://bun.sh/) >= 1.0.0
38
+
39
+ ### ๅฎ‰่ฃ…
40
+
41
+ ไฝœไธบๅ…จๅฑ€ๅŒ…ๅฎ‰่ฃ…๏ผš
42
+
43
+ ```bash
44
+ # ไฝฟ็”จ npm
45
+ npm i -g @vibe-coder/cli
46
+
47
+ # ไฝฟ็”จ bun
48
+ bun add -g @vibe-coder/cli
49
+ ```
50
+
51
+ ### ๅŸบ็ก€็”จๆณ•
52
+
53
+ ๅˆๅง‹ๅŒ–ๅนถๆทปๅŠ ไธ€ไธช็”Ÿๆ€ๅบ“๏ผˆไพ‹ๅฆ‚ๆœฌ้กน็›ฎ็š„ `helloggx/skill`๏ผ‰๏ผš
54
+
55
+ ```bash
56
+ vibe add helloggx/skill
57
+ ```
58
+
59
+ *CLI ๅฐ†ๅ”ค่ตทไบคไบ’ๅผ่œๅ•๏ผŒๅ…่ฎธไฝ ็ตๆดปๅคš้€‰ๆƒณ่ฆๅฎ‰่ฃ…็š„ **Tools (ๅทฅๅ…ท)** ๅ’Œ **Rules (่ง„ๅˆ™)**๏ผŒๅนถ่‡ชๅŠจไธบไฝ ๅฎŒๆˆๆ‰€ๆœ‰็Žฏๅขƒ้…็ฝฎใ€‚*
60
+
61
+ ---
62
+
63
+ ## ๐Ÿ“š ๅ‘ฝไปคๆŒ‡ๅ— (Commands)
64
+
65
+ | ๅ‘ฝไปค | ๅˆซๅ | ๅŠŸ่ƒฝๆ่ฟฐ |
66
+ | --- | --- | --- |
67
+ | `vibe add <repo>` | `a` | ่งฃๆž็›ฎๆ ‡ GitHub ไป“ๅบ“๏ผŒๅ”ค่ตท UI ๅˆ—่กจ๏ผŒๆŒ‰้œ€ๅฎ‰่ฃ…ๅทฅๅ…ทๅ’Œ่ง„ๅˆ™ๆ–‡ไปถ๏ผŒๅนถ่‡ชๅŠจๆณจๅ…ฅ้…็ฝฎใ€‚ |
68
+ | `vibe list` | `ls` | ๆธ…ๆ™ฐๆ‰“ๅฐๅฝ“ๅ‰้กน็›ฎไธญๆ‰€ๆœ‰ๅทฒๅฎ‰่ฃ…่ต„ๆบ๏ผˆๆœฌๅœฐๅทฅๅ…ทใ€ไธŠไธ‹ๆ–‡่ง„ๅˆ™ใ€ๅ…จๅฑ€ๆ ‡ๅ‡†ๆŠ€่ƒฝ๏ผ‰็š„ๆ€ๅŠฟๅ›พใ€‚ |
69
+ | `vibe update` | `up` | ไธ€้”ฎๅนถๅ‘ๆ‹‰ๅ– `vibe-lock.json` ไธญ็š„ๆ‰€ๆœ‰ๆบไป“ๅบ“๏ผŒๆ™บ่ƒฝๆฏ”ๅฏนๅนถ่ฆ†็›–ๆœฌๅœฐ่„šๆœฌไธŽ่ง„ๅˆ™ใ€‚ |
70
+ | `vibe remove [่ต„ๆบ]` | `rm` | **ๆ— ๅ‚่ฟ่กŒ**๏ผšๅ”ค่ตท UI ๅคš้€‰ๅˆ—่กจๅˆ ้™คๆœฌๅœฐ้กนใ€‚<br>
71
+
72
+ <br>**ๅธฆๅ‚่ฟ่กŒ**๏ผšๅฟซๆทๅŒน้…ๅนถ็งป้™คๆŒ‡ๅฎš็š„ๆ ‡ๅ‡†ๆŠ€่ƒฝๆˆ–ๆœฌๅœฐๅทฅๅ…ท๏ผŒๅนถๅŒๆญฅๆธ…็†้…็ฝฎใ€‚ |
73
+
74
+ ---
75
+
76
+ ## ๐Ÿ—๏ธ ๆž„ๅปบไฝ ่‡ชๅทฑ็š„่ต„ๆบไป“ๅบ“
77
+
78
+ ๆˆ‘ไปฌๅผบ็ƒˆ้ผ“ๅŠฑไฝ ๆˆ–ๅ›ข้˜Ÿๅœจ GitHub ไธŠๅˆ›ๅปบไธ“ๅฑž็š„ Vibe Coding ่ต„ๆบไป“ๅบ“๏ผŒไปฅๅœจๆ‰€ๆœ‰้กน็›ฎไธญๆ ‡ๅ‡†ๅŒ–ๅ›ข้˜Ÿๆœ€ๅ–œๆฌข็š„ AI ๅทฅๅ…ทๅ’Œ่‡ชๅฎšไน‰็ผ–็ ่ง„่Œƒใ€‚
79
+
80
+ ### ๆŽจ่็›ฎๅฝ•็ป“ๆž„
81
+
82
+ ไธบ็กฎไฟไธŽ `@vibe-coder/cli` ๅฎŒ็พŽๅ…ผๅฎน๏ผŒๆŽจ่้‡‡็”จไปฅไธ‹็บฆๅฎš๏ผˆๅฏๅ‚่€ƒ `helloggx/skill`๏ผ‰๏ผš
83
+
84
+ ```text
85
+ your-custom-repo/
86
+ โ”œโ”€โ”€ skill/ # (ๅฏ้€‰) ๆ ‡ๅ‡†็š„ Vercel AI Agent ๆŠ€่ƒฝๅบ“
87
+ โ”œโ”€โ”€ tool/ # ่‡ชๅฎšไน‰ TS/Python ๅฏๆ‰ง่กŒๅทฅๅ…ท
88
+ โ”‚ โ”œโ”€โ”€ get_dsl.ts
89
+ โ”‚ โ”œโ”€โ”€ get_dsl.py # ๐Ÿ’ก Python ่„šๆœฌๅบ”ไธŽๅ…ถ่ฐƒ็”จ็š„ TS ๅทฅๅ…ทๅŒๅ
90
+ โ”‚ โ””โ”€โ”€ shadcn_vue_init.ts
91
+ โ””โ”€โ”€ rules/ # ไธชๆ€งๅŒ– Markdown ไธŠไธ‹ๆ–‡่ง„ๅˆ™
92
+ โ”œโ”€โ”€ common/ # ้€‚็”จไบŽๆ‰€ๆœ‰้กน็›ฎ็š„ๅ…จๅฑ€้€š็”จ่ง„ๅˆ™
93
+ โ”‚ โ”œโ”€โ”€ coding-style.md
94
+ โ”‚ โ””โ”€โ”€ security.md
95
+ โ””โ”€โ”€ typescript/ # ็‰นๅฎšๆŠ€ๆœฏๆ ˆ่ง„ๅˆ™
96
+ โ””โ”€โ”€ coding-style.md # ๐Ÿ’ก ๅปบ่ฎฎไธŽ่ขซๆ‰ฉๅฑ•็š„้€š็”จ่ง„ๅˆ™ๅŒๅ
97
+ ```
98
+
99
+ ### ็ป„็ป‡ๆœ€ไฝณๅฎž่ทต
100
+
101
+ * **่ทจ่ฏญ่จ€ๅทฅๅ…ท่”ๅŠจ**๏ผš่‹ฅไฝ ็š„ `.ts` ๅทฅๅ…ทไพ่ต–ๅบ•ๅฑ‚็š„ `.py` ่„šๆœฌ๏ผŒ**่ฏท็กฎไฟไธคๆ–‡ไปถๅŸบ็ก€ๅ็งฐๅฎŒๅ…จไธ€่‡ด**๏ผˆๅฆ‚ `get_dsl.ts` ๅ’Œ `get_dsl.py`๏ผ‰ใ€‚CLI ไผšๆ™บ่ƒฝ่ฏ†ๅˆซๅนถไธ€ๅนถๆ‹‰ๅ–ใ€‚
102
+ * **่ง„ๅˆ™็ปงๆ‰ฟไธŽๆ‰ฉๅฑ•**๏ผš
103
+ * ๅ…จๅฑ€้€š็”จ่ง„ๅˆ™ๅŠกๅฟ…ๆ”พๅœจ `rules/common/` ไธ‹ใ€‚
104
+ * ไธบ็‰นๅฎšๆŠ€ๆœฏๆ ˆ็ผ–ๅ†™่ง„ๅˆ™ๆ—ถ๏ผˆๅฆ‚ `rules/typescript/`๏ผ‰๏ผŒ่‹ฅ้œ€็ปงๆ‰ฟ `common` ่ง„ๅˆ™๏ผŒๅปบ่ฎฎ**ไฟๆŒๅŒๅ**๏ผŒๅนถๅœจๆ–‡ไปถ้กถ้ƒจๆ˜พๅผๅฃฐๆ˜Ž็ปงๆ‰ฟๅ…ณ็ณป๏ผš
105
+ *> ๆญคๆ–‡ไปถๆ‰ฉๅฑ•ไบ† [common/coding-style.md](https://www.google.com/search?q=../common/coding-style.md) ๅนถๅขžๅŠ ไบ† TS ็‰นๅฎšๅ†…ๅฎนใ€‚*
106
+
107
+
108
+
109
+ ---
110
+
111
+ ## ๐Ÿ“‚ ็›ฎๅฝ•ไธŽ้…็ฝฎ่ง„่Œƒ (Workspace Structure)
112
+
113
+ ่ฟ่กŒ `vibe add` ๅŽ๏ผŒๅทฅๅ…ทๅฐ†ๅœจ้กน็›ฎๆ น็›ฎๅฝ•่‡ชๅŠจๆŽฅ็ฎกๅนถ็ปดๆŠคไปฅไธ‹็ป“ๆž„๏ผš
114
+
115
+ ```text
116
+ your-project/
117
+ โ”œโ”€โ”€ .opencode/
118
+ โ”‚ โ”œโ”€โ”€ tool/ # ๅบ•ๅฑ‚ .ts / .py ๅทฅๅ…ท่„šๆœฌ
119
+ โ”‚ โ”œโ”€โ”€ rules/ # .md ่ง„ๅˆ™ๆ–‡ไปถ๏ผˆๆŒ‰็ฑปๅˆซๅฝ’ๆกฃ๏ผ‰
120
+ โ”‚ โ”œโ”€โ”€ opencode.jsonc # OpenCode ๆ ธๅฟƒ้…็ฝฎ๏ผˆCLI ่‡ชๅŠจๆณจๅ…ฅๅทฅๅ…ทๅผ€ๅ…ณไธŽๆŒ‡ไปค่ทฏๅพ„๏ผ‰
121
+ โ”‚ โ””โ”€โ”€ vibe-lock.json # ็Šถๆ€้”ๆ–‡ไปถ๏ผŒ็ฒพๅ‡†่ฎฐๅฝ•่ต„ๆบๆฅๆบไธŽ็‰ˆๆœฌ
122
+ โ”œโ”€โ”€ .venv/ # (ๆŒ‰้œ€่‡ชๅŠจๅˆ›ๅปบ) ้š”็ฆป็š„ Python ่™šๆ‹Ÿ็Žฏๅขƒ
123
+ โ””โ”€โ”€ requirements.txt # (ๆŒ‰้œ€่‡ชๅŠจ็ปดๆŠค) Python ่„šๆœฌไพ่ต–ๆธ…ๅ•
124
+ ```
125
+
126
+ ---
127
+
128
+
129
+ ## ๐Ÿค ่žๅ…ฅ็”Ÿๆ€ (Join the Ecosystem)
130
+
131
+ ๅฆ‚ๆžœไฝ ็š„ๅผ€ๆบ้กน็›ฎ๏ผˆๅฆ‚ Agent Skillsใ€Tools ๆˆ– Rules๏ผ‰ๅ…ผๅฎนๅนถไฝฟ็”จไบ† vibe-coding ่ง„่Œƒ๏ผŒๆฌข่ฟŽๅœจไฝ ็š„ `README.md` ไธญๆŒ‚ไธŠ่ฟ™ๆžšไธ“ๅฑžๅพฝ็ซ ๏ผŒๅ‘็คพๅŒบๅฑ•็คบไฝ ็š„ๅ‰ๅซๅ“ๅ‘ณ๏ผ
132
+
133
+ ๅคๅˆถไปฅไธ‹ Markdown ไปฃ็ ๅณๅฏๆทปๅŠ ๅˆฐไฝ ็š„้กน็›ฎไธญ๏ผš
134
+
135
+ ```markdown
136
+ [![vibe-coding: enabled](https://img.shields.io/badge/vibe--coding-enabled-BD00FF?style=flat-square&logo=github&logoColor=white&labelColor=2D3748)](https://github.com/HelloGGX/vibe-coding-cli)
137
+ ```
138
+ (ๆŒ‚ไธŠๅพฝ็ซ ๅŽ๏ผŒไฝ ๅฐ†ๆœ‰ๆœบไผš่ขซๆ”ถๅฝ•่ฟ›ๅฎ˜ๆ–น็š„ๅไบบๅ ‚็ฒพ้€‰ๅˆ—่กจ๏ผ)
139
+
140
+
141
+ ## ๐Ÿ› ๏ธ ๅผ€ๅ‘่€…ๆŒ‡ๅ— (Development)
142
+
143
+ ๆœฌ้กน็›ฎๅŸบไบŽๆž้€Ÿ็š„ [Bun](https://bun.sh/) ่ฟ่กŒๆ—ถๆž„ๅปบใ€‚
144
+
145
+ ```bash
146
+ bun install # 1. ๅฎ‰่ฃ…ไพ่ต–
147
+ bun run dev --help # 2. ๆœฌๅœฐ่ฐƒ่ฏ•
148
+ bun run typecheck # 3. ็ฑปๅž‹ๆฃ€ๆŸฅ
149
+ bun run build # 4. ๆž„ๅปบ็”Ÿไบง็‰ˆๆœฌ (่พ“ๅ‡บ่‡ณ ./dist)
150
+ ```
151
+
152
+ ## ๐Ÿ“„ ่ฎธๅฏ่ฏ (License)
153
+
154
+ [MIT License](https://www.google.com/search?q=../../LICENSE.md) ยฉ 2026 [HelloGGX](https://github.com/HelloGGX)
package/bin/vibe CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env node
2
-
3
- import module from "node:module"
4
-
5
- // https://nodejs.org/api/module.html#module-compile-cache
6
- if (module.enableCompileCache && !process.env.NODE_DISABLE_COMPILE_CACHE) {
7
- try {
8
- module.enableCompileCache()
9
- } catch {
10
- // Ignore errors
11
- }
12
- }
13
-
14
- await import("../dist/cli.js")
1
+ #!/usr/bin/env node
2
+
3
+ import module from "node:module"
4
+
5
+ // https://nodejs.org/api/module.html#module-compile-cache
6
+ if (module.enableCompileCache && !process.env.NODE_DISABLE_COMPILE_CACHE) {
7
+ try {
8
+ module.enableCompileCache()
9
+ } catch {
10
+ // Ignore errors
11
+ }
12
+ }
13
+
14
+ await import("../dist/cli.js")
package/dist/cli.js CHANGED
@@ -4,15 +4,29 @@ var __getProtoOf = Object.getPrototypeOf;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
7
12
  var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
8
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
9
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
22
  for (let key of __getOwnPropNames(mod))
11
23
  if (!__hasOwnProp.call(to, key))
12
24
  __defProp(to, key, {
13
- get: () => mod[key],
25
+ get: __accessProp.bind(mod, key),
14
26
  enumerable: true
15
27
  });
28
+ if (canCache)
29
+ cache.set(mod, to);
16
30
  return to;
17
31
  };
18
32
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
@@ -1915,11 +1929,11 @@ var zt = { light: C("โ”€", "-"), heavy: C("โ”", "="), block: C("โ–ˆ", "#") };
1915
1929
  var Qt = `${import_picocolors2.default.gray(d)} `;
1916
1930
 
1917
1931
  // src/commands/add.ts
1918
- import { execSync as execSync2 } from "child_process";
1932
+ import { execSync as execSync3 } from "child_process";
1919
1933
  import { existsSync as existsSync4, mkdirSync as mkdirSync3, readdirSync as readdirSync2 } from "fs";
1920
1934
  import path4 from "path";
1921
1935
 
1922
- // ../../node_modules/.bun/simple-git@3.32.2/node_modules/simple-git/dist/esm/index.js
1936
+ // ../../node_modules/.bun/simple-git@3.32.3/node_modules/simple-git/dist/esm/index.js
1923
1937
  var import_file_exists = __toESM(require_dist(), 1);
1924
1938
  var import_debug = __toESM(require_src2(), 1);
1925
1939
  var import_promise_deferred = __toESM(require_dist2(), 1);
@@ -5603,7 +5617,7 @@ function preventProtocolOverride(arg, next) {
5603
5617
  if (!isConfigSwitch(arg)) {
5604
5618
  return;
5605
5619
  }
5606
- if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) {
5620
+ if (!/^\s*protocol(.[a-z]+)?.allow/i.test(next)) {
5607
5621
  return;
5608
5622
  }
5609
5623
  throw new GitPluginError(undefined, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
@@ -6250,7 +6264,57 @@ python-dotenv>=0.19.0
6250
6264
  }
6251
6265
  function getPythonActivationCmd() {
6252
6266
  const isWin = process.platform === "win32";
6253
- return isWin ? ".\\.venv\\Scripts\\Activate.ps1" : "source .venv/bin/activate";
6267
+ if (isWin) {
6268
+ return `# Windows CMD
6269
+ venv\\Scripts\\activate.bat
6270
+
6271
+ # Windows PowerShell
6272
+ .\\.venv\\Scripts\\Activate.ps1`;
6273
+ }
6274
+ return "source .venv/bin/activate";
6275
+ }
6276
+
6277
+ // src/utils/env.ts
6278
+ import { execSync as execSync2 } from "child_process";
6279
+ function ensureBunInstalled() {
6280
+ try {
6281
+ execSync2("bun --version", { stdio: "ignore" });
6282
+ } catch {
6283
+ R2.warn(`${YELLOW}Bun runtime not found. Attempting to install via npm...${RESET}`);
6284
+ const s = bt2();
6285
+ s.start("Installing bun globally...");
6286
+ try {
6287
+ execSync2("npm install -g bun", { stdio: "ignore" });
6288
+ s.stop(`${CYAN}Bun successfully installed!${RESET}`);
6289
+ } catch (error) {
6290
+ s.stop("Failed to install Bun.");
6291
+ handleExecError(new Error("Could not install Bun automatically. Please install it manually: https://bun.sh/"), "Environment Error", "error" /* ERROR */);
6292
+ }
6293
+ }
6294
+ }
6295
+ function ensurePythonInstalled() {
6296
+ let hasPython = false;
6297
+ try {
6298
+ execSync2("python3 --version", { stdio: "ignore" });
6299
+ hasPython = true;
6300
+ } catch {
6301
+ try {
6302
+ execSync2("python --version", { stdio: "ignore" });
6303
+ hasPython = true;
6304
+ } catch {}
6305
+ }
6306
+ if (!hasPython) {
6307
+ R2.error(`
6308
+ ${BOLD}Python is required but not found on your system.${RESET}
6309
+ The tools you selected contain Python scripts (.py) which require a valid Python environment.
6310
+
6311
+ ${CYAN}Please install Python:${RESET}
6312
+ - ${BOLD}Windows${RESET}: Download from https://www.python.org/downloads/
6313
+ - ${BOLD}macOS${RESET}: Run \`brew install python\`
6314
+ - ${BOLD}Linux${RESET}: Run \`sudo apt install python3 python3-venv\`
6315
+ `);
6316
+ process.exit(1);
6317
+ }
6254
6318
  }
6255
6319
 
6256
6320
  // src/commands/add.ts
@@ -6258,15 +6322,16 @@ async function runAdd(args) {
6258
6322
  const repository = args[0];
6259
6323
  if (!repository) {
6260
6324
  handleExecError(new Error("Repository name is missing"), "Argument Error", "error" /* ERROR */);
6261
- process.exit(1);
6325
+ return;
6262
6326
  }
6263
- const repoUrl = `https://github.com/${repository}.git`;
6264
6327
  We(`${BG_CYAN} vibe cli ${RESET}`);
6328
+ ensureBunInstalled();
6329
+ const repoUrl = `https://github.com/${repository}.git`;
6265
6330
  Ve(`Repository: ${CYAN}${repoUrl}${RESET}
6266
6331
  Target: ${CYAN}${OPENCODE_DIR}${RESET}`, "Initializing");
6267
6332
  R2.step("Executing standard skills installer (pnpx skills add)...");
6268
6333
  try {
6269
- execSync2(`pnpx skills add ${repository} --agent opencode`, { stdio: "inherit" });
6334
+ execSync3(`pnpx skills add ${repository} --agent opencode`, { stdio: "inherit" });
6270
6335
  } catch (err) {
6271
6336
  handleExecError(err, "Skills installer finished with warnings", "warn" /* WARN */);
6272
6337
  }
@@ -6280,8 +6345,9 @@ Target: ${CYAN}${OPENCODE_DIR}${RESET}`, "Initializing");
6280
6345
  const rulesDirPath = path4.join(tempDir, "rules");
6281
6346
  const hasTools = existsSync4(toolDirPath);
6282
6347
  const hasRules = existsSync4(rulesDirPath);
6283
- if (!hasTools && !hasRules)
6284
- return handleExecError(new Error(`Neither "tool' nor "rules' directory found in repository.`), "warn" /* WARN */);
6348
+ if (!hasTools && !hasRules) {
6349
+ return handleExecError(new Error("Neither 'tool' nor 'rules' directory found in repository."), "Parse Error", "warn" /* WARN */);
6350
+ }
6285
6351
  let selectedTools = [];
6286
6352
  let selectedRules = [];
6287
6353
  if (hasTools) {
@@ -6314,20 +6380,30 @@ Target: ${CYAN}${OPENCODE_DIR}${RESET}`, "Initializing");
6314
6380
  }
6315
6381
  if (selectedTools.length === 0 && selectedRules.length === 0)
6316
6382
  return Ne("No tools or rules selected.");
6383
+ let requiresPython = false;
6384
+ if (selectedTools.length > 0) {
6385
+ for (const tool of selectedTools) {
6386
+ if (existsSync4(path4.join(toolDirPath, `${tool}.py`))) {
6387
+ requiresPython = true;
6388
+ break;
6389
+ }
6390
+ }
6391
+ }
6392
+ if (requiresPython) {
6393
+ ensurePythonInstalled();
6394
+ }
6317
6395
  const installSpinner = bt2();
6318
6396
  installSpinner.start(`Installing to ${OPENCODE_DIR}/ ...`);
6319
6397
  ensureOpencodeConfig();
6320
6398
  const lockData = readLockFile();
6321
6399
  const now = new Date().toISOString();
6322
- let requiresPython = false;
6323
6400
  let installedRulePaths = [];
6324
6401
  if (selectedTools.length > 0) {
6325
6402
  const targetToolDir = path4.join(process.cwd(), OPENCODE_DIR, TOOL_SUBDIR);
6326
6403
  if (!existsSync4(targetToolDir))
6327
6404
  mkdirSync3(targetToolDir, { recursive: true });
6328
6405
  for (const tool of selectedTools) {
6329
- if (copyToolFiles(tool, toolDirPath, targetToolDir))
6330
- requiresPython = true;
6406
+ copyToolFiles(tool, toolDirPath, targetToolDir);
6331
6407
  if (lockData.tools)
6332
6408
  lockData.tools[tool] = { source: repoUrl, installedAt: now };
6333
6409
  }
@@ -6348,13 +6424,17 @@ Target: ${CYAN}${OPENCODE_DIR}${RESET}`, "Initializing");
6348
6424
  await new Promise((r) => setTimeout(r, 400));
6349
6425
  installSpinner.stop(`${GREEN}Successfully installed ${selectedTools.length + selectedRules.length} items.${RESET}`);
6350
6426
  if (requiresPython) {
6351
- Ve(`Your Python tools are ready. Run:
6427
+ Ve(`Your Python tools are ready. Run the following command to activate the environment:
6352
6428
 
6353
6429
  ${CYAN}${getPythonActivationCmd()}${RESET}`, "\uD83D\uDC0D Python Environment");
6354
6430
  }
6355
6431
  } catch (error) {
6356
6432
  s.stop("Failed to fetch repository.");
6357
- handleExecError(error, "Repository Fetch Error", "error" /* ERROR */);
6433
+ if (error instanceof GitCloneError) {
6434
+ handleExecError(error, "Git Error", "error" /* ERROR */);
6435
+ } else {
6436
+ handleExecError(error, "Repository Fetch Error", "error" /* ERROR */);
6437
+ }
6358
6438
  } finally {
6359
6439
  if (tempDir)
6360
6440
  await cleanupTempDir(tempDir).catch(() => {});
@@ -6363,7 +6443,7 @@ Target: ${CYAN}${OPENCODE_DIR}${RESET}`, "Initializing");
6363
6443
  }
6364
6444
 
6365
6445
  // src/commands/list.ts
6366
- import { execSync as execSync3 } from "child_process";
6446
+ import { execSync as execSync4 } from "child_process";
6367
6447
  async function runList(args) {
6368
6448
  const lockData = readLockFile();
6369
6449
  console.log(`
@@ -6386,14 +6466,14 @@ ${BOLD}\uD83D\uDCDC Installed Rules (${OPENCODE_DIR}/${RULES_SUBDIR}):${RESET}
6386
6466
  ${BOLD}\uD83E\uDE84 Installed Skills (Standard):${RESET}
6387
6467
  `);
6388
6468
  try {
6389
- execSync3("pnpx skills ls", { stdio: "inherit" });
6469
+ execSync4("pnpx skills ls", { stdio: "inherit" });
6390
6470
  } catch (error) {
6391
6471
  handleExecError(error, "No standard skills found or failed to fetch", "warn" /* WARN */);
6392
6472
  }
6393
6473
  }
6394
6474
 
6395
6475
  // src/commands/update.ts
6396
- import { execSync as execSync4 } from "child_process";
6476
+ import { execSync as execSync5 } from "child_process";
6397
6477
  import { existsSync as existsSync5 } from "fs";
6398
6478
  import path5 from "path";
6399
6479
  async function runUpdate(args) {
@@ -6401,7 +6481,7 @@ async function runUpdate(args) {
6401
6481
  ${BOLD}\uD83E\uDE84 Updating Standard Skills...${RESET}
6402
6482
  `);
6403
6483
  try {
6404
- execSync4("pnpx skills update", { stdio: "inherit" });
6484
+ execSync5("pnpx skills update", { stdio: "inherit" });
6405
6485
  } catch (error) {
6406
6486
  handleExecError(error, "Failed to update standard skills", "warn" /* WARN */);
6407
6487
  }
@@ -6492,14 +6572,14 @@ ${BOLD}\uD83D\uDCE6 Updating Local Tools & Rules...${RESET}
6492
6572
  }
6493
6573
 
6494
6574
  // src/commands/remove.ts
6495
- import { execSync as execSync5 } from "child_process";
6575
+ import { execSync as execSync6 } from "child_process";
6496
6576
  import path6 from "path";
6497
6577
  async function runRemove(args) {
6498
6578
  We(`${BG_CYAN} vibe cli ${RESET}`);
6499
6579
  R2.step("Executing standard skills remover (pnpx skills remove)...");
6500
6580
  try {
6501
6581
  const cmdArgs = args.length > 0 ? args.join(" ") : "";
6502
- execSync5(`pnpx skills remove ${cmdArgs}`.trim(), { stdio: "inherit" });
6582
+ execSync6(`pnpx skills remove ${cmdArgs}`.trim(), { stdio: "inherit" });
6503
6583
  } catch (err) {
6504
6584
  R2.warn("Skills remover finished with warnings or nothing to remove.");
6505
6585
  }
@@ -6583,6 +6663,19 @@ async function runRemove(args) {
6583
6663
  }
6584
6664
 
6585
6665
  // src/cli.ts
6666
+ import { join as join2 } from "node:path";
6667
+ import { readFileSync as readFileSync3 } from "node:fs";
6668
+ var __dirname = "G:\\aiProj\\skill\\packages\\vibe\\src";
6669
+ function getVersion() {
6670
+ try {
6671
+ const pkgPath = join2(__dirname, "..", "package.json");
6672
+ const pkg = JSON.parse(readFileSync3(pkgPath, "utf-8"));
6673
+ return pkg.version;
6674
+ } catch {
6675
+ return "0.0.0";
6676
+ }
6677
+ }
6678
+ var VERSION = getVersion();
6586
6679
  var VIBE_LOGO = [
6587
6680
  "โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—",
6588
6681
  "โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•",
@@ -6615,6 +6708,7 @@ function showBanner() {
6615
6708
  console.log(` ${DIM}$${RESET} ${TEXT}vibe list${RESET} ${DIM}List installed tools & skills${RESET}`);
6616
6709
  console.log(` ${DIM}$${RESET} ${TEXT}vibe update${RESET} ${DIM}Update installed tools & skills${RESET}`);
6617
6710
  console.log(` ${DIM}$${RESET} ${TEXT}vibe remove${RESET} ${DIM}Remove tools & rules${RESET}`);
6711
+ console.log(` ${DIM}$${RESET} ${TEXT}vibe version${RESET} ${DIM}Show version${RESET}`);
6618
6712
  console.log();
6619
6713
  console.log(`${DIM}Example:${RESET} vibe add helloggx/skill`);
6620
6714
  console.log();
@@ -6633,6 +6727,7 @@ ${BOLD}Manage Tools & Skills:${RESET}
6633
6727
 
6634
6728
  ${BOLD}Options:${RESET}
6635
6729
  --help, -h Show this help message
6730
+ --version, -v Show version number
6636
6731
 
6637
6732
  ${BOLD}Examples:${RESET}
6638
6733
  ${DIM}$${RESET} vibe add helloggx/skill
@@ -6670,11 +6765,14 @@ async function main() {
6670
6765
  case "update":
6671
6766
  await runUpdate(args.slice(1));
6672
6767
  break;
6673
- case "--help":
6674
- case "-h":
6768
+ case "h":
6675
6769
  case "help":
6676
6770
  showHelp();
6677
6771
  break;
6772
+ case "v":
6773
+ case "version":
6774
+ console.log(VERSION);
6775
+ break;
6678
6776
  default:
6679
6777
  console.log(`${CYAN}vibe:${RESET} Unknown command '${command}'`);
6680
6778
  console.log(`Run ${BOLD}vibe --help${RESET} for usage.`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-coder/cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Vibe Coding development tool",
5
5
  "private": false,
6
6
  "type": "module",