organtic 1.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 +149 -0
- package/index.mjs +405 -0
- package/package.json +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Organtic
|
|
2
|
+
|
|
3
|
+
> Most founders fail not from bad ideas, but from the gap between knowing what to build and actually building it. Organtic closes that gap.
|
|
4
|
+
|
|
5
|
+
**25 specialized AI agents organized into 8 independent plugins** that work alone or chain together into a complete idea-to-execution pipeline. Each agent brings deep framework expertise — not generic advice, but proven methodologies that top strategists and builders actually use.
|
|
6
|
+
|
|
7
|
+
## The Problem
|
|
8
|
+
|
|
9
|
+
You have an idea. Now what?
|
|
10
|
+
|
|
11
|
+
Validation needs value proposition mapping and jobs-to-be-done analysis. Product strategy needs growth loops and product operating models. Go-to-market needs offer design, conversion copywriting, funnel architecture, and paid media planning. Then you still need to build the landing page, write the pitch deck, design the slides, and record the demo.
|
|
12
|
+
|
|
13
|
+
That's 23 different disciplines. No solo founder or small team has all of them.
|
|
14
|
+
|
|
15
|
+
## The Solution
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
npx organtic
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
One command. Pick the plugins you need. Each one works independently — or chain them all together.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
STRATEGY PIPELINE EXECUTION PLUGINS
|
|
25
|
+
validate > build > launch craft | document | present | studio
|
|
26
|
+
3 experts 4 experts 7 experts 4 agents 2 agents 1 agent 3 agents
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Install one plugin** when you need a specific expert.
|
|
30
|
+
**Install all eight** when you want the full pipeline from idea to shipped product.
|
|
31
|
+
|
|
32
|
+
## Strategy Pipeline
|
|
33
|
+
|
|
34
|
+
Three plugins that chain together. Each builds on the previous phase's findings.
|
|
35
|
+
|
|
36
|
+
### validate — Is this idea worth building?
|
|
37
|
+
|
|
38
|
+
3 experts that pressure-test your idea before you write a line of code.
|
|
39
|
+
|
|
40
|
+
| Expert | What they do | Output |
|
|
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 |
|
|
45
|
+
|
|
46
|
+
### build — What exactly should we ship?
|
|
47
|
+
|
|
48
|
+
4 experts that turn a validated idea into a buildable product spec.
|
|
49
|
+
|
|
50
|
+
| Expert | What they do | Output |
|
|
51
|
+
|--------|-------------|--------|
|
|
52
|
+
| **Product Strategist** | Defines product strategy, growth loops, and operating model | Product strategy doc, growth model |
|
|
53
|
+
| **Growth Designer** | Designs retention loops, engagement triggers, and product-led growth | Habit loops, activation flows, retention curves |
|
|
54
|
+
| **Spec Writer** | Shapes buildable specs with clear appetite and scope | Shaped pitches, fat-marker sketches, scope tables |
|
|
55
|
+
| **Product Designer** | Creates accessible UI/UX driven by user jobs and AI interaction patterns | Wireframes, interaction design, component specs |
|
|
56
|
+
|
|
57
|
+
### launch — How do we get customers?
|
|
58
|
+
|
|
59
|
+
7 experts that build your complete go-to-market engine. Runs in three waves: strategy first, coherence audit, then execution.
|
|
60
|
+
|
|
61
|
+
| Expert | What they do | Output |
|
|
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 |
|
|
70
|
+
|
|
71
|
+
## Execution Plugins
|
|
72
|
+
|
|
73
|
+
Four plugins that turn strategy into tangible deliverables. Each works standalone.
|
|
74
|
+
|
|
75
|
+
### craft — Build it
|
|
76
|
+
|
|
77
|
+
| Agent | What it produces |
|
|
78
|
+
|-------|-----------------|
|
|
79
|
+
| **Landing Page Builder** | Deployable, conversion-optimized landing pages (React/HTML) |
|
|
80
|
+
| **MVP Scaffolder** | Full-stack prototypes with auth, database, API, deployment |
|
|
81
|
+
| **Component Designer** | Production-grade UI components with variants and accessibility |
|
|
82
|
+
| **Tester** | Strategy-informed testing with Playwright (persona-based QA) |
|
|
83
|
+
|
|
84
|
+
### document — Write it
|
|
85
|
+
|
|
86
|
+
| Agent | What it produces |
|
|
87
|
+
|-------|-----------------|
|
|
88
|
+
| **Business Writer** | Business plans, SOPs, case studies, executive summaries |
|
|
89
|
+
| **Pitch Deck Writer** | Investor pitch decks, sales proposals (Marp to PDF/PPTX) |
|
|
90
|
+
|
|
91
|
+
### present — Show it
|
|
92
|
+
|
|
93
|
+
| Agent | What it produces |
|
|
94
|
+
|-------|-----------------|
|
|
95
|
+
| **Slide Designer** | Professional presentations from any strategy output (Marp markdown) |
|
|
96
|
+
|
|
97
|
+
### studio — Film it
|
|
98
|
+
|
|
99
|
+
| Agent | What it produces |
|
|
100
|
+
|-------|-----------------|
|
|
101
|
+
| **Demo Producer** | Full product demo videos (browser recording + voiceover + composition) |
|
|
102
|
+
| **Clip Maker** | Short social clips for Instagram Reels, TikTok, YouTube Shorts, LinkedIn |
|
|
103
|
+
| **Content Creator** | Branded social media images and short-form videos |
|
|
104
|
+
|
|
105
|
+
## Orchestration
|
|
106
|
+
|
|
107
|
+
The **pipeline** plugin chains the strategy plugins into an automated workflow. Start it with `/run My business idea` and it walks you through all 14 strategy experts, each building on previous findings.
|
|
108
|
+
|
|
109
|
+
You can also run any single expert directly:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
/value-mapper AI tool that helps nurses track patient vitals
|
|
113
|
+
/copywriter Write landing page copy for our course launch
|
|
114
|
+
/landing-page Build from our strategy outputs
|
|
115
|
+
/pitch-deck Create an investor pitch deck
|
|
116
|
+
/product-demo Record a walkthrough of our web app
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Install
|
|
120
|
+
|
|
121
|
+
### Interactive (recommended)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npx organtic
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Direct plugin install
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Everything
|
|
131
|
+
claude plugin install organtic@Adanmohh/organtic
|
|
132
|
+
|
|
133
|
+
# Just what you need
|
|
134
|
+
claude plugin install validate@Adanmohh/organtic
|
|
135
|
+
claude plugin install launch@Adanmohh/organtic
|
|
136
|
+
claude plugin install craft@Adanmohh/organtic
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Requirements
|
|
140
|
+
|
|
141
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI
|
|
142
|
+
- Optional: [claude-mem](https://github.com/nicobailon/claude-mem) for cross-session memory
|
|
143
|
+
- For studio plugin: Node.js, Playwright, Remotion, ffmpeg, ElevenLabs API key
|
|
144
|
+
|
|
145
|
+
## Links
|
|
146
|
+
|
|
147
|
+
- [GitHub](https://github.com/Adanmohh/organtic) | [Issues](https://github.com/Adanmohh/organtic/issues)
|
|
148
|
+
|
|
149
|
+
MIT License
|
package/index.mjs
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
import { createInterface } from "readline";
|
|
5
|
+
|
|
6
|
+
const MARKETPLACE_REPO = "Adanmohh/organtic";
|
|
7
|
+
const MARKETPLACE_NAME = "organtic";
|
|
8
|
+
|
|
9
|
+
const PLUGINS = [
|
|
10
|
+
{
|
|
11
|
+
name: "validate",
|
|
12
|
+
desc: "Validate ideas",
|
|
13
|
+
experts: 3,
|
|
14
|
+
agents: "Value Mapper, Business Modeler, Experiment Designer",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "build",
|
|
18
|
+
desc: "Build strategy",
|
|
19
|
+
experts: 5,
|
|
20
|
+
agents: "Product Strategist, Brand Strategist, Growth Designer, Spec Writer, Product Designer",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "launch",
|
|
24
|
+
desc: "Go-to-market",
|
|
25
|
+
experts: 7,
|
|
26
|
+
agents: "Offer Designer, Copywriter, Funnel Architect, Growth Auditor, Media Planner, SEO Strategist, AI Search Optimizer",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "craft",
|
|
30
|
+
desc: "Build deliverables",
|
|
31
|
+
experts: 4,
|
|
32
|
+
agents: "Landing Page Builder, MVP Scaffolder, Component Designer, Tester",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "document",
|
|
36
|
+
desc: "Write documents",
|
|
37
|
+
experts: 2,
|
|
38
|
+
agents: "Business Writer, Pitch Deck Writer",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "present",
|
|
42
|
+
desc: "Create presentations",
|
|
43
|
+
experts: 1,
|
|
44
|
+
agents: "Slide Designer",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "studio",
|
|
48
|
+
desc: "Produce videos",
|
|
49
|
+
experts: 3,
|
|
50
|
+
agents: "Demo Producer, Clip Maker, Content Creator",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "pipeline",
|
|
54
|
+
desc: "Pipeline orchestrator",
|
|
55
|
+
experts: null,
|
|
56
|
+
agents: "Chains 15 strategy experts across validate > build > launch",
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Gradient & styling utilities
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
function makeGradient(chalk, steps) {
|
|
65
|
+
const colors = [
|
|
66
|
+
[16, 185, 129], // #10b981 green
|
|
67
|
+
[6, 182, 212], // #06b6d4 cyan
|
|
68
|
+
[59, 130, 246], // #3b82f6 blue
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const result = [];
|
|
72
|
+
for (let i = 0; i < steps; i++) {
|
|
73
|
+
const t = steps === 1 ? 0 : i / (steps - 1);
|
|
74
|
+
let r, g, b;
|
|
75
|
+
if (t <= 0.5) {
|
|
76
|
+
const lt = t * 2;
|
|
77
|
+
r = Math.round(colors[0][0] + (colors[1][0] - colors[0][0]) * lt);
|
|
78
|
+
g = Math.round(colors[0][1] + (colors[1][1] - colors[0][1]) * lt);
|
|
79
|
+
b = Math.round(colors[0][2] + (colors[1][2] - colors[0][2]) * lt);
|
|
80
|
+
} else {
|
|
81
|
+
const lt = (t - 0.5) * 2;
|
|
82
|
+
r = Math.round(colors[1][0] + (colors[2][0] - colors[1][0]) * lt);
|
|
83
|
+
g = Math.round(colors[1][1] + (colors[2][1] - colors[1][1]) * lt);
|
|
84
|
+
b = Math.round(colors[1][2] + (colors[2][2] - colors[1][2]) * lt);
|
|
85
|
+
}
|
|
86
|
+
result.push(chalk.rgb(r, g, b));
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function gradientText(chalk, text) {
|
|
92
|
+
const colors = makeGradient(chalk, text.length);
|
|
93
|
+
return text.split("").map((ch, i) => colors[i](ch)).join("");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function gradientLine(chalk, text, width) {
|
|
97
|
+
const colors = makeGradient(chalk, width);
|
|
98
|
+
return text.split("").map((ch, i) => {
|
|
99
|
+
const ci = Math.min(i, width - 1);
|
|
100
|
+
return colors[ci](ch);
|
|
101
|
+
}).join("");
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function pad(str, len) {
|
|
105
|
+
const visible = stripAnsi(str);
|
|
106
|
+
const diff = len - visible.length;
|
|
107
|
+
return diff > 0 ? str + " ".repeat(diff) : str;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function stripAnsi(str) {
|
|
111
|
+
return str.replace(/\x1b\[[0-9;]*m/g, "");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Box drawing
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
function box(chalk, lines, { title = "", width = 48, borderColor = null } = {}) {
|
|
119
|
+
const bc = borderColor || ((s) => gradientLine(chalk, s, width + 2));
|
|
120
|
+
const inner = width;
|
|
121
|
+
|
|
122
|
+
const topLeft = bc("\u256d");
|
|
123
|
+
const topRight = bc("\u256e");
|
|
124
|
+
const botLeft = bc("\u2570");
|
|
125
|
+
const botRight = bc("\u256f");
|
|
126
|
+
const horiz = (len) => bc("\u2500".repeat(len));
|
|
127
|
+
const vert = bc("\u2502");
|
|
128
|
+
|
|
129
|
+
const out = [];
|
|
130
|
+
|
|
131
|
+
if (title) {
|
|
132
|
+
const titleStr = ` ${title} `;
|
|
133
|
+
const remaining = inner - titleStr.length;
|
|
134
|
+
out.push(` ${topLeft}${horiz(1)}${bc(titleStr)}${horiz(remaining - 1)}${topRight}`);
|
|
135
|
+
} else {
|
|
136
|
+
out.push(` ${topLeft}${horiz(inner)}${topRight}`);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
for (const line of lines) {
|
|
140
|
+
out.push(` ${vert}${pad(line, inner)}${vert}`);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
out.push(` ${botLeft}${horiz(inner)}${botRight}`);
|
|
144
|
+
return out.join("\n");
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function divider(chalk, { title = "", width = 48, borderColor = null } = {}) {
|
|
148
|
+
const bc = borderColor || ((s) => gradientLine(chalk, s, width + 2));
|
|
149
|
+
const vert = bc("\u2502");
|
|
150
|
+
const leftT = bc("\u251c");
|
|
151
|
+
const rightT = bc("\u2524");
|
|
152
|
+
const horiz = (len) => bc("\u2500".repeat(len));
|
|
153
|
+
|
|
154
|
+
if (title) {
|
|
155
|
+
const titleStr = ` ${title} `;
|
|
156
|
+
const remaining = width - titleStr.length;
|
|
157
|
+
return ` ${leftT}${horiz(1)}${bc(titleStr)}${horiz(remaining - 1)}${rightT}`;
|
|
158
|
+
}
|
|
159
|
+
return ` ${leftT}${horiz(width)}${rightT}`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
// CLI helpers
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
167
|
+
const ask = (q) => new Promise((r) => rl.question(q, r));
|
|
168
|
+
|
|
169
|
+
function runSilent(cmd) {
|
|
170
|
+
try {
|
|
171
|
+
execSync(cmd, { stdio: "pipe" });
|
|
172
|
+
return true;
|
|
173
|
+
} catch {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function runVisible(cmd) {
|
|
179
|
+
try {
|
|
180
|
+
execSync(cmd, { stdio: "inherit" });
|
|
181
|
+
return true;
|
|
182
|
+
} catch {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ---------------------------------------------------------------------------
|
|
188
|
+
// Main
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
|
|
191
|
+
async function main() {
|
|
192
|
+
const chalk = (await import("chalk")).default;
|
|
193
|
+
const { default: ora } = await import("ora");
|
|
194
|
+
|
|
195
|
+
const W = 48;
|
|
196
|
+
const g = (s) => gradientLine(chalk, s, W + 2);
|
|
197
|
+
const dim = chalk.dim;
|
|
198
|
+
const bold = chalk.bold.white;
|
|
199
|
+
const green = chalk.rgb(16, 185, 129);
|
|
200
|
+
const cyan = chalk.rgb(6, 182, 212);
|
|
201
|
+
const blue = chalk.rgb(59, 130, 246);
|
|
202
|
+
const red = chalk.rgb(239, 68, 68);
|
|
203
|
+
|
|
204
|
+
// ── Banner ──────────────────────────────────────────────────────────────
|
|
205
|
+
|
|
206
|
+
const dots = gradientText(chalk, "\u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf \u25cf");
|
|
207
|
+
const title = gradientText(chalk, "O R G A N T I C");
|
|
208
|
+
|
|
209
|
+
const banner = box(chalk, [
|
|
210
|
+
"",
|
|
211
|
+
` ${dots}`,
|
|
212
|
+
` ${title}`,
|
|
213
|
+
"",
|
|
214
|
+
` ${dim("The AI-native organization.")}`,
|
|
215
|
+
` ${dim("25 experts from idea to launch.")}`,
|
|
216
|
+
"",
|
|
217
|
+
], { width: W });
|
|
218
|
+
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(banner);
|
|
221
|
+
console.log();
|
|
222
|
+
|
|
223
|
+
// ── Check Claude CLI ────────────────────────────────────────────────────
|
|
224
|
+
|
|
225
|
+
const cliSpinner = ora({
|
|
226
|
+
text: "Checking Claude Code CLI...",
|
|
227
|
+
color: "cyan",
|
|
228
|
+
}).start();
|
|
229
|
+
|
|
230
|
+
try {
|
|
231
|
+
execSync("claude --version", { stdio: "pipe" });
|
|
232
|
+
cliSpinner.succeed(chalk.dim("Claude Code CLI found"));
|
|
233
|
+
} catch {
|
|
234
|
+
cliSpinner.fail(red("Claude Code CLI not found"));
|
|
235
|
+
console.log();
|
|
236
|
+
console.log(` ${dim("Install it first:")}`);
|
|
237
|
+
console.log(` ${bold("npm install -g @anthropic-ai/claude-code")}`);
|
|
238
|
+
console.log();
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// ── Pipeline Map ────────────────────────────────────────────────────────
|
|
243
|
+
|
|
244
|
+
const vert = g("\u2502");
|
|
245
|
+
|
|
246
|
+
const mapLines = [];
|
|
247
|
+
|
|
248
|
+
// Top: Strategy Pipeline
|
|
249
|
+
mapLines.push(box(chalk, [
|
|
250
|
+
"",
|
|
251
|
+
` ${bold("validate")} ${dim("\u2500\u2500\u25b6")} ${bold("build")} ${dim("\u2500\u2500\u25b6")} ${bold("launch")}`,
|
|
252
|
+
` ${dim("3 experts")} ${dim("5 experts")} ${dim("7 experts")}`,
|
|
253
|
+
"",
|
|
254
|
+
], { title: "Strategy Pipeline", width: W }));
|
|
255
|
+
|
|
256
|
+
// Divider line for Execution (we'll build a second box)
|
|
257
|
+
const execBox = [];
|
|
258
|
+
execBox.push("");
|
|
259
|
+
execBox.push(` ${bold("craft")} ${bold("document")} ${bold("present")} ${bold("studio")}`);
|
|
260
|
+
execBox.push(` ${dim("4 agents")} ${dim("2 agents")} ${dim("1 agent")} ${dim("3 agents")}`);
|
|
261
|
+
execBox.push("");
|
|
262
|
+
|
|
263
|
+
mapLines.push(box(chalk, execBox, { title: "Execution", width: W }));
|
|
264
|
+
|
|
265
|
+
// Orchestration
|
|
266
|
+
mapLines.push(box(chalk, [
|
|
267
|
+
"",
|
|
268
|
+
` ${bold("pipeline")} ${dim("\u2014 chains all 15 strategy experts")}`,
|
|
269
|
+
"",
|
|
270
|
+
], { title: "Orchestration", width: W }));
|
|
271
|
+
|
|
272
|
+
console.log(mapLines.join("\n"));
|
|
273
|
+
console.log();
|
|
274
|
+
|
|
275
|
+
// ── Selection Menu ──────────────────────────────────────────────────────
|
|
276
|
+
|
|
277
|
+
console.log(` ${gradientText(chalk, "Select plugins to install:")}`);
|
|
278
|
+
console.log();
|
|
279
|
+
|
|
280
|
+
console.log(` ${dim("Strategy Pipeline:")}`);
|
|
281
|
+
PLUGINS.slice(0, 3).forEach((p, i) => {
|
|
282
|
+
const num = cyan(`[${i + 1}]`);
|
|
283
|
+
const name = bold(p.name);
|
|
284
|
+
const experts = dim(`${p.experts} experts \u2014 ${p.agents}`);
|
|
285
|
+
console.log(` ${num} ${name} ${experts}`);
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
console.log();
|
|
289
|
+
console.log(` ${dim("Execution:")}`);
|
|
290
|
+
PLUGINS.slice(3, 7).forEach((p, i) => {
|
|
291
|
+
const num = cyan(`[${i + 4}]`);
|
|
292
|
+
const name = bold(p.name);
|
|
293
|
+
const experts = dim(`${p.experts} agent${p.experts > 1 ? "s" : ""} \u2014 ${p.agents}`);
|
|
294
|
+
console.log(` ${num} ${name} ${experts}`);
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
console.log();
|
|
298
|
+
console.log(` ${dim("Orchestration:")}`);
|
|
299
|
+
const pNum = cyan("[8]");
|
|
300
|
+
console.log(` ${pNum} ${bold("pipeline")} ${dim(PLUGINS[7].agents)}`);
|
|
301
|
+
|
|
302
|
+
console.log();
|
|
303
|
+
console.log(` ${green("[A]")} ${bold("All plugins")} ${dim("(recommended)")}`);
|
|
304
|
+
console.log(` ${green("[S]")} ${bold("Strategy only")} ${dim("(validate + build + launch + pipeline)")}`);
|
|
305
|
+
console.log();
|
|
306
|
+
|
|
307
|
+
const choice = await ask(` ${cyan("\u276f")} ${dim("Your choice (1-8, A, S, comma-separated):")} `);
|
|
308
|
+
rl.close();
|
|
309
|
+
|
|
310
|
+
let selected;
|
|
311
|
+
const c = choice.trim().toLowerCase();
|
|
312
|
+
if (c === "a" || c === "") {
|
|
313
|
+
selected = PLUGINS;
|
|
314
|
+
} else if (c === "s") {
|
|
315
|
+
selected = PLUGINS.filter((p) =>
|
|
316
|
+
["validate", "build", "launch", "pipeline"].includes(p.name)
|
|
317
|
+
);
|
|
318
|
+
} else {
|
|
319
|
+
const indices = choice
|
|
320
|
+
.split(",")
|
|
321
|
+
.map((s) => parseInt(s.trim()) - 1)
|
|
322
|
+
.filter((i) => i >= 0 && i < PLUGINS.length);
|
|
323
|
+
selected = indices.map((i) => PLUGINS[i]);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (selected.length === 0) {
|
|
327
|
+
console.log();
|
|
328
|
+
console.log(` ${dim("No plugins selected. Exiting.")}`);
|
|
329
|
+
process.exit(0);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
console.log();
|
|
333
|
+
console.log(` ${gradientText(chalk, `Installing ${selected.length} plugin${selected.length > 1 ? "s" : ""}...`)}`);
|
|
334
|
+
console.log();
|
|
335
|
+
|
|
336
|
+
// ── Add Marketplace ─────────────────────────────────────────────────────
|
|
337
|
+
|
|
338
|
+
const mpSpinner = ora({
|
|
339
|
+
text: "Adding Organtic marketplace...",
|
|
340
|
+
color: "cyan",
|
|
341
|
+
}).start();
|
|
342
|
+
|
|
343
|
+
if (runSilent(`claude plugin marketplace add ${MARKETPLACE_REPO}`)) {
|
|
344
|
+
mpSpinner.succeed(dim("Marketplace added"));
|
|
345
|
+
} else {
|
|
346
|
+
mpSpinner.warn(chalk.yellow("Marketplace may already be added"));
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
console.log();
|
|
350
|
+
|
|
351
|
+
// ── Install Plugins ─────────────────────────────────────────────────────
|
|
352
|
+
|
|
353
|
+
let installed = 0;
|
|
354
|
+
let failed = 0;
|
|
355
|
+
|
|
356
|
+
for (const plugin of selected) {
|
|
357
|
+
const spinner = ora({
|
|
358
|
+
text: `Installing ${bold(plugin.name)}...`,
|
|
359
|
+
color: "cyan",
|
|
360
|
+
}).start();
|
|
361
|
+
|
|
362
|
+
const ok = runSilent(`claude plugin install ${plugin.name}@${MARKETPLACE_NAME}`);
|
|
363
|
+
|
|
364
|
+
if (ok) {
|
|
365
|
+
installed++;
|
|
366
|
+
spinner.succeed(`${bold(plugin.name)} ${dim("installed")}`);
|
|
367
|
+
} else {
|
|
368
|
+
failed++;
|
|
369
|
+
spinner.fail(`${red(plugin.name)} ${dim("failed \u2014")} ${dim(`claude plugin install ${plugin.name}@${MARKETPLACE_NAME}`)}`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
console.log();
|
|
374
|
+
|
|
375
|
+
// ── Result Summary ──────────────────────────────────────────────────────
|
|
376
|
+
|
|
377
|
+
if (failed === 0) {
|
|
378
|
+
console.log(` ${green("\u2714")} ${bold(`${installed}/${selected.length} plugins installed successfully`)}`);
|
|
379
|
+
} else {
|
|
380
|
+
console.log(` ${green("\u2714")} ${installed} installed ${red("\u2718")} ${failed} failed`);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
console.log();
|
|
384
|
+
|
|
385
|
+
// ── Getting Started Card ────────────────────────────────────────────────
|
|
386
|
+
|
|
387
|
+
const cyanBorder = (s) => cyan(s);
|
|
388
|
+
|
|
389
|
+
const startCard = box(chalk, [
|
|
390
|
+
"",
|
|
391
|
+
` ${dim("Start Claude Code:")} ${bold("claude")}`,
|
|
392
|
+
` ${dim("Run full pipeline:")} ${bold("/pipeline:run")} ${dim("Idea")}`,
|
|
393
|
+
` ${dim("Autonomous mode:")} ${bold("--autonomous")}`,
|
|
394
|
+
` ${dim("Single expert:")} ${bold("/value-mapper")} ${dim("Idea")}`,
|
|
395
|
+
"",
|
|
396
|
+
` ${dim("Optional:")} ${bold("claude plugin install claude-mem")}`,
|
|
397
|
+
` ${dim("(enables cross-session memory)")}`,
|
|
398
|
+
"",
|
|
399
|
+
], { title: "Getting Started", width: W, borderColor: cyanBorder });
|
|
400
|
+
|
|
401
|
+
console.log(startCard);
|
|
402
|
+
console.log();
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
main().catch(console.error);
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "organtic",
|
|
3
|
+
"version": "1.0.0",
|
|
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
|
+
"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
|
+
}
|