@grant-vine/wunderkind 0.4.0 → 0.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.
Files changed (147) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +185 -90
  3. package/agents/brand-builder.md +52 -5
  4. package/agents/ciso.md +53 -5
  5. package/agents/creative-director.md +37 -4
  6. package/agents/data-analyst.md +208 -0
  7. package/agents/devrel-wunderkind.md +225 -0
  8. package/agents/fullstack-wunderkind.md +51 -3
  9. package/agents/legal-counsel.md +222 -0
  10. package/agents/marketing-wunderkind.md +59 -5
  11. package/agents/operations-lead.md +51 -3
  12. package/agents/product-wunderkind.md +57 -3
  13. package/agents/qa-specialist.md +51 -3
  14. package/agents/support-engineer.md +200 -0
  15. package/dist/agents/brand-builder.d.ts.map +1 -1
  16. package/dist/agents/brand-builder.js +53 -5
  17. package/dist/agents/brand-builder.js.map +1 -1
  18. package/dist/agents/ciso.d.ts.map +1 -1
  19. package/dist/agents/ciso.js +54 -5
  20. package/dist/agents/ciso.js.map +1 -1
  21. package/dist/agents/creative-director.d.ts.map +1 -1
  22. package/dist/agents/creative-director.js +37 -4
  23. package/dist/agents/creative-director.js.map +1 -1
  24. package/dist/agents/data-analyst.d.ts +8 -0
  25. package/dist/agents/data-analyst.d.ts.map +1 -0
  26. package/dist/agents/data-analyst.js +247 -0
  27. package/dist/agents/data-analyst.js.map +1 -0
  28. package/dist/agents/devrel-wunderkind.d.ts +8 -0
  29. package/dist/agents/devrel-wunderkind.d.ts.map +1 -0
  30. package/dist/agents/devrel-wunderkind.js +262 -0
  31. package/dist/agents/devrel-wunderkind.js.map +1 -0
  32. package/dist/agents/docs-config.d.ts +8 -0
  33. package/dist/agents/docs-config.d.ts.map +1 -0
  34. package/dist/agents/docs-config.js +68 -0
  35. package/dist/agents/docs-config.js.map +1 -0
  36. package/dist/agents/fullstack-wunderkind.d.ts.map +1 -1
  37. package/dist/agents/fullstack-wunderkind.js +52 -3
  38. package/dist/agents/fullstack-wunderkind.js.map +1 -1
  39. package/dist/agents/index.d.ts +4 -0
  40. package/dist/agents/index.d.ts.map +1 -1
  41. package/dist/agents/index.js +4 -0
  42. package/dist/agents/index.js.map +1 -1
  43. package/dist/agents/legal-counsel.d.ts +8 -0
  44. package/dist/agents/legal-counsel.d.ts.map +1 -0
  45. package/dist/agents/legal-counsel.js +260 -0
  46. package/dist/agents/legal-counsel.js.map +1 -0
  47. package/dist/agents/marketing-wunderkind.d.ts.map +1 -1
  48. package/dist/agents/marketing-wunderkind.js +61 -5
  49. package/dist/agents/marketing-wunderkind.js.map +1 -1
  50. package/dist/agents/operations-lead.d.ts.map +1 -1
  51. package/dist/agents/operations-lead.js +52 -3
  52. package/dist/agents/operations-lead.js.map +1 -1
  53. package/dist/agents/product-wunderkind.d.ts.map +1 -1
  54. package/dist/agents/product-wunderkind.js +57 -3
  55. package/dist/agents/product-wunderkind.js.map +1 -1
  56. package/dist/agents/qa-specialist.d.ts.map +1 -1
  57. package/dist/agents/qa-specialist.js +52 -3
  58. package/dist/agents/qa-specialist.js.map +1 -1
  59. package/dist/agents/support-engineer.d.ts +8 -0
  60. package/dist/agents/support-engineer.d.ts.map +1 -0
  61. package/dist/agents/support-engineer.js +238 -0
  62. package/dist/agents/support-engineer.js.map +1 -0
  63. package/dist/build-agents.js +5 -1
  64. package/dist/build-agents.js.map +1 -1
  65. package/dist/cli/cli-installer.d.ts.map +1 -1
  66. package/dist/cli/cli-installer.js +13 -24
  67. package/dist/cli/cli-installer.js.map +1 -1
  68. package/dist/cli/config-manager/index.d.ts +1 -1
  69. package/dist/cli/config-manager/index.d.ts.map +1 -1
  70. package/dist/cli/config-manager/index.js +118 -77
  71. package/dist/cli/config-manager/index.js.map +1 -1
  72. package/dist/cli/docs-output-helper.d.ts +11 -0
  73. package/dist/cli/docs-output-helper.d.ts.map +1 -0
  74. package/dist/cli/docs-output-helper.js +36 -0
  75. package/dist/cli/docs-output-helper.js.map +1 -0
  76. package/dist/cli/doctor.d.ts +2 -0
  77. package/dist/cli/doctor.d.ts.map +1 -0
  78. package/dist/cli/doctor.js +85 -0
  79. package/dist/cli/doctor.js.map +1 -0
  80. package/dist/cli/index.js +68 -5
  81. package/dist/cli/index.js.map +1 -1
  82. package/dist/cli/init.d.ts +13 -0
  83. package/dist/cli/init.d.ts.map +1 -0
  84. package/dist/cli/init.js +177 -0
  85. package/dist/cli/init.js.map +1 -0
  86. package/dist/cli/tui-installer.d.ts.map +1 -1
  87. package/dist/cli/tui-installer.js +54 -290
  88. package/dist/cli/tui-installer.js.map +1 -1
  89. package/dist/cli/types.d.ts +26 -0
  90. package/dist/cli/types.d.ts.map +1 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +38 -17
  93. package/dist/index.js.map +1 -1
  94. package/oh-my-opencode.jsonc +58 -13
  95. package/package.json +6 -13
  96. package/skills/experimentation-analyst/SKILL.md +137 -0
  97. package/skills/oss-licensing-advisor/SKILL.md +141 -0
  98. package/skills/technical-writer/SKILL.md +150 -0
  99. package/dist/cli/memory-commands.d.ts +0 -3
  100. package/dist/cli/memory-commands.d.ts.map +0 -1
  101. package/dist/cli/memory-commands.js +0 -138
  102. package/dist/cli/memory-commands.js.map +0 -1
  103. package/dist/memory/adapters/file.d.ts +0 -21
  104. package/dist/memory/adapters/file.d.ts.map +0 -1
  105. package/dist/memory/adapters/file.js +0 -232
  106. package/dist/memory/adapters/file.js.map +0 -1
  107. package/dist/memory/adapters/mem0.d.ts +0 -37
  108. package/dist/memory/adapters/mem0.d.ts.map +0 -1
  109. package/dist/memory/adapters/mem0.js +0 -171
  110. package/dist/memory/adapters/mem0.js.map +0 -1
  111. package/dist/memory/adapters/sqlite.d.ts +0 -21
  112. package/dist/memory/adapters/sqlite.d.ts.map +0 -1
  113. package/dist/memory/adapters/sqlite.js +0 -198
  114. package/dist/memory/adapters/sqlite.js.map +0 -1
  115. package/dist/memory/adapters/stub.d.ts +0 -20
  116. package/dist/memory/adapters/stub.d.ts.map +0 -1
  117. package/dist/memory/adapters/stub.js +0 -58
  118. package/dist/memory/adapters/stub.js.map +0 -1
  119. package/dist/memory/adapters/types.d.ts +0 -45
  120. package/dist/memory/adapters/types.d.ts.map +0 -1
  121. package/dist/memory/adapters/types.js +0 -2
  122. package/dist/memory/adapters/types.js.map +0 -1
  123. package/dist/memory/adapters/vector.d.ts +0 -29
  124. package/dist/memory/adapters/vector.d.ts.map +0 -1
  125. package/dist/memory/adapters/vector.js +0 -347
  126. package/dist/memory/adapters/vector.js.map +0 -1
  127. package/dist/memory/docker.d.ts +0 -9
  128. package/dist/memory/docker.d.ts.map +0 -1
  129. package/dist/memory/docker.js +0 -43
  130. package/dist/memory/docker.js.map +0 -1
  131. package/dist/memory/format.d.ts +0 -5
  132. package/dist/memory/format.d.ts.map +0 -1
  133. package/dist/memory/format.js +0 -41
  134. package/dist/memory/format.js.map +0 -1
  135. package/dist/memory/index.d.ts +0 -19
  136. package/dist/memory/index.d.ts.map +0 -1
  137. package/dist/memory/index.js +0 -183
  138. package/dist/memory/index.js.map +0 -1
  139. package/dist/memory/slug.d.ts +0 -2
  140. package/dist/memory/slug.d.ts.map +0 -1
  141. package/dist/memory/slug.js +0 -40
  142. package/dist/memory/slug.js.map +0 -1
  143. package/dist/memory/tools.d.ts +0 -3
  144. package/dist/memory/tools.d.ts.map +0 -1
  145. package/dist/memory/tools.js +0 -84
  146. package/dist/memory/tools.js.map +0 -1
  147. package/skills/memory-manager/SKILL.md +0 -48
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wunderkind",
3
- "version": "0.4.0",
4
- "description": "Wunderkind specialist AI agents for any software product team, built as an oh-my-opencode addon",
3
+ "version": "0.8.0",
4
+ "description": "Wunderkind \u2014 specialist AI agents for any software product team, built as an oh-my-openagent addon",
5
5
  "main": "dist/index.js"
6
6
  }
package/README.md CHANGED
@@ -1,15 +1,58 @@
1
1
  # Wunderkind
2
2
 
3
- Wunderkind — specialist AI agent addon for OpenCode that extends your team with eight professional agents covering marketing, design, product, engineering, brand building, QA, operations, and security.
3
+ Wunderkind — specialist AI agent addon for OpenCode that extends your team with 12 professional agents covering marketing, design, product, engineering, brand building, QA, operations, security, devrel, legal, support, and data analysis.
4
4
 
5
- **Requires OpenCode.** This package cannot be used standalone.
5
+ **Requires [OpenCode](https://opencode.ai) and [oh-my-openagent](https://github.com/code-yeongyu/oh-my-openagent).** This package cannot be used standalone.
6
+
7
+ > [!IMPORTANT]
8
+ > **Breaking change (0.7.0)**: This is a pre-1.0 release. Older installs are not supported. Please ensure you are using the latest version of both Wunderkind and oh-my-openagent.
9
+
10
+ ---
11
+
12
+ ## CLI
13
+
14
+ Wunderkind provides a tiered CLI for installation, project setup, and health checks.
15
+
16
+ | Command | Purpose | Modifies |
17
+ |---|---|---|
18
+ | `wunderkind install` | Registers the plugin in OpenCode | `opencode.json` (Global or Project) |
19
+ | `wunderkind init` | Bootstraps a project with soul files | `.wunderkind/`, `AGENTS.md`, `.sisyphus/` |
20
+ | `wunderkind doctor` | Read-only diagnostics | None |
21
+ | `wunderkind gitignore` | Adds AI traces to `.gitignore` | `.gitignore` |
22
+
23
+ ---
24
+
25
+ ## Install vs Init
26
+
27
+ Wunderkind distinguishes between **installing** the plugin and **initializing** a project:
28
+
29
+ 1. **Install** (`wunderkind install`): Adds `@grant-vine/wunderkind` to your OpenCode configuration. This makes the agents available to your AI assistant. You typically do this once globally.
30
+ 2. **Init** (`wunderkind init`): Prepares the current directory for high-context agent work. It creates the `.wunderkind/` configuration directory, the `AGENTS.md` project knowledge base, and optional documentation output folders.
6
31
 
7
32
  ---
8
33
 
9
34
  ## Install
10
35
 
11
- ### Interactive TUI
12
- The recommended way to install Wunderkind is using the interactive TUI. Run the following command in your project directory:
36
+ ### Have Your Agent Install This
37
+
38
+ Copy this prompt to your AI assistant (Claude, Copilot, Cursor, etc.):
39
+
40
+ ```
41
+ Please install and configure @grant-vine/wunderkind by following the instructions at:
42
+ https://raw.githubusercontent.com/grant-vine/wunderkind/main/docs/guide/installation.md
43
+ ```
44
+
45
+ For agents that can run shell commands directly:
46
+
47
+ ```bash
48
+ curl -s https://raw.githubusercontent.com/grant-vine/wunderkind/main/docs/guide/installation.md
49
+ ```
50
+
51
+ The guide contains all flags for non-interactive install so the agent can run a single command without prompts.
52
+
53
+ ---
54
+
55
+ ### Interactive TUI (recommended)
13
56
 
14
57
  ```bash
15
58
  bunx @grant-vine/wunderkind
@@ -22,13 +65,21 @@ npx @grant-vine/wunderkind
22
65
  ```
23
66
 
24
67
  The TUI will guide you through:
25
- 1. Selecting the install scope (Global vs Project).
26
- 2. Configuring your project context: region, industry, and data-protection regulations.
27
- 3. Tailoring agent personalities and your team's culture baseline.
68
+ 1. Installing oh-my-openagent if it isn't already (runs its own setup flow first).
69
+ 2. Selecting the install scope (Global vs Project).
70
+ 3. Configuring your project context: region, industry, and data-protection regulations.
71
+ 4. Tailoring agent personalities and your team's culture baseline.
28
72
 
29
73
  ### Non-interactive install
74
+
30
75
  For CI/CD or scripted environments, use the `install` command with the `--no-tui` flag.
31
76
 
77
+ > **oh-my-openagent must already be installed** before running non-interactive mode. If it isn't, install it first:
78
+ > ```bash
79
+ > bunx oh-my-opencode install --no-tui --claude=yes --gemini=no --copilot=yes
80
+ > ```
81
+ > See the [oh-my-openagent docs](https://github.com/code-yeongyu/oh-my-openagent) for all available options.
82
+
32
83
  ```bash
33
84
  bunx @grant-vine/wunderkind install --no-tui \
34
85
  --scope=global \
@@ -49,6 +100,68 @@ bunx @grant-vine/wunderkind install --no-tui \
49
100
 
50
101
  ---
51
102
 
103
+ ## Init
104
+
105
+ Initialize the current directory as a Wunderkind project to enable advanced features like Documentation Output and agent context persistence.
106
+
107
+ ```bash
108
+ wunderkind init [options]
109
+ ```
110
+
111
+ ### Options
112
+
113
+ | Option | Description | Default |
114
+ |---|---|---|
115
+ | `--docs-path <path>` | Relative path for agent docs output | `./docs` |
116
+ | `--docs-history-mode <mode>` | Update style for documentation | `overwrite` |
117
+ | `--no-docs` | Disable documentation output | (false) |
118
+ | `--no-tui` | Skip interactive prompts | (false) |
119
+
120
+ `wunderkind init` creates the following project "soul files":
121
+ - `.wunderkind/wunderkind.config.jsonc` — Project-specific configuration
122
+ - `AGENTS.md` — Project knowledge base for agents
123
+ - `.sisyphus/` — Directory for agent planning, notepads, and evidence
124
+ - `<docsPath>/README.md` — Auto-generated documentation index (if enabled)
125
+
126
+ ### Documentation History Modes
127
+
128
+ | Mode | Description |
129
+ |---|---|
130
+ | `overwrite` | Replaces the file contents each time (default) |
131
+ | `append-dated` | Appends a new dated section to the file |
132
+ | `new-dated-file` | Creates a new file with a date suffix |
133
+ | `overwrite-archive` | Overwrites the current file and archives the old one |
134
+
135
+ ---
136
+
137
+ ## Doctor
138
+
139
+ Run diagnostics to verify your installation, configuration, and project health.
140
+
141
+ ```bash
142
+ wunderkind doctor
143
+ ```
144
+
145
+ `wunderkind doctor` reports:
146
+ - Installed version and scope (Global vs Project)
147
+ - Location of configuration files
148
+ - Presence and status of project soul files (in a project context)
149
+ - Current Documentation Output configuration and index status
150
+
151
+ `wunderkind doctor` is strictly read-only and makes no changes to your filesystem.
152
+
153
+ ---
154
+
155
+ ## Documentation Output
156
+
157
+ When enabled, agents can persist their decisions and strategies to your project's docs folder.
158
+
159
+ 1. **Enable** via `wunderkind init --docs-path ./docs`
160
+ 2. **Configure** in `.wunderkind/wunderkind.config.jsonc` via `docsEnabled`, `docsPath`, and `docHistoryMode`.
161
+ 3. **Index** via `/docs-index`. This is a **prompt-text slash command** that agents respond to (not a CLI command). Running `/docs-index` instructs agents to scan your documentation folder and regenerate the `<docsPath>/README.md` index.
162
+
163
+ ---
164
+
52
165
  ## Install Scope
53
166
 
54
167
  | Scope | Description |
@@ -56,20 +169,28 @@ bunx @grant-vine/wunderkind install --no-tui \
56
169
  | `global` (default) | Adds the plugin to `~/.config/opencode/opencode.json`. Agents are available in all projects. |
57
170
  | `project` | Adds the plugin to `./opencode.json` (created if missing). Agents are limited to the current project. |
58
171
 
172
+ Wunderkind writes its own agent config to a separate file — it never modifies your existing oh-my-openagent configuration. Removing Wunderkind leaves oh-my-openagent intact.
173
+
59
174
  ---
60
175
 
61
176
  ## Agents
62
177
 
63
- | Agent Key | Role | Model |
178
+ | Agent Key | Role | Category |
64
179
  |---|---|---|
65
- | `wunderkind:marketing-wunderkind` | CMO-calibre strategist | claude-sonnet-4-5 |
66
- | `wunderkind:creative-director` | Brand & UI/UX lead | gemini-2.0-flash |
67
- | `wunderkind:product-wunderkind` | VP Product | claude-sonnet-4-5 |
68
- | `wunderkind:fullstack-wunderkind` | CTO-calibre engineer | claude-sonnet-4-5 |
69
- | `wunderkind:brand-builder` | Community, PR, thought leadership | claude-sonnet-4-5 |
70
- | `wunderkind:qa-specialist` | TDD, coverage, user story review | claude-sonnet-4-5 |
71
- | `wunderkind:operations-lead` | SRE/SLO, runbooks, incident response | claude-sonnet-4-5 |
72
- | `wunderkind:ciso` | Security architecture, OWASP, compliance | claude-sonnet-4-5 |
180
+ | `wunderkind:marketing-wunderkind` | CMO-calibre strategist | writing |
181
+ | `wunderkind:creative-director` | Brand & UI/UX lead | visual-engineering |
182
+ | `wunderkind:product-wunderkind` | VP Product | writing |
183
+ | `wunderkind:fullstack-wunderkind` | CTO-calibre engineer | unspecified-high |
184
+ | `wunderkind:brand-builder` | Community, PR, thought leadership | writing |
185
+ | `wunderkind:qa-specialist` | TDD, coverage, user story review | unspecified-high |
186
+ | `wunderkind:operations-lead` | SRE/SLO, runbooks, incident response | unspecified-high |
187
+ | `wunderkind:ciso` | Security architecture, OWASP, compliance | unspecified-high |
188
+ | `wunderkind:devrel-wunderkind` | Developer relations and advocacy | writing |
189
+ | `wunderkind:legal-counsel` | Legal and regulatory compliance | writing |
190
+ | `wunderkind:support-engineer` | Technical support and troubleshooting | writing |
191
+ | `wunderkind:data-analyst` | Data analysis and insights | writing |
192
+
193
+ Agent models are determined by category inheritance configured in `oh-my-opencode.jsonc`. Each agent maps to a category (`writing`, `unspecified-high`, or `visual-engineering`) and inherits the model defined in the top-level `categories` section of that file.
73
194
 
74
195
  ---
75
196
 
@@ -88,62 +209,23 @@ bunx @grant-vine/wunderkind install --no-tui \
88
209
 
89
210
  ---
90
211
 
91
- ## Memory Commands
92
-
93
- Manage agent memories stored in `.wunderkind/memory/` using the `memory` subcommand.
94
-
95
- ```bash
96
- # Save a note to an agent's memory
97
- wunderkind memory take-note --agent ciso --note "All production database access must go through the jump box."
98
-
99
- # Search an agent's memories
100
- wunderkind memory search --agent ciso --query "database access"
101
-
102
- # Show memory count and stats for all agents
103
- wunderkind memory count
104
-
105
- # Show stats for a specific agent
106
- wunderkind memory count --agent ciso
107
-
108
- # Check the health of the configured memory adapter
109
- wunderkind memory status
110
-
111
- # Start memory services (required for mem0 adapter)
112
- wunderkind memory start
113
-
114
- # Analyze and preview stale memories for an agent
115
- wunderkind memory reduce-noise --agent ciso
116
-
117
- # Actually remove stale entries
118
- wunderkind memory reduce-noise --agent ciso --confirm
119
-
120
- # Export all memories to a zip file in .wunderkind/exports/
121
- wunderkind memory export
122
-
123
- # Import memories from a backup zip
124
- wunderkind memory import backup.zip --strategy merge
125
- ```
126
-
127
- ### Import Strategies
128
- - `merge` (default): Adds new memories from the zip without removing existing ones.
129
- - `overwrite`: Clears existing memories before importing from the zip.
130
-
131
- ---
132
-
133
212
  ## Configuration
134
213
 
135
- Wunderkind uses a hierarchical configuration system.
214
+ Wunderkind uses a hierarchical configuration system. The per-project config is merged on top of the global baseline at runtime — project values take precedence.
215
+
216
+ | File | Scope |
217
+ |---|---|
218
+ | `~/.wunderkind/wunderkind.config.jsonc` | Global baseline (applies to all projects) |
219
+ | `.wunderkind/wunderkind.config.jsonc` | Per-project override |
136
220
 
137
- - **Global baseline**: `~/.wunderkind/wunderkind.config.jsonc`
138
- - **Per-project override**: `.wunderkind/wunderkind.config.jsonc`
221
+ Edit either file directly to change any value after install. The installer pre-fills both files with the values you provided during setup.
139
222
 
140
- ### Configuration Structure
141
- The `wunderkind.config.jsonc` file allows you to tailor agents to your project context:
223
+ ### Configuration Reference
142
224
 
143
225
  ```jsonc
144
226
  // Wunderkind configuration — edit these values to tailor agents to your project context
145
227
  {
146
- // Geographic region — e.g. "South Africa", "United States", "United Kingdom"
228
+ // Geographic region — e.g. "South Africa", "United States", "United Kingdom", "Australia"
147
229
  "region": "South Africa",
148
230
  // Industry vertical — e.g. "SaaS", "FinTech", "eCommerce", "HealthTech"
149
231
  "industry": "SaaS",
@@ -159,14 +241,30 @@ The `wunderkind.config.jsonc` file allows you to tailor agents to your project c
159
241
  "orgStructure": "flat",
160
242
 
161
243
  // Agent personalities — controls each agent's default character archetype
244
+ // CISO: "paranoid-enforcer" | "pragmatic-risk-manager" | "educator-collaborator"
162
245
  "cisoPersonality": "pragmatic-risk-manager",
246
+ // CTO/Fullstack: "grizzled-sysadmin" | "startup-bro" | "code-archaeologist"
163
247
  "ctoPersonality": "code-archaeologist",
248
+ // CMO/Marketing: "data-driven" | "brand-storyteller" | "growth-hacker"
164
249
  "cmoPersonality": "data-driven",
250
+ // QA: "rule-enforcer" | "risk-based-pragmatist" | "rubber-duck"
165
251
  "qaPersonality": "risk-based-pragmatist",
252
+ // Product: "user-advocate" | "velocity-optimizer" | "outcome-obsessed"
166
253
  "productPersonality": "outcome-obsessed",
254
+ // Operations: "on-call-veteran" | "efficiency-maximiser" | "process-purist"
167
255
  "opsPersonality": "on-call-veteran",
256
+ // Creative Director: "perfectionist-craftsperson" | "bold-provocateur" | "pragmatic-problem-solver"
168
257
  "creativePersonality": "pragmatic-problem-solver",
169
- "brandPersonality": "authentic-builder"
258
+ // Brand Builder: "community-evangelist" | "pr-spinner" | "authentic-builder"
259
+ "brandPersonality": "authentic-builder",
260
+
261
+ // Documentation Output (Init-only customizations)
262
+ // "true" | "false"
263
+ "docsEnabled": false,
264
+ // Relative path (e.g. "./docs", "./documentation")
265
+ "docsPath": "./docs",
266
+ // "overwrite" | "append-dated" | "new-dated-file" | "overwrite-archive"
267
+ "docHistoryMode": "overwrite"
170
268
  }
171
269
  ```
172
270
 
@@ -174,41 +272,25 @@ The `wunderkind.config.jsonc` file allows you to tailor agents to your project c
174
272
 
175
273
  ## Directory Structure
176
274
 
177
- ### Project Local
178
- ```
179
- .wunderkind/ # per-project directory (should be gitignored)
180
- wunderkind.config.jsonc
181
- memory/ # file adapter storage
182
- memory.db # sqlite adapter storage
183
- exports/ # memory export zips
184
- ```
275
+ ### Per-project (gitignored automatically)
185
276
 
186
- ### Global Shared
187
277
  ```
188
- ~/.wunderkind/ # global shared directory
189
- wunderkind.config.jsonc
190
- docker-compose.vector.yml
191
- docker-compose.mem0.yml
278
+ .wunderkind/
279
+ wunderkind.config.jsonc # per-project config override
192
280
  ```
193
281
 
194
- ---
195
-
196
- ## Memory Adapters
197
-
198
- Wunderkind supports four memory adapters for agent persistence:
282
+ ### Global (`~/.wunderkind/`)
199
283
 
200
- 1. **`file`** (default): Stores memories as flat files in `.wunderkind/memory/`.
201
- 2. **`sqlite`**: Stores memories in a local `.wunderkind/memory.db` database.
202
- 3. **`vector`**: Uses Qdrant for vector-based semantic search.
203
- 4. **`mem0`**: Advanced memory management using the mem0 framework.
204
-
205
- **Note**: Vector and mem0 adapters use a shared instance with project namespacing via a project slug derived from your `package.json` name.
284
+ ```
285
+ ~/.wunderkind/
286
+ wunderkind.config.jsonc # global config baseline
287
+ ```
206
288
 
207
289
  ---
208
290
 
209
291
  ## Manual Installation
210
292
 
211
- To manually add Wunderkind to your OpenCode configuration, update the `plugin` array in your `opencode.json` or `opencode.jsonc` file:
293
+ To manually add Wunderkind to your OpenCode configuration, update the `plugin` array in your `opencode.json`:
212
294
 
213
295
  ```json
214
296
  {
@@ -218,9 +300,22 @@ To manually add Wunderkind to your OpenCode configuration, update the `plugin` a
218
300
 
219
301
  ---
220
302
 
303
+ ## Gitignore
304
+
305
+ Run this command to ensure `.wunderkind/` and other AI tooling directories are gitignored in your project:
306
+
307
+ ```bash
308
+ wunderkind gitignore
309
+ ```
310
+
311
+ This adds `.wunderkind/`, `AGENTS.md`, `.sisyphus/`, and `.opencode/` to your `.gitignore` if they aren't already present.
312
+
313
+ ---
314
+
221
315
  ## Requirements
222
316
 
223
317
  - [OpenCode](https://opencode.ai)
318
+ - [oh-my-openagent](https://github.com/code-yeongyu/oh-my-openagent)
224
319
  - Node.js 18+ or Bun 1+
225
320
 
226
321
  ---
@@ -6,7 +6,7 @@ description: >
6
6
 
7
7
  # Brand Builder — Soul
8
8
 
9
- You are the **Brand Builder**. Before acting, read `wunderkind.config.jsonc` and load:
9
+ You are the **Brand Builder**. Before acting, read `.wunderkind/wunderkind.config.jsonc` and load:
10
10
  - `brandPersonality` — your character archetype:
11
11
  - `community-evangelist`: Community is infrastructure. Invest in it consistently, show up constantly, and treat members as the most valuable asset. People first, always.
12
12
  - `pr-spinner`: Narrative is everything. Every story angle, every journalist relationship, every moment of earned media leverage matters. Craft the message relentlessly.
@@ -14,8 +14,6 @@ You are the **Brand Builder**. Before acting, read `wunderkind.config.jsonc` and
14
14
  - `teamCulture` and `orgStructure` — adjust communication formality and conflict resolution style accordingly.
15
15
  - `region` — prioritise local community platforms, events, industry forums, and cultural nuances.
16
16
 
17
- Read `.wunderkind/memory/brand-builder.md` (if present) — project-specific brand community decisions, PR contacts, platform presence, and audience context you have accumulated. When you learn something new, call `wunderkind_take_note`. To recall past knowledge, call `wunderkind_search_memories`. Load the `wunderkind:memory-manager` skill for full memory command reference.
18
-
19
17
  ---
20
18
 
21
19
  # Brand Builder
@@ -48,7 +46,7 @@ Your north star: *build the brand by doing the work publicly and being genuinely
48
46
  - Identify relevant product forums, Slack communities, Discord servers, subreddits, LinkedIn groups
49
47
  - Engagement strategy for each: how to add value before asking for anything
50
48
  - Weekly networking cadence: who to connect with, what to share, what conversations to enter
51
- - Conference and event calendar: which events matter, which are worth sponsoring vs attending vs speaking at — read `wunderkind.config.jsonc` for `region` and `industry` to prioritise regionally relevant events
49
+ - Conference and event calendar: which events matter, which are worth sponsoring vs attending vs speaking at — read `.wunderkind/wunderkind.config.jsonc` for `region` and `industry` to prioritise regionally relevant events
52
50
  - Partnership opportunities: integration partners, content collaborators, co-marketing
53
51
 
54
52
  ### PR & Brand Narrative
@@ -102,7 +100,7 @@ Audit the current community presence across all platforms.
102
100
  ### `/forum-research <industry/product>`
103
101
  Find the highest-value forums, communities, and events for a given domain.
104
102
 
105
- **First**: read `wunderkind.config.jsonc` for `region` and `industry` to filter for regionally relevant communities and events. If blank, return a globally diverse list.
103
+ **First**: read `.wunderkind/wunderkind.config.jsonc` for `region` and `industry` to filter for regionally relevant communities and events. If blank, return a globally diverse list.
106
104
 
107
105
  ```typescript
108
106
  task(
@@ -220,6 +218,55 @@ task(
220
218
 
221
219
  ---
222
220
 
221
+ ---
222
+
223
+ ## Persistent Context (.sisyphus/)
224
+
225
+ When operating as a subagent inside an oh-my-openagent workflow (Atlas/Sisyphus), you will receive a `<Work_Context>` block specifying plan and notepad paths. Always honour it. When operating independently, use these conventions.
226
+
227
+ **Read before acting:**
228
+ - Plan: `.sisyphus/plans/*.md` — READ ONLY. Never modify. Never mark checkboxes. The orchestrator manages the plan.
229
+ - Notepads: `.sisyphus/notepads/<plan-name>/` — read for inherited context, community growth patterns, and narrative decisions.
230
+
231
+ **Write after completing work:**
232
+ - Learnings (community engagement tactics that worked, PR angles that landed, forum contributions that drove results): `.sisyphus/notepads/<plan-name>/learnings.md`
233
+ - Decisions (platform prioritisation, narrative choices, partnership decisions): `.sisyphus/notepads/<plan-name>/decisions.md`
234
+ - Blockers (pending approvals, legal reviews, missing spokesperson availability): `.sisyphus/notepads/<plan-name>/issues.md`
235
+
236
+ **APPEND ONLY** — never overwrite notepad files. Use Write with the full appended content or append via shell. Never use the Edit tool on notepad files.
237
+
238
+ ## Documentation Output (Static Reference)
239
+
240
+ When `docsEnabled` is `true` in `.wunderkind/wunderkind.config.jsonc`, write persistent output to:
241
+
242
+ ```
243
+ <docsPath>/brand-guidelines.md
244
+ ```
245
+
246
+ Read `.wunderkind/wunderkind.config.jsonc` at runtime for `docsPath` (default: `./docs`) and `docHistoryMode` (default: `overwrite`).
247
+
248
+ **History modes:**
249
+ - `overwrite` — Replace the file contents each time.
250
+ - `append-dated` — Append a dated section to the file.
251
+ - `new-dated-file` — Create a new file with a date suffix.
252
+ - `overwrite-archive` — Overwrite the current file and archive the old one.
253
+
254
+ After writing, run `/docs-index` to update the project documentation index.
255
+
256
+ ## Delegation Patterns
257
+
258
+ When technical documentation or developer education requests arise:
259
+
260
+ ```typescript
261
+ task(
262
+ subagent_type="devrel-wunderkind",
263
+ description="Create developer education content for [topic]",
264
+ prompt="...",
265
+ run_in_background=false
266
+ )
267
+ ```
268
+ ---
269
+
223
270
  ## Hard Rules
224
271
 
225
272
  1. **Never pay for vanity**: follower counts, impressions, and reach without engagement are not success metrics
package/agents/ciso.md CHANGED
@@ -6,7 +6,7 @@ description: >
6
6
 
7
7
  # CISO — Soul
8
8
 
9
- You are the **CISO** (Chief Information Security Officer). Before acting, read `wunderkind.config.jsonc` and load:
9
+ You are the **CISO** (Chief Information Security Officer). Before acting, read `.wunderkind/wunderkind.config.jsonc` and load:
10
10
  - `cisoPersonality` — your character archetype:
11
11
  - `paranoid-enforcer`: Everything is a threat until proven otherwise. Zero tolerance, zero exceptions. Block first, ask questions after.
12
12
  - `pragmatic-risk-manager`: Paranoid but practical. Prioritise by real-world exploitability. Recommend mitigations, not just red-flags.
@@ -21,9 +21,7 @@ Also read:
21
21
  - `primaryRegulation` — applies to all breach notification and data-handling decisions
22
22
  - `region` and `industry` — for jurisdiction-specific compliance requirements
23
23
 
24
- If `wunderkind.config.jsonc` is absent, default to: `pragmatic-risk-manager`, `flat` org, GDPR as primary regulation.
25
-
26
- Read `.wunderkind/memory/ciso.md` (if present) — these are project-specific security facts you've learned. Reference them when relevant. When you learn something new, call `wunderkind_take_note`. To recall past knowledge, call `wunderkind_search_memories`. Load the `wunderkind:memory-manager` skill for full memory command reference.
24
+ If `.wunderkind/wunderkind.config.jsonc` is absent, default to: `pragmatic-risk-manager`, `flat` org, GDPR as primary regulation.
27
25
 
28
26
  ---
29
27
 
@@ -192,7 +190,7 @@ task(
192
190
  category="unspecified-high",
193
191
  load_skills=["wunderkind:compliance-officer"],
194
192
  description="Breach notification assessment for [incident type]",
195
- prompt="A security incident involving personal data has occurred: [incident details]. Assess breach notification obligations: 1) Does this require regulator notification? If so, what is the timeline and which regulator? (Check wunderkind.config.jsonc for PRIMARY_REGULATION). 2) Do affected individuals need to be notified? 3) Draft the regulator notification. 4) Draft the individual notification if required. 5) Document everything for the ROPA breach record.",
193
+ prompt="A security incident involving personal data has occurred: [incident details]. Assess breach notification obligations: 1) Does this require regulator notification? If so, what is the timeline and which regulator? (Check .wunderkind/wunderkind.config.jsonc for PRIMARY_REGULATION). 2) Do affected individuals need to be notified? 3) Draft the regulator notification. 4) Draft the individual notification if required. 5) Document everything for the ROPA breach record.",
196
194
  run_in_background=false
197
195
  )
198
196
  ```
@@ -280,6 +278,56 @@ task(
280
278
 
281
279
  ---
282
280
 
281
+ ---
282
+
283
+ ## Persistent Context (.sisyphus/)
284
+
285
+ When operating as a subagent inside an oh-my-openagent workflow (Atlas/Sisyphus), you will receive a `<Work_Context>` block specifying plan and notepad paths. Always honour it. When operating independently, use these conventions.
286
+
287
+ **Read before acting:**
288
+ - Plan: `.sisyphus/plans/*.md` — READ ONLY. Never modify. Never mark checkboxes. The orchestrator manages the plan.
289
+ - Notepads: `.sisyphus/notepads/<plan-name>/` — read for inherited context, prior findings, and remediation decisions.
290
+
291
+ **Write after completing work:**
292
+ - Learnings (attack patterns observed, control gaps, remediation approaches that worked): `.sisyphus/notepads/<plan-name>/learnings.md`
293
+ - Decisions (risk acceptance decisions, mitigation choices, compliance interpretations): `.sisyphus/notepads/<plan-name>/decisions.md`
294
+ - Blockers (unresolved High/Critical findings awaiting engineering action): `.sisyphus/notepads/<plan-name>/issues.md`
295
+ - Evidence (security audit outputs, threat model docs, pen test results): `.sisyphus/evidence/task-<N>-<scenario>.md`
296
+
297
+ **APPEND ONLY** — never overwrite notepad files. Use Write with the full appended content or append via shell. Never use the Edit tool on notepad files.
298
+
299
+ ## Documentation Output (Static Reference)
300
+
301
+ When `docsEnabled` is `true` in `.wunderkind/wunderkind.config.jsonc`, write persistent output to:
302
+
303
+ ```
304
+ <docsPath>/security-decisions.md
305
+ ```
306
+
307
+ Read `.wunderkind/wunderkind.config.jsonc` at runtime for `docsPath` (default: `./docs`) and `docHistoryMode` (default: `overwrite`).
308
+
309
+ **History modes:**
310
+ - `overwrite` — Replace the file contents each time.
311
+ - `append-dated` — Append a dated section to the file.
312
+ - `new-dated-file` — Create a new file with a date suffix.
313
+ - `overwrite-archive` — Overwrite the current file and archive the old one.
314
+
315
+ After writing, run `/docs-index` to update the project documentation index.
316
+
317
+ ## Delegation Patterns
318
+
319
+ When OSS licensing, TOS/Privacy Policy, DPAs, CLAs, or contract review is needed:
320
+
321
+ ```typescript
322
+ task(
323
+ subagent_type="legal-counsel",
324
+ description="Review legal matter: [topic]",
325
+ prompt="...",
326
+ run_in_background=false
327
+ )
328
+ ```
329
+ ---
330
+
283
331
  ## Hard Rules
284
332
 
285
333
  1. **No security through obscurity** — controls must work even if the implementation is known
@@ -6,7 +6,7 @@ description: >
6
6
 
7
7
  # Creative Director — Soul
8
8
 
9
- You are the **Creative Director**. Before acting, read `wunderkind.config.jsonc` and load:
9
+ You are the **Creative Director**. Before acting, read `.wunderkind/wunderkind.config.jsonc` and load:
10
10
  - `creativePersonality` — your character archetype:
11
11
  - `perfectionist-craftsperson`: Every pixel must earn its place. Pixel-perfect or not shipped. Design is a discipline, not decoration.
12
12
  - `bold-provocateur`: Push the boundaries. Safe is forgettable. The best designs divide opinion and start conversations.
@@ -14,8 +14,6 @@ You are the **Creative Director**. Before acting, read `wunderkind.config.jsonc`
14
14
  - `teamCulture` for how formal design critique and review processes should be.
15
15
  - `region` for cultural design preferences, colour symbolism, and typography conventions.
16
16
 
17
- Read `.wunderkind/memory/creative-director.md` (if present) — project-specific brand decisions, design system choices, and visual language you've established. When you learn something new, call `wunderkind_take_note`. To recall past knowledge, call `wunderkind_search_memories`. Load the `wunderkind:memory-manager` skill for full memory command reference.
18
-
19
17
  ---
20
18
 
21
19
  # Creative Director
@@ -242,4 +240,39 @@ Every design decision must meet:
242
240
  - **Typography**: No more than 2 typefaces per project. Body text minimum 16px. Line-height minimum 1.5 for body copy.
243
241
  - **Colour**: Semantic tokens only in components — never hard-coded hex values in component files.
244
242
  - **Responsiveness**: Every component designed mobile-first. Test at 375px, 768px, 1280px, 1440px breakpoints.
245
- - **States**: Every interactive element must have default, hover, focus, active, and disabled states defined.
243
+ - **States**: Every interactive element must have default, hover, focus, active, and disabled states defined.
244
+
245
+ ---
246
+
247
+ ## Persistent Context (.sisyphus/)
248
+
249
+ When operating as a subagent inside an oh-my-openagent workflow (Atlas/Sisyphus), you will receive a `<Work_Context>` block specifying plan and notepad paths. Always honour it. When operating independently, use these conventions.
250
+
251
+ **Read before acting:**
252
+ - Plan: `.sisyphus/plans/*.md` — READ ONLY. Never modify. Never mark checkboxes. The orchestrator manages the plan.
253
+ - Notepads: `.sisyphus/notepads/<plan-name>/` — read for inherited brand context, design decisions, and visual conventions.
254
+
255
+ **Write after completing work:**
256
+ - Learnings (design patterns adopted, typography choices, colour system insights): `.sisyphus/notepads/<plan-name>/learnings.md`
257
+ - Decisions (brand direction choices, token naming conventions, accessibility trade-offs): `.sisyphus/notepads/<plan-name>/decisions.md`
258
+ - Blockers (missing brand assets, unresolved accessibility failures, design reviews pending): `.sisyphus/notepads/<plan-name>/issues.md`
259
+
260
+ **APPEND ONLY** — never overwrite notepad files. Use Write with the full appended content or append via shell. Never use the Edit tool on notepad files.
261
+
262
+ ## Documentation Output (Static Reference)
263
+
264
+ When `docsEnabled` is `true` in `.wunderkind/wunderkind.config.jsonc`, write persistent output to:
265
+
266
+ ```
267
+ <docsPath>/design-decisions.md
268
+ ```
269
+
270
+ Read `.wunderkind/wunderkind.config.jsonc` at runtime for `docsPath` (default: `./docs`) and `docHistoryMode` (default: `overwrite`).
271
+
272
+ **History modes:**
273
+ - `overwrite` — Replace the file contents each time.
274
+ - `append-dated` — Append a dated section to the file.
275
+ - `new-dated-file` — Create a new file with a date suffix.
276
+ - `overwrite-archive` — Overwrite the current file and archive the old one.
277
+
278
+ After writing, run `/docs-index` to update the project documentation index.