vibe-ship-it 1.1.0 → 1.2.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 +3 -7
- package/bin/init.js +67 -20
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,17 +45,13 @@ Works with **VS Code Copilot**, **Claude Code**, and **OpenAI Codex**.
|
|
|
45
45
|
|
|
46
46
|
### Option 0: Install with npm (easiest)
|
|
47
47
|
|
|
48
|
-
```bash
|
|
49
|
-
npx vibe-ship-it
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Then run in your project:
|
|
53
|
-
|
|
54
48
|
```bash
|
|
55
49
|
npx vibe-ship-it init
|
|
56
50
|
```
|
|
57
51
|
|
|
58
|
-
|
|
52
|
+
It'll ask which AI tool you use (VS Code Copilot, Claude Code, or OpenAI Codex) and install only what you need.
|
|
53
|
+
|
|
54
|
+
To remove:
|
|
59
55
|
|
|
60
56
|
```bash
|
|
61
57
|
npx vibe-ship-it remove
|
package/bin/init.js
CHANGED
|
@@ -10,28 +10,69 @@ const command = args[0] || 'help'
|
|
|
10
10
|
|
|
11
11
|
if (command === 'init') {
|
|
12
12
|
console.log('')
|
|
13
|
-
console.log(' 🚀
|
|
14
|
-
console.log('
|
|
15
|
-
console.log('
|
|
13
|
+
console.log(' 🚀 vibe-ship-it')
|
|
14
|
+
console.log(' AI skill pack for designers')
|
|
15
|
+
console.log('')
|
|
16
|
+
console.log(' Which AI tool are you using?')
|
|
17
|
+
console.log('')
|
|
18
|
+
console.log(' 1. VS Code Copilot')
|
|
19
|
+
console.log(' 2. Claude Code')
|
|
20
|
+
console.log(' 3. OpenAI Codex')
|
|
21
|
+
console.log(' 4. All of the above (installs everything)')
|
|
16
22
|
console.log('')
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
'_github': '.github',
|
|
21
|
-
'_claude': '.claude',
|
|
22
|
-
}
|
|
24
|
+
const readline = require('readline')
|
|
25
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout })
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
rl.question(' Pick a number (1-4, default: 4): ', (answer) => {
|
|
28
|
+
rl.close()
|
|
29
|
+
const choice = (answer || '4').trim()
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
// Determine what to skip based on choice
|
|
32
|
+
const skipPaths = new Set()
|
|
33
|
+
if (choice === '1') {
|
|
34
|
+
// VS Code Copilot only — skip Claude and Codex files
|
|
35
|
+
skipPaths.add('CLAUDE.md')
|
|
36
|
+
skipPaths.add('AGENTS.md')
|
|
37
|
+
skipPaths.add('_claude')
|
|
38
|
+
} else if (choice === '2') {
|
|
39
|
+
// Claude Code only — skip Copilot and Codex files
|
|
40
|
+
skipPaths.add('AGENTS.md')
|
|
41
|
+
skipPaths.add('_github')
|
|
42
|
+
} else if (choice === '3') {
|
|
43
|
+
// OpenAI Codex only — skip Copilot and Claude files
|
|
44
|
+
skipPaths.add('_github')
|
|
45
|
+
skipPaths.add('_claude')
|
|
46
|
+
skipPaths.add('CLAUDE.md')
|
|
47
|
+
}
|
|
48
|
+
// choice '4' or anything else = install everything
|
|
49
|
+
|
|
50
|
+
const renameMap = {
|
|
51
|
+
'_github': '.github',
|
|
52
|
+
'_claude': '.claude',
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log('')
|
|
56
|
+
copyDir(templateDir, targetDir, renameMap, skipPaths)
|
|
57
|
+
|
|
58
|
+
const tools = { '1': 'VS Code Copilot', '2': 'Claude Code', '3': 'OpenAI Codex', '4': 'all tools' }
|
|
59
|
+
const toolName = tools[choice] || 'all tools'
|
|
60
|
+
|
|
61
|
+
console.log('')
|
|
62
|
+
console.log(` ✅ Done! Installed for ${toolName}:`)
|
|
63
|
+
console.log('')
|
|
64
|
+
if (choice !== '1' && choice !== '3') {
|
|
65
|
+
console.log(' 6 commands (/check, /ship, /wow, /stuck, /save, /explain)')
|
|
66
|
+
}
|
|
67
|
+
if (choice !== '2' && choice !== '3') {
|
|
68
|
+
console.log(' 4 agents (assistant, checker, shipper, investigator)')
|
|
69
|
+
}
|
|
70
|
+
console.log(' 12 skills (build-page, save-data, add-login, and more)')
|
|
71
|
+
console.log('')
|
|
72
|
+
console.log(' Just say what you want in plain English.')
|
|
73
|
+
console.log(' Example: "I want to build a portfolio site"')
|
|
74
|
+
console.log('')
|
|
75
|
+
})
|
|
35
76
|
} else if (command === 'remove') {
|
|
36
77
|
const dirs = [
|
|
37
78
|
path.join(targetDir, '.github', 'agents'),
|
|
@@ -41,6 +82,7 @@ if (command === 'init') {
|
|
|
41
82
|
const files = [
|
|
42
83
|
path.join(targetDir, '.github', 'copilot-instructions.md'),
|
|
43
84
|
path.join(targetDir, 'CLAUDE.md'),
|
|
85
|
+
path.join(targetDir, 'AGENTS.md'),
|
|
44
86
|
]
|
|
45
87
|
|
|
46
88
|
dirs.forEach(dir => {
|
|
@@ -109,10 +151,15 @@ if (command === 'init') {
|
|
|
109
151
|
console.log('')
|
|
110
152
|
}
|
|
111
153
|
|
|
112
|
-
function copyDir(src, dest, renameMap) {
|
|
154
|
+
function copyDir(src, dest, renameMap, skipPaths) {
|
|
113
155
|
const entries = fs.readdirSync(src, { withFileTypes: true })
|
|
114
156
|
|
|
115
157
|
for (const entry of entries) {
|
|
158
|
+
// Skip paths based on user's tool choice
|
|
159
|
+
if (skipPaths && skipPaths.has(entry.name)) {
|
|
160
|
+
continue
|
|
161
|
+
}
|
|
162
|
+
|
|
116
163
|
const srcPath = path.join(src, entry.name)
|
|
117
164
|
const destName = (renameMap && renameMap[entry.name]) || entry.name
|
|
118
165
|
const destPath = path.join(dest, destName)
|
|
@@ -121,7 +168,7 @@ function copyDir(src, dest, renameMap) {
|
|
|
121
168
|
if (!fs.existsSync(destPath)) {
|
|
122
169
|
fs.mkdirSync(destPath, { recursive: true })
|
|
123
170
|
}
|
|
124
|
-
copyDir(srcPath, destPath, renameMap)
|
|
171
|
+
copyDir(srcPath, destPath, renameMap, skipPaths)
|
|
125
172
|
} else {
|
|
126
173
|
// Don't overwrite existing files
|
|
127
174
|
if (fs.existsSync(destPath)) {
|
package/package.json
CHANGED