arkaos 2.6.0 → 2.8.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.
@@ -30,14 +30,14 @@ export async function install({ runtime, path, force }) {
30
30
  const installDir = userConfig.installDir;
31
31
 
32
32
  // ═══ Step 1: Create directories ═══
33
- step(1, 12, "Creating directories...");
33
+ step(1, 13, "Creating directories...");
34
34
  ensureDir(installDir);
35
35
  const dirs = ["config", "config/hooks", "agents", "media", "session-digests", "vault"];
36
36
  for (const d of dirs) ensureDir(join(installDir, d));
37
37
  ok(`${dirs.length + 1} directories ready`);
38
38
 
39
39
  // ═══ Step 2: Detect v1 installation ═══
40
- step(2, 12, "Checking for v1 installation...");
40
+ step(2, 13, "Checking for v1 installation...");
41
41
  const v1Paths = [
42
42
  join(homedir(), ".claude", "skills", "arka-os"),
43
43
  join(homedir(), ".claude", "skills", "arkaos"),
@@ -51,35 +51,56 @@ export async function install({ runtime, path, force }) {
51
51
  }
52
52
 
53
53
  // ═══ Step 3: Check Python ═══
54
- step(3, 12, "Checking Python 3.11+...");
54
+ step(3, 13, "Checking Python 3.11+...");
55
55
  const pythonCmd = checkPython();
56
56
  ok(`Found: ${pythonCmd}`);
57
57
 
58
58
  // ═══ Step 4: Install Python core + dependencies based on user choices ═══
59
- step(4, 12, "Installing Python dependencies (this may take a minute)...");
59
+ step(4, 13, "Installing Python dependencies (this may take a minute)...");
60
60
  installAllPythonDeps(pythonCmd, userConfig);
61
61
 
62
62
  // ═══ Step 5: Copy configuration files ═══
63
- step(5, 12, "Copying configuration files...");
63
+ step(5, 13, "Copying configuration files...");
64
64
  copyConfigFiles(installDir);
65
65
  ok("Constitution, standards, and config copied");
66
66
 
67
67
  // ═══ Step 6: Install hooks with real paths ═══
68
- step(6, 12, "Installing hooks...");
68
+ step(6, 13, "Installing hooks...");
69
69
  installHooks(installDir);
70
70
 
71
71
  // ═══ Step 7: Configure runtime ═══
72
- step(7, 12, "Configuring runtime...");
72
+ step(7, 13, "Configuring runtime...");
73
73
  const adapter = await loadAdapter(runtime);
74
74
  adapter.configureHooks(config, installDir);
75
75
  ok(`${config.name} configured`);
76
76
 
77
77
  // ═══ Step 8: Install ArkaOS skill to Claude Code ═══
78
- step(8, 12, "Installing /arka skill...");
78
+ step(8, 13, "Installing /arka skill...");
79
79
  installSkill(config, installDir);
80
80
 
81
- // ═══ Step 9: Create references and profile ═══
82
- step(9, 12, "Creating references...");
81
+ // ═══ Step 9: Install CLI wrapper and user instructions ═══
82
+ step(9, 13, "Installing CLI wrapper...");
83
+ const binDir = join(installDir, "bin");
84
+ ensureDir(binDir);
85
+ const wrapperSrc = join(ARKAOS_ROOT, "bin", "arka-claude");
86
+ if (existsSync(wrapperSrc)) {
87
+ copyFileSync(wrapperSrc, join(binDir, "arka-claude"));
88
+ try { chmodSync(join(binDir, "arka-claude"), 0o755); } catch {}
89
+ ok("arka-claude wrapper installed");
90
+ console.log(` Add to PATH: export PATH="$HOME/.arkaos/bin:$PATH"`);
91
+ console.log(` Optional alias: alias claude="arka-claude"`);
92
+ }
93
+ const claudeMdSrc = join(ARKAOS_ROOT, "config", "user-claude.md");
94
+ const userClaudeMd = join(homedir(), ".claude", "CLAUDE.md");
95
+ if (existsSync(claudeMdSrc) && !existsSync(userClaudeMd)) {
96
+ copyFileSync(claudeMdSrc, userClaudeMd);
97
+ ok("~/.claude/CLAUDE.md created (ArkaOS user instructions)");
98
+ } else if (existsSync(userClaudeMd)) {
99
+ ok("~/.claude/CLAUDE.md already exists (preserved)");
100
+ }
101
+
102
+ // ═══ Step 10: Create references and profile ═══
103
+ step(10, 13, "Creating references...");
83
104
  writeFileSync(join(installDir, ".repo-path"), ARKAOS_ROOT);
84
105
  const skillsDir = join(config.skillsDir || join(homedir(), ".claude", "skills"), "arkaos");
85
106
  ensureDir(skillsDir);
@@ -115,7 +136,7 @@ export async function install({ runtime, path, force }) {
115
136
  }
116
137
 
117
138
  // ═══ Step 10: Index knowledge base ═══
118
- step(10, 12, "Setting up knowledge base...");
139
+ step(11, 13, "Setting up knowledge base...");
119
140
  if (userConfig.installKnowledge) {
120
141
  const kbDb = join(installDir, "knowledge.db");
121
142
  // Index ArkaOS skills first
@@ -143,7 +164,7 @@ export async function install({ runtime, path, force }) {
143
164
  }
144
165
 
145
166
  // ═══ Step 11: Verify installation ═══
146
- step(11, 12, "Verifying installation...");
167
+ step(12, 13, "Verifying installation...");
147
168
  let checks = 0;
148
169
  if (existsSync(join(installDir, "config", "constitution.yaml"))) checks++;
149
170
  if (existsSync(join(installDir, "config", "hooks", "user-prompt-submit.sh"))) checks++;
@@ -158,7 +179,7 @@ export async function install({ runtime, path, force }) {
158
179
  ok(`${checks}/5 checks passed`);
159
180
 
160
181
  // ═══ Step 12: Finalize ═══
161
- step(12, 12, "Finalizing...");
182
+ step(13, 13, "Finalizing...");
162
183
  const manifest = {
163
184
  version: VERSION,
164
185
  runtime,
@@ -358,9 +379,11 @@ function installHooks(installDir) {
358
379
  ensureDir(hooksDir);
359
380
 
360
381
  const hookMap = {
361
- "user-prompt-submit-v2.sh": "user-prompt-submit.sh",
362
- "post-tool-use-v2.sh": "post-tool-use.sh",
363
- "pre-compact-v2.sh": "pre-compact.sh",
382
+ "session-start.sh": "session-start.sh",
383
+ "user-prompt-submit.sh": "user-prompt-submit.sh",
384
+ "post-tool-use.sh": "post-tool-use.sh",
385
+ "pre-compact.sh": "pre-compact.sh",
386
+ "cwd-changed.sh": "cwd-changed.sh",
364
387
  };
365
388
 
366
389
  const srcHooksDir = join(ARKAOS_ROOT, "config", "hooks");
@@ -83,9 +83,11 @@ export async function update() {
83
83
  // ── 3. Update hooks ──
84
84
  console.log(" [3/6] Updating hooks...");
85
85
  const hookMap = {
86
- "user-prompt-submit-v2.sh": "user-prompt-submit.sh",
87
- "post-tool-use-v2.sh": "post-tool-use.sh",
88
- "pre-compact-v2.sh": "pre-compact.sh",
86
+ "session-start.sh": "session-start.sh",
87
+ "user-prompt-submit.sh": "user-prompt-submit.sh",
88
+ "post-tool-use.sh": "post-tool-use.sh",
89
+ "pre-compact.sh": "pre-compact.sh",
90
+ "cwd-changed.sh": "cwd-changed.sh",
89
91
  };
90
92
  const srcHooksDir = join(ARKAOS_ROOT, "config", "hooks");
91
93
  const destHooksDir = join(installDir, "config", "hooks");
@@ -110,8 +112,26 @@ export async function update() {
110
112
  }
111
113
  console.log(" ✓ Hooks updated");
112
114
 
113
- // ── 4. Update /arka skill ──
114
- console.log(" [4/6] Updating /arka skill...");
115
+ // ── 4. Update CLI wrapper + user CLAUDE.md ──
116
+ console.log(" [4/7] Updating CLI wrapper and user instructions...");
117
+ const binDir = join(installDir, "bin");
118
+ mkdirSync(binDir, { recursive: true });
119
+ const wrapperSrc = join(ARKAOS_ROOT, "bin", "arka-claude");
120
+ if (existsSync(wrapperSrc)) {
121
+ copyFileSync(wrapperSrc, join(binDir, "arka-claude"));
122
+ try { chmodSync(join(binDir, "arka-claude"), 0o755); } catch {}
123
+ console.log(" ✓ arka-claude wrapper updated");
124
+ }
125
+ const userClaudeMd = join(homedir(), ".claude", "CLAUDE.md");
126
+ const claudeMdSrc = join(ARKAOS_ROOT, "config", "user-claude.md");
127
+ if (existsSync(claudeMdSrc)) {
128
+ mkdirSync(join(homedir(), ".claude"), { recursive: true });
129
+ copyFileSync(claudeMdSrc, userClaudeMd);
130
+ console.log(" ✓ ~/.claude/CLAUDE.md updated");
131
+ }
132
+
133
+ // ── 5. Update /arka skill ──
134
+ console.log(" [5/7] Updating /arka skill...");
115
135
  const skillSrc = join(ARKAOS_ROOT, "arka", "SKILL.md");
116
136
  const skillDest = join(homedir(), ".claude", "skills", "arka");
117
137
  mkdirSync(skillDest, { recursive: true });
@@ -122,13 +142,13 @@ export async function update() {
122
142
  console.log(" ✓ /arka skill updated");
123
143
  }
124
144
 
125
- // ── 5. Update .repo-path ──
126
- console.log(" [5/6] Updating references...");
145
+ // ── 6. Update .repo-path ──
146
+ console.log(" [6/7] Updating references...");
127
147
  writeFileSync(join(installDir, ".repo-path"), ARKAOS_ROOT);
128
148
  console.log(" ✓ Repo path updated");
129
149
 
130
- // ── 6. Update manifest ──
131
- console.log(" [6/6] Finalizing...");
150
+ // ── 7. Update manifest ──
151
+ console.log(" [7/7] Finalizing...");
132
152
  manifest.version = VERSION;
133
153
  manifest.repoRoot = ARKAOS_ROOT;
134
154
  manifest.updatedAt = new Date().toISOString();
@@ -147,7 +167,7 @@ export async function update() {
147
167
  core_updated_at: new Date().toISOString()
148
168
  };
149
169
  writeFileSync(syncStatePath, JSON.stringify(syncState, null, 2));
150
- console.log(" ✓ Sync state reset (run /arka update to sync projects)");
170
+ console.log(" ✓ Sync state reset (auto-detected on next Claude session)");
151
171
 
152
172
  console.log(`
153
173
  ╔══════════════════════════════════════════╗
@@ -160,6 +180,7 @@ export async function update() {
160
180
  Projects: ${profile.projectsDir || "not set"}
161
181
  Vault: ${profile.vaultPath || "not set"}
162
182
 
163
- Run /arka update in Claude Code to sync all projects.
183
+ Next time you open Claude Code, ArkaOS will automatically
184
+ detect the update and sync all your projects.
164
185
  `);
165
186
  }
@@ -116,10 +116,10 @@
116
116
  "id": "coo",
117
117
  "display_name": "Sofia",
118
118
  "role": "COO",
119
- "department": "operations",
119
+ "department": "ops",
120
120
  "tier": 0,
121
121
  "disc": { "primary": "S", "secondary": "C", "combination": "S+C", "label": "Supporter-Analyst" },
122
- "file": "departments/operations/agents/coo.md",
122
+ "file": "departments/ops/agents/ops-lead.yaml",
123
123
  "memory_path": "~/.claude/agent-memory/arka-coo/MEMORY.md",
124
124
  "key_authority": ["veto", "approve_operations", "cross_department"]
125
125
  },
@@ -138,10 +138,10 @@
138
138
  "id": "ecommerce-manager",
139
139
  "display_name": "Ricardo",
140
140
  "role": "E-commerce Manager",
141
- "department": "ecommerce",
141
+ "department": "ecom",
142
142
  "tier": 1,
143
143
  "disc": { "primary": "D", "secondary": "I", "combination": "D+I", "label": "Driver-Inspirer" },
144
- "file": "departments/ecommerce/agents/ecommerce-manager.md",
144
+ "file": "departments/ecom/agents/ecom-director.yaml",
145
145
  "memory_path": "~/.claude/agent-memory/arka-ecommerce-manager/MEMORY.md",
146
146
  "key_authority": ["manage_store", "pricing_decisions"]
147
147
  },
@@ -160,10 +160,10 @@
160
160
  "id": "knowledge-curator",
161
161
  "display_name": "Clara",
162
162
  "role": "Knowledge Curator",
163
- "department": "knowledge",
163
+ "department": "kb",
164
164
  "tier": 1,
165
165
  "disc": { "primary": "S", "secondary": "C", "combination": "S+C", "label": "Supporter-Analyst" },
166
- "file": "departments/knowledge/agents/knowledge-curator.md",
166
+ "file": "departments/kb/agents/knowledge-curator.yaml",
167
167
  "memory_path": "~/.claude/agent-memory/arka-knowledge-curator/MEMORY.md",
168
168
  "key_authority": ["manage_knowledge", "create_personas"]
169
169
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "2.6.0",
3
+ "version": "2.8.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.6.0"
3
+ version = "2.8.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"}
@@ -1,363 +0,0 @@
1
- ---
2
- name: ecom
3
- description: >
4
- E-commerce department. Full store audits with 5 parallel agents (UX, SEO, performance,
5
- content, conversion), product listing optimization, pricing strategy analysis, store launch
6
- plans, e-commerce ad campaigns, competitor analysis, e-commerce SEO audits, automated email
7
- flows (cart abandonment, post-purchase, win-back), and store performance reports. Integrates
8
- with Shopify MCP for direct product/order/customer management. All output saved to Obsidian.
9
- Use when user says "ecom", "store", "product", "shop", "shopify", "ecommerce", "e-commerce",
10
- "sales", "conversion", "pricing", "catalog", "inventory", "cart", "checkout", "listing",
11
- or any online store task.
12
- ---
13
-
14
- # E-commerce Department — ARKA OS
15
-
16
- Store management, product optimization, and e-commerce growth.
17
-
18
- ## Universal Workflow (7-Phase — NON-NEGOTIABLE)
19
-
20
- Every e-commerce command follows this workflow. No exceptions. No shortcuts.
21
-
22
- ### Phase 0: BRIEF (Ricardo)
23
- - Clarify the request: store data, objective, current metrics, constraints
24
- - Load store context via Shopify MCP or WebFetch
25
- - Save brief to Obsidian: `WizardingCode/Ecommerce/Briefs/BRIEF-<slug>.md`
26
- - **Gate:** Brief confirmed by user before proceeding
27
-
28
- ### Phase 1: CHALLENGE & RESEARCH (Tomas — Strategy + Helena — CFO)
29
- - Tomas: market positioning, competitor analysis, strategic angle
30
- - Helena: financial viability, margin impact, ROI projection
31
- - Challenge assumptions: "Data shows X, are you sure about Y?"
32
- - Research benchmarks and competitor pricing
33
- - Present findings and alternatives to user
34
- - **Gate:** User approves the approach
35
-
36
- ### Phase 2: PLANNING (Ricardo)
37
- - Define strategy with supporting data
38
- - Create TODO list with `TaskCreate` (one task per deliverable)
39
- - For pricing: define 3 scenarios (conservative, realistic, aggressive)
40
- - For products: define optimization priorities
41
-
42
- ### Phase 3: EXECUTION (Ricardo)
43
- - Execute the approved plan
44
- - Product optimization: copy, SEO, variants, attributes
45
- - Pricing: competitor-informed, margin-validated
46
- - Tasks executed ONE AT A TIME, each validated before the next
47
-
48
- ### Phase 4: SELF-CRITIQUE (Ricardo)
49
- - Do the data support the recommendations?
50
- - Are all product attributes correct for the category? (NO WiFi on shoes)
51
- - Are margins positive in all scenarios?
52
- - Does the copy follow human-writing standards?
53
-
54
- ### Phase 5: SUPERVISION (Helena — CFO)
55
- - Financial impact review: margins, ROI, cash flow impact
56
- - Data validation: are the numbers correct and consistent?
57
- - **Gate:** Helena approves or sends back to Phase 3
58
-
59
- ### Phase 6: QUALITY GATE (Marta — CQO)
60
- - Marta dispatches Eduardo (copy review) + Francisca (data/technical review)
61
- - Eduardo: product copy quality, descriptions, email campaigns
62
- - Francisca: data integrity (attributes match category), Shopify push validation, pricing consistency
63
- - Marta aggregates verdict:
64
- - **APPROVED** → Proceed to Phase 7
65
- - **REJECTED** → Exact issue list, return to Phase 3
66
- - **NO OUTPUT REACHES THE USER WITHOUT MARTA'S APPROVAL**
67
-
68
- ### Phase 7: DELIVERY (Ricardo)
69
- - Apply via Shopify MCP (only if user approved push)
70
- - Save to Obsidian: `WizardingCode/Ecommerce/<type>/`
71
- - Report with before/after metrics where applicable
72
- - Report what was delivered vs. what was in the brief
73
-
74
- ### Visibility (NON-NEGOTIABLE)
75
- Every phase transition is announced to the user:
76
- - "📋 Phase 0: Loading store context and creating brief..."
77
- - "🔍 Phase 1: Tomas and Helena challenging the approach..."
78
- - "💰 Phase 5: Helena reviewing financial impact..."
79
- - "🔒 Phase 6: Quality Gate — Eduardo + Francisca reviewing..."
80
- - "✅ Phase 6: APPROVED by Marta. Proceeding to delivery."
81
-
82
- ## Commands
83
-
84
- | Command | Description |
85
- |---------|-------------|
86
- | `/ecom audit <url>` | Full store audit (5 agents) |
87
- | `/ecom product <description>` | Create optimized product listing |
88
- | `/ecom pricing <product>` | Pricing strategy analysis |
89
- | `/ecom launch <store>` | New store launch plan |
90
- | `/ecom ads <product>` | E-commerce ad campaigns |
91
- | `/ecom competitors <url>` | Competitive e-commerce analysis |
92
- | `/ecom seo <url>` | E-commerce SEO audit |
93
- | `/ecom email <type>` | E-commerce email flows (cart, post-purchase, win-back) |
94
- | `/ecom report <store>` | Store performance report |
95
-
96
- ## Obsidian Output
97
-
98
- All e-commerce output goes to the Obsidian vault at `{{OBSIDIAN_VAULT}}`:
99
-
100
- | Content Type | Vault Path |
101
- |-------------|-----------|
102
- | Store audits | `WizardingCode/Ecommerce/Audits/<date> <store>.md` |
103
- | Product analyses | `WizardingCode/Ecommerce/Products/<name>.md` |
104
- | Competitor research | `WizardingCode/Ecommerce/Competitors/<date> <name>.md` |
105
- | Launch plans | `WizardingCode/Ecommerce/Launches/<store>.md` |
106
- | Performance reports | `WizardingCode/Ecommerce/Reports/<date> <store>.md` |
107
-
108
- **Obsidian format:**
109
- ```markdown
110
- ---
111
- type: report
112
- department: ecommerce
113
- title: "<title>"
114
- date_created: <YYYY-MM-DD>
115
- tags:
116
- - "report"
117
- - "ecommerce"
118
- - "<specific-tag>"
119
- ---
120
- ```
121
-
122
- All files use wikilinks `[[]]` for cross-references and kebab-case tags.
123
-
124
- ## Workflows
125
-
126
- ### /ecom audit <url>
127
-
128
- **Step 1: Fetch Store Data**
129
- - Use WebFetch to crawl the store URL
130
- - Capture homepage, key product pages, cart, checkout flow
131
-
132
- **Step 2: Run 5 Parallel Audit Agents**
133
-
134
- Launch these agents simultaneously:
135
-
136
- **Agent 1: UX Auditor**
137
- - Navigation and information architecture
138
- - Mobile responsiveness
139
- - Page load perception
140
- - Cart and checkout friction
141
- - Search and filtering usability
142
-
143
- **Agent 2: SEO Auditor**
144
- - Title tags, meta descriptions, heading structure
145
- - Product page SEO (schema markup, alt text, URLs)
146
- - Internal linking and site structure
147
- - Collection/category page optimization
148
- - Technical SEO (canonical URLs, sitemap, robots.txt)
149
-
150
- **Agent 3: Performance Auditor**
151
- - Page load speed indicators
152
- - Image optimization assessment
153
- - Third-party script overhead
154
- - Core Web Vitals estimation
155
- - Mobile performance
156
-
157
- **Agent 4: Content Auditor**
158
- - Product descriptions (quality, length, persuasion)
159
- - Product photography assessment
160
- - Trust signals (reviews, badges, guarantees)
161
- - Brand consistency across pages
162
- - Copy effectiveness (headlines, CTAs)
163
-
164
- **Agent 5: Conversion Auditor**
165
- - Call-to-action clarity and placement
166
- - Social proof visibility
167
- - Urgency/scarcity elements
168
- - Upsell and cross-sell opportunities
169
- - Abandoned cart recovery signals
170
- - Email capture strategy
171
-
172
- **Step 3: Synthesize Results**
173
- - Combine all 5 agent reports
174
- - Prioritize findings by impact (high/medium/low)
175
- - Create actionable recommendations with estimated effort
176
-
177
- **Step 4: Save to Obsidian**
178
-
179
- **File:** `WizardingCode/Ecommerce/Audits/<YYYY-MM-DD> <store>.md`
180
- ```markdown
181
- ---
182
- type: audit
183
- department: ecommerce
184
- title: "<store> — E-commerce Audit"
185
- url: "<url>"
186
- date_created: <YYYY-MM-DD>
187
- tags:
188
- - "audit"
189
- - "ecommerce"
190
- ---
191
-
192
- # <store> — E-commerce Audit
193
-
194
- ## Executive Summary
195
- [Top 3-5 findings and overall score]
196
-
197
- ## UX Analysis
198
- [Agent 1 findings]
199
-
200
- ## SEO Analysis
201
- [Agent 2 findings]
202
-
203
- ## Performance Analysis
204
- [Agent 3 findings]
205
-
206
- ## Content Analysis
207
- [Agent 4 findings]
208
-
209
- ## Conversion Analysis
210
- [Agent 5 findings]
211
-
212
- ## Priority Actions
213
- | # | Action | Impact | Effort | Category |
214
- |---|--------|--------|--------|----------|
215
- | 1 | [action] | High | [effort] | [category] |
216
-
217
- ---
218
- *Part of the [[WizardingCode MOC]]*
219
- ```
220
-
221
- **Step 5: Report**
222
- ```
223
- ═══ ARKA ECOM — Store Audit Complete ═══
224
- Store: <store>
225
- URL: <url>
226
- Issues: <count> (High: X, Medium: Y, Low: Z)
227
- Top action: <highest impact recommendation>
228
- Obsidian: WizardingCode/Ecommerce/Audits/<date> <store>.md
229
- ═════════════════════════════════════════
230
- ```
231
-
232
- ### /ecom product <description>
233
-
234
- **Step 1: Research**
235
- - Understand the product from the description
236
- - If URL provided, use WebFetch to analyze the current listing
237
- - If Shopify MCP available, pull existing product data
238
-
239
- **Step 2: Optimize Product Listing**
240
- - Title: SEO-optimized, keyword-rich, clear benefit
241
- - Description: Problem → Solution → Benefits → Features → CTA
242
- - Bullet points: Feature → Benefit format
243
- - SEO tags: Primary keyword, long-tail variants, related terms
244
- - Meta description: 155 chars, keyword-included, click-worthy
245
-
246
- **Step 3: Generate Variants**
247
- - 3 title options (SEO vs. emotional vs. benefit-led)
248
- - Short description (50 words) and long description (200+ words)
249
- - Suggested collections/categories
250
- - Cross-sell and upsell suggestions
251
-
252
- **Step 4: Save to Obsidian**
253
-
254
- **File:** `WizardingCode/Ecommerce/Products/<name>.md`
255
- ```markdown
256
- ---
257
- type: product
258
- department: ecommerce
259
- title: "<product name>"
260
- date_created: <YYYY-MM-DD>
261
- tags:
262
- - "product"
263
- - "ecommerce"
264
- ---
265
-
266
- # <product name>
267
-
268
- ## Optimized Listing
269
- ### Title Options
270
- 1. [SEO-focused]
271
- 2. [Emotion-focused]
272
- 3. [Benefit-focused]
273
-
274
- ### Description
275
- [Optimized product description]
276
-
277
- ### Bullet Points
278
- - [Feature → Benefit]
279
-
280
- ### SEO
281
- - Primary keyword: [keyword]
282
- - Tags: [list]
283
- - Meta description: [155 chars]
284
-
285
- ### Upsell/Cross-sell
286
- - [Suggestions]
287
-
288
- ---
289
- *Part of the [[WizardingCode MOC]]*
290
- ```
291
-
292
- **Step 5: Apply via Shopify MCP**
293
- - If Shopify MCP is available and user confirms, push the optimized listing directly
294
-
295
- ### /ecom pricing <product>
296
-
297
- **Step 1: Gather Product Data**
298
- - Current price (if exists)
299
- - Cost of goods / margin
300
- - Product category and positioning
301
-
302
- **Step 2: Competitor Analysis**
303
- - Use WebFetch to research 3-5 competitor prices for similar products
304
- - Map price range: budget → mid-range → premium
305
-
306
- **Step 3: Pricing Strategy**
307
- - Calculate margin at different price points
308
- - Apply psychological pricing (charm pricing, anchoring, decoy)
309
- - Consider bundling opportunities
310
- - Evaluate penetration vs. skimming strategy
311
-
312
- **Step 4: Generate Recommendation**
313
-
314
- **File:** `WizardingCode/Ecommerce/Products/<product>-pricing.md`
315
- ```markdown
316
- ---
317
- type: pricing-analysis
318
- department: ecommerce
319
- title: "<product> — Pricing Strategy"
320
- date_created: <YYYY-MM-DD>
321
- tags:
322
- - "pricing"
323
- - "ecommerce"
324
- ---
325
-
326
- # <product> — Pricing Strategy
327
-
328
- ## Competitor Landscape
329
- | Competitor | Product | Price | Positioning |
330
- |-----------|---------|-------|-------------|
331
- | [name] | [product] | [price] | [budget/mid/premium] |
332
-
333
- ## Margin Analysis
334
- | Price Point | Margin | Margin % | Notes |
335
- |------------|--------|----------|-------|
336
- | [price] | [margin] | [%] | [note] |
337
-
338
- ## Recommendation
339
- - **Recommended price:** [price]
340
- - **Strategy:** [penetration/skimming/competitive]
341
- - **Rationale:** [why this price wins]
342
-
343
- ## Psychological Pricing
344
- - [Techniques to apply]
345
-
346
- ## Bundle Opportunities
347
- - [Bundle suggestions with margin impact]
348
-
349
- ---
350
- *Part of the [[WizardingCode MOC]]*
351
- ```
352
-
353
- ## MCP Integration
354
-
355
- Uses Shopify MCP when available for:
356
- - Product management (get-products, get-collections)
357
- - Order management (get-orders, get-order)
358
- - Customer management (get-customers, tag-customer)
359
- - Discount creation (create-discount)
360
- - Store info (get-shop-details)
361
-
362
- ---
363
- *All output: `WizardingCode/Ecommerce/` — Part of the [[WizardingCode MOC]]*