organtic 3.2.0 → 3.3.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.
Files changed (3) hide show
  1. package/README.md +174 -174
  2. package/index.mjs +409 -403
  3. package/package.json +49 -49
package/README.md CHANGED
@@ -1,174 +1,174 @@
1
- # Organtic
2
-
3
- **The AI-native organization. 25 experts from idea to launch.**
4
-
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
-
7
- ```
8
- npx organtic
9
- ```
10
-
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
- ```
16
-
17
- ---
18
-
19
- ## Install
20
-
21
- ```bash
22
- # Interactive installer (recommended)
23
- npx organtic
24
-
25
- # Or add the marketplace directly in Claude Code
26
- /plugin marketplace add Adanmohh/organtic
27
- ```
28
-
29
- Then start Claude Code. Plugins auto-install on first launch.
30
-
31
- ## Usage
32
-
33
- ```bash
34
- # Single expert
35
- /value-mapper AI tool that helps nurses track patient vitals
36
-
37
- # Full Agent Team (experts run as parallel Claude Code instances)
38
- /validate:full-team My SaaS idea for project management
39
-
40
- # Full pipeline (chains all 15 explore experts)
41
- /pipeline:run BurnoutLab - AI-powered burnout recovery courses
42
- ```
43
-
44
- ---
45
-
46
- ## Explore: Strategy Pipeline
47
-
48
- Three plugins that chain together. Each phase builds on previous findings.
49
-
50
- ### validate — Is this worth building?
51
-
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 |
57
-
58
- ### build — What are we shipping?
59
-
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 |
67
-
68
- ### launch — How do we get customers?
69
-
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 |
79
-
80
- ---
81
-
82
- ## Exploit: Execution Plugins
83
-
84
- Four standalone plugins that turn strategy into deliverables.
85
-
86
- ### craft — Build it
87
-
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 |
94
-
95
- ### document — Write it
96
-
97
- | Agent | Output |
98
- |-------|--------|
99
- | Business Writer | Business plans, SOPs, case studies |
100
- | Pitch Deck Writer | Investor decks, sales proposals (Marp to PDF) |
101
-
102
- ### present — Show it
103
-
104
- | Agent | Output |
105
- |-------|--------|
106
- | Slide Designer | Professional decks from strategy outputs |
107
-
108
- ### studio — Film it
109
-
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 |
115
-
116
- ---
117
-
118
- ## Pipeline
119
-
120
- The pipeline orchestrator chains all 15 explore experts automatically:
121
-
122
- ```
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
128
- ```
129
-
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
- ---
139
-
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.
143
-
144
- ```bash
145
- /validate:full-team My idea
146
- /build:full-team Continue from validation
147
- /launch:full-team Go to market
148
- ```
149
-
150
- Requires `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `~/.claude/settings.json`.
151
-
152
- ---
153
-
154
- ## Cross-Session Memory
155
-
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
160
- ```
161
-
162
- ---
163
-
164
- ## Requirements
165
-
166
- - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI
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
169
-
170
- ## Links
171
-
172
- [GitHub](https://github.com/Adanmohh/organtic) | [Issues](https://github.com/Adanmohh/organtic/issues)
173
-
174
- MIT License
1
+ # Organtic
2
+
3
+ **The AI-native organization. 25 experts from idea to launch.**
4
+
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
+
7
+ ```
8
+ npx organtic
9
+ ```
10
+
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
+ ```
16
+
17
+ ---
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ # Interactive installer (recommended)
23
+ npx organtic
24
+
25
+ # Or add the marketplace directly in Claude Code
26
+ /plugin marketplace add Adanmohh/organtic
27
+ ```
28
+
29
+ Then start Claude Code. Plugins auto-install on first launch.
30
+
31
+ ## Usage
32
+
33
+ ```bash
34
+ # Single expert
35
+ /value-mapper AI tool that helps nurses track patient vitals
36
+
37
+ # Full Agent Team (experts run as parallel Claude Code instances)
38
+ /validate:full-team My SaaS idea for project management
39
+
40
+ # Full pipeline (chains all 15 explore experts)
41
+ /pipeline:run BurnoutLab - AI-powered burnout recovery courses
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Explore: Strategy Pipeline
47
+
48
+ Three plugins that chain together. Each phase builds on previous findings.
49
+
50
+ ### validate — Is this worth building?
51
+
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 |
57
+
58
+ ### build — What are we shipping?
59
+
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 |
67
+
68
+ ### launch — How do we get customers?
69
+
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 |
79
+
80
+ ---
81
+
82
+ ## Exploit: Execution Plugins
83
+
84
+ Four standalone plugins that turn strategy into deliverables.
85
+
86
+ ### craft — Build it
87
+
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 |
94
+
95
+ ### document — Write it
96
+
97
+ | Agent | Output |
98
+ |-------|--------|
99
+ | Business Writer | Business plans, SOPs, case studies |
100
+ | Pitch Deck Writer | Investor decks, sales proposals (Marp to PDF) |
101
+
102
+ ### present — Show it
103
+
104
+ | Agent | Output |
105
+ |-------|--------|
106
+ | Slide Designer | Professional decks from strategy outputs |
107
+
108
+ ### studio — Film it
109
+
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 |
115
+
116
+ ---
117
+
118
+ ## Pipeline
119
+
120
+ The pipeline orchestrator chains all 15 explore experts automatically:
121
+
122
+ ```
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
128
+ ```
129
+
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
+ ---
139
+
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.
143
+
144
+ ```bash
145
+ /validate:full-team My idea
146
+ /build:full-team Continue from validation
147
+ /launch:full-team Go to market
148
+ ```
149
+
150
+ Requires `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `~/.claude/settings.json`.
151
+
152
+ ---
153
+
154
+ ## Cross-Session Memory
155
+
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
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Requirements
165
+
166
+ - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI
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
169
+
170
+ ## Links
171
+
172
+ [GitHub](https://github.com/Adanmohh/organtic) | [Issues](https://github.com/Adanmohh/organtic/issues)
173
+
174
+ MIT License
package/index.mjs CHANGED
@@ -1,403 +1,409 @@
1
- #!/usr/bin/env node
2
-
3
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
4
- import { join } from "path";
5
- import { homedir } from "os";
6
- import { createInterface } from "readline";
7
-
8
- const MARKETPLACE_REPO = "Adanmohh/organtic";
9
- const MARKETPLACE_NAME = "organtic";
10
-
11
- const PLUGINS = [
12
- {
13
- name: "validate",
14
- desc: "Validate ideas",
15
- experts: 3,
16
- agents: "Value Mapper, Business Modeler, Experiment Designer",
17
- },
18
- {
19
- name: "build",
20
- desc: "Build strategy",
21
- experts: 5,
22
- agents: "Product Strategist, Brand Strategist, Growth Designer, Spec Writer, Product Designer",
23
- },
24
- {
25
- name: "launch",
26
- desc: "Go-to-market",
27
- experts: 7,
28
- agents: "Offer Designer, Copywriter, Funnel Architect, Growth Auditor, Media Planner, SEO Strategist, AI Search Optimizer",
29
- },
30
- {
31
- name: "craft",
32
- desc: "Build deliverables",
33
- experts: 4,
34
- agents: "Landing Page Builder, MVP Scaffolder, Component Designer, Tester",
35
- },
36
- {
37
- name: "document",
38
- desc: "Write documents",
39
- experts: 2,
40
- agents: "Business Writer, Pitch Deck Writer",
41
- },
42
- {
43
- name: "present",
44
- desc: "Create presentations",
45
- experts: 1,
46
- agents: "Slide Designer",
47
- },
48
- {
49
- name: "studio",
50
- desc: "Produce videos",
51
- experts: 3,
52
- agents: "Demo Producer, Clip Maker, Content Creator",
53
- },
54
- {
55
- name: "pipeline",
56
- desc: "Pipeline orchestrator",
57
- experts: null,
58
- agents: "Chains 15 explore experts across validate > build > launch",
59
- },
60
- ];
61
-
62
- // ---------------------------------------------------------------------------
63
- // Gradient & styling utilities
64
- // ---------------------------------------------------------------------------
65
-
66
- function makeGradient(chalk, steps) {
67
- const colors = [
68
- [16, 185, 129], // #10b981 green
69
- [6, 182, 212], // #06b6d4 cyan
70
- [59, 130, 246], // #3b82f6 blue
71
- ];
72
-
73
- const result = [];
74
- for (let i = 0; i < steps; i++) {
75
- const t = steps === 1 ? 0 : i / (steps - 1);
76
- let r, g, b;
77
- if (t <= 0.5) {
78
- const lt = t * 2;
79
- r = Math.round(colors[0][0] + (colors[1][0] - colors[0][0]) * lt);
80
- g = Math.round(colors[0][1] + (colors[1][1] - colors[0][1]) * lt);
81
- b = Math.round(colors[0][2] + (colors[1][2] - colors[0][2]) * lt);
82
- } else {
83
- const lt = (t - 0.5) * 2;
84
- r = Math.round(colors[1][0] + (colors[2][0] - colors[1][0]) * lt);
85
- g = Math.round(colors[1][1] + (colors[2][1] - colors[1][1]) * lt);
86
- b = Math.round(colors[1][2] + (colors[2][2] - colors[1][2]) * lt);
87
- }
88
- result.push(chalk.rgb(r, g, b));
89
- }
90
- return result;
91
- }
92
-
93
- function gradientText(chalk, text) {
94
- const colors = makeGradient(chalk, text.length);
95
- return text.split("").map((ch, i) => colors[i](ch)).join("");
96
- }
97
-
98
- function gradientLine(chalk, text, width) {
99
- const colors = makeGradient(chalk, width);
100
- return text.split("").map((ch, i) => {
101
- const ci = Math.min(i, width - 1);
102
- return colors[ci](ch);
103
- }).join("");
104
- }
105
-
106
- function pad(str, len) {
107
- const visible = stripAnsi(str);
108
- const diff = len - visible.length;
109
- return diff > 0 ? str + " ".repeat(diff) : str;
110
- }
111
-
112
- function stripAnsi(str) {
113
- return str.replace(/\x1b\[[0-9;]*m/g, "");
114
- }
115
-
116
- // ---------------------------------------------------------------------------
117
- // Box drawing
118
- // ---------------------------------------------------------------------------
119
-
120
- function box(chalk, lines, { title = "", width = 48, borderColor = null } = {}) {
121
- const bc = borderColor || ((s) => gradientLine(chalk, s, width + 2));
122
- const inner = width;
123
-
124
- const topLeft = bc("\u256d");
125
- const topRight = bc("\u256e");
126
- const botLeft = bc("\u2570");
127
- const botRight = bc("\u256f");
128
- const horiz = (len) => bc("\u2500".repeat(len));
129
- const vert = bc("\u2502");
130
-
131
- const out = [];
132
-
133
- if (title) {
134
- const titleStr = ` ${title} `;
135
- const remaining = inner - titleStr.length;
136
- out.push(` ${topLeft}${horiz(1)}${bc(titleStr)}${horiz(remaining - 1)}${topRight}`);
137
- } else {
138
- out.push(` ${topLeft}${horiz(inner)}${topRight}`);
139
- }
140
-
141
- for (const line of lines) {
142
- out.push(` ${vert}${pad(line, inner)}${vert}`);
143
- }
144
-
145
- out.push(` ${botLeft}${horiz(inner)}${botRight}`);
146
- return out.join("\n");
147
- }
148
-
149
- // ---------------------------------------------------------------------------
150
- // Settings.json management
151
- // ---------------------------------------------------------------------------
152
-
153
- function getSettingsPath() {
154
- return join(homedir(), ".claude", "settings.json");
155
- }
156
-
157
- function readSettings() {
158
- const path = getSettingsPath();
159
- if (!existsSync(path)) return {};
160
- try {
161
- return JSON.parse(readFileSync(path, "utf-8"));
162
- } catch {
163
- return {};
164
- }
165
- }
166
-
167
- function writeSettings(settings) {
168
- const dir = join(homedir(), ".claude");
169
- if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
170
- writeFileSync(getSettingsPath(), JSON.stringify(settings, null, 2) + "\n");
171
- }
172
-
173
- function installPlugins(selected, enableAgentTeams = false) {
174
- const settings = readSettings();
175
-
176
- // Add marketplace
177
- if (!settings.extraKnownMarketplaces) {
178
- settings.extraKnownMarketplaces = {};
179
- }
180
- settings.extraKnownMarketplaces[MARKETPLACE_NAME] = {
181
- source: {
182
- source: "github",
183
- repo: MARKETPLACE_REPO,
184
- },
185
- };
186
-
187
- // Enable selected plugins
188
- if (!settings.enabledPlugins) {
189
- settings.enabledPlugins = {};
190
- }
191
- for (const plugin of selected) {
192
- settings.enabledPlugins[`${plugin.name}@${MARKETPLACE_NAME}`] = true;
193
- }
194
-
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
- }
202
-
203
- writeSettings(settings);
204
- return true;
205
- }
206
-
207
- // ---------------------------------------------------------------------------
208
- // Main
209
- // ---------------------------------------------------------------------------
210
-
211
- async function main() {
212
- const chalk = (await import("chalk")).default;
213
- const { default: ora } = await import("ora");
214
-
215
- const W = 48;
216
- const dim = chalk.dim;
217
- const bold = chalk.bold.white;
218
- const green = chalk.rgb(16, 185, 129);
219
- const cyan = chalk.rgb(6, 182, 212);
220
- const red = chalk.rgb(239, 68, 68);
221
-
222
- // ── Banner ──────────────────────────────────────────────────────────────
223
-
224
- const dots = gradientText(chalk, "\u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf");
225
- const title = gradientText(chalk, "O R G A N T I C");
226
-
227
- const banner = box(chalk, [
228
- "",
229
- ` ${dots}`,
230
- ` ${title}`,
231
- "",
232
- ` ${dim("The AI-native organization.")}`,
233
- ` ${dim("25 experts from idea to launch.")}`,
234
- "",
235
- ], { width: W });
236
-
237
- console.log();
238
- console.log(banner);
239
- console.log();
240
-
241
- // ── Pipeline Map ────────────────────────────────────────────────────────
242
-
243
- console.log(box(chalk, [
244
- "",
245
- ` ${bold("validate")} ${dim("\u2500\u2500\u25b6")} ${bold("build")} ${dim("\u2500\u2500\u25b6")} ${bold("launch")}`,
246
- ` ${dim("3 experts")} ${dim("5 experts")} ${dim("7 experts")}`,
247
- "",
248
- ], { title: "Explore", width: W }));
249
-
250
- console.log(box(chalk, [
251
- "",
252
- ` ${bold("craft")} ${bold("document")} ${bold("present")} ${bold("studio")}`,
253
- ` ${dim("4 agents")} ${dim("2 agents")} ${dim("1 agent")} ${dim("3 agents")}`,
254
- "",
255
- ], { title: "Exploit", width: W }));
256
-
257
- console.log(box(chalk, [
258
- "",
259
- ` ${bold("pipeline")} ${dim("\u2014 chains all 15 explore experts")}`,
260
- "",
261
- ], { title: "Orchestration", width: W }));
262
-
263
- console.log();
264
-
265
- // ── Selection Menu ──────────────────────────────────────────────────────
266
-
267
- console.log(` ${gradientText(chalk, "Select plugins to install:")}`);
268
- console.log();
269
-
270
- console.log(` ${dim("Explore:")}`);
271
- PLUGINS.slice(0, 3).forEach((p, i) => {
272
- console.log(` ${cyan(`[${i + 1}]`)} ${bold(p.name)} ${dim(`${p.experts} experts \u2014 ${p.agents}`)}`);
273
- });
274
-
275
- console.log();
276
- console.log(` ${dim("Exploit:")}`);
277
- PLUGINS.slice(3, 7).forEach((p, i) => {
278
- console.log(` ${cyan(`[${i + 4}]`)} ${bold(p.name)} ${dim(`${p.experts} agent${p.experts > 1 ? "s" : ""} \u2014 ${p.agents}`)}`);
279
- });
280
-
281
- console.log();
282
- console.log(` ${dim("Orchestration:")}`);
283
- console.log(` ${cyan("[8]")} ${bold("pipeline")} ${dim(PLUGINS[7].agents)}`);
284
-
285
- console.log();
286
- console.log(` ${green("[A]")} ${bold("All plugins")} ${dim("(recommended)")}`);
287
- console.log(` ${green("[E]")} ${bold("Explore only")} ${dim("(validate + build + launch + pipeline)")}`);
288
- console.log();
289
-
290
- // ── User Selection ────────────────────────────────────────────────────
291
-
292
- const rl = createInterface({ input: process.stdin, output: process.stdout });
293
- const choice = await new Promise((resolve) => {
294
- rl.question(` ${cyan("\u276f")} Your choice (1-8, A, E, comma-separated): `, resolve);
295
- });
296
- rl.close();
297
-
298
- let selected;
299
- const c = choice.trim().toLowerCase();
300
- if (c === "a" || c === "") {
301
- selected = PLUGINS;
302
- } else if (c === "e") {
303
- selected = PLUGINS.filter((p) =>
304
- ["validate", "build", "launch", "pipeline"].includes(p.name)
305
- );
306
- } else {
307
- const indices = choice
308
- .split(",")
309
- .map((s) => parseInt(s.trim()) - 1)
310
- .filter((i) => i >= 0 && i < PLUGINS.length);
311
- selected = indices.map((i) => PLUGINS[i]);
312
- }
313
-
314
- if (selected.length === 0) {
315
- console.log(`\n ${dim("No plugins selected. Exiting.")}`);
316
- process.exit(0);
317
- }
318
-
319
- console.log();
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
-
347
- // ── Install ───────────────────────────────────────────────────────────
348
-
349
- const spinner = ora({
350
- text: `Registering ${selected.length} plugin${selected.length > 1 ? "s" : ""} in ~/.claude/settings.json...`,
351
- color: "cyan",
352
- }).start();
353
-
354
- try {
355
- installPlugins(selected, enableAgentTeams);
356
- spinner.succeed(
357
- `${bold(`${selected.length} plugins`)} ${dim("registered in")} ${dim("~/.claude/settings.json")}`
358
- );
359
- } catch (err) {
360
- spinner.fail(red(`Failed: ${err.message}`));
361
- console.log();
362
- console.log(` ${dim("Try manual install — add to ~/.claude/settings.json:")}`);
363
- console.log(` ${dim(`"extraKnownMarketplaces": { "${MARKETPLACE_NAME}": { "source": { "source": "github", "repo": "${MARKETPLACE_REPO}" } } }`)}`);
364
- process.exit(1);
365
- }
366
-
367
- console.log();
368
-
369
- // ── Installed Plugins List ────────────────────────────────────────────
370
-
371
- for (const plugin of selected) {
372
- const label = plugin.experts
373
- ? `${plugin.experts} expert${plugin.experts > 1 ? "s" : ""}`
374
- : "orchestrator";
375
- console.log(` ${green("\u2713")} ${bold(plugin.name)} ${dim(`\u2014 ${label}`)}`);
376
- }
377
-
378
- if (enableAgentTeams) {
379
- console.log(` ${green("\u2713")} ${bold("Agent Teams")} ${dim("\u2014 enabled")}`);
380
- }
381
-
382
- console.log();
383
-
384
- // ── Getting Started Card ──────────────────────────────────────────────
385
-
386
- const cyanBorder = (s) => cyan(s);
387
-
388
- console.log(box(chalk, [
389
- "",
390
- ` ${dim("Start Claude Code:")} ${bold("claude")}`,
391
- ` ${dim("Run full pipeline:")} ${bold("/pipeline:run")} ${dim("Idea")}`,
392
- ` ${dim("Autonomous mode:")} ${bold("--autonomous")}`,
393
- ` ${dim("Single expert:")} ${bold("/value-mapper")} ${dim("Idea")}`,
394
- "",
395
- ` ${dim("Claude Code will auto-install plugins")}`,
396
- ` ${dim("on first startup after registration.")}`,
397
- "",
398
- ], { title: "Getting Started", width: W, borderColor: cyanBorder }));
399
-
400
- console.log();
401
- }
402
-
403
- main().catch(console.error);
1
+ #!/usr/bin/env node
2
+
3
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
4
+ import { join } from "path";
5
+ import { homedir } from "os";
6
+ import { createInterface } from "readline";
7
+
8
+ const MARKETPLACE_REPO = "Adanmohh/organtic";
9
+ const MARKETPLACE_NAME = "organtic";
10
+
11
+ const PLUGINS = [
12
+ {
13
+ name: "validate",
14
+ desc: "Validate ideas",
15
+ experts: 3,
16
+ agents: "Value Mapper, Business Modeler, Experiment Designer",
17
+ },
18
+ {
19
+ name: "build",
20
+ desc: "Build strategy",
21
+ experts: 5,
22
+ agents: "Product Strategist, Brand Strategist, Growth Designer, Spec Writer, Product Designer",
23
+ },
24
+ {
25
+ name: "launch",
26
+ desc: "Go-to-market",
27
+ experts: 7,
28
+ agents: "Offer Designer, Copywriter, Funnel Architect, Growth Auditor, Media Planner, SEO Strategist, AI Search Optimizer",
29
+ },
30
+ {
31
+ name: "craft",
32
+ desc: "Build deliverables",
33
+ experts: 4,
34
+ agents: "Landing Page Builder, MVP Scaffolder, Component Designer, Tester",
35
+ },
36
+ {
37
+ name: "document",
38
+ desc: "Write documents",
39
+ experts: 2,
40
+ agents: "Business Writer, Pitch Deck Writer",
41
+ },
42
+ {
43
+ name: "present",
44
+ desc: "Create presentations",
45
+ experts: 1,
46
+ agents: "Slide Designer",
47
+ },
48
+ {
49
+ name: "studio",
50
+ desc: "Produce videos",
51
+ experts: 3,
52
+ agents: "Demo Producer, Clip Maker, Content Creator",
53
+ },
54
+ {
55
+ name: "pipeline",
56
+ desc: "Agent Teams orchestrator",
57
+ experts: null,
58
+ agents: "19 experts as parallel Claude Code sessions across validate > build > launch > craft",
59
+ },
60
+ ];
61
+
62
+ // ---------------------------------------------------------------------------
63
+ // Gradient & styling utilities
64
+ // ---------------------------------------------------------------------------
65
+
66
+ function makeGradient(chalk, steps) {
67
+ const colors = [
68
+ [16, 185, 129], // #10b981 green
69
+ [6, 182, 212], // #06b6d4 cyan
70
+ [59, 130, 246], // #3b82f6 blue
71
+ ];
72
+
73
+ const result = [];
74
+ for (let i = 0; i < steps; i++) {
75
+ const t = steps === 1 ? 0 : i / (steps - 1);
76
+ let r, g, b;
77
+ if (t <= 0.5) {
78
+ const lt = t * 2;
79
+ r = Math.round(colors[0][0] + (colors[1][0] - colors[0][0]) * lt);
80
+ g = Math.round(colors[0][1] + (colors[1][1] - colors[0][1]) * lt);
81
+ b = Math.round(colors[0][2] + (colors[1][2] - colors[0][2]) * lt);
82
+ } else {
83
+ const lt = (t - 0.5) * 2;
84
+ r = Math.round(colors[1][0] + (colors[2][0] - colors[1][0]) * lt);
85
+ g = Math.round(colors[1][1] + (colors[2][1] - colors[1][1]) * lt);
86
+ b = Math.round(colors[1][2] + (colors[2][2] - colors[1][2]) * lt);
87
+ }
88
+ result.push(chalk.rgb(r, g, b));
89
+ }
90
+ return result;
91
+ }
92
+
93
+ function gradientText(chalk, text) {
94
+ const colors = makeGradient(chalk, text.length);
95
+ return text.split("").map((ch, i) => colors[i](ch)).join("");
96
+ }
97
+
98
+ function gradientLine(chalk, text, width) {
99
+ const colors = makeGradient(chalk, width);
100
+ return text.split("").map((ch, i) => {
101
+ const ci = Math.min(i, width - 1);
102
+ return colors[ci](ch);
103
+ }).join("");
104
+ }
105
+
106
+ function pad(str, len) {
107
+ const visible = stripAnsi(str);
108
+ const diff = len - visible.length;
109
+ return diff > 0 ? str + " ".repeat(diff) : str;
110
+ }
111
+
112
+ function stripAnsi(str) {
113
+ return str.replace(/\x1b\[[0-9;]*m/g, "");
114
+ }
115
+
116
+ // ---------------------------------------------------------------------------
117
+ // Box drawing
118
+ // ---------------------------------------------------------------------------
119
+
120
+ function box(chalk, lines, { title = "", width = 48, borderColor = null } = {}) {
121
+ const bc = borderColor || ((s) => gradientLine(chalk, s, width + 2));
122
+ const inner = width;
123
+
124
+ const topLeft = bc("\u256d");
125
+ const topRight = bc("\u256e");
126
+ const botLeft = bc("\u2570");
127
+ const botRight = bc("\u256f");
128
+ const horiz = (len) => bc("\u2500".repeat(len));
129
+ const vert = bc("\u2502");
130
+
131
+ const out = [];
132
+
133
+ if (title) {
134
+ const titleStr = ` ${title} `;
135
+ const remaining = inner - titleStr.length;
136
+ out.push(` ${topLeft}${horiz(1)}${bc(titleStr)}${horiz(remaining - 1)}${topRight}`);
137
+ } else {
138
+ out.push(` ${topLeft}${horiz(inner)}${topRight}`);
139
+ }
140
+
141
+ for (const line of lines) {
142
+ out.push(` ${vert}${pad(line, inner)}${vert}`);
143
+ }
144
+
145
+ out.push(` ${botLeft}${horiz(inner)}${botRight}`);
146
+ return out.join("\n");
147
+ }
148
+
149
+ // ---------------------------------------------------------------------------
150
+ // Settings.json management
151
+ // ---------------------------------------------------------------------------
152
+
153
+ function getSettingsPath() {
154
+ return join(homedir(), ".claude", "settings.json");
155
+ }
156
+
157
+ function readSettings() {
158
+ const path = getSettingsPath();
159
+ if (!existsSync(path)) return {};
160
+ try {
161
+ return JSON.parse(readFileSync(path, "utf-8"));
162
+ } catch {
163
+ return {};
164
+ }
165
+ }
166
+
167
+ function writeSettings(settings) {
168
+ const dir = join(homedir(), ".claude");
169
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
170
+ writeFileSync(getSettingsPath(), JSON.stringify(settings, null, 2) + "\n");
171
+ }
172
+
173
+ function installPlugins(selected, enableAgentTeams = false) {
174
+ const settings = readSettings();
175
+
176
+ // Add marketplace
177
+ if (!settings.extraKnownMarketplaces) {
178
+ settings.extraKnownMarketplaces = {};
179
+ }
180
+ settings.extraKnownMarketplaces[MARKETPLACE_NAME] = {
181
+ source: {
182
+ source: "github",
183
+ repo: MARKETPLACE_REPO,
184
+ },
185
+ };
186
+
187
+ // Enable selected plugins
188
+ if (!settings.enabledPlugins) {
189
+ settings.enabledPlugins = {};
190
+ }
191
+ for (const plugin of selected) {
192
+ settings.enabledPlugins[`${plugin.name}@${MARKETPLACE_NAME}`] = true;
193
+ }
194
+
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
+ }
202
+
203
+ writeSettings(settings);
204
+ return true;
205
+ }
206
+
207
+ // ---------------------------------------------------------------------------
208
+ // Main
209
+ // ---------------------------------------------------------------------------
210
+
211
+ async function main() {
212
+ const chalk = (await import("chalk")).default;
213
+ const { default: ora } = await import("ora");
214
+
215
+ const W = 48;
216
+ const dim = chalk.dim;
217
+ const bold = chalk.bold.white;
218
+ const green = chalk.rgb(16, 185, 129);
219
+ const cyan = chalk.rgb(6, 182, 212);
220
+ const red = chalk.rgb(239, 68, 68);
221
+
222
+ // ── Banner ──────────────────────────────────────────────────────────────
223
+
224
+ const dots = gradientText(chalk, "\u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf");
225
+ const title = gradientText(chalk, "O R G A N T I C");
226
+
227
+ const banner = box(chalk, [
228
+ "",
229
+ ` ${dots}`,
230
+ ` ${title}`,
231
+ "",
232
+ ` ${dim("The AI-native organization.")}`,
233
+ ` ${dim("19 explore experts + 6 exploit agents = 25 total")}`,
234
+ "",
235
+ ], { width: W });
236
+
237
+ console.log();
238
+ console.log(banner);
239
+ console.log();
240
+
241
+ // ── Pipeline Map ────────────────────────────────────────────────────────
242
+
243
+ console.log(box(chalk, [
244
+ "",
245
+ ` ${bold("validate")} ${dim("\u2500\u2500\u25b6")} ${bold("build")} ${dim("\u2500\u2500\u25b6")} ${bold("launch")}`,
246
+ ` ${dim("3 experts")} ${dim("5 experts")} ${dim("7 experts")}`,
247
+ "",
248
+ ], { title: "Explore", width: W }));
249
+
250
+ console.log(box(chalk, [
251
+ "",
252
+ ` ${bold("craft")} ${bold("document")} ${bold("present")} ${bold("studio")}`,
253
+ ` ${dim("4 agents")} ${dim("2 agents")} ${dim("1 agent")} ${dim("3 agents")}`,
254
+ "",
255
+ ], { title: "Exploit", width: W }));
256
+
257
+ console.log(box(chalk, [
258
+ "",
259
+ ` ${bold("pipeline")} ${dim("\u2014 orchestrates all 19 explore experts")}`,
260
+ "",
261
+ ], { title: "Orchestration", width: W }));
262
+
263
+ console.log();
264
+
265
+ // ── Selection Menu ──────────────────────────────────────────────────────
266
+
267
+ console.log(` ${gradientText(chalk, "Select plugins to install:")}`);
268
+ console.log();
269
+
270
+ console.log(` ${dim("Explore:")}`);
271
+ PLUGINS.slice(0, 3).forEach((p, i) => {
272
+ console.log(` ${cyan(`[${i + 1}]`)} ${bold(p.name)} ${dim(`${p.experts} experts \u2014 ${p.agents}`)}`);
273
+ });
274
+
275
+ console.log();
276
+ console.log(` ${dim("Exploit:")}`);
277
+ PLUGINS.slice(3, 7).forEach((p, i) => {
278
+ console.log(` ${cyan(`[${i + 4}]`)} ${bold(p.name)} ${dim(`${p.experts} agent${p.experts > 1 ? "s" : ""} \u2014 ${p.agents}`)}`);
279
+ });
280
+
281
+ console.log();
282
+ console.log(` ${dim("Orchestration:")}`);
283
+ console.log(` ${cyan("[8]")} ${bold("pipeline")} ${dim(PLUGINS[7].agents)}`);
284
+
285
+ console.log();
286
+ console.log(` ${green("[A]")} ${bold("All plugins")} ${dim("(recommended)")}`);
287
+ console.log(` ${green("[E]")} ${bold("Explore only")} ${dim("(validate + build + launch + pipeline)")}`);
288
+ console.log();
289
+
290
+ // ── User Selection ────────────────────────────────────────────────────
291
+
292
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
293
+ const choice = await new Promise((resolve) => {
294
+ rl.question(` ${cyan("\u276f")} Your choice (1-8, A, E, comma-separated): `, resolve);
295
+ });
296
+ rl.close();
297
+
298
+ let selected;
299
+ const c = choice.trim().toLowerCase();
300
+ if (c === "a" || c === "") {
301
+ selected = PLUGINS;
302
+ } else if (c === "e") {
303
+ selected = PLUGINS.filter((p) =>
304
+ ["validate", "build", "launch", "pipeline"].includes(p.name)
305
+ );
306
+ } else {
307
+ const indices = choice
308
+ .split(",")
309
+ .map((s) => parseInt(s.trim()) - 1)
310
+ .filter((i) => i >= 0 && i < PLUGINS.length);
311
+ selected = indices.map((i) => PLUGINS[i]);
312
+ }
313
+
314
+ if (selected.length === 0) {
315
+ console.log(`\n ${dim("No plugins selected. Exiting.")}`);
316
+ process.exit(0);
317
+ }
318
+
319
+ console.log();
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
+ const pipelineSelected = selected.some((p) => p.name === "pipeline");
327
+
328
+ if (alreadyEnabled) {
329
+ console.log(` ${green("\u2713")} ${dim("Agent Teams already enabled")}`);
330
+ console.log();
331
+ } else if (pipelineSelected) {
332
+ // Auto-enable for pipeline required for default execution mode
333
+ enableAgentTeams = true;
334
+ console.log(` ${green("\u2713")} ${bold("Agent Teams")} ${dim("auto-enabled (required for pipeline)")}`);
335
+ console.log();
336
+ } else {
337
+ console.log(` ${bold("Agent Teams")} ${dim("lets experts run as parallel Claude Code")}`);
338
+ console.log(` ${dim("instances that coordinate and message each other.")}`);
339
+ console.log(` ${dim("Required for pipeline default execution mode.")}`);
340
+ console.log();
341
+
342
+ const rl2 = createInterface({ input: process.stdin, output: process.stdout });
343
+ const teamsChoice = await new Promise((resolve) => {
344
+ rl2.question(` ${cyan("\u276f")} Enable Agent Teams? (Y/n): `, resolve);
345
+ });
346
+ rl2.close();
347
+
348
+ const tc = teamsChoice.trim().toLowerCase();
349
+ enableAgentTeams = tc === "" || tc === "y" || tc === "yes";
350
+ console.log();
351
+ }
352
+
353
+ // ── Install ───────────────────────────────────────────────────────────
354
+
355
+ const spinner = ora({
356
+ text: `Registering ${selected.length} plugin${selected.length > 1 ? "s" : ""} in ~/.claude/settings.json...`,
357
+ color: "cyan",
358
+ }).start();
359
+
360
+ try {
361
+ installPlugins(selected, enableAgentTeams);
362
+ spinner.succeed(
363
+ `${bold(`${selected.length} plugins`)} ${dim("registered in")} ${dim("~/.claude/settings.json")}`
364
+ );
365
+ } catch (err) {
366
+ spinner.fail(red(`Failed: ${err.message}`));
367
+ console.log();
368
+ console.log(` ${dim("Try manual install — add to ~/.claude/settings.json:")}`);
369
+ console.log(` ${dim(`"extraKnownMarketplaces": { "${MARKETPLACE_NAME}": { "source": { "source": "github", "repo": "${MARKETPLACE_REPO}" } } }`)}`);
370
+ process.exit(1);
371
+ }
372
+
373
+ console.log();
374
+
375
+ // ── Installed Plugins List ────────────────────────────────────────────
376
+
377
+ for (const plugin of selected) {
378
+ const label = plugin.experts
379
+ ? `${plugin.experts} expert${plugin.experts > 1 ? "s" : ""}`
380
+ : "orchestrator";
381
+ console.log(` ${green("\u2713")} ${bold(plugin.name)} ${dim(`\u2014 ${label}`)}`);
382
+ }
383
+
384
+ if (enableAgentTeams) {
385
+ console.log(` ${green("\u2713")} ${bold("Agent Teams")} ${dim("\u2014 enabled")}`);
386
+ }
387
+
388
+ console.log();
389
+
390
+ // ── Getting Started Card ──────────────────────────────────────────────
391
+
392
+ const cyanBorder = (s) => cyan(s);
393
+
394
+ console.log(box(chalk, [
395
+ "",
396
+ ` ${dim("Start Claude Code:")} ${bold("claude")}`,
397
+ ` ${dim("Run full pipeline:")} ${bold("/pipeline:run")} ${dim("Idea")} ${bold("--autonomous")}`,
398
+ ` ${dim("Single plugin:")} ${bold("/pipeline:plugin")} ${dim("validate")}`,
399
+ ` ${dim("Single expert:")} ${bold("/value-mapper")} ${dim("Idea")}`,
400
+ "",
401
+ ` ${dim("Claude Code will auto-install plugins")}`,
402
+ ` ${dim("on first startup after registration.")}`,
403
+ "",
404
+ ], { title: "Getting Started", width: W, borderColor: cyanBorder }));
405
+
406
+ console.log();
407
+ }
408
+
409
+ main().catch(console.error);
package/package.json CHANGED
@@ -1,49 +1,49 @@
1
- {
2
- "name": "organtic",
3
- "version": "3.2.0",
4
- "description": "The AI-native organization. 25 experts from idea to launch. Agentic pipeline (vision > validate > build > launch > craft) with constitutional Brief enforcement, conditional routing, and organizational memory. Claude Code plugin ecosystem.",
5
- "bin": {
6
- "organtic": "./index.mjs"
7
- },
8
- "type": "module",
9
- "license": "MIT",
10
- "author": {
11
- "name": "Adan Mohh",
12
- "email": "adan@neogrant.fi",
13
- "url": "https://github.com/Adanmohh"
14
- },
15
- "homepage": "https://github.com/Adanmohh/organtic#readme",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/Adanmohh/organtic.git"
19
- },
20
- "bugs": {
21
- "url": "https://github.com/Adanmohh/organtic/issues"
22
- },
23
- "keywords": [
24
- "claude-code",
25
- "claude",
26
- "plugin",
27
- "ai-agents",
28
- "business-strategy",
29
- "go-to-market",
30
- "landing-page",
31
- "mvp",
32
- "pitch-deck",
33
- "product-strategy",
34
- "marketing",
35
- "seo",
36
- "copywriting",
37
- "growth",
38
- "validation",
39
- "anthropic",
40
- "organtic"
41
- ],
42
- "dependencies": {
43
- "chalk": "^5.4.1",
44
- "ora": "^8.1.1"
45
- },
46
- "engines": {
47
- "node": ">=18.0.0"
48
- }
49
- }
1
+ {
2
+ "name": "organtic",
3
+ "version": "3.3.0",
4
+ "description": "The AI-native organization. 25 experts from idea to launch. Agentic pipeline (vision > validate > build > launch > craft) with constitutional Brief enforcement, conditional routing, and organizational memory. Claude Code plugin ecosystem.",
5
+ "bin": {
6
+ "organtic": "./index.mjs"
7
+ },
8
+ "type": "module",
9
+ "license": "MIT",
10
+ "author": {
11
+ "name": "Adan Mohh",
12
+ "email": "adan@neogrant.fi",
13
+ "url": "https://github.com/Adanmohh"
14
+ },
15
+ "homepage": "https://github.com/Adanmohh/organtic#readme",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/Adanmohh/organtic.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/Adanmohh/organtic/issues"
22
+ },
23
+ "keywords": [
24
+ "claude-code",
25
+ "claude",
26
+ "plugin",
27
+ "ai-agents",
28
+ "business-strategy",
29
+ "go-to-market",
30
+ "landing-page",
31
+ "mvp",
32
+ "pitch-deck",
33
+ "product-strategy",
34
+ "marketing",
35
+ "seo",
36
+ "copywriting",
37
+ "growth",
38
+ "validation",
39
+ "anthropic",
40
+ "organtic"
41
+ ],
42
+ "dependencies": {
43
+ "chalk": "^5.4.1",
44
+ "ora": "^8.1.1"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ }
49
+ }