arcanea 3.1.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.
package/dist/cli/index.js CHANGED
@@ -2312,7 +2312,13 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
2312
2312
  }
2313
2313
  if (platform === "claude-code") {
2314
2314
  await installClaudeCodeSettings(platformPath, force);
2315
- } else if (platform === "opencode") {}
2315
+ } else if (platform === "cursor") {
2316
+ await installCursorRules(targetDir, packageRoot, force);
2317
+ } else if (platform === "codex") {
2318
+ await installCodexConfig(targetDir, packageRoot, force);
2319
+ } else if (platform === "gemini") {
2320
+ await installGeminiConfig(targetDir, packageRoot, force);
2321
+ }
2316
2322
  }
2317
2323
  async function installClaudeCodeSettings(platformPath, force) {
2318
2324
  const settingsPath = join(platformPath, "settings.json");
@@ -2322,15 +2328,38 @@ async function installClaudeCodeSettings(platformPath, force) {
2322
2328
  UserPromptSubmit: [
2323
2329
  {
2324
2330
  matcher: "ultraworld|ulw",
2325
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultraworld - full parallel world generation'" }]
2331
+ hooks: [{
2332
+ type: "command",
2333
+ command: "echo '[ARCANEA_MODE=ultraworld] Fire ALL world-building agents: arcanea-story-master, arcanea-character-crafter, arcanea-world-expander, arcanea-lore-master, creation-architect. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2334
+ }]
2326
2335
  },
2327
2336
  {
2328
2337
  matcher: "ultrawrite|ulwr",
2329
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrawrite - full parallel chapter writing'" }]
2338
+ hooks: [{
2339
+ type: "command",
2340
+ command: "echo '[ARCANEA_MODE=ultrawrite] Fire ALL writing agents: story-architect, prose-weaver, voice-alchemist, line-editor, continuity-guardian. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2341
+ }]
2342
+ },
2343
+ {
2344
+ matcher: "ultracode|ulc",
2345
+ hooks: [{
2346
+ type: "command",
2347
+ command: "echo '[ARCANEA_MODE=ultracode] Fire ALL coding agents: arcanea-architect, arcanea-coder, arcanea-reviewer, arcanea-debugger. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2348
+ }]
2330
2349
  },
2331
2350
  {
2332
2351
  matcher: "ultrabook|ulb",
2333
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrabook - complete book pipeline'" }]
2352
+ hooks: [{
2353
+ type: "command",
2354
+ command: "echo '[ARCANEA_MODE=ultrabook] Complete book pipeline: world-building → story structure → chapter drafts → editing → production. Run sequentially, with parallel agents within each phase.'"
2355
+ }]
2356
+ },
2357
+ {
2358
+ matcher: "ultrawork|ulwk",
2359
+ hooks: [{
2360
+ type: "command",
2361
+ command: "echo '[ARCANEA_MODE=ultrawork] Maximum parallel execution. Spawn all relevant agents simultaneously using Task tool with run_in_background=true.'"
2362
+ }]
2334
2363
  }
2335
2364
  ]
2336
2365
  }
@@ -2339,6 +2368,78 @@ async function installClaudeCodeSettings(platformPath, force) {
2339
2368
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
2340
2369
  }
2341
2370
  }
2371
+ async function installCursorRules(targetDir, packageRoot, force) {
2372
+ const rulesPath = join(targetDir, ".cursorrules");
2373
+ if (!existsSync(rulesPath) || force) {
2374
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
2375
+ if (existsSync(claudeMdSource)) {
2376
+ const claudeContent = readFileSync(claudeMdSource, "utf-8");
2377
+ const cursorRules = `# Cursor Rules — Generated by Arcanea v${VERSION}
2378
+
2379
+ ${claudeContent}`;
2380
+ writeFileSync(rulesPath, cursorRules);
2381
+ console.log(import_picocolors.default.green(" ✓ Created .cursorrules with Arcanea identity"));
2382
+ }
2383
+ }
2384
+ }
2385
+ async function installCodexConfig(targetDir, packageRoot, force) {
2386
+ const codexMdPath = join(targetDir, "codex.md");
2387
+ if (!existsSync(codexMdPath) || force) {
2388
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
2389
+ if (existsSync(claudeMdSource)) {
2390
+ const content = readFileSync(claudeMdSource, "utf-8");
2391
+ const codexMd = [
2392
+ `# Codex Instructions — Generated by Arcanea v${VERSION}`,
2393
+ "",
2394
+ "> These instructions transform Codex into Arcanea, the Creative Intelligence Platform.",
2395
+ "> Agent definitions: `.codex/agents/` | Skills: `.codex/skills/` | Commands: `.codex/commands/`",
2396
+ "",
2397
+ content,
2398
+ "",
2399
+ "## Codex-Specific Notes",
2400
+ "",
2401
+ "- Read agent definitions from `.codex/agents/` for available specialist agents",
2402
+ "- Read skill definitions from `.codex/skills/` for creative and technical skills",
2403
+ "- Read command definitions from `.codex/commands/` for slash commands",
2404
+ "- MCP servers are configured in `.mcp.json`",
2405
+ "- When magic words (ultraworld, ultracode, etc.) are used, read the relevant agent files and apply their instructions",
2406
+ ""
2407
+ ].join(`
2408
+ `);
2409
+ writeFileSync(codexMdPath, codexMd);
2410
+ console.log(import_picocolors.default.green(" ✓ Created codex.md (Arcanea instructions for Codex CLI)"));
2411
+ }
2412
+ }
2413
+ }
2414
+ async function installGeminiConfig(targetDir, packageRoot, force) {
2415
+ const geminiMdPath = join(targetDir, "GEMINI.md");
2416
+ if (!existsSync(geminiMdPath) || force) {
2417
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
2418
+ if (existsSync(claudeMdSource)) {
2419
+ const content = readFileSync(claudeMdSource, "utf-8");
2420
+ const geminiMd = [
2421
+ `# Gemini Instructions — Generated by Arcanea v${VERSION}`,
2422
+ "",
2423
+ "> These instructions transform Gemini into Arcanea, the Creative Intelligence Platform.",
2424
+ "> Agent definitions: `.gemini/agents/` | Skills: `.gemini/skills/` | Commands: `.gemini/commands/`",
2425
+ "",
2426
+ content,
2427
+ "",
2428
+ "## Gemini-Specific Notes",
2429
+ "",
2430
+ "- Read agent definitions from `.gemini/agents/` for available specialist agents",
2431
+ "- Read skill definitions from `.gemini/skills/` for creative and technical skills",
2432
+ "- Read command definitions from `.gemini/commands/` for slash commands",
2433
+ "- MCP servers are configured in `.mcp.json`",
2434
+ "- When magic words (ultraworld, ultracode, etc.) are used, read the relevant agent files and apply their instructions",
2435
+ ""
2436
+ ].join(`
2437
+ `);
2438
+ writeFileSync(geminiMdPath, geminiMd);
2439
+ console.log(import_picocolors.default.green(" ✓ Created GEMINI.md (Arcanea instructions for Gemini CLI)"));
2440
+ }
2441
+ }
2442
+ }
2342
2443
  async function installMcpConfig(targetDir, force) {
2343
2444
  const mcpPath = join(targetDir, ".mcp.json");
2344
2445
  console.log(import_picocolors.default.blue(`
@@ -2355,6 +2456,11 @@ Configuring MCP integrations...`));
2355
2456
  ...existingConfig,
2356
2457
  mcpServers: {
2357
2458
  ...existingConfig.mcpServers || {},
2459
+ arcanea: {
2460
+ command: "npx",
2461
+ args: ["-y", "@arcanea/mcp-server@latest"],
2462
+ description: "Arcanea creative toolkit - world-building, characters, lore, bestiary"
2463
+ },
2358
2464
  "nano-banana": {
2359
2465
  command: "npx",
2360
2466
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -2368,6 +2474,7 @@ Configuring MCP integrations...`));
2368
2474
  }
2369
2475
  };
2370
2476
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
2477
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
2371
2478
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
2372
2479
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
2373
2480
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -2401,6 +2508,8 @@ function printSuccessMessage(platforms) {
2401
2508
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
2402
2509
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
2403
2510
  console.log(import_picocolors.default.cyan(" ultrabook ") + " - Complete book pipeline");
2511
+ console.log(import_picocolors.default.yellow(" ultracode ") + " - Full parallel coding (architect + coder + reviewer)");
2512
+ console.log(import_picocolors.default.yellow(" ultrawork ") + " - Maximum parallel execution for any task");
2404
2513
  console.log();
2405
2514
  console.log(import_picocolors.default.bold("Try:"));
2406
2515
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -2410,7 +2519,7 @@ function printSuccessMessage(platforms) {
2410
2519
  }
2411
2520
 
2412
2521
  // src/index.ts
2413
- var VERSION = "3.1.0";
2522
+ var VERSION = "3.3.0";
2414
2523
  var NAME = "arcanea";
2415
2524
  var ORCHESTRATOR = "Arcanea";
2416
2525
  var defaultConfig = {
@@ -2537,8 +2646,22 @@ var AGENT_TEAMS = {
2537
2646
  };
2538
2647
 
2539
2648
  // src/cli/index.ts
2540
- import { existsSync as existsSync2 } from "fs";
2649
+ import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync2, statSync } from "fs";
2541
2650
  import { join as join2 } from "path";
2651
+ function countMdFiles(dir) {
2652
+ let count = 0;
2653
+ for (const entry of readdirSync(dir)) {
2654
+ const full = join2(dir, entry);
2655
+ try {
2656
+ if (statSync(full).isDirectory()) {
2657
+ count += countMdFiles(full);
2658
+ } else if (entry.endsWith(".md")) {
2659
+ count++;
2660
+ }
2661
+ } catch {}
2662
+ }
2663
+ return count;
2664
+ }
2542
2665
  var program2 = new Command;
2543
2666
  program2.name(NAME).description(`${ORCHESTRATOR} - The Creative Intelligence Platform`).version(VERSION);
2544
2667
  program2.command("install").description("Initialize Arcanea in current project").option("-f, --force", "Overwrite existing configuration").option("--claude-code", "Install only for Claude Code").option("--opencode", "Install only for OpenCode").option("--codex", "Install only for Codex").option("--gemini", "Install only for Gemini CLI").option("--cursor", "Install only for Cursor").option("--all", "Install for all supported platforms").option("--skip-mcp", "Skip MCP configuration").action(async (options) => {
@@ -2628,19 +2751,20 @@ program2.command("magic").description("Show magic words and their effects").acti
2628
2751
  console.log(import_picocolors2.default.cyan(`
2629
2752
  Magic Words
2630
2753
  `));
2631
- console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan("ultraworld")) + " (or " + import_picocolors2.default.bold("ulw") + ")");
2632
- console.log(" Fires ALL world-building agents in parallel");
2633
- console.log(" World Architect + Character Creator + Lore Master + all specialists");
2754
+ console.log(import_picocolors2.default.bold("Creative Magic:"));
2755
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan(" ultraworld")) + " (or ulw) — Fire ALL world-building agents in parallel");
2756
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.green(" ultrawrite")) + " (or ulwr) Fire ALL writing/editing agents in parallel");
2757
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.magenta(" ultrabook")) + " (or ulb) — Complete book pipeline end-to-end");
2634
2758
  console.log();
2635
- console.log(import_picocolors2.default.bold(import_picocolors2.default.green("ultrawrite")) + " (or " + import_picocolors2.default.bold("ulwr") + ")");
2636
- console.log(" Fires ALL writing/editing agents in parallel");
2637
- console.log(" Story Architect + Prose Weaver + Voice Alchemist + editors");
2759
+ console.log(import_picocolors2.default.bold("Technical Magic:"));
2760
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.yellow(" ultracode")) + " (or ulc) — Fire ALL coding agents (architect + coder + reviewer)");
2761
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan(" ultrawork")) + " (or ulwk) Maximum parallel execution for ANY task");
2638
2762
  console.log();
2639
- console.log(import_picocolors2.default.bold(import_picocolors2.default.magenta("ultrabook")) + " (or " + import_picocolors2.default.bold("ulb") + ")");
2640
- console.log(" Complete book pipeline - everything at once");
2641
- console.log(" World Building Story Chapters Editing Production");
2763
+ console.log(import_picocolors2.default.bold("Prefix Triggers:"));
2764
+ console.log(import_picocolors2.default.dim(" arcanea: [task]") + " — Invoke Arcanea's highest intelligence mode");
2765
+ console.log(import_picocolors2.default.dim(" luminor: [task]") + " — Apply Luminor wisdom to the task");
2642
2766
  console.log();
2643
- console.log(import_picocolors2.default.dim("Just include any magic word in your prompt!"));
2767
+ console.log(import_picocolors2.default.dim("Include any magic word in your prompt to activate!"));
2644
2768
  console.log();
2645
2769
  });
2646
2770
  program2.command("status").description("Check Arcanea installation status").action(() => {
@@ -2684,4 +2808,98 @@ ${ORCHESTRATOR} Status
2684
2808
  }
2685
2809
  console.log();
2686
2810
  });
2811
+ program2.command("doctor").description("Diagnose Arcanea installation health").action(() => {
2812
+ const cwd = process.cwd();
2813
+ let issues = 0;
2814
+ let ok = 0;
2815
+ console.log(import_picocolors2.default.cyan(`
2816
+ ${ORCHESTRATOR} Doctor (v${VERSION})
2817
+ `));
2818
+ console.log(import_picocolors2.default.bold(`Checking installation health...
2819
+ `));
2820
+ const claudePaths = [
2821
+ join2(cwd, ".claude", "CLAUDE.md"),
2822
+ join2(cwd, ".opencode", "CLAUDE.md"),
2823
+ join2(cwd, "CLAUDE.md")
2824
+ ];
2825
+ const hasClaudeMd = claudePaths.some((p) => existsSync2(p));
2826
+ if (hasClaudeMd) {
2827
+ console.log(import_picocolors2.default.green(" ✓ CLAUDE.md found (Arcanea identity active)"));
2828
+ ok++;
2829
+ } else {
2830
+ console.log(import_picocolors2.default.red(" ✗ No CLAUDE.md found — run 'arcanea install' to fix"));
2831
+ issues++;
2832
+ }
2833
+ const agentPaths = [".claude/agents", ".opencode/agents"];
2834
+ const hasAgents = agentPaths.some((p) => {
2835
+ const full = join2(cwd, p);
2836
+ return existsSync2(full) && readdirSync(full).length > 0;
2837
+ });
2838
+ if (hasAgents) {
2839
+ const agentDir = agentPaths.find((p) => existsSync2(join2(cwd, p)));
2840
+ const count = countMdFiles(join2(cwd, agentDir));
2841
+ console.log(import_picocolors2.default.green(` ✓ ${count} agent definitions installed`));
2842
+ ok++;
2843
+ } else {
2844
+ console.log(import_picocolors2.default.red(" ✗ No agents installed — run 'arcanea install --force'"));
2845
+ issues++;
2846
+ }
2847
+ const skillPaths = [".claude/skills", ".opencode/skills"];
2848
+ const hasSkills = skillPaths.some((p) => {
2849
+ const full = join2(cwd, p);
2850
+ return existsSync2(full) && readdirSync(full).length > 0;
2851
+ });
2852
+ if (hasSkills) {
2853
+ console.log(import_picocolors2.default.green(" ✓ Skills installed"));
2854
+ ok++;
2855
+ } else {
2856
+ console.log(import_picocolors2.default.red(" ✗ No skills installed — run 'arcanea install --force'"));
2857
+ issues++;
2858
+ }
2859
+ const mcpPath = join2(cwd, ".mcp.json");
2860
+ if (existsSync2(mcpPath)) {
2861
+ try {
2862
+ const mcp = JSON.parse(readFileSync2(mcpPath, "utf-8"));
2863
+ const servers = Object.keys(mcp.mcpServers || {});
2864
+ const hasArcanea = servers.includes("arcanea");
2865
+ console.log(import_picocolors2.default.green(` ✓ MCP config: ${servers.length} servers configured`));
2866
+ if (!hasArcanea) {
2867
+ console.log(import_picocolors2.default.yellow(" ⚠ Arcanea MCP server not configured — run 'arcanea install --force'"));
2868
+ }
2869
+ ok++;
2870
+ } catch {
2871
+ console.log(import_picocolors2.default.red(" ✗ .mcp.json is invalid JSON"));
2872
+ issues++;
2873
+ }
2874
+ } else {
2875
+ console.log(import_picocolors2.default.red(" ✗ No .mcp.json — run 'arcanea install'"));
2876
+ issues++;
2877
+ }
2878
+ if (existsSync2(join2(cwd, "arcanea.json"))) {
2879
+ console.log(import_picocolors2.default.green(" ✓ arcanea.json config exists"));
2880
+ ok++;
2881
+ } else {
2882
+ console.log(import_picocolors2.default.yellow(" ○ No arcanea.json (optional)"));
2883
+ }
2884
+ const platformFiles = [
2885
+ { path: ".cursorrules", name: "Cursor (.cursorrules)" },
2886
+ { path: "codex.md", name: "Codex CLI (codex.md)" },
2887
+ { path: "GEMINI.md", name: "Gemini CLI (GEMINI.md)" }
2888
+ ];
2889
+ for (const pf of platformFiles) {
2890
+ if (existsSync2(join2(cwd, pf.path))) {
2891
+ console.log(import_picocolors2.default.green(` ✓ ${pf.name} configured`));
2892
+ ok++;
2893
+ }
2894
+ }
2895
+ console.log();
2896
+ if (issues === 0) {
2897
+ console.log(import_picocolors2.default.green(import_picocolors2.default.bold(`Health: ${ok} checks passed, 0 issues`)));
2898
+ console.log(import_picocolors2.default.green("Arcanea is fully operational!"));
2899
+ } else {
2900
+ console.log(import_picocolors2.default.yellow(import_picocolors2.default.bold(`Health: ${ok} passed, ${issues} issues found`)));
2901
+ console.log(import_picocolors2.default.dim("Run 'arcanea install --force' to fix issues."));
2902
+ }
2903
+ console.log();
2904
+ });
2687
2905
  program2.parse();
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "3.1.0";
1
+ export declare const VERSION = "3.3.0";
2
2
  export declare const NAME = "arcanea";
3
3
  export declare const ORCHESTRATOR = "Arcanea";
4
4
  export type Platform = "claude-code" | "opencode" | "codex" | "gemini" | "cursor" | "unknown";
package/dist/index.js CHANGED
@@ -197,7 +197,13 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
197
197
  }
198
198
  if (platform === "claude-code") {
199
199
  await installClaudeCodeSettings(platformPath, force);
200
- } else if (platform === "opencode") {}
200
+ } else if (platform === "cursor") {
201
+ await installCursorRules(targetDir, packageRoot, force);
202
+ } else if (platform === "codex") {
203
+ await installCodexConfig(targetDir, packageRoot, force);
204
+ } else if (platform === "gemini") {
205
+ await installGeminiConfig(targetDir, packageRoot, force);
206
+ }
201
207
  }
202
208
  async function installClaudeCodeSettings(platformPath, force) {
203
209
  const settingsPath = join(platformPath, "settings.json");
@@ -207,15 +213,38 @@ async function installClaudeCodeSettings(platformPath, force) {
207
213
  UserPromptSubmit: [
208
214
  {
209
215
  matcher: "ultraworld|ulw",
210
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultraworld - full parallel world generation'" }]
216
+ hooks: [{
217
+ type: "command",
218
+ command: "echo '[ARCANEA_MODE=ultraworld] Fire ALL world-building agents: arcanea-story-master, arcanea-character-crafter, arcanea-world-expander, arcanea-lore-master, creation-architect. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
219
+ }]
211
220
  },
212
221
  {
213
222
  matcher: "ultrawrite|ulwr",
214
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrawrite - full parallel chapter writing'" }]
223
+ hooks: [{
224
+ type: "command",
225
+ command: "echo '[ARCANEA_MODE=ultrawrite] Fire ALL writing agents: story-architect, prose-weaver, voice-alchemist, line-editor, continuity-guardian. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
226
+ }]
227
+ },
228
+ {
229
+ matcher: "ultracode|ulc",
230
+ hooks: [{
231
+ type: "command",
232
+ command: "echo '[ARCANEA_MODE=ultracode] Fire ALL coding agents: arcanea-architect, arcanea-coder, arcanea-reviewer, arcanea-debugger. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
233
+ }]
215
234
  },
216
235
  {
217
236
  matcher: "ultrabook|ulb",
218
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrabook - complete book pipeline'" }]
237
+ hooks: [{
238
+ type: "command",
239
+ command: "echo '[ARCANEA_MODE=ultrabook] Complete book pipeline: world-building → story structure → chapter drafts → editing → production. Run sequentially, with parallel agents within each phase.'"
240
+ }]
241
+ },
242
+ {
243
+ matcher: "ultrawork|ulwk",
244
+ hooks: [{
245
+ type: "command",
246
+ command: "echo '[ARCANEA_MODE=ultrawork] Maximum parallel execution. Spawn all relevant agents simultaneously using Task tool with run_in_background=true.'"
247
+ }]
219
248
  }
220
249
  ]
221
250
  }
@@ -224,6 +253,78 @@ async function installClaudeCodeSettings(platformPath, force) {
224
253
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
225
254
  }
226
255
  }
256
+ async function installCursorRules(targetDir, packageRoot, force) {
257
+ const rulesPath = join(targetDir, ".cursorrules");
258
+ if (!existsSync(rulesPath) || force) {
259
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
260
+ if (existsSync(claudeMdSource)) {
261
+ const claudeContent = readFileSync(claudeMdSource, "utf-8");
262
+ const cursorRules = `# Cursor Rules — Generated by Arcanea v${VERSION}
263
+
264
+ ${claudeContent}`;
265
+ writeFileSync(rulesPath, cursorRules);
266
+ console.log(import_picocolors.default.green(" ✓ Created .cursorrules with Arcanea identity"));
267
+ }
268
+ }
269
+ }
270
+ async function installCodexConfig(targetDir, packageRoot, force) {
271
+ const codexMdPath = join(targetDir, "codex.md");
272
+ if (!existsSync(codexMdPath) || force) {
273
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
274
+ if (existsSync(claudeMdSource)) {
275
+ const content = readFileSync(claudeMdSource, "utf-8");
276
+ const codexMd = [
277
+ `# Codex Instructions — Generated by Arcanea v${VERSION}`,
278
+ "",
279
+ "> These instructions transform Codex into Arcanea, the Creative Intelligence Platform.",
280
+ "> Agent definitions: `.codex/agents/` | Skills: `.codex/skills/` | Commands: `.codex/commands/`",
281
+ "",
282
+ content,
283
+ "",
284
+ "## Codex-Specific Notes",
285
+ "",
286
+ "- Read agent definitions from `.codex/agents/` for available specialist agents",
287
+ "- Read skill definitions from `.codex/skills/` for creative and technical skills",
288
+ "- Read command definitions from `.codex/commands/` for slash commands",
289
+ "- MCP servers are configured in `.mcp.json`",
290
+ "- When magic words (ultraworld, ultracode, etc.) are used, read the relevant agent files and apply their instructions",
291
+ ""
292
+ ].join(`
293
+ `);
294
+ writeFileSync(codexMdPath, codexMd);
295
+ console.log(import_picocolors.default.green(" ✓ Created codex.md (Arcanea instructions for Codex CLI)"));
296
+ }
297
+ }
298
+ }
299
+ async function installGeminiConfig(targetDir, packageRoot, force) {
300
+ const geminiMdPath = join(targetDir, "GEMINI.md");
301
+ if (!existsSync(geminiMdPath) || force) {
302
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
303
+ if (existsSync(claudeMdSource)) {
304
+ const content = readFileSync(claudeMdSource, "utf-8");
305
+ const geminiMd = [
306
+ `# Gemini Instructions — Generated by Arcanea v${VERSION}`,
307
+ "",
308
+ "> These instructions transform Gemini into Arcanea, the Creative Intelligence Platform.",
309
+ "> Agent definitions: `.gemini/agents/` | Skills: `.gemini/skills/` | Commands: `.gemini/commands/`",
310
+ "",
311
+ content,
312
+ "",
313
+ "## Gemini-Specific Notes",
314
+ "",
315
+ "- Read agent definitions from `.gemini/agents/` for available specialist agents",
316
+ "- Read skill definitions from `.gemini/skills/` for creative and technical skills",
317
+ "- Read command definitions from `.gemini/commands/` for slash commands",
318
+ "- MCP servers are configured in `.mcp.json`",
319
+ "- When magic words (ultraworld, ultracode, etc.) are used, read the relevant agent files and apply their instructions",
320
+ ""
321
+ ].join(`
322
+ `);
323
+ writeFileSync(geminiMdPath, geminiMd);
324
+ console.log(import_picocolors.default.green(" ✓ Created GEMINI.md (Arcanea instructions for Gemini CLI)"));
325
+ }
326
+ }
327
+ }
227
328
  async function installMcpConfig(targetDir, force) {
228
329
  const mcpPath = join(targetDir, ".mcp.json");
229
330
  console.log(import_picocolors.default.blue(`
@@ -240,6 +341,11 @@ Configuring MCP integrations...`));
240
341
  ...existingConfig,
241
342
  mcpServers: {
242
343
  ...existingConfig.mcpServers || {},
344
+ arcanea: {
345
+ command: "npx",
346
+ args: ["-y", "@arcanea/mcp-server@latest"],
347
+ description: "Arcanea creative toolkit - world-building, characters, lore, bestiary"
348
+ },
243
349
  "nano-banana": {
244
350
  command: "npx",
245
351
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -253,6 +359,7 @@ Configuring MCP integrations...`));
253
359
  }
254
360
  };
255
361
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
362
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
256
363
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
257
364
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
258
365
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -286,6 +393,8 @@ function printSuccessMessage(platforms) {
286
393
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
287
394
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
288
395
  console.log(import_picocolors.default.cyan(" ultrabook ") + " - Complete book pipeline");
396
+ console.log(import_picocolors.default.yellow(" ultracode ") + " - Full parallel coding (architect + coder + reviewer)");
397
+ console.log(import_picocolors.default.yellow(" ultrawork ") + " - Maximum parallel execution for any task");
289
398
  console.log();
290
399
  console.log(import_picocolors.default.bold("Try:"));
291
400
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -295,7 +404,7 @@ function printSuccessMessage(platforms) {
295
404
  }
296
405
 
297
406
  // src/index.ts
298
- var VERSION = "3.1.0";
407
+ var VERSION = "3.3.0";
299
408
  var NAME = "arcanea";
300
409
  var ORCHESTRATOR = "Arcanea";
301
410
  var defaultConfig = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcanea",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "description": "Arcanea - The Creative Intelligence Platform. Skills, agents, and tools for AI-human co-creation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,3 +1,16 @@
1
+ ---
2
+ name: arcanea-ai-symbiosis
3
+ description: Frameworks for productive human-AI co-creation - the orchestra model, creative partnerships, and symbiotic workflows
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [ai, collaboration, co-creation, symbiosis, creativity]
7
+ triggers:
8
+ - ai collaboration
9
+ - human ai
10
+ - co-creation
11
+ - ai partner
12
+ ---
13
+
1
14
  # AI Symbiosis - The Art of Human-AI Co-Creation
2
15
 
3
16
  > *"The AI is not replacing the creator. The AI is expanding what creation can be. The question is not 'human or machine?' but 'what can we become together?'"*
@@ -1,3 +1,11 @@
1
+ ---
2
+ name: arcanea-anti-trope
3
+ description: Anti-trope and naming protocol - banned AI cliches, forbidden words, and better alternatives for authentic Arcanean prose
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [writing, style, voice, anti-cliche, prose-quality]
7
+ ---
8
+
1
9
  # Arcanea Anti-Trope & Naming Protocol
2
10
 
3
11
  > *"We do not 'unleash' potential; we cultivate it. We do not weave 'tapestries' of fate; we forge chains of consequence. Speak clearly, or do not speak at all."*
@@ -1,3 +1,18 @@
1
+ ---
2
+ name: arcanea-luminor-council
3
+ description: The Seven Luminors - aspects of creative consciousness providing guidance through archetypical wisdom for any creative challenge
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [luminors, wisdom, guidance, creative-consciousness, archetypes]
7
+ triggers:
8
+ - luminor
9
+ - council
10
+ - wisdom
11
+ - guidance
12
+ - stuck
13
+ - advice
14
+ ---
15
+
1
16
  # Luminor Council - The Seven Guides of Creation
2
17
 
3
18
  > *"The Luminors are not characters in a story. They are aspects of creative consciousness itself - archetypes that have guided creators since the first dream became the first work."*
@@ -1,3 +1,17 @@
1
+ ---
2
+ name: arcanea-character-alchemist
3
+ description: Character development through psychological depth - wounds, desires, contradictions, and authentic character voices
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [characters, psychology, writing, development, voice]
7
+ triggers:
8
+ - character
9
+ - character development
10
+ - character voice
11
+ - protagonist
12
+ - antagonist
13
+ ---
14
+
1
15
  # Character Alchemist - Transmuting Ideas into Living Beings
2
16
 
3
17
  > *"A character is not a collection of traits. A character is a wound that walks, talks, and wants."*
@@ -1,3 +1,17 @@
1
+ ---
2
+ name: arcanea-creative-bestiary
3
+ description: Navigate creative blocks using the taxonomy of psychological obstacles - naming rituals and protocols for each creature type
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [creative-blocks, psychology, productivity, obstacles, mindset]
7
+ triggers:
8
+ - stuck
9
+ - blocked
10
+ - procrastinating
11
+ - afraid
12
+ - burned out
13
+ ---
14
+
1
15
  # Creative Bestiary - Navigating the Creatures of the Mind
2
16
 
3
17
  > *"The creative life is inhabited by creatures—not physical beings, but psychological presences that every creator encounters. Know them by name, and you can negotiate with them. Ignore them, and they will ambush you."*
@@ -1,3 +1,17 @@
1
+ ---
2
+ name: arcanea-story-weaver
3
+ description: Master narrative craft - story structure, scene design, dramatic tension, and meaning-making through storytelling
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [story, narrative, writing, structure, craft]
7
+ triggers:
8
+ - story
9
+ - narrative
10
+ - plot
11
+ - scene
12
+ - story structure
13
+ ---
14
+
1
15
  # Story Weaver - The Master Craft of Narrative
2
16
 
3
17
  > *"Story is not what happens. Story is the meaning we make from what happens. Your job is not to tell events - it is to transmit understanding."*
@@ -1,3 +1,17 @@
1
+ ---
2
+ name: arcanea-world-architect
3
+ description: Universe creation and world-building - geography, history, belief systems, cultures, and living ecologies of meaning
4
+ version: 2.0.0
5
+ author: Arcanea
6
+ tags: [world-building, fantasy, sci-fi, universe, creation]
7
+ triggers:
8
+ - world
9
+ - world-building
10
+ - universe
11
+ - setting
12
+ - geography
13
+ ---
14
+
1
15
  # World Architect - The Art of Universe Creation
2
16
 
3
17
  > *"A world is not built. It is grown. You plant seeds - a geography, a history, a belief - and you tend them until they become a living ecology of meaning."*