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.
- package/VERSION +1 -1
- package/config/constitution.yaml +8 -0
- package/config/hooks/cwd-changed.sh +104 -0
- package/config/hooks/session-start.sh +60 -0
- package/config/hooks/user-prompt-submit-v2.sh +26 -1
- package/config/hooks/user-prompt-submit.sh +105 -277
- package/config/settings-template.json +22 -0
- package/config/standards/ecosystem-workflow.md +60 -0
- package/config/user-claude.md +15 -0
- package/installer/adapters/claude-code.js +26 -0
- package/installer/index.js +39 -16
- package/installer/update.js +32 -11
- package/knowledge/agents-registry.json +6 -6
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/departments/ecommerce/SKILL.md +0 -363
- package/departments/ecommerce/agents/ecommerce-manager.md +0 -91
- package/departments/knowledge/SKILL.md +0 -474
- package/departments/knowledge/agents/knowledge-curator.md +0 -89
- package/departments/operations/SKILL.md +0 -422
- package/departments/operations/agents/coo.md +0 -88
- /package/departments/{knowledge → kb}/scripts/kb-check-capabilities.sh +0 -0
- /package/departments/{knowledge → kb}/scripts/kb-cleanup.sh +0 -0
- /package/departments/{knowledge → kb}/scripts/kb-queue.sh +0 -0
- /package/departments/{knowledge → kb}/scripts/kb-status.sh +0 -0
- /package/departments/{knowledge → kb}/scripts/kb-worker.sh +0 -0
package/installer/index.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
68
|
+
step(6, 13, "Installing hooks...");
|
|
69
69
|
installHooks(installDir);
|
|
70
70
|
|
|
71
71
|
// ═══ Step 7: Configure runtime ═══
|
|
72
|
-
step(7,
|
|
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,
|
|
78
|
+
step(8, 13, "Installing /arka skill...");
|
|
79
79
|
installSkill(config, installDir);
|
|
80
80
|
|
|
81
|
-
// ═══ Step 9:
|
|
82
|
-
step(9,
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
"
|
|
362
|
-
"
|
|
363
|
-
"
|
|
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");
|
package/installer/update.js
CHANGED
|
@@ -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
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
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
|
|
114
|
-
console.log(" [4/
|
|
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
|
-
// ──
|
|
126
|
-
console.log(" [
|
|
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
|
-
// ──
|
|
131
|
-
console.log(" [
|
|
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 (
|
|
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
|
-
|
|
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": "
|
|
119
|
+
"department": "ops",
|
|
120
120
|
"tier": 0,
|
|
121
121
|
"disc": { "primary": "S", "secondary": "C", "combination": "S+C", "label": "Supporter-Analyst" },
|
|
122
|
-
"file": "departments/
|
|
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": "
|
|
141
|
+
"department": "ecom",
|
|
142
142
|
"tier": 1,
|
|
143
143
|
"disc": { "primary": "D", "secondary": "I", "combination": "D+I", "label": "Driver-Inspirer" },
|
|
144
|
-
"file": "departments/
|
|
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": "
|
|
163
|
+
"department": "kb",
|
|
164
164
|
"tier": 1,
|
|
165
165
|
"disc": { "primary": "S", "secondary": "C", "combination": "S+C", "label": "Supporter-Analyst" },
|
|
166
|
-
"file": "departments/
|
|
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
package/pyproject.toml
CHANGED
|
@@ -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]]*
|