@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.
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +118 -26
- package/agents/brand-builder.md +52 -3
- package/agents/ciso.md +53 -3
- package/agents/creative-director.md +37 -2
- package/agents/data-analyst.md +208 -0
- package/agents/devrel-wunderkind.md +225 -0
- package/agents/fullstack-wunderkind.md +51 -1
- package/agents/legal-counsel.md +222 -0
- package/agents/marketing-wunderkind.md +59 -3
- package/agents/operations-lead.md +51 -1
- package/agents/product-wunderkind.md +57 -1
- package/agents/qa-specialist.md +51 -1
- package/agents/support-engineer.md +200 -0
- package/dist/agents/brand-builder.d.ts.map +1 -1
- package/dist/agents/brand-builder.js +53 -3
- package/dist/agents/brand-builder.js.map +1 -1
- package/dist/agents/ciso.d.ts.map +1 -1
- package/dist/agents/ciso.js +54 -3
- package/dist/agents/ciso.js.map +1 -1
- package/dist/agents/creative-director.d.ts.map +1 -1
- package/dist/agents/creative-director.js +37 -2
- package/dist/agents/creative-director.js.map +1 -1
- package/dist/agents/data-analyst.d.ts +8 -0
- package/dist/agents/data-analyst.d.ts.map +1 -0
- package/dist/agents/data-analyst.js +247 -0
- package/dist/agents/data-analyst.js.map +1 -0
- package/dist/agents/devrel-wunderkind.d.ts +8 -0
- package/dist/agents/devrel-wunderkind.d.ts.map +1 -0
- package/dist/agents/devrel-wunderkind.js +262 -0
- package/dist/agents/devrel-wunderkind.js.map +1 -0
- package/dist/agents/docs-config.d.ts +8 -0
- package/dist/agents/docs-config.d.ts.map +1 -0
- package/dist/agents/docs-config.js +68 -0
- package/dist/agents/docs-config.js.map +1 -0
- package/dist/agents/fullstack-wunderkind.d.ts.map +1 -1
- package/dist/agents/fullstack-wunderkind.js +52 -1
- package/dist/agents/fullstack-wunderkind.js.map +1 -1
- package/dist/agents/index.d.ts +4 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +4 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/legal-counsel.d.ts +8 -0
- package/dist/agents/legal-counsel.d.ts.map +1 -0
- package/dist/agents/legal-counsel.js +260 -0
- package/dist/agents/legal-counsel.js.map +1 -0
- package/dist/agents/marketing-wunderkind.d.ts.map +1 -1
- package/dist/agents/marketing-wunderkind.js +61 -3
- package/dist/agents/marketing-wunderkind.js.map +1 -1
- package/dist/agents/operations-lead.d.ts.map +1 -1
- package/dist/agents/operations-lead.js +52 -1
- package/dist/agents/operations-lead.js.map +1 -1
- package/dist/agents/product-wunderkind.d.ts.map +1 -1
- package/dist/agents/product-wunderkind.js +57 -1
- package/dist/agents/product-wunderkind.js.map +1 -1
- package/dist/agents/qa-specialist.d.ts.map +1 -1
- package/dist/agents/qa-specialist.js +52 -1
- package/dist/agents/qa-specialist.js.map +1 -1
- package/dist/agents/support-engineer.d.ts +8 -0
- package/dist/agents/support-engineer.d.ts.map +1 -0
- package/dist/agents/support-engineer.js +238 -0
- package/dist/agents/support-engineer.js.map +1 -0
- package/dist/build-agents.js +5 -1
- package/dist/build-agents.js.map +1 -1
- package/dist/cli/cli-installer.d.ts.map +1 -1
- package/dist/cli/cli-installer.js +9 -0
- package/dist/cli/cli-installer.js.map +1 -1
- package/dist/cli/config-manager/index.d.ts +1 -0
- package/dist/cli/config-manager/index.d.ts.map +1 -1
- package/dist/cli/config-manager/index.js +119 -33
- package/dist/cli/config-manager/index.js.map +1 -1
- package/dist/cli/docs-output-helper.d.ts +11 -0
- package/dist/cli/docs-output-helper.d.ts.map +1 -0
- package/dist/cli/docs-output-helper.js +36 -0
- package/dist/cli/docs-output-helper.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +85 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/index.js +68 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +13 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +177 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/tui-installer.d.ts.map +1 -1
- package/dist/cli/tui-installer.js +53 -258
- package/dist/cli/tui-installer.js.map +1 -1
- package/dist/cli/types.d.ts +26 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -2
- package/dist/index.js.map +1 -1
- package/oh-my-opencode.jsonc +58 -13
- package/package.json +4 -3
- package/skills/experimentation-analyst/SKILL.md +137 -0
- package/skills/oss-licensing-advisor/SKILL.md +141 -0
- package/skills/technical-writer/SKILL.md +150 -0
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAA;AACrC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAA;AACrC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAA;AAC/C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,mBAAmB,CAAA;AAElG,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,oBAAoB,GAAG,uBAAuB,CAAA;AAC1F,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,CAAA;AAClD,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,uBAAuB,CAAA;AACtG,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,aAAa,GAAG,oBAAoB,CAAA;AACvF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,mBAAmB,GAAG,eAAe,CAAA;AAClF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,uBAAuB,GAAG,aAAa,CAAA;AACrF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;AAC5F,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,gBAAgB,CAAA;AAC1F,MAAM,MAAM,mBAAmB,GAAG,4BAA4B,GAAG,kBAAkB,GAAG,0BAA0B,CAAA;AAChH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,YAAY,GAAG,mBAAmB,CAAA;AAC1F,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,aAAa,CAAA;AAC3F,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,yBAAyB,CAAA;AACtG,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAClG,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,iBAAiB,CAAA;AAExG,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAA;IACZ,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,EAAE,aAAa,CAAA;IAC5B,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,EAAE,aAAa,CAAA;IAC5B,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;CAC/B"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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":"
|
|
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"}
|
package/oh-my-opencode.jsonc
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
{
|
|
2
|
-
// Wunderkind oh-my-
|
|
3
|
-
//
|
|
4
|
-
//
|
|
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-
|
|
11
|
-
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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.
|
|
4
|
-
"description": "Wunderkind
|
|
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.
|
|
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
|