@only1btayy/g2w 1.0.25 → 1.0.26

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
@@ -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
- G2W works out of the box. These optional tools make it stronger:
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
- Install what you want. G2W uses what's available and falls back gracefully when something isn't there.
121
+ G2W uses what's available and falls back gracefully when something isn't there.
92
122
 
93
123
  ---
94
124
 
package/lib/install.js CHANGED
@@ -41,7 +41,7 @@ const G2W_HOOKS = {
41
41
  ]
42
42
  },
43
43
  {
44
- matcher: 'Edit|Write|Bash',
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
@@ -200,6 +270,7 @@ async function uninstall() {
200
270
  const { base, label } = getTarget();
201
271
  const removed = removeSkills(base);
202
272
  removeHooks(base);
273
+ removeMcpServers(base);
203
274
 
204
275
  if (removed) {
205
276
  console.log(`\n✅ G2W removed from ${label}\n`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@only1btayy/g2w",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "G2W — a relationship protocol for building trust with AI",
5
5
  "bin": {
6
6
  "g2w": "bin/g2w.js"