@only1btayy/g2w 1.0.25 → 1.0.27
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 +48 -6
- package/bin/g2w.js +4 -1
- package/lib/install.js +109 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,20 +75,50 @@ Research isn't just a web search. G2W uses Context7 for live library docs, Exa f
|
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
78
|
+
### What Ships With G2W
|
|
79
|
+
|
|
80
|
+
These install automatically — no setup, no API keys, no extra steps:
|
|
81
|
+
|
|
82
|
+
| Tool | What It Does |
|
|
83
|
+
|---|---|
|
|
84
|
+
| [Context7](https://context7.com) | Live library docs in every research and planning phase — no stale training data |
|
|
85
|
+
| [Shadcn/UI MCP](https://www.shadcn.io/mcp) | Real React component implementations with TypeScript props |
|
|
86
|
+
| [Tailwind CSS MCP](https://github.com/CarbonoDev/tailwindcss-mcp-server) | Utility classes, color palettes, CSS-to-Tailwind conversion |
|
|
87
|
+
| [A11y MCP](https://github.com/priyankark/a11y-mcp) | Accessibility audits and WCAG compliance checks |
|
|
88
|
+
|
|
89
|
+
Claude reaches for these automatically when they're relevant. You don't have to call them.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
78
93
|
### Power-Ups
|
|
79
94
|
|
|
80
|
-
|
|
95
|
+
Optional tools that make G2W stronger. Run `g2w power-ups` to set these up anytime.
|
|
96
|
+
|
|
97
|
+
**Free (just needs a key):**
|
|
98
|
+
|
|
99
|
+
| Tool | What It Adds | Get Your Key |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| [21st.dev](https://21st.dev) | AI-powered UI component generation — like v0 in your IDE | [21st.dev/magic/console](https://21st.dev/magic/console) |
|
|
102
|
+
| [Motion](https://motion.dev) | Production-grade animations with AI Kit | [plus.motion.dev/personal-token](https://plus.motion.dev/personal-token) |
|
|
103
|
+
| [Figma MCP](https://help.figma.com/hc/en-us/articles/32132100833559) | Design-to-code from Figma frames (free during beta) | [figma.com](https://figma.com) |
|
|
104
|
+
| [Marketing Skills](https://github.com/coreyhaines31/marketingskills) | 40+ skills for copywriting, SEO, conversion, growth | No key needed |
|
|
105
|
+
|
|
106
|
+
**Research (paid):**
|
|
81
107
|
|
|
82
108
|
| Tool | What It Adds |
|
|
83
109
|
|---|---|
|
|
84
|
-
| [Repomix](https://github.com/yamadashy/repomix) | Packs entire codebases into one AI-optimized file — `bring2life` and research use this |
|
|
85
|
-
| [Context7](https://context7.com) | Live library docs pulled into research — no stale training data |
|
|
86
110
|
| [Exa](https://exa.ai) | Semantic search for similar projects and best practices |
|
|
87
111
|
| [Firecrawl](https://firecrawl.dev) | Deep crawling of repos and docs sites during research |
|
|
112
|
+
|
|
113
|
+
**Workflow:**
|
|
114
|
+
|
|
115
|
+
| Tool | What It Adds |
|
|
116
|
+
|---|---|
|
|
117
|
+
| [Repomix](https://github.com/yamadashy/repomix) | Packs entire codebases into one AI-optimized file — `bring2life` uses this |
|
|
88
118
|
| [MemPalace](https://github.com/milla-jovovich/mempalace) | Persistent memory across sessions — decisions survive context clears |
|
|
89
119
|
| [Superpowers](https://github.com/supermemoryai/superpowers-claude) | Enhanced planning and review capabilities for Claude users |
|
|
90
120
|
|
|
91
|
-
|
|
121
|
+
G2W uses what's available and falls back gracefully when something isn't there.
|
|
92
122
|
|
|
93
123
|
---
|
|
94
124
|
|
|
@@ -179,7 +209,19 @@ Safe git operations — add, commit, push, status, log — run without approval
|
|
|
179
209
|
npm install -g @only1btayy/g2w && g2w
|
|
180
210
|
```
|
|
181
211
|
|
|
182
|
-
That's it. G2W installs globally into `~/.claude/` automatically — skills and
|
|
212
|
+
That's it. G2W installs globally into `~/.claude/` automatically — skills, hooks, and design tools ready in every project, everywhere.
|
|
213
|
+
|
|
214
|
+
To update:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
g2w update
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
To see optional Power-Ups:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
g2w power-ups
|
|
224
|
+
```
|
|
183
225
|
|
|
184
226
|
To uninstall:
|
|
185
227
|
|
|
@@ -187,7 +229,7 @@ To uninstall:
|
|
|
187
229
|
npm uninstall -g @only1btayy/g2w
|
|
188
230
|
```
|
|
189
231
|
|
|
190
|
-
Skills and
|
|
232
|
+
Skills, hooks, and MCP servers are removed from `~/.claude/` automatically.
|
|
191
233
|
|
|
192
234
|
> **Tip:** The logo renders in **bright green** in any terminal. On Windows Terminal or iTerm2, enable Retro/Bloom effects for the full glow.
|
|
193
235
|
|
package/bin/g2w.js
CHANGED
|
@@ -7,12 +7,15 @@ if (command === 'install') {
|
|
|
7
7
|
require('../lib/install').run();
|
|
8
8
|
} else if (command === 'update') {
|
|
9
9
|
require('../lib/install').update();
|
|
10
|
+
} else if (command === 'power-ups' || command === 'powerups') {
|
|
11
|
+
require('../lib/install').powerups();
|
|
10
12
|
} else if (command === 'uninstall') {
|
|
11
13
|
require('../lib/install').uninstall();
|
|
12
14
|
} else {
|
|
13
15
|
process.stdout.write(`${LOGO}
|
|
14
16
|
Usage:
|
|
15
|
-
g2w update — update skills to latest
|
|
17
|
+
g2w update — update skills, hooks, and tools to latest
|
|
18
|
+
g2w power-ups — show optional tools and setup links
|
|
16
19
|
g2w uninstall — remove G2W
|
|
17
20
|
|
|
18
21
|
`);
|
package/lib/install.js
CHANGED
|
@@ -41,7 +41,7 @@ const G2W_HOOKS = {
|
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
matcher: 'Edit|Write
|
|
44
|
+
matcher: 'Edit|Write',
|
|
45
45
|
hooks: [
|
|
46
46
|
{
|
|
47
47
|
type: 'prompt',
|
|
@@ -83,6 +83,45 @@ function copyHooks(targetBase) {
|
|
|
83
83
|
return dest;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
const MCP_SERVERS = {
|
|
87
|
+
context7: {
|
|
88
|
+
command: 'npx',
|
|
89
|
+
args: ['-y', '@upstash/context7-mcp@latest']
|
|
90
|
+
},
|
|
91
|
+
'shadcn-ui': {
|
|
92
|
+
url: 'https://www.shadcn.io/api/mcp'
|
|
93
|
+
},
|
|
94
|
+
'tailwindcss': {
|
|
95
|
+
command: 'npx',
|
|
96
|
+
args: ['-y', 'tailwindcss-mcp-server']
|
|
97
|
+
},
|
|
98
|
+
'a11y': {
|
|
99
|
+
command: 'npx',
|
|
100
|
+
args: ['-y', 'a11y-mcp']
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
function mergeMcpServers(targetBase) {
|
|
105
|
+
const settingsPath = path.join(targetBase, '.claude', 'settings.json');
|
|
106
|
+
let existing = {};
|
|
107
|
+
if (fs.existsSync(settingsPath)) {
|
|
108
|
+
try { existing = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); } catch {}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!existing.mcpServers) existing.mcpServers = {};
|
|
112
|
+
|
|
113
|
+
let added = 0;
|
|
114
|
+
for (const [name, config] of Object.entries(MCP_SERVERS)) {
|
|
115
|
+
if (!existing.mcpServers[name]) {
|
|
116
|
+
existing.mcpServers[name] = config;
|
|
117
|
+
added++;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
fs.writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
|
|
122
|
+
return added;
|
|
123
|
+
}
|
|
124
|
+
|
|
86
125
|
function mergeHooks(targetBase) {
|
|
87
126
|
const settingsPath = path.join(targetBase, '.claude', 'settings.json');
|
|
88
127
|
const hooksDir = path.join(targetBase, '.claude', 'hooks');
|
|
@@ -131,6 +170,19 @@ function removeSkills(targetBase) {
|
|
|
131
170
|
return false;
|
|
132
171
|
}
|
|
133
172
|
|
|
173
|
+
function removeMcpServers(targetBase) {
|
|
174
|
+
const settingsPath = path.join(targetBase, '.claude', 'settings.json');
|
|
175
|
+
if (!fs.existsSync(settingsPath)) return;
|
|
176
|
+
let existing = {};
|
|
177
|
+
try { existing = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); } catch { return; }
|
|
178
|
+
if (existing.mcpServers) {
|
|
179
|
+
for (const name of Object.keys(MCP_SERVERS)) {
|
|
180
|
+
delete existing.mcpServers[name];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
fs.writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
|
|
184
|
+
}
|
|
185
|
+
|
|
134
186
|
function removeHooks(targetBase) {
|
|
135
187
|
const settingsPath = path.join(targetBase, '.claude', 'settings.json');
|
|
136
188
|
const hooksDir = path.join(targetBase, '.claude', 'hooks');
|
|
@@ -173,6 +225,7 @@ async function run() {
|
|
|
173
225
|
const { dest, count } = copySkills(base);
|
|
174
226
|
copyHooks(base);
|
|
175
227
|
const settingsPath = mergeHooks(base);
|
|
228
|
+
const mcpAdded = mergeMcpServers(base);
|
|
176
229
|
|
|
177
230
|
writeTTY(`${LOGO}
|
|
178
231
|
\x1b[32m✅ G2W installed at ${label}\x1b[0m
|
|
@@ -181,6 +234,23 @@ async function run() {
|
|
|
181
234
|
Hooks → ${path.join(label, 'hooks/')}
|
|
182
235
|
Config → ${path.join(label, 'settings.json')}
|
|
183
236
|
|
|
237
|
+
\x1b[36mIncluded tools:\x1b[0m
|
|
238
|
+
✅ Context7 — live library docs in every research phase
|
|
239
|
+
✅ Shadcn/UI — real React component implementations
|
|
240
|
+
✅ Tailwind CSS — utility classes and CSS conversion
|
|
241
|
+
✅ A11y — accessibility audits and WCAG checks
|
|
242
|
+
|
|
243
|
+
\x1b[33mPower-Ups (optional — run g2w power-ups to set up):\x1b[0m
|
|
244
|
+
→ 21st.dev — AI component generation https://21st.dev/magic/console
|
|
245
|
+
→ Motion — production animations https://plus.motion.dev/personal-token
|
|
246
|
+
→ Figma MCP — design-to-code from Figma https://figma.com
|
|
247
|
+
→ Marketing — 40+ SEO, copy, growth skills https://github.com/coreyhaines31/marketingskills
|
|
248
|
+
→ Exa — semantic search (paid) https://exa.ai
|
|
249
|
+
→ Firecrawl — deep doc crawling (paid) https://firecrawl.dev
|
|
250
|
+
→ Repomix — pack codebases for AI https://github.com/yamadashy/repomix
|
|
251
|
+
→ MemPalace — persistent memory https://github.com/milla-jovovich/mempalace
|
|
252
|
+
→ Superpowers — enhanced planning + review https://github.com/supermemoryai/superpowers-claude
|
|
253
|
+
|
|
184
254
|
Open any project with Claude Code and type:
|
|
185
255
|
/g2w:bring2life — onboard an existing codebase
|
|
186
256
|
/g2w:back2it — resume a session
|
|
@@ -191,15 +261,50 @@ Open any project with Claude Code and type:
|
|
|
191
261
|
|
|
192
262
|
async function update() {
|
|
193
263
|
const { base, label } = getTarget();
|
|
194
|
-
copySkills(base);
|
|
264
|
+
const { count } = copySkills(base);
|
|
195
265
|
copyHooks(base);
|
|
196
|
-
|
|
266
|
+
mergeHooks(base);
|
|
267
|
+
const mcpAdded = mergeMcpServers(base);
|
|
268
|
+
|
|
269
|
+
writeTTY(`
|
|
270
|
+
\x1b[32m✅ G2W updated at ${label}\x1b[0m
|
|
271
|
+
|
|
272
|
+
${count} skills synced
|
|
273
|
+
Hooks synced
|
|
274
|
+
${mcpAdded > 0 ? mcpAdded + ' new MCP servers added' : 'MCP servers up to date'}
|
|
275
|
+
|
|
276
|
+
`);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
async function powerups() {
|
|
280
|
+
writeTTY(`
|
|
281
|
+
\x1b[36mG2W Power-Ups\x1b[0m
|
|
282
|
+
|
|
283
|
+
\x1b[33mFree (just needs a key):\x1b[0m
|
|
284
|
+
→ 21st.dev — AI component generation https://21st.dev/magic/console
|
|
285
|
+
→ Motion — production animations https://plus.motion.dev/personal-token
|
|
286
|
+
→ Figma MCP — design-to-code from Figma https://figma.com
|
|
287
|
+
→ Marketing — 40+ SEO, copy, growth skills https://github.com/coreyhaines31/marketingskills
|
|
288
|
+
|
|
289
|
+
\x1b[33mResearch (paid):\x1b[0m
|
|
290
|
+
→ Exa — semantic search https://exa.ai
|
|
291
|
+
→ Firecrawl — deep doc crawling https://firecrawl.dev
|
|
292
|
+
|
|
293
|
+
\x1b[33mWorkflow:\x1b[0m
|
|
294
|
+
→ Repomix — pack codebases for AI https://github.com/yamadashy/repomix
|
|
295
|
+
→ MemPalace — persistent memory https://github.com/milla-jovovich/mempalace
|
|
296
|
+
→ Superpowers — enhanced planning + review https://github.com/supermemoryai/superpowers-claude
|
|
297
|
+
|
|
298
|
+
Visit the links above to get your keys, then configure them in ~/.claude/settings.json
|
|
299
|
+
|
|
300
|
+
`);
|
|
197
301
|
}
|
|
198
302
|
|
|
199
303
|
async function uninstall() {
|
|
200
304
|
const { base, label } = getTarget();
|
|
201
305
|
const removed = removeSkills(base);
|
|
202
306
|
removeHooks(base);
|
|
307
|
+
removeMcpServers(base);
|
|
203
308
|
|
|
204
309
|
if (removed) {
|
|
205
310
|
console.log(`\n✅ G2W removed from ${label}\n`);
|
|
@@ -208,4 +313,4 @@ async function uninstall() {
|
|
|
208
313
|
}
|
|
209
314
|
}
|
|
210
315
|
|
|
211
|
-
module.exports = { run, update, uninstall };
|
|
316
|
+
module.exports = { run, update, uninstall, powerups };
|