arkaos 2.60.0 → 2.62.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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.60.0
1
+ 2.62.0
@@ -0,0 +1,147 @@
1
+ id: community-model
2
+ name: Community Business Model
3
+ description: Community business model design — purpose + ideal member + value prop + SPACES role + platform fit + monetisation + growth loop
4
+ department: community
5
+ tier: enterprise
6
+ command: "/community model"
7
+ requires_branch: false
8
+ requires_spec: false
9
+ quality_gate_required: true
10
+
11
+ phases:
12
+ - id: brief
13
+ name: Community Brief
14
+ description: Define niche, founder context, current audience size, success metric, runway
15
+ agents:
16
+ - agent_id: community-strategist-beatriz
17
+ role: Frame niche, founder context, current audience, runway, success metric
18
+ gate:
19
+ type: user_approval
20
+ description: User confirms niche and context
21
+
22
+ - id: purpose-definition
23
+ name: Purpose & Identity
24
+ description: Define the community's purpose using the Onlyness frame — only community where X for Y who want Z
25
+ agents:
26
+ - agent_id: community-strategist-beatriz
27
+ role: Onlyness frame + community identity statement
28
+ - agent_id: brand-strategist-mateus
29
+ role: Differentiation from adjacent communities
30
+ parallel: true
31
+ gate:
32
+ type: user_approval
33
+ description: User approves purpose and identity
34
+
35
+ - id: ideal-member-profile
36
+ name: Ideal Member Profile
37
+ description: Define the IMP (Ideal Member Profile) with firmographics + practitioner level + transformation context
38
+ agents:
39
+ - agent_id: community-strategist-beatriz
40
+ role: IMP definition with belonging triggers + dropout triggers
41
+ gate:
42
+ type: user_approval
43
+ description: User approves IMP
44
+ outputs:
45
+ - type: document
46
+ format: markdown
47
+ obsidian_path: "WizardingCode/Communities/IMP/"
48
+ description: Ideal Member Profile with belonging + dropout triggers
49
+
50
+ - id: spaces-classification
51
+ name: SPACES Classification
52
+ description: Classify the community across the SPACES framework — Support / Product / Action / Content / Engagement / Success
53
+ agents:
54
+ - agent_id: community-strategist-beatriz
55
+ role: SPACES classification with primary + secondary purpose
56
+ gate:
57
+ type: user_approval
58
+ description: User approves SPACES role
59
+
60
+ - id: value-prop
61
+ name: Value Proposition (Member-Side + Operator-Side)
62
+ description: Two value props — what the member gets, what the operator gets, why both compound
63
+ agents:
64
+ - agent_id: community-strategist-beatriz
65
+ role: Two-sided value prop with compounding logic
66
+ - agent_id: copy-director-eduardo
67
+ role: Value prop copy for both audiences
68
+ parallel: true
69
+ gate:
70
+ type: user_approval
71
+ description: User approves value props
72
+
73
+ - id: platform-fit
74
+ name: Platform Fit
75
+ description: Pick platform based on IMP × SPACES × moderation needs — Discord / Slack / Circle / Mighty / native / open-source
76
+ agents:
77
+ - agent_id: community-strategist-beatriz
78
+ role: Platform selection matrix with fit per dimension
79
+ gate:
80
+ type: user_approval
81
+ description: User approves platform choice
82
+
83
+ - id: monetisation
84
+ name: Monetisation Model
85
+ description: Free / freemium / paid / cohort / sponsorship — with unit economics check
86
+ agents:
87
+ - agent_id: community-strategist-beatriz
88
+ role: Monetisation model with conversion + LTV math
89
+ - agent_id: cfo-helena
90
+ role: Unit economics validation
91
+ parallel: true
92
+ gate:
93
+ type: user_approval
94
+ description: User approves monetisation model
95
+
96
+ - id: growth-loop
97
+ name: Community Growth Loop
98
+ description: Define the loop — member contributes → status / reach → outsiders notice → join → contribute. Plus K-factor / NRG target.
99
+ agents:
100
+ - agent_id: community-strategist-beatriz
101
+ role: Growth loop spec with mechanism + metric per step
102
+ - agent_id: marketing-director-luna
103
+ role: Loop compounding factor + coordination with other depts (content, paid)
104
+ parallel: true
105
+ gate:
106
+ type: user_approval
107
+ description: User approves growth loop
108
+
109
+ - id: self-critique
110
+ name: Self-Critique
111
+ description: Stress-test — does IMP × SPACES × platform align? Does monetisation match member value? Is the loop compounding-positive?
112
+ agents:
113
+ - agent_id: community-strategist-beatriz
114
+ role: Coherence check across all blocks
115
+ gate:
116
+ type: auto
117
+
118
+ - id: quality-gate
119
+ name: Quality Gate
120
+ model_override: opus
121
+ description: Mandatory quality review
122
+ agents:
123
+ - agent_id: cqo-marta
124
+ role: Orchestrate quality review
125
+ - agent_id: copy-director-eduardo
126
+ role: Value prop prose, member-side / operator-side language, no clichés
127
+ parallel: true
128
+ - agent_id: tech-director-francisca
129
+ role: Platform technical feasibility, monetisation tech stack, instrumentation
130
+ parallel: true
131
+ gate:
132
+ type: quality_gate
133
+ required_verdict: APPROVED
134
+
135
+ - id: delivery
136
+ name: Community Model Package Delivery
137
+ description: Compile the community model package — purpose + IMP + SPACES + value props + platform + monetisation + growth loop
138
+ agents:
139
+ - agent_id: community-strategist-beatriz
140
+ role: Full community model package + 1-page executive summary
141
+ gate:
142
+ type: auto
143
+ outputs:
144
+ - type: document
145
+ format: markdown
146
+ obsidian_path: "WizardingCode/Communities/Models/"
147
+ description: Complete community model — purpose + IMP + SPACES + two-sided value prop + platform + monetisation + growth loop + exec summary
@@ -0,0 +1,86 @@
1
+ // Auto-install official Claude Code plugins on `npx arkaos install` and
2
+ // `npx arkaos@latest update` (PR43 v2.62.0).
3
+ //
4
+ // Behaviour:
5
+ // - No-op when runtime is not Claude Code
6
+ // - Idempotent: skips plugins already in
7
+ // ~/.claude/plugins/installed_plugins.json
8
+ // - Surfaces a one-line status per plugin (installed | already-present | failed)
9
+ // - Never raises — install failures are logged but don't break the installer
10
+ //
11
+ // Plugin list is intentionally short. Add new defaults here when the
12
+ // operator decides a plugin should ship as a standard ArkaOS dependency.
13
+
14
+ import { existsSync, readFileSync } from "node:fs";
15
+ import { execSync, spawnSync } from "node:child_process";
16
+ import { homedir } from "node:os";
17
+ import { join } from "node:path";
18
+
19
+ // Each entry is "name@marketplace" matching the `claude plugin install`
20
+ // CLI argument format.
21
+ export const DEFAULT_CLAUDE_PLUGINS = [
22
+ "frontend-design@claude-plugins-official",
23
+ ];
24
+
25
+ const _INSTALLED_REGISTRY = join(
26
+ homedir(), ".claude", "plugins", "installed_plugins.json",
27
+ );
28
+
29
+ export function installDefaultClaudePlugins({
30
+ runtime = "claude-code",
31
+ plugins = DEFAULT_CLAUDE_PLUGINS,
32
+ home = homedir(),
33
+ } = {}) {
34
+ if (runtime !== "claude-code") {
35
+ return { skipped: "runtime-not-claude-code", results: [] };
36
+ }
37
+ if (!isClaudeCliAvailable()) {
38
+ return { skipped: "claude-cli-not-found", results: [] };
39
+ }
40
+ const alreadyInstalled = readInstalledRegistry(home);
41
+ const results = plugins.map((p) =>
42
+ installOne(p, alreadyInstalled),
43
+ );
44
+ return { skipped: null, results };
45
+ }
46
+
47
+ function isClaudeCliAvailable() {
48
+ try {
49
+ execSync("claude --version", { stdio: "pipe", timeout: 5000 });
50
+ return true;
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+
56
+ function readInstalledRegistry(home) {
57
+ const path = join(home, ".claude", "plugins", "installed_plugins.json");
58
+ if (!existsSync(path)) {
59
+ return new Set();
60
+ }
61
+ try {
62
+ const data = JSON.parse(readFileSync(path, "utf-8"));
63
+ return new Set(Object.keys(data.plugins || {}));
64
+ } catch {
65
+ return new Set();
66
+ }
67
+ }
68
+
69
+ function installOne(plugin, alreadyInstalled) {
70
+ if (alreadyInstalled.has(plugin)) {
71
+ return { plugin, action: "already-present" };
72
+ }
73
+ // Use spawnSync so we can capture exit code without throwing on non-zero.
74
+ // Pass --silent equivalents if available; otherwise default verbosity is OK
75
+ // — the installer is interactive at install time.
76
+ const out = spawnSync("claude", ["plugin", "install", plugin], {
77
+ timeout: 60_000,
78
+ stdio: ["ignore", "pipe", "pipe"],
79
+ encoding: "utf-8",
80
+ });
81
+ if (out.error || out.status !== 0) {
82
+ const msg = (out.stderr || out.error?.message || "unknown").trim().slice(0, 200);
83
+ return { plugin, action: "failed", reason: msg };
84
+ }
85
+ return { plugin, action: "installed" };
86
+ }
@@ -311,6 +311,27 @@ export async function install({ runtime, path, force, skipSystem, withOllama })
311
311
  console.log(` Warning: could not scaffold user-data (${err.message})`);
312
312
  }
313
313
 
314
+ // PR43 v2.62.0 — auto-install default Claude Code plugins. Only runs
315
+ // when runtime is Claude Code AND the `claude` CLI is available.
316
+ // Idempotent: skips plugins already in installed_plugins.json.
317
+ try {
318
+ const { installDefaultClaudePlugins } = await import("./claude-plugins.js");
319
+ const pluginResult = installDefaultClaudePlugins({ runtime });
320
+ if (!pluginResult.skipped) {
321
+ for (const r of pluginResult.results) {
322
+ if (r.action === "installed") {
323
+ console.log(` ${r.plugin} installed.`);
324
+ } else if (r.action === "already-present") {
325
+ console.log(` ${r.plugin} already installed (skipped).`);
326
+ } else if (r.action === "failed") {
327
+ console.log(` ${r.plugin} install failed (${r.reason}).`);
328
+ }
329
+ }
330
+ }
331
+ } catch (err) {
332
+ console.log(` Warning: could not install default Claude plugins (${err.message})`);
333
+ }
334
+
314
335
  const manifest = {
315
336
  version: VERSION,
316
337
  runtime,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "2.60.0",
3
+ "version": "2.62.0",
4
4
  "description": "The Operating System for AI Agent Teams",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkaos-core"
3
- version = "2.60.0"
3
+ version = "2.62.0"
4
4
  description = "Core engine for ArkaOS — The Operating System for AI Agent Teams"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}