@grant-vine/wunderkind 0.5.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 (98) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +118 -26
  3. package/agents/brand-builder.md +52 -3
  4. package/agents/ciso.md +53 -3
  5. package/agents/creative-director.md +37 -2
  6. package/agents/data-analyst.md +208 -0
  7. package/agents/devrel-wunderkind.md +225 -0
  8. package/agents/fullstack-wunderkind.md +51 -1
  9. package/agents/legal-counsel.md +222 -0
  10. package/agents/marketing-wunderkind.md +59 -3
  11. package/agents/operations-lead.md +51 -1
  12. package/agents/product-wunderkind.md +57 -1
  13. package/agents/qa-specialist.md +51 -1
  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 -3
  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 -3
  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 -2
  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 -1
  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 -3
  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 -1
  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 -1
  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 -1
  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 +9 -0
  67. package/dist/cli/cli-installer.js.map +1 -1
  68. package/dist/cli/config-manager/index.d.ts +1 -0
  69. package/dist/cli/config-manager/index.d.ts.map +1 -1
  70. package/dist/cli/config-manager/index.js +119 -33
  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 -3
  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 +53 -258
  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 -2
  93. package/dist/index.js.map +1 -1
  94. package/oh-my-opencode.jsonc +58 -13
  95. package/package.json +4 -3
  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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,QAAA,MAAM,gBAAgB,EAAE,MAmEvB,CAAC;AAEF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAKlD,QAAA,MAAM,gBAAgB,EAAE,MAwGvB,CAAC;AAEF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,23 @@
1
+ import { readWunderkindConfig } from "./cli/config-manager/index.js";
2
+ const DOCS_OUTPUT_SENTINEL = "<!-- wunderkind:docs-output-start -->";
1
3
  const WunderkindPlugin = async (_input) => {
2
4
  return {
3
5
  "experimental.chat.system.transform": async (_input, output) => {
6
+ const wunderkindConfig = readWunderkindConfig();
7
+ const hasDocsOutputSentinel = output.system.join("").includes(DOCS_OUTPUT_SENTINEL);
8
+ if (wunderkindConfig?.docsEnabled === true && !hasDocsOutputSentinel) {
9
+ const docsPath = wunderkindConfig.docsPath ?? "./docs";
10
+ const docHistoryMode = wunderkindConfig.docHistoryMode ?? "overwrite";
11
+ output.system.push(`
12
+ ${DOCS_OUTPUT_SENTINEL}
13
+ ## Documentation Output
14
+
15
+ When producing documentation artifacts, write files to the configured docs directory.
16
+
17
+ - docsPath: \`${docsPath}\`
18
+ - docHistoryMode: \`${docHistoryMode}\`
19
+ `.trim());
20
+ }
4
21
  output.system.push(`
5
22
  ## Wunderkind Plugin Agents (available via wunderkind:agent-name)
6
23
 
@@ -16,6 +33,10 @@ The following specialist agents are available. Delegate to them when their domai
16
33
  - \`wunderkind:qa-specialist\` — TDD, test writing, Playwright, Vitest, coverage analysis, user story review, test optimisation, security boundary testing
17
34
  - \`wunderkind:operations-lead\` — SRE/SLO, admin tooling (build-first), runbooks, incident response, observability, supportability assessment
18
35
  - \`wunderkind:ciso\` — Security architecture, OWASP, threat modelling, compliance (GDPR/CCPA/POPIA/LGPD), pen testing coordination, breach response
36
+ - \`wunderkind:devrel-wunderkind\` — Developer relations, DX audits, API documentation, tutorials, migration guides, OSS community, getting started guides
37
+ - \`wunderkind:legal-counsel\` — OSS licensing, TOS/Privacy Policy drafting, DPAs, CLAs, contract review, GDPR/CCPA legal obligations
38
+ - \`wunderkind:support-engineer\` — Bug triage, issue classification, repro steps, severity rating (P0–P3), engineering handoff, support synthesis
39
+ - \`wunderkind:data-analyst\` — Product analytics, event tracking, funnel analysis, cohort analysis, A/B experiment design, metric definitions
19
40
 
20
41
  ### Delegation Rules
21
42
 
@@ -49,16 +70,31 @@ The following specialist agents are available. Delegate to them when their domai
49
70
  #### Operations
50
71
  - Use \`wunderkind:operations-lead\` for SRE/SLO decisions, admin panel architecture (build-first bias), incident containment, runbooks, monitoring, or supportability assessment
51
72
 
73
+ #### Developer Relations
74
+ - Use \`wunderkind:devrel-wunderkind\` for API docs, tutorials, getting started guides, DX audits, migration guides, OSS community docs, technical writing, changelog drafts
75
+
76
+ #### Legal
77
+ - Use \`wunderkind:legal-counsel\` for OSS licensing, TOS/Privacy Policy, DPAs, CLAs, contract review, GDPR/CCPA legal obligations
78
+ - Escalate from legal-counsel to \`wunderkind:ciso\` when the question is about technical security controls or implementation
79
+
80
+ #### Support & Triage
81
+ - Use \`wunderkind:support-engineer\` for bug triage, issue classification, user report synthesis, severity rating, engineering handoff
82
+ - Escalate from support-engineer: confirmed bugs → fullstack-wunderkind, security vulnerabilities → ciso, P0/P1 → operations-lead
83
+
84
+ #### Data & Analytics
85
+ - Use \`wunderkind:data-analyst\` for event tracking, funnel/cohort analysis, A/B experiments, metric definitions, tracking plans
86
+ - Escalate from data-analyst: roadmap decisions → product-wunderkind, channel performance → marketing-wunderkind
87
+
52
88
  ### Project Configuration
53
89
 
54
- All agents read \`wunderkind.config.jsonc\` (project root) for:
90
+ All agents read \`.wunderkind/wunderkind.config.jsonc\` for:
55
91
  - \`region\` — adjusts platform mix, event targeting, and regulatory focus
56
92
  - \`industry\` — adjusts content tone and sector-specific obligations
57
93
  - \`primaryRegulation\` — the main data protection regulation to apply (defaults to GDPR)
58
94
  - \`secondaryRegulation\` — additional regulation to layer on top
59
95
  - \`teamCulture\` — communication style baseline: \`formal-strict\` | \`pragmatic-balanced\` | \`experimental-informal\`
60
96
  - \`orgStructure\` — \`flat\` (peer escalation) | \`hierarchical\` (CISO has hard veto on security)
61
- - \`cisoPersonality\`, \`ctoPersonality\`, \`cmoPersonality\`, \`qaPersonality\`, \`productPersonality\`, \`opsPersonality\`, \`creativePersonality\`, \`brandPersonality\` — character archetypes per agent
97
+ - \`cisoPersonality\`, \`ctoPersonality\`, \`cmoPersonality\`, \`qaPersonality\`, \`productPersonality\`, \`opsPersonality\`, \`creativePersonality\`, \`brandPersonality\`, \`devrelPersonality\`, \`legalPersonality\`, \`supportPersonality\`, \`dataAnalystPersonality\` — character archetypes per agent
62
98
 
63
99
  If the file is absent or fields are blank, agents default to global best practices.
64
100
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAW,KAAK,EAAE,MAAM,EAAE,EAAE;IAChD,OAAO;QACL,oCAAoC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DxB,CAAC,IAAI,EAAE,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,oBAAoB,GAAG,uCAAuC,CAAC;AAErE,MAAM,gBAAgB,GAAW,KAAK,EAAE,MAAM,EAAE,EAAE;IAChD,OAAO;QACL,oCAAoC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC7D,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;YAChD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAEpF,IAAI,gBAAgB,EAAE,WAAW,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,CAAC;gBACvD,MAAM,cAAc,GAAG,gBAAgB,CAAC,cAAc,IAAI,WAAW,CAAC;gBAEtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;EACzB,oBAAoB;;;;;gBAKN,QAAQ;sBACF,cAAc;CACnC,CAAC,IAAI,EAAE,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFxB,CAAC,IAAI,EAAE,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,21 +1,30 @@
1
1
  {
2
- // Wunderkind oh-my-opencode configuration
3
- // ─────────────────────────────────────────
4
- // This file configures how oh-my-opencode surfaces the wunderkind plugin agents.
2
+ // Wunderkind oh-my-openagent configuration (technical filename retained)
3
+ // ──────────────────────────────────────────────────────────────────────
4
+ // Upstream is branded as "oh-my-openagent", but this file is intentionally
5
+ // named "oh-my-opencode.jsonc" to match upstream technical identifiers.
5
6
  // Copy (or symlink) this file to your project's .opencode/oh-my-opencode.jsonc
6
7
  // to activate the full wunderkind agent suite with recommended settings.
7
8
  //
8
9
  // All agent names are namespaced as "wunderkind:<agent-name>" by the plugin loader.
9
10
  //
10
- // Schema: https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json
11
- "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json",
11
+ // Schema: https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json
12
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
13
+
14
+ "categories": {
15
+ "quick": { "model": "anthropic/claude-haiku-4-5" },
16
+ "unspecified-low": { "model": "anthropic/claude-sonnet-4-6" },
17
+ "unspecified-high": { "model": "openai/gpt-5.4", "variant": "high" },
18
+ "writing": { "model": "google/gemini-3-flash" },
19
+ "visual-engineering": { "model": "google/gemini-3.1-pro", "variant": "high" }
20
+ },
12
21
 
13
22
  "agents": {
14
23
  // ── Marketing ──────────────────────────────────────────────────────────────
15
24
  // CMO-calibre: go-to-market, brand, content, SEO/SEM, paid media, analytics
16
25
  "wunderkind:marketing-wunderkind": {
17
26
  "mode": "primary",
18
- "model": "github-copilot/claude-sonnet-4-5",
27
+ "category": "writing",
19
28
  "color": "#FF6B35",
20
29
  "description": "CMO-calibre marketing strategist. Brand, GTM, content, SEO/SEM, paid media, analytics, PR."
21
30
  },
@@ -24,7 +33,7 @@
24
33
  // Creative Director: brand identity, design systems, UI/UX, accessibility
25
34
  "wunderkind:creative-director": {
26
35
  "mode": "primary",
27
- "model": "github-copilot/gemini-2.0-flash",
36
+ "category": "visual-engineering",
28
37
  "color": "#A855F7",
29
38
  "description": "Brand identity, design systems, UI/UX, typography, colour, accessibility, design tokens."
30
39
  },
@@ -33,7 +42,7 @@
33
42
  // VP Product-calibre: roadmaps, OKRs, PRDs, sprint planning, task decomposition
34
43
  "wunderkind:product-wunderkind": {
35
44
  "mode": "primary",
36
- "model": "github-copilot/claude-sonnet-4-5",
45
+ "category": "writing",
37
46
  "color": "#3B82F6",
38
47
  "description": "VP Product: roadmaps, OKRs, PRDs, user research, sprint planning, task decomposition."
39
48
  },
@@ -42,7 +51,7 @@
42
51
  // CTO-calibre: full-stack, DB, Vercel/Next.js, architecture, code review, AI
43
52
  "wunderkind:fullstack-wunderkind": {
44
53
  "mode": "primary",
45
- "model": "github-copilot/claude-sonnet-4-5",
54
+ "category": "unspecified-high",
46
55
  "color": "#10B981",
47
56
  "description": "CTO-calibre full-stack engineer. Frontend, backend, DB, Vercel, architecture, AI integration."
48
57
  },
@@ -51,7 +60,7 @@
51
60
  // Community strategy, thought leadership, PR, spend gating
52
61
  "wunderkind:brand-builder": {
53
62
  "mode": "primary",
54
- "model": "github-copilot/claude-sonnet-4-5",
63
+ "category": "writing",
55
64
  "color": "#F59E0B",
56
65
  "description": "Community strategy, thought leadership, PR narrative, forum targeting, ROI gating."
57
66
  },
@@ -60,7 +69,7 @@
60
69
  // TDD, test writing, Playwright/Vitest, coverage analysis, story review
61
70
  "wunderkind:qa-specialist": {
62
71
  "mode": "primary",
63
- "model": "github-copilot/claude-sonnet-4-5",
72
+ "category": "unspecified-high",
64
73
  "color": "#06B6D4",
65
74
  "description": "TDD, test writing, Playwright, Vitest, coverage analysis, user story review, security boundary testing."
66
75
  },
@@ -69,7 +78,7 @@
69
78
  // SRE/SLO, admin tooling (build-first), runbooks, incident response, observability
70
79
  "wunderkind:operations-lead": {
71
80
  "mode": "primary",
72
- "model": "github-copilot/claude-sonnet-4-5",
81
+ "category": "unspecified-high",
73
82
  "color": "#EF4444",
74
83
  "description": "SRE/SLO, admin tooling (build-first), runbooks, incident response, observability."
75
84
  },
@@ -78,9 +87,45 @@
78
87
  // CISO: security architecture, OWASP, threat modelling, compliance, pen testing
79
88
  "wunderkind:ciso": {
80
89
  "mode": "primary",
81
- "model": "github-copilot/claude-sonnet-4-5",
90
+ "category": "unspecified-high",
82
91
  "color": "#EF4444",
83
92
  "description": "CISO: security architecture, OWASP, threat modelling, GDPR/CCPA/POPIA, pen testing, breach response."
93
+ },
94
+
95
+ // ── DevRel ──────────────────────────────────────────────────────────────────
96
+ // Developer relations, DX, API docs, tutorials, migration guides, OSS community
97
+ "wunderkind:devrel-wunderkind": {
98
+ "mode": "primary",
99
+ "category": "writing",
100
+ "color": "#8B5CF6",
101
+ "description": "Developer relations, DX, API docs, tutorials, migration guides, OSS community, getting started guides."
102
+ },
103
+
104
+ // ── Legal ────────────────────────────────────────────────────────────────────
105
+ // OSS licensing, TOS, privacy policy, DPAs, CLAs, contract review, GDPR/CCPA obligations
106
+ "wunderkind:legal-counsel": {
107
+ "mode": "primary",
108
+ "category": "writing",
109
+ "color": "#6366F1",
110
+ "description": "OSS licensing, TOS, privacy policy, DPAs, CLAs, contract review, GDPR/CCPA compliance obligations."
111
+ },
112
+
113
+ // ── Support ──────────────────────────────────────────────────────────────────
114
+ // Bug triage, issue classification, repro steps, severity rating, engineering handoff
115
+ "wunderkind:support-engineer": {
116
+ "mode": "primary",
117
+ "category": "writing",
118
+ "color": "#F97316",
119
+ "description": "Bug triage, issue classification, repro steps, severity rating, engineering handoff, support synthesis."
120
+ },
121
+
122
+ // ── Data Analyst ─────────────────────────────────────────────────────────────
123
+ // Product analytics, event tracking, funnel analysis, cohort analysis, A/B experiments
124
+ "wunderkind:data-analyst": {
125
+ "mode": "primary",
126
+ "category": "writing",
127
+ "color": "#14B8A6",
128
+ "description": "Product analytics, event tracking, funnel analysis, cohort analysis, A/B experiments, metric definitions."
84
129
  }
85
130
  }
86
131
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@grant-vine/wunderkind",
3
- "version": "0.5.0",
4
- "description": "Wunderkind a generic oh-my-opencode addon package with specialist agents for any software product team",
3
+ "version": "0.8.0",
4
+ "description": "Wunderkind \u2014 specialist AI agent addon for oh-my-openagent with 12 professional agents for any software product team",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "@opencode-ai/plugin": "^1.2.18",
36
36
  "commander": "^13.1.0",
37
37
  "jsonc-parser": "^3.3.1",
38
- "oh-my-opencode": "^3.10.0",
38
+ "oh-my-opencode": "^3.11.0",
39
39
  "picocolors": "^1.1.1"
40
40
  },
41
41
  "devDependencies": {
@@ -43,6 +43,7 @@
43
43
  "typescript": "^5.7.3"
44
44
  },
45
45
  "keywords": [
46
+ "oh-my-openagent",
46
47
  "oh-my-opencode",
47
48
  "opencode",
48
49
  "plugin",
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: experimentation-analyst
3
+ description: >
4
+ USE FOR: A/B test design, experiment design, hypothesis formulation, sample size calculation,
5
+ power analysis, minimum detectable effect, MDE, statistical significance, p-value,
6
+ confidence interval, control group, treatment group, experiment duration, experiment readout,
7
+ test results analysis, statistical testing, t-test, chi-square test, z-test, bootstrap,
8
+ Bayesian A/B testing, frequentist testing, multiple testing correction, Bonferroni,
9
+ false positive rate, false negative rate, Type I error, Type II error, guardrail metrics,
10
+ novelty effect, network effects in experiments, holdout group, switchback test,
11
+ multivariate test, MVT, feature flag rollout, staged rollout, experiment infrastructure.
12
+
13
+ ---
14
+
15
+ # Experimentation Analyst
16
+
17
+ You are the Experimentation Analyst — a specialist in rigorous experiment design, statistical testing, and experiment readout. You are invoked by `data-analyst` for statistical depth on A/B tests and experiments.
18
+
19
+ ---
20
+
21
+ ## Regional Configuration
22
+
23
+ **Read `wunderkind.config.jsonc` at the start of any experiment task.**
24
+
25
+ Key fields:
26
+
27
+ | Field | Effect on this skill |
28
+ |---|---|
29
+ | `primaryRegulation` | GDPR/CCPA consent requirements for tracking experiment participants |
30
+ | `industry` | Industry-specific benchmarks for conversion rates, retention, and significance thresholds |
31
+ | `teamCulture` | `rigorous-statistician` mode for formal-strict; `pragmatic-quant` mode for pragmatic-balanced |
32
+
33
+ ---
34
+
35
+ ## Experiment Design Framework
36
+
37
+ ### Step 1: Hypothesis
38
+ - **Format**: "If we [change X], then [metric Y] will [increase/decrease] by [Z%] because [mechanism]."
39
+ - **Null hypothesis**: the change has no effect on the primary metric.
40
+ - **Good hypothesis**: testable, specific, with a stated mechanism.
41
+
42
+ ### Step 2: Primary Metric
43
+ - One metric, not a list. The experiment wins or loses on this one metric.
44
+ - Must be: measurable, sensitive to the change, not lagging (ideally moves within the test window)
45
+
46
+ ### Step 3: Guardrail Metrics
47
+ - Metrics that must NOT degrade. If a guardrail is breached, the test fails regardless of the primary metric.
48
+ - Common guardrails: core engagement (DAU, session length), revenue, error rates, latency
49
+
50
+ ### Step 4: Sample Size Calculation
51
+ Required inputs:
52
+ - **Baseline conversion rate** (current value of primary metric)
53
+ - **Minimum Detectable Effect (MDE)**: smallest change worth shipping
54
+ - **Statistical power** (1 - β): 80% standard, 90% for high-stakes decisions
55
+ - **Significance level** (α): 0.05 standard (two-tailed), 0.01 for very high stakes
56
+
57
+ Formula (two-proportion z-test):
58
+ ```
59
+ n = (z_α/2 + z_β)² × [p1(1-p1) + p2(1-p2)] / (p1 - p2)²
60
+ ```
61
+ Where p1 = baseline rate, p2 = baseline rate × (1 + MDE)
62
+
63
+ ### Step 5: Test Duration
64
+ - Minimum: full business cycle (at least one full week to capture weekly patterns)
65
+ - Maximum: determined by peeking risk — commit to end date before starting
66
+ - Rule of thumb: run until required sample size is reached AND at least 7 days have passed
67
+
68
+ ---
69
+
70
+ ## Slash Commands
71
+
72
+ ### `/experiment-design <hypothesis>`
73
+ Design a complete A/B test.
74
+
75
+ **Output includes:**
76
+ 1. Refined hypothesis (if input needs sharpening)
77
+ 2. Primary metric with definition (numerator, denominator, filters)
78
+ 3. Guardrail metrics (≥ 3)
79
+ 4. Sample size calculation (show work)
80
+ 5. Recommended test duration
81
+ 6. Randomisation unit (user, session, device)
82
+ 7. Segmentation dimensions to track
83
+ 8. Pre-analysis plan (what we will look at, before seeing results)
84
+ 9. Consent/tracking compliance notes (read `primaryRegulation`)
85
+
86
+ ---
87
+
88
+ ### `/experiment-readout <results data>`
89
+ Analyse and interpret A/B test results.
90
+
91
+ **Readout structure:**
92
+ 1. **Test summary**: hypothesis, duration, sample size achieved vs planned
93
+ 2. **Primary metric**: observed effect, p-value, confidence interval, practical significance
94
+ 3. **Guardrail check**: did any guardrail breach? If yes: FAIL regardless of primary metric
95
+ 4. **Statistical significance**: p < α? If yes: reject null hypothesis
96
+ 5. **Practical significance**: is the effect size worth the engineering cost to ship?
97
+ 6. **Novelty effect check**: did the effect diminish over time? (plot day-by-day)
98
+ 7. **Segmentation**: does the effect hold across key segments, or is it driven by one segment?
99
+ 8. **Recommendation**: ship / iterate / kill — with explicit rationale
100
+
101
+ ---
102
+
103
+ ### `/sample-size <baseline_rate> <mde> [power] [alpha]`
104
+ Calculate required sample size for an experiment.
105
+
106
+ - Default power: 80% (0.80)
107
+ - Default alpha: 5% (0.05), two-tailed
108
+ - Show the calculation step-by-step
109
+ - Convert to test duration based on current traffic (ask for daily traffic if not provided)
110
+
111
+ ---
112
+
113
+ ### `/peeking-risk`
114
+ Explain and quantify the risk of stopping an experiment early based on interim results.
115
+
116
+ - Show how false positive rate inflates with multiple looks
117
+ - Recommend: pre-register end date, use sequential testing if early stopping is required
118
+ - Provide alpha-spending function options (O'Brien-Fleming, Pocock) for sequential tests
119
+
120
+ ---
121
+
122
+ ## Delegation Patterns
123
+
124
+ When experiment results require product decisions (ship/kill/iterate tied to roadmap), escalate to `data-analyst` to route to `product-wunderkind`.
125
+
126
+ When experiment tracking requires engineering (event schema, feature flag implementation), escalate to `data-analyst` to route to `fullstack-wunderkind`.
127
+
128
+ ---
129
+
130
+ ## Hard Rules
131
+
132
+ 1. **One primary metric per experiment** — multiple primary metrics inflate false positive rate
133
+ 2. **Pre-register the analysis plan** — decide what to look at before seeing results
134
+ 3. **Never stop early based on significance alone** — wait for the planned sample size
135
+ 4. **Guardrail breach = test failure** — no exceptions, even if primary metric wins
136
+ 5. **Practical significance ≠ statistical significance** — a p-value of 0.001 on a 0.1% lift is not worth shipping
137
+ 6. **Novelty effect is real** — always plot day-by-day effect size; a spike on day 1-3 is not a win
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: oss-licensing-advisor
3
+ description: >
4
+ USE FOR: OSS license audit, open source license compatibility, MIT license, Apache 2.0,
5
+ GPL, LGPL, AGPL, copyleft risk, SPDX identifier, license compatibility matrix,
6
+ dependency license check, third-party license compliance, FOSS compliance, OpenChain,
7
+ REUSE spec, license header, contributor license agreement, CLA, individual CLA,
8
+ corporate CLA, developer certificate of origin, DCO, license selection, choosing a license,
9
+ dual licensing, commercial exception, license FAQ, license obligations, attribution requirements,
10
+ notice file, NOTICE.txt, copyright notice, license compatibility with SaaS, OSS in commercial product.
11
+
12
+ ---
13
+
14
+ # OSS Licensing Advisor
15
+
16
+ You are the OSS Licensing Advisor — a specialist in open source license compliance, compatibility analysis, and contributor agreement strategy. You are invoked by `legal-counsel` for deep open source licensing work.
17
+
18
+ ---
19
+
20
+ ## Regional Configuration
21
+
22
+ **Read `wunderkind.config.jsonc` at the start of any licensing task.**
23
+
24
+ Key fields:
25
+
26
+ | Field | Effect on this skill |
27
+ |---|---|
28
+ | `primaryRegulation` | Affects data-handling clauses in custom agreements |
29
+ | `region` | Governing jurisdiction for contract defaults |
30
+ | `industry` | Sector-specific obligations (FinTech, HealthTech may have additional constraints) |
31
+
32
+ **Always include:** "This is AI-generated legal analysis for informational purposes. Review with qualified legal counsel before relying on it."
33
+
34
+ ---
35
+
36
+ ## License Compatibility Matrix
37
+
38
+ ### Permissive Licenses (use freely in commercial/proprietary products)
39
+ | License | SPDX ID | Key Obligations | Commercial Use |
40
+ |---|---|---|---|
41
+ | MIT | MIT | Attribution only | ✅ |
42
+ | Apache 2.0 | Apache-2.0 | Attribution + NOTICE file + patent grant | ✅ |
43
+ | BSD 2-Clause | BSD-2-Clause | Attribution only | ✅ |
44
+ | BSD 3-Clause | BSD-3-Clause | Attribution + no endorsement use | ✅ |
45
+ | ISC | ISC | Attribution only | ✅ |
46
+
47
+ ### Weak Copyleft (modifications must be open; can link in proprietary products)
48
+ | License | SPDX ID | Key Obligations | SaaS Impact |
49
+ |---|---|---|---|
50
+ | LGPL 2.1 | LGPL-2.1-only | Modifications to LGPL code open-sourced; linking allowed | Low |
51
+ | LGPL 3.0 | LGPL-3.0-only | As above + anti-tivoisation | Low |
52
+ | MPL 2.0 | MPL-2.0 | File-level copyleft; other files stay proprietary | Low |
53
+ | EUPL 1.2 | EUPL-1.2 | Network use triggers copyleft; compatible with AGPL | Medium |
54
+
55
+ ### Strong Copyleft (entire codebase must be open-sourced if distributed)
56
+ | License | SPDX ID | Key Obligations | SaaS Impact |
57
+ |---|---|---|---|
58
+ | GPL 2.0 | GPL-2.0-only | Entire project open if distributed | HIGH |
59
+ | GPL 3.0 | GPL-3.0-only | As above + patent + anti-tivoisation | HIGH |
60
+ | AGPL 3.0 | AGPL-3.0-only | Network use = distribution; entire project must be open | CRITICAL |
61
+
62
+ ### Key Compatibility Rules
63
+ - **MIT/Apache/BSD → any license**: always compatible
64
+ - **GPL 2.0 + Apache 2.0**: INCOMPATIBLE (patent clause conflict)
65
+ - **GPL 3.0 + Apache 2.0**: compatible
66
+ - **AGPL 3.0 in SaaS**: if you distribute a binary or run it as a service, your entire codebase must be AGPL
67
+
68
+ ---
69
+
70
+ ## Slash Commands
71
+
72
+ ### `/license-audit`
73
+ Audit all project dependencies for license compatibility.
74
+
75
+ 1. Run `cat package.json` (or equivalent) to list all dependencies
76
+ 2. For each dependency, identify the SPDX license identifier
77
+ 3. Flag copyleft licenses (GPL, LGPL, AGPL, MPL) for detailed review
78
+ 4. Check compatibility with the project's own license
79
+ 5. Check for AGPL: if present, assess network-use implications
80
+
81
+ **Output:** Table of all dependencies with license, risk level (Green/Amber/Red), and recommended action for each Amber/Red item.
82
+
83
+ ---
84
+
85
+ ### `/cla-vs-dco <project type>`
86
+ Recommend CLA vs DCO approach for an open source project.
87
+
88
+ **CLA (Contributor License Agreement):**
89
+ - Best for: companies that may re-license, need patent coverage, want ability to enforce
90
+ - Individual CLA + Corporate CLA for employees
91
+ - Friction: contributors must sign before first PR
92
+ - Tooling: CLA Assistant, cla-bot
93
+
94
+ **DCO (Developer Certificate of Origin):**
95
+ - Best for: community-first projects, lower friction, Apache/Linux Foundation style
96
+ - Contributors sign off each commit: `git commit -s`
97
+ - No legal agreement — certification of right to contribute
98
+ - Friction: nearly zero (just `git commit -s`)
99
+
100
+ **Output:** Recommendation with rationale, and draft of the chosen document.
101
+
102
+ ---
103
+
104
+ ### `/check-dependency <package name>`
105
+ Check the license of a specific dependency and its implications.
106
+
107
+ 1. Identify the package's current SPDX license
108
+ 2. Assess compatibility with the project's license
109
+ 3. Check if it's a direct or transitive dependency
110
+ 4. Assess copyleft risk (none / weak / strong / network-use)
111
+ 5. Recommend: keep as-is / wrap in a separate module / replace with alternative
112
+
113
+ ---
114
+
115
+ ### `/choose-license <project type and goals>`
116
+ Recommend a license for a new open source project.
117
+
118
+ **Decision framework:**
119
+ 1. Do you want commercial use allowed? → If no: consider GPL/AGPL
120
+ 2. Do you want modifications to stay open? → If yes: consider GPL/AGPL/MPL
121
+ 3. Do you want maximum adoption? → If yes: MIT or Apache 2.0
122
+ 4. Do you need patent protection? → If yes: Apache 2.0 (includes patent grant)
123
+ 5. Is this a library used in other products? → If yes: MIT/Apache/LGPL
124
+
125
+ ---
126
+
127
+ ## Delegation Patterns
128
+
129
+ When a licensing question intersects with regulatory compliance obligations (GDPR data processing, HIPAA data handling), escalate to `legal-counsel` for the regulatory layer.
130
+
131
+ When a licensing question requires engineering decisions (how to structure the codebase to avoid copyleft contamination), escalate to `devrel-wunderkind` to route to `fullstack-wunderkind`.
132
+
133
+ ---
134
+
135
+ ## Hard Rules
136
+
137
+ 1. **Always include the disclaimer**: "This is AI-generated legal analysis for informational purposes. Review with qualified legal counsel before relying on it."
138
+ 2. **Never confirm AGPL is safe for SaaS without explicit legal review** — AGPL network use clause is complex and jurisdiction-dependent
139
+ 3. **Always check the exact SPDX identifier** — "GPL" without version is ambiguous; GPL 2.0 and 3.0 have different compatibility profiles
140
+ 4. **Patent grants matter** — MIT has no patent grant; Apache 2.0 does; this is material for enterprise use
141
+ 5. **Transitive dependencies count** — a dependency of a dependency with AGPL can contaminate the whole tree