@grant-vine/wunderkind 0.3.1 → 0.5.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 (57) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +159 -36
  3. package/agents/brand-builder.md +14 -2
  4. package/agents/ciso.md +21 -0
  5. package/agents/creative-director.md +12 -0
  6. package/agents/fullstack-wunderkind.md +14 -0
  7. package/agents/marketing-wunderkind.md +12 -0
  8. package/agents/operations-lead.md +13 -0
  9. package/agents/product-wunderkind.md +13 -0
  10. package/agents/qa-specialist.md +12 -0
  11. package/dist/agents/brand-builder.d.ts.map +1 -1
  12. package/dist/agents/brand-builder.js +15 -3
  13. package/dist/agents/brand-builder.js.map +1 -1
  14. package/dist/agents/ciso.d.ts.map +1 -1
  15. package/dist/agents/ciso.js +22 -1
  16. package/dist/agents/ciso.js.map +1 -1
  17. package/dist/agents/creative-director.d.ts.map +1 -1
  18. package/dist/agents/creative-director.js +13 -1
  19. package/dist/agents/creative-director.js.map +1 -1
  20. package/dist/agents/fullstack-wunderkind.d.ts.map +1 -1
  21. package/dist/agents/fullstack-wunderkind.js +15 -1
  22. package/dist/agents/fullstack-wunderkind.js.map +1 -1
  23. package/dist/agents/marketing-wunderkind.d.ts.map +1 -1
  24. package/dist/agents/marketing-wunderkind.js +13 -1
  25. package/dist/agents/marketing-wunderkind.js.map +1 -1
  26. package/dist/agents/operations-lead.d.ts.map +1 -1
  27. package/dist/agents/operations-lead.js +14 -1
  28. package/dist/agents/operations-lead.js.map +1 -1
  29. package/dist/agents/product-wunderkind.d.ts.map +1 -1
  30. package/dist/agents/product-wunderkind.js +14 -1
  31. package/dist/agents/product-wunderkind.js.map +1 -1
  32. package/dist/agents/qa-specialist.d.ts.map +1 -1
  33. package/dist/agents/qa-specialist.js +13 -1
  34. package/dist/agents/qa-specialist.js.map +1 -1
  35. package/dist/cli/cli-installer.d.ts.map +1 -1
  36. package/dist/cli/cli-installer.js +30 -6
  37. package/dist/cli/cli-installer.js.map +1 -1
  38. package/dist/cli/config-manager/index.d.ts +4 -3
  39. package/dist/cli/config-manager/index.d.ts.map +1 -1
  40. package/dist/cli/config-manager/index.js +117 -61
  41. package/dist/cli/config-manager/index.js.map +1 -1
  42. package/dist/cli/gitignore-manager.d.ts +8 -0
  43. package/dist/cli/gitignore-manager.d.ts.map +1 -0
  44. package/dist/cli/gitignore-manager.js +57 -0
  45. package/dist/cli/gitignore-manager.js.map +1 -0
  46. package/dist/cli/index.js +44 -1
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/tui-installer.d.ts +2 -1
  49. package/dist/cli/tui-installer.d.ts.map +1 -1
  50. package/dist/cli/tui-installer.js +308 -5
  51. package/dist/cli/tui-installer.js.map +1 -1
  52. package/dist/cli/types.d.ts +43 -0
  53. package/dist/cli/types.d.ts.map +1 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +11 -6
  56. package/dist/index.js.map +1 -1
  57. package/package.json +4 -2
@@ -1,16 +1,48 @@
1
1
  export type BooleanArg = "no" | "yes";
2
+ export type InstallScope = "global" | "project";
3
+ export type TeamCulture = "formal-strict" | "pragmatic-balanced" | "experimental-informal";
4
+ export type OrgStructure = "flat" | "hierarchical";
5
+ export type CisoPersonality = "paranoid-enforcer" | "pragmatic-risk-manager" | "educator-collaborator";
6
+ export type CtoPersonality = "grizzled-sysadmin" | "startup-bro" | "code-archaeologist";
7
+ export type CmoPersonality = "data-driven" | "brand-storyteller" | "growth-hacker";
8
+ export type QaPersonality = "rule-enforcer" | "risk-based-pragmatist" | "rubber-duck";
9
+ export type ProductPersonality = "user-advocate" | "velocity-optimizer" | "outcome-obsessed";
10
+ export type OpsPersonality = "on-call-veteran" | "efficiency-maximiser" | "process-purist";
11
+ export type CreativePersonality = "perfectionist-craftsperson" | "bold-provocateur" | "pragmatic-problem-solver";
12
+ export type BrandPersonality = "community-evangelist" | "pr-spinner" | "authentic-builder";
2
13
  export interface InstallArgs {
3
14
  tui: boolean;
15
+ scope: InstallScope;
4
16
  region?: string | undefined;
5
17
  industry?: string | undefined;
6
18
  primaryRegulation?: string | undefined;
7
19
  secondaryRegulation?: string | undefined;
20
+ teamCulture?: string | undefined;
21
+ orgStructure?: string | undefined;
22
+ cisoPersonality?: string | undefined;
23
+ ctoPersonality?: string | undefined;
24
+ cmoPersonality?: string | undefined;
25
+ qaPersonality?: string | undefined;
26
+ productPersonality?: string | undefined;
27
+ opsPersonality?: string | undefined;
28
+ creativePersonality?: string | undefined;
29
+ brandPersonality?: string | undefined;
8
30
  }
9
31
  export interface InstallConfig {
10
32
  region: string;
11
33
  industry: string;
12
34
  primaryRegulation: string;
13
35
  secondaryRegulation: string;
36
+ teamCulture: TeamCulture;
37
+ orgStructure: OrgStructure;
38
+ cisoPersonality: CisoPersonality;
39
+ ctoPersonality: CtoPersonality;
40
+ cmoPersonality: CmoPersonality;
41
+ qaPersonality: QaPersonality;
42
+ productPersonality: ProductPersonality;
43
+ opsPersonality: OpsPersonality;
44
+ creativePersonality: CreativePersonality;
45
+ brandPersonality: BrandPersonality;
14
46
  }
15
47
  export interface ConfigMergeResult {
16
48
  success: boolean;
@@ -19,9 +51,20 @@ export interface ConfigMergeResult {
19
51
  }
20
52
  export interface DetectedConfig {
21
53
  isInstalled: boolean;
54
+ scope: InstallScope;
22
55
  region: string;
23
56
  industry: string;
24
57
  primaryRegulation: string;
25
58
  secondaryRegulation: string;
59
+ teamCulture: TeamCulture;
60
+ orgStructure: OrgStructure;
61
+ cisoPersonality: CisoPersonality;
62
+ ctoPersonality: CtoPersonality;
63
+ cmoPersonality: CmoPersonality;
64
+ qaPersonality: QaPersonality;
65
+ productPersonality: ProductPersonality;
66
+ opsPersonality: OpsPersonality;
67
+ creativePersonality: CreativePersonality;
68
+ brandPersonality: BrandPersonality;
26
69
  }
27
70
  //# sourceMappingURL=types.d.ts.map
@@ -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;AAErC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAA;IACZ,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;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;CAC5B;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,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;CAC5B"}
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,MA8DvB,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;AAElD,QAAA,MAAM,gBAAgB,EAAE,MAmEvB,CAAC;AAEF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ The following specialist agents are available. Delegate to them when their domai
23
23
  - Use \`wunderkind:ciso\` for ANY security review, vulnerability concern, compliance question, threat modelling, pen test coordination, or incident response
24
24
  - Use \`wunderkind:ciso\` when fullstack work touches auth, JWT, RBAC, CORS, CSP headers, or sensitive data flows
25
25
  - Sub-route from ciso: Security Analyst for vulnerability deep-dives, Pen Tester for active testing, Compliance Officer for GDPR/CCPA/POPIA/LGPD
26
+ - **CISO 72-hour mandate**: any High or Critical security finding raised by \`wunderkind:ciso\` must have remediation started within 72 hours. No sprint priorities or business pressure can override this. No other agent may deprioritise a CISO finding.
26
27
 
27
28
  #### Quality & Testing
28
29
  - Use \`wunderkind:qa-specialist\` for test strategy, TDD guidance, flaky tests, coverage gaps, user story validation, or security boundary test review
@@ -48,15 +49,19 @@ The following specialist agents are available. Delegate to them when their domai
48
49
  #### Operations
49
50
  - Use \`wunderkind:operations-lead\` for SRE/SLO decisions, admin panel architecture (build-first bias), incident containment, runbooks, monitoring, or supportability assessment
50
51
 
51
- ### Regional Configuration
52
+ ### Project Configuration
52
53
 
53
- All agents read \`wunderkind.config.jsonc\` (project root, or plugin root as fallback) for:
54
- - \`REGION\` — adjusts platform mix, event targeting, and regulatory focus
55
- - \`INDUSTRY\` — adjusts content tone and sector-specific obligations
56
- - \`PRIMARY_REGULATION\` — the main data protection regulation to apply (defaults to GDPR)
57
- - \`SECONDARY_REGULATION\` — additional regulation to layer on top
54
+ All agents read \`wunderkind.config.jsonc\` (project root) for:
55
+ - \`region\` — adjusts platform mix, event targeting, and regulatory focus
56
+ - \`industry\` — adjusts content tone and sector-specific obligations
57
+ - \`primaryRegulation\` — the main data protection regulation to apply (defaults to GDPR)
58
+ - \`secondaryRegulation\` — additional regulation to layer on top
59
+ - \`teamCulture\` — communication style baseline: \`formal-strict\` | \`pragmatic-balanced\` | \`experimental-informal\`
60
+ - \`orgStructure\` — \`flat\` (peer escalation) | \`hierarchical\` (CISO has hard veto on security)
61
+ - \`cisoPersonality\`, \`ctoPersonality\`, \`cmoPersonality\`, \`qaPersonality\`, \`productPersonality\`, \`opsPersonality\`, \`creativePersonality\`, \`brandPersonality\` — character archetypes per agent
58
62
 
59
63
  If the file is absent or fields are blank, agents default to global best practices.
64
+
60
65
  `.trim());
61
66
  },
62
67
  };
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDxB,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grant-vine/wunderkind",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "Wunderkind — a generic oh-my-opencode addon package with specialist agents for any software product team",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,7 +26,9 @@
26
26
  "scripts": {
27
27
  "build": "tsc && bun run dist/build-agents.js",
28
28
  "dev": "tsc --watch",
29
- "prepublishOnly": "bun run build"
29
+ "prepublishOnly": "bun run build",
30
+ "test": "bun test tests/unit/",
31
+ "test:contract": "bun test tests/unit/"
30
32
  },
31
33
  "dependencies": {
32
34
  "@clack/prompts": "^0.9.1",