organtic 1.3.0 → 2.0.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 +111 -86
- package/index.mjs +55 -167
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,149 +1,174 @@
|
|
|
1
1
|
# Organtic
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The AI-native organization. 25 experts from idea to launch.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Organtic plugs a team of specialized AI agents into [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Each agent applies named frameworks — Osterwalder VPC, Hormozi Value Equation, Reforge Growth Loops — not generic advice. Run them individually, as coordinated Agent Teams, or chain them into a full strategy pipeline.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
```
|
|
8
|
+
npx organtic
|
|
9
|
+
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
```
|
|
12
|
+
EXPLORE EXPLOIT
|
|
13
|
+
validate > build > launch craft document present studio
|
|
14
|
+
3 experts 5 experts 7 experts 4 agents 2 agents 1 agent 3 agents
|
|
15
|
+
```
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
---
|
|
14
18
|
|
|
15
|
-
##
|
|
19
|
+
## Install
|
|
16
20
|
|
|
17
|
-
```
|
|
21
|
+
```bash
|
|
22
|
+
# Interactive installer (recommended)
|
|
18
23
|
npx organtic
|
|
24
|
+
|
|
25
|
+
# Or add the marketplace directly in Claude Code
|
|
26
|
+
/plugin marketplace add Adanmohh/organtic
|
|
19
27
|
```
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
Then start Claude Code. Plugins auto-install on first launch.
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Single expert
|
|
35
|
+
/value-mapper AI tool that helps nurses track patient vitals
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
37
|
+
# Full Agent Team (experts run as parallel Claude Code instances)
|
|
38
|
+
/validate:full-team My SaaS idea for project management
|
|
31
39
|
|
|
32
|
-
|
|
40
|
+
# Full pipeline (chains all 15 explore experts)
|
|
41
|
+
/pipeline:run BurnoutLab - AI-powered burnout recovery courses
|
|
42
|
+
```
|
|
33
43
|
|
|
34
|
-
|
|
44
|
+
---
|
|
35
45
|
|
|
36
|
-
|
|
46
|
+
## Explore: Strategy Pipeline
|
|
37
47
|
|
|
38
|
-
|
|
48
|
+
Three plugins that chain together. Each phase builds on previous findings.
|
|
39
49
|
|
|
40
|
-
|
|
41
|
-
|--------|-------------|--------|
|
|
42
|
-
| **Value Mapper** | Maps value propositions against customer jobs, pains, and gains | Value proposition canvas, customer segments |
|
|
43
|
-
| **Business Modeler** | Designs revenue models, competitive positioning, and pricing strategy | Business model canvas, pricing model, blue ocean map |
|
|
44
|
-
| **Experiment Designer** | Designs and prioritizes validation experiments | Prioritized experiment backlog, test designs |
|
|
50
|
+
### validate — Is this worth building?
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
| Expert | Frameworks | Output |
|
|
53
|
+
|--------|-----------|--------|
|
|
54
|
+
| Value Mapper | Osterwalder VPC, Jobs-to-be-Done | Value proposition canvas, customer segments |
|
|
55
|
+
| Business Modeler | Business Model Canvas, Blue Ocean Strategy | Revenue model, competitive positioning |
|
|
56
|
+
| Experiment Designer | Strategyzer Testing, ICE/RICE | Prioritized experiment backlog |
|
|
47
57
|
|
|
48
|
-
|
|
58
|
+
### build — What are we shipping?
|
|
49
59
|
|
|
50
|
-
| Expert |
|
|
51
|
-
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
60
|
+
| Expert | Frameworks | Output |
|
|
61
|
+
|--------|-----------|--------|
|
|
62
|
+
| Product Strategist | Reforge, Cagan's Transformed | Product strategy, growth loops |
|
|
63
|
+
| Brand Strategist | Neumeier Brand Gap, Design Tokens | Brand identity system |
|
|
64
|
+
| Growth Designer | Torres Discovery, Hooked Model, PLG | Retention loops, activation flows |
|
|
65
|
+
| Spec Writer | Shape Up methodology | Shaped pitches, scope tables |
|
|
66
|
+
| Product Designer | Don Norman, JTBD UX, AI UX Patterns | Wireframes, interaction design |
|
|
56
67
|
|
|
57
68
|
### launch — How do we get customers?
|
|
58
69
|
|
|
59
|
-
|
|
70
|
+
| Expert | Frameworks | Output |
|
|
71
|
+
|--------|-----------|--------|
|
|
72
|
+
| Offer Designer | Hormozi Value Equation, Grand Slam Offer | Offer stack, pricing tiers |
|
|
73
|
+
| Copywriter | Copyhackers, Ogilvy, Gary Vee | Landing page copy, email sequences |
|
|
74
|
+
| Funnel Architect | Brunson Value Ladder, Suby 8-Phase | Funnel blueprint, lead magnets |
|
|
75
|
+
| Growth Auditor | Reforge Racecar, Channel-Model Fit | Gap analysis, prioritized roadmap |
|
|
76
|
+
| Media Planner | Dennis Yu Dollar-a-Day, 3x3 Grid | Channel plan, budget allocation |
|
|
77
|
+
| SEO Strategist | CXL Technical SEO, Search Intent Mapping | Keyword map, content clusters |
|
|
78
|
+
| AI Search Optimizer | CXL Entity SEO, LLM Visibility | Entity map, citation strategy |
|
|
60
79
|
|
|
61
|
-
|
|
62
|
-
|--------|-------------|--------|
|
|
63
|
-
| **Offer Designer** | Designs irresistible offers with pricing, guarantees, and bonuses | Offer stack, value equation score, pricing tiers |
|
|
64
|
-
| **Copywriter** | Writes conversion copy from voice-of-customer research | Landing page copy, email sequences, ad copy |
|
|
65
|
-
| **Funnel Architect** | Architects conversion funnels with AI-native qualification | Funnel blueprint, lead magnets, email flows |
|
|
66
|
-
| **Growth Auditor** | Audits all strategies for coherence and prioritizes actions | Gap analysis, prioritized roadmap, growth loop map |
|
|
67
|
-
| **Media Planner** | Plans paid media with budget allocation and creative testing | Channel plan, budget splits, ad creative briefs |
|
|
68
|
-
| **SEO Strategist** | Designs search strategy with technical SEO and content architecture | Keyword map, content clusters, technical audit |
|
|
69
|
-
| **AI Search Optimizer** | Optimizes visibility in AI-powered search and assistants | Entity map, structured data plan, citation strategy |
|
|
80
|
+
---
|
|
70
81
|
|
|
71
|
-
## Execution Plugins
|
|
82
|
+
## Exploit: Execution Plugins
|
|
72
83
|
|
|
73
|
-
Four plugins that turn strategy into
|
|
84
|
+
Four standalone plugins that turn strategy into deliverables.
|
|
74
85
|
|
|
75
86
|
### craft — Build it
|
|
76
87
|
|
|
77
|
-
| Agent |
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
88
|
+
| Agent | Output |
|
|
89
|
+
|-------|--------|
|
|
90
|
+
| Landing Page Builder | Conversion-optimized pages (React/HTML) |
|
|
91
|
+
| MVP Scaffolder | Full-stack prototype with auth, DB, API |
|
|
92
|
+
| Component Designer | Production UI components (React + Tailwind) |
|
|
93
|
+
| Tester | Persona-based QA with Playwright |
|
|
83
94
|
|
|
84
95
|
### document — Write it
|
|
85
96
|
|
|
86
|
-
| Agent |
|
|
87
|
-
|
|
88
|
-
|
|
|
89
|
-
|
|
|
97
|
+
| Agent | Output |
|
|
98
|
+
|-------|--------|
|
|
99
|
+
| Business Writer | Business plans, SOPs, case studies |
|
|
100
|
+
| Pitch Deck Writer | Investor decks, sales proposals (Marp to PDF) |
|
|
90
101
|
|
|
91
102
|
### present — Show it
|
|
92
103
|
|
|
93
|
-
| Agent |
|
|
94
|
-
|
|
95
|
-
|
|
|
104
|
+
| Agent | Output |
|
|
105
|
+
|-------|--------|
|
|
106
|
+
| Slide Designer | Professional decks from strategy outputs |
|
|
96
107
|
|
|
97
108
|
### studio — Film it
|
|
98
109
|
|
|
99
|
-
| Agent |
|
|
100
|
-
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
110
|
+
| Agent | Output |
|
|
111
|
+
|-------|--------|
|
|
112
|
+
| Demo Producer | Product demo videos (Playwright + ElevenLabs + Remotion) |
|
|
113
|
+
| Clip Maker | Social clips for Reels, TikTok, Shorts, LinkedIn |
|
|
114
|
+
| Content Creator | Branded social images and short-form video |
|
|
104
115
|
|
|
105
|
-
|
|
116
|
+
---
|
|
106
117
|
|
|
107
|
-
|
|
118
|
+
## Pipeline
|
|
108
119
|
|
|
109
|
-
|
|
120
|
+
The pipeline orchestrator chains all 15 explore experts automatically:
|
|
110
121
|
|
|
111
122
|
```
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
123
|
+
Phase 1: validate 3 experts Is this worth building?
|
|
124
|
+
Phase 2: build 5 experts What are we shipping?
|
|
125
|
+
Phase 3: launch-strategy 3 experts Offer + copy + funnels
|
|
126
|
+
Phase 4: launch-audit 1 expert Coherence check across all outputs
|
|
127
|
+
Phase 5: launch-execution 3 experts Media + SEO + AI search
|
|
117
128
|
```
|
|
118
129
|
|
|
119
|
-
|
|
130
|
+
```bash
|
|
131
|
+
/pipeline:run MyProject - description of the idea
|
|
132
|
+
/pipeline:run MyProject --start-phase build # Resume from a phase
|
|
133
|
+
/pipeline:run MyProject --autonomous # Research-first mode
|
|
134
|
+
/pipeline:status # Check progress
|
|
135
|
+
/pipeline:cancel # Stop
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
120
139
|
|
|
121
|
-
|
|
140
|
+
## Agent Teams
|
|
141
|
+
|
|
142
|
+
Commands ending in `:full-team` spawn multiple Claude Code instances that coordinate through shared task lists and message each other directly.
|
|
122
143
|
|
|
123
144
|
```bash
|
|
124
|
-
|
|
145
|
+
/validate:full-team My idea
|
|
146
|
+
/build:full-team Continue from validation
|
|
147
|
+
/launch:full-team Go to market
|
|
125
148
|
```
|
|
126
149
|
|
|
127
|
-
|
|
150
|
+
Requires `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `~/.claude/settings.json`.
|
|
128
151
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Cross-Session Memory
|
|
132
155
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
156
|
+
Each expert outputs project-scoped tags auto-captured by [claude-mem](https://github.com/thedotmack/claude-mem). Later phases search memory by project name to build on earlier findings — no manual copy-pasting between sessions.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
/plugin install claude-mem@thedotmack
|
|
137
160
|
```
|
|
138
161
|
|
|
162
|
+
---
|
|
163
|
+
|
|
139
164
|
## Requirements
|
|
140
165
|
|
|
141
166
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI
|
|
142
|
-
- Optional: [claude-mem](https://github.com/
|
|
143
|
-
- For studio
|
|
167
|
+
- Optional: [claude-mem](https://github.com/thedotmack/claude-mem) for cross-session memory
|
|
168
|
+
- For studio: Node.js, Playwright, Remotion, ffmpeg, ElevenLabs API key
|
|
144
169
|
|
|
145
170
|
## Links
|
|
146
171
|
|
|
147
|
-
|
|
172
|
+
[GitHub](https://github.com/Adanmohh/organtic) | [Issues](https://github.com/Adanmohh/organtic/issues)
|
|
148
173
|
|
|
149
174
|
MIT License
|
package/index.mjs
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync
|
|
3
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
4
4
|
import { join } from "path";
|
|
5
5
|
import { homedir } from "os";
|
|
6
6
|
import { createInterface } from "readline";
|
|
7
|
-
import { execSync } from "child_process";
|
|
8
7
|
|
|
9
8
|
const MARKETPLACE_REPO = "Adanmohh/organtic";
|
|
10
9
|
const MARKETPLACE_NAME = "organtic";
|
|
11
|
-
const GITHUB_URL = `https://github.com/${MARKETPLACE_REPO}.git`;
|
|
12
10
|
|
|
13
11
|
const PLUGINS = [
|
|
14
12
|
{
|
|
@@ -149,161 +147,31 @@ function box(chalk, lines, { title = "", width = 48, borderColor = null } = {})
|
|
|
149
147
|
}
|
|
150
148
|
|
|
151
149
|
// ---------------------------------------------------------------------------
|
|
152
|
-
//
|
|
150
|
+
// Settings.json management
|
|
153
151
|
// ---------------------------------------------------------------------------
|
|
154
152
|
|
|
155
|
-
function getClaudeDir() {
|
|
156
|
-
return join(homedir(), ".claude");
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
function getPluginsDir() {
|
|
160
|
-
return join(getClaudeDir(), "plugins");
|
|
161
|
-
}
|
|
162
|
-
|
|
163
153
|
function getSettingsPath() {
|
|
164
|
-
return join(
|
|
154
|
+
return join(homedir(), ".claude", "settings.json");
|
|
165
155
|
}
|
|
166
156
|
|
|
167
|
-
function
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function getInstalledPluginsPath() {
|
|
172
|
-
return join(getPluginsDir(), "installed_plugins.json");
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function getMarketplacePath() {
|
|
176
|
-
return join(getPluginsDir(), "marketplaces", MARKETPLACE_NAME);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
function getCachePath() {
|
|
180
|
-
return join(getPluginsDir(), "cache", MARKETPLACE_NAME);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// ---------------------------------------------------------------------------
|
|
184
|
-
// JSON file helpers
|
|
185
|
-
// ---------------------------------------------------------------------------
|
|
186
|
-
|
|
187
|
-
function readJson(path) {
|
|
188
|
-
if (!existsSync(path)) return null;
|
|
157
|
+
function readSettings() {
|
|
158
|
+
const path = getSettingsPath();
|
|
159
|
+
if (!existsSync(path)) return {};
|
|
189
160
|
try {
|
|
190
161
|
return JSON.parse(readFileSync(path, "utf-8"));
|
|
191
162
|
} catch {
|
|
192
|
-
return
|
|
163
|
+
return {};
|
|
193
164
|
}
|
|
194
165
|
}
|
|
195
166
|
|
|
196
|
-
function
|
|
197
|
-
const dir = join(
|
|
167
|
+
function writeSettings(settings) {
|
|
168
|
+
const dir = join(homedir(), ".claude");
|
|
198
169
|
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
199
|
-
writeFileSync(
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// ---------------------------------------------------------------------------
|
|
203
|
-
// Installation logic
|
|
204
|
-
// ---------------------------------------------------------------------------
|
|
205
|
-
|
|
206
|
-
function cloneMarketplace() {
|
|
207
|
-
const marketplacePath = getMarketplacePath();
|
|
208
|
-
|
|
209
|
-
if (existsSync(marketplacePath)) {
|
|
210
|
-
// Pull latest
|
|
211
|
-
try {
|
|
212
|
-
execSync("git pull --ff-only", { cwd: marketplacePath, stdio: "pipe" });
|
|
213
|
-
} catch {
|
|
214
|
-
// If pull fails, remove and re-clone
|
|
215
|
-
execSync(`rm -rf "${marketplacePath}"`, { stdio: "pipe" });
|
|
216
|
-
mkdirSync(join(getPluginsDir(), "marketplaces"), { recursive: true });
|
|
217
|
-
execSync(`git clone "${GITHUB_URL}" "${marketplacePath}"`, { stdio: "pipe" });
|
|
218
|
-
}
|
|
219
|
-
} else {
|
|
220
|
-
mkdirSync(join(getPluginsDir(), "marketplaces"), { recursive: true });
|
|
221
|
-
execSync(`git clone "${GITHUB_URL}" "${marketplacePath}"`, { stdio: "pipe" });
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Get commit SHA
|
|
225
|
-
const sha = execSync("git rev-parse HEAD", { cwd: marketplacePath, encoding: "utf-8" }).trim();
|
|
226
|
-
return sha;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
function getPluginVersion(pluginDir) {
|
|
230
|
-
const manifestPath = join(pluginDir, ".claude-plugin", "plugin.json");
|
|
231
|
-
const manifest = readJson(manifestPath);
|
|
232
|
-
return manifest?.version || "1.0.0";
|
|
170
|
+
writeFileSync(getSettingsPath(), JSON.stringify(settings, null, 2) + "\n");
|
|
233
171
|
}
|
|
234
172
|
|
|
235
|
-
function
|
|
236
|
-
const
|
|
237
|
-
const cachePath = getCachePath();
|
|
238
|
-
const results = [];
|
|
239
|
-
|
|
240
|
-
for (const plugin of selected) {
|
|
241
|
-
const srcDir = join(marketplacePath, "plugins", plugin.name);
|
|
242
|
-
const version = getPluginVersion(srcDir);
|
|
243
|
-
const versionSlug = commitSha.substring(0, 12);
|
|
244
|
-
const destDir = join(cachePath, plugin.name, versionSlug);
|
|
245
|
-
|
|
246
|
-
mkdirSync(destDir, { recursive: true });
|
|
247
|
-
cpSync(srcDir, destDir, { recursive: true });
|
|
248
|
-
|
|
249
|
-
results.push({
|
|
250
|
-
name: plugin.name,
|
|
251
|
-
version,
|
|
252
|
-
versionSlug,
|
|
253
|
-
installPath: destDir,
|
|
254
|
-
commitSha,
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
return results;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
function updateKnownMarketplaces() {
|
|
262
|
-
const path = getKnownMarketplacesPath();
|
|
263
|
-
const data = readJson(path) || {};
|
|
264
|
-
|
|
265
|
-
data[MARKETPLACE_NAME] = {
|
|
266
|
-
source: {
|
|
267
|
-
source: "github",
|
|
268
|
-
repo: MARKETPLACE_REPO,
|
|
269
|
-
},
|
|
270
|
-
installLocation: getMarketplacePath().replace(/\//g, "\\"),
|
|
271
|
-
lastUpdated: new Date().toISOString(),
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
writeJson(path, data);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
function updateInstalledPlugins(cachedPlugins) {
|
|
278
|
-
const path = getInstalledPluginsPath();
|
|
279
|
-
const data = readJson(path) || { version: 2, plugins: {} };
|
|
280
|
-
|
|
281
|
-
if (!data.plugins) data.plugins = {};
|
|
282
|
-
if (!data.version) data.version = 2;
|
|
283
|
-
|
|
284
|
-
const now = new Date().toISOString();
|
|
285
|
-
const projectPath = homedir();
|
|
286
|
-
|
|
287
|
-
for (const plugin of cachedPlugins) {
|
|
288
|
-
const key = `${plugin.name}@${MARKETPLACE_NAME}`;
|
|
289
|
-
data.plugins[key] = [
|
|
290
|
-
{
|
|
291
|
-
scope: "project",
|
|
292
|
-
installPath: plugin.installPath.replace(/\//g, "\\"),
|
|
293
|
-
version: plugin.version,
|
|
294
|
-
installedAt: now,
|
|
295
|
-
lastUpdated: now,
|
|
296
|
-
gitCommitSha: plugin.commitSha,
|
|
297
|
-
projectPath: projectPath.replace(/\//g, "\\"),
|
|
298
|
-
},
|
|
299
|
-
];
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
writeJson(path, data);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function updateSettings(selected) {
|
|
306
|
-
const settings = readJson(getSettingsPath()) || {};
|
|
173
|
+
function installPlugins(selected, enableAgentTeams = false) {
|
|
174
|
+
const settings = readSettings();
|
|
307
175
|
|
|
308
176
|
// Add marketplace
|
|
309
177
|
if (!settings.extraKnownMarketplaces) {
|
|
@@ -324,25 +192,15 @@ function updateSettings(selected) {
|
|
|
324
192
|
settings.enabledPlugins[`${plugin.name}@${MARKETPLACE_NAME}`] = true;
|
|
325
193
|
}
|
|
326
194
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
// 2. Cache plugin files
|
|
335
|
-
const cachedPlugins = cachePlugins(selected, commitSha);
|
|
336
|
-
|
|
337
|
-
// 3. Register marketplace in known_marketplaces.json
|
|
338
|
-
updateKnownMarketplaces();
|
|
339
|
-
|
|
340
|
-
// 4. Register plugins in installed_plugins.json
|
|
341
|
-
updateInstalledPlugins(cachedPlugins);
|
|
342
|
-
|
|
343
|
-
// 5. Update settings.json (enabledPlugins + extraKnownMarketplaces)
|
|
344
|
-
updateSettings(selected);
|
|
195
|
+
// Enable Agent Teams
|
|
196
|
+
if (enableAgentTeams) {
|
|
197
|
+
if (!settings.env) {
|
|
198
|
+
settings.env = {};
|
|
199
|
+
}
|
|
200
|
+
settings.env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS = "1";
|
|
201
|
+
}
|
|
345
202
|
|
|
203
|
+
writeSettings(settings);
|
|
346
204
|
return true;
|
|
347
205
|
}
|
|
348
206
|
|
|
@@ -460,17 +318,43 @@ async function main() {
|
|
|
460
318
|
|
|
461
319
|
console.log();
|
|
462
320
|
|
|
321
|
+
// ── Agent Teams ─────────────────────────────────────────────────────
|
|
322
|
+
|
|
323
|
+
let enableAgentTeams = false;
|
|
324
|
+
const currentSettings = readSettings();
|
|
325
|
+
const alreadyEnabled = currentSettings.env?.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS === "1";
|
|
326
|
+
|
|
327
|
+
if (alreadyEnabled) {
|
|
328
|
+
console.log(` ${green("\u2713")} ${dim("Agent Teams already enabled")}`);
|
|
329
|
+
console.log();
|
|
330
|
+
} else {
|
|
331
|
+
console.log(` ${bold("Agent Teams")} ${dim("lets experts run as parallel Claude Code")}`);
|
|
332
|
+
console.log(` ${dim("instances that coordinate and message each other.")}`);
|
|
333
|
+
console.log(` ${dim("Required for")} ${bold(":full-team")} ${dim("commands (e.g. /validate:full-team).")}`);
|
|
334
|
+
console.log();
|
|
335
|
+
|
|
336
|
+
const rl2 = createInterface({ input: process.stdin, output: process.stdout });
|
|
337
|
+
const teamsChoice = await new Promise((resolve) => {
|
|
338
|
+
rl2.question(` ${cyan("\u276f")} Enable Agent Teams? (Y/n): `, resolve);
|
|
339
|
+
});
|
|
340
|
+
rl2.close();
|
|
341
|
+
|
|
342
|
+
const tc = teamsChoice.trim().toLowerCase();
|
|
343
|
+
enableAgentTeams = tc === "" || tc === "y" || tc === "yes";
|
|
344
|
+
console.log();
|
|
345
|
+
}
|
|
346
|
+
|
|
463
347
|
// ── Install ───────────────────────────────────────────────────────────
|
|
464
348
|
|
|
465
349
|
const spinner = ora({
|
|
466
|
-
text: `
|
|
350
|
+
text: `Registering ${selected.length} plugin${selected.length > 1 ? "s" : ""} in ~/.claude/settings.json...`,
|
|
467
351
|
color: "cyan",
|
|
468
352
|
}).start();
|
|
469
353
|
|
|
470
354
|
try {
|
|
471
|
-
installPlugins(selected);
|
|
355
|
+
installPlugins(selected, enableAgentTeams);
|
|
472
356
|
spinner.succeed(
|
|
473
|
-
`${bold(`${selected.length} plugins`)} ${dim("
|
|
357
|
+
`${bold(`${selected.length} plugins`)} ${dim("registered in")} ${dim("~/.claude/settings.json")}`
|
|
474
358
|
);
|
|
475
359
|
} catch (err) {
|
|
476
360
|
spinner.fail(red(`Failed: ${err.message}`));
|
|
@@ -491,6 +375,10 @@ async function main() {
|
|
|
491
375
|
console.log(` ${green("\u2713")} ${bold(plugin.name)} ${dim(`\u2014 ${label}`)}`);
|
|
492
376
|
}
|
|
493
377
|
|
|
378
|
+
if (enableAgentTeams) {
|
|
379
|
+
console.log(` ${green("\u2713")} ${bold("Agent Teams")} ${dim("\u2014 enabled")}`);
|
|
380
|
+
}
|
|
381
|
+
|
|
494
382
|
console.log();
|
|
495
383
|
|
|
496
384
|
// ── Getting Started Card ──────────────────────────────────────────────
|
|
@@ -504,8 +392,8 @@ async function main() {
|
|
|
504
392
|
` ${dim("Autonomous mode:")} ${bold("--autonomous")}`,
|
|
505
393
|
` ${dim("Single expert:")} ${bold("/value-mapper")} ${dim("Idea")}`,
|
|
506
394
|
"",
|
|
507
|
-
` ${dim("
|
|
508
|
-
` ${
|
|
395
|
+
` ${dim("Claude Code will auto-install plugins")}`,
|
|
396
|
+
` ${dim("on first startup after registration.")}`,
|
|
509
397
|
"",
|
|
510
398
|
], { title: "Getting Started", width: W, borderColor: cyanBorder }));
|
|
511
399
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "organtic",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "The AI-native organization. 25 experts from idea to launch. Strategy pipeline (validate > build > launch) + execution plugins (craft, document, present, studio). Claude Code plugin ecosystem.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"organtic": "./index.mjs"
|