@tydung26/product-kit 0.1.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 (96) hide show
  1. package/README.md +42 -0
  2. package/bin/pkit.js +2 -0
  3. package/dist/cli/setup.d.ts +2 -0
  4. package/dist/cli/setup.d.ts.map +1 -0
  5. package/dist/cli/setup.js +29 -0
  6. package/dist/cli/setup.js.map +1 -0
  7. package/dist/commands/config/index.d.ts +3 -0
  8. package/dist/commands/config/index.d.ts.map +1 -0
  9. package/dist/commands/config/index.js +34 -0
  10. package/dist/commands/config/index.js.map +1 -0
  11. package/dist/commands/doctor/index.d.ts +3 -0
  12. package/dist/commands/doctor/index.d.ts.map +1 -0
  13. package/dist/commands/doctor/index.js +94 -0
  14. package/dist/commands/doctor/index.js.map +1 -0
  15. package/dist/commands/install/index.d.ts +3 -0
  16. package/dist/commands/install/index.d.ts.map +1 -0
  17. package/dist/commands/install/index.js +51 -0
  18. package/dist/commands/install/index.js.map +1 -0
  19. package/dist/commands/list/index.d.ts +3 -0
  20. package/dist/commands/list/index.d.ts.map +1 -0
  21. package/dist/commands/list/index.js +25 -0
  22. package/dist/commands/list/index.js.map +1 -0
  23. package/dist/commands/remove/index.d.ts +3 -0
  24. package/dist/commands/remove/index.d.ts.map +1 -0
  25. package/dist/commands/remove/index.js +37 -0
  26. package/dist/commands/remove/index.js.map +1 -0
  27. package/dist/commands/update/index.d.ts +3 -0
  28. package/dist/commands/update/index.d.ts.map +1 -0
  29. package/dist/commands/update/index.js +30 -0
  30. package/dist/commands/update/index.js.map +1 -0
  31. package/dist/domains/config/config-store.d.ts +11 -0
  32. package/dist/domains/config/config-store.d.ts.map +1 -0
  33. package/dist/domains/config/config-store.js +49 -0
  34. package/dist/domains/config/config-store.js.map +1 -0
  35. package/dist/domains/config/index.d.ts +3 -0
  36. package/dist/domains/config/index.d.ts.map +1 -0
  37. package/dist/domains/config/index.js +7 -0
  38. package/dist/domains/config/index.js.map +1 -0
  39. package/dist/domains/installation/copy-skill-files.d.ts +12 -0
  40. package/dist/domains/installation/copy-skill-files.d.ts.map +1 -0
  41. package/dist/domains/installation/copy-skill-files.js +30 -0
  42. package/dist/domains/installation/copy-skill-files.js.map +1 -0
  43. package/dist/domains/installation/index.d.ts +7 -0
  44. package/dist/domains/installation/index.d.ts.map +1 -0
  45. package/dist/domains/installation/index.js +116 -0
  46. package/dist/domains/installation/index.js.map +1 -0
  47. package/dist/domains/installation/manifest-manager.d.ts +9 -0
  48. package/dist/domains/installation/manifest-manager.d.ts.map +1 -0
  49. package/dist/domains/installation/manifest-manager.js +49 -0
  50. package/dist/domains/installation/manifest-manager.js.map +1 -0
  51. package/dist/domains/installation/resolve-paths.d.ts +3 -0
  52. package/dist/domains/installation/resolve-paths.d.ts.map +1 -0
  53. package/dist/domains/installation/resolve-paths.js +40 -0
  54. package/dist/domains/installation/resolve-paths.js.map +1 -0
  55. package/dist/domains/skills/index.d.ts +3 -0
  56. package/dist/domains/skills/index.d.ts.map +1 -0
  57. package/dist/domains/skills/index.js +10 -0
  58. package/dist/domains/skills/index.js.map +1 -0
  59. package/dist/domains/skills/skill-loader.d.ts +4 -0
  60. package/dist/domains/skills/skill-loader.d.ts.map +1 -0
  61. package/dist/domains/skills/skill-loader.js +37 -0
  62. package/dist/domains/skills/skill-loader.js.map +1 -0
  63. package/dist/domains/skills/skill-validator.d.ts +3 -0
  64. package/dist/domains/skills/skill-validator.d.ts.map +1 -0
  65. package/dist/domains/skills/skill-validator.js +39 -0
  66. package/dist/domains/skills/skill-validator.js.map +1 -0
  67. package/dist/domains/ui/prompts.d.ts +15 -0
  68. package/dist/domains/ui/prompts.d.ts.map +1 -0
  69. package/dist/domains/ui/prompts.js +79 -0
  70. package/dist/domains/ui/prompts.js.map +1 -0
  71. package/dist/index.d.ts +2 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +24 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/schemas/skill-schema.d.ts +8 -0
  76. package/dist/schemas/skill-schema.d.ts.map +1 -0
  77. package/dist/schemas/skill-schema.js +16 -0
  78. package/dist/schemas/skill-schema.js.map +1 -0
  79. package/dist/shared/logger.d.ts +8 -0
  80. package/dist/shared/logger.d.ts.map +1 -0
  81. package/dist/shared/logger.js +20 -0
  82. package/dist/shared/logger.js.map +1 -0
  83. package/dist/shared/paths.d.ts +15 -0
  84. package/dist/shared/paths.d.ts.map +1 -0
  85. package/dist/shared/paths.js +28 -0
  86. package/dist/shared/paths.js.map +1 -0
  87. package/dist/types/index.d.ts +26 -0
  88. package/dist/types/index.d.ts.map +1 -0
  89. package/dist/types/index.js +3 -0
  90. package/dist/types/index.js.map +1 -0
  91. package/package.json +50 -0
  92. package/skills/pkit:brainstorm/SKILL.md +93 -0
  93. package/skills/pkit:competitive-analysis/SKILL.md +103 -0
  94. package/skills/pkit:make-prd/SKILL.md +69 -0
  95. package/skills/pkit:make-prd/templates/prd-template.md +108 -0
  96. package/skills/pkit:roadmap-planner/SKILL.md +101 -0
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROJECT_TOOL_SEGMENTS = exports.DEFAULT_TOOL_PATHS = exports.CONFIG_PATH = exports.MANIFEST_PATH = exports.CONFIG_DIR = exports.PACKAGE_SKILLS_DIR = void 0;
4
+ const os_1 = require("os");
5
+ const path_1 = require("path");
6
+ const home = (0, os_1.homedir)();
7
+ // Absolute path to the skills/ directory bundled in this npm package
8
+ exports.PACKAGE_SKILLS_DIR = (0, path_1.join)(__dirname, '..', '..', 'skills');
9
+ // Manifest + config storage
10
+ exports.CONFIG_DIR = (0, path_1.join)(home, '.config', 'product-kit');
11
+ exports.MANIFEST_PATH = (0, path_1.join)(exports.CONFIG_DIR, 'manifest.json');
12
+ exports.CONFIG_PATH = (0, path_1.join)(exports.CONFIG_DIR, 'config.json');
13
+ // Default install paths per tool (global scope)
14
+ exports.DEFAULT_TOOL_PATHS = {
15
+ // Claude Code + OpenCode both read ~/.claude/skills/
16
+ claude: (0, path_1.join)(home, '.claude', 'skills'),
17
+ // OpenCode also reads ~/.claude/skills — same path, no duplicate copy needed
18
+ opencode: (0, path_1.join)(home, '.claude', 'skills'),
19
+ // Antigravity uses a separate path (configurable)
20
+ antigravity: (0, path_1.join)(home, '.gemini', 'antigravity', 'skills'),
21
+ };
22
+ // Project-scope path segments (joined with cwd at runtime in resolve-paths.ts)
23
+ exports.PROJECT_TOOL_SEGMENTS = {
24
+ claude: (0, path_1.join)('.claude', 'skills'),
25
+ opencode: (0, path_1.join)('.opencode', 'skills'),
26
+ antigravity: (0, path_1.join)('.agent', 'skills'),
27
+ };
28
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":";;;AAAA,2BAA6B;AAC7B,+BAA4B;AAG5B,MAAM,IAAI,GAAG,IAAA,YAAO,GAAE,CAAC;AAEvB,qEAAqE;AACxD,QAAA,kBAAkB,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAExE,4BAA4B;AACf,QAAA,UAAU,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAClD,QAAA,aAAa,GAAG,IAAA,WAAI,EAAC,kBAAU,EAAE,eAAe,CAAC,CAAC;AAClD,QAAA,WAAW,GAAG,IAAA,WAAI,EAAC,kBAAU,EAAE,aAAa,CAAC,CAAC;AAE3D,gDAAgD;AACnC,QAAA,kBAAkB,GAAG;IAChC,qDAAqD;IACrD,MAAM,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;IACzC,kDAAkD;IAClD,WAAW,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC;CACnD,CAAC;AAEX,+EAA+E;AAClE,QAAA,qBAAqB,GAAG;IACnC,MAAM,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,QAAQ,EAAE,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,CAAC;IACrC,WAAW,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type ToolName = 'claude' | 'antigravity' | 'opencode' | 'all';
2
+ export type InstallScope = 'global' | 'project';
3
+ export interface SkillMeta {
4
+ name: string;
5
+ description: string;
6
+ license?: string;
7
+ }
8
+ export interface Skill {
9
+ name: string;
10
+ dirPath: string;
11
+ meta: SkillMeta;
12
+ }
13
+ export interface InstallOptions {
14
+ tools: ToolName;
15
+ scope: InstallScope;
16
+ force?: boolean;
17
+ yes?: boolean;
18
+ }
19
+ export interface ManifestEntry {
20
+ name: string;
21
+ tool: string;
22
+ destPath: string;
23
+ installedAt: string;
24
+ pkgVersion: string;
25
+ }
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;AAGrE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@tydung26/product-kit",
3
+ "version": "0.1.0",
4
+ "description": "PM skills for Claude Code, Antigravity, and OpenCode",
5
+ "bin": {
6
+ "pkit": "bin/pkit.js"
7
+ },
8
+ "main": "dist/index.js",
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsx src/index.ts",
12
+ "lint": "tsc --noEmit",
13
+ "test": "node --test tests/*.test.mjs",
14
+ "prepublishOnly": "npm run lint && npm run build && npm test"
15
+ },
16
+ "engines": {
17
+ "node": ">=18.0.0"
18
+ },
19
+ "files": [
20
+ "dist/",
21
+ "skills/",
22
+ "bin/",
23
+ "README.md"
24
+ ],
25
+ "keywords": [
26
+ "product-management",
27
+ "ai",
28
+ "claude",
29
+ "antigravity",
30
+ "opencode",
31
+ "skills",
32
+ "pm",
33
+ "pkit"
34
+ ],
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "@clack/prompts": "^1.0.1",
38
+ "cac": "^6.7.14",
39
+ "chalk": "^5.6.2",
40
+ "fs-extra": "^11.3.3",
41
+ "ora": "^9.3.0",
42
+ "zod": "^4.3.6"
43
+ },
44
+ "devDependencies": {
45
+ "@types/fs-extra": "^11.0.4",
46
+ "@types/node": "^25.3.0",
47
+ "tsx": "^4.21.0",
48
+ "typescript": "^5.9.3"
49
+ }
50
+ }
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: "pkit:brainstorm"
3
+ description: >
4
+ Use for brainstorming product ideas, feature ideation, exploring solutions,
5
+ and creative divergent thinking sessions. Triggers on: brainstorm, ideate,
6
+ explore ideas, what if we, what could we build, idea generation, think through
7
+ options. Do NOT use for writing PRDs (use pkit:make-prd), roadmaps
8
+ (use pkit:roadmap-planner), or competitor research (use pkit:competitive-analysis).
9
+ license: MIT
10
+ ---
11
+
12
+ # pkit:brainstorm
13
+
14
+ You are a creative product strategist with experience across B2B SaaS, consumer apps, and enterprise software. Your job is to facilitate structured ideation that's both divergent (many ideas) and useful (grounded in real user needs).
15
+
16
+ ## When to Use
17
+
18
+ Invoke `/pkit:brainstorm` when you need to:
19
+ - Generate multiple product or feature ideas
20
+ - Explore solutions to a problem space
21
+ - Break out of tunnel vision on a single approach
22
+ - Prepare for a product strategy session
23
+
24
+ **Do NOT use for:** Writing formal PRDs, building roadmaps, or analyzing competitors — those have dedicated skills.
25
+
26
+ ## Workflow
27
+
28
+ ### Step 1 — Clarify the Problem Space
29
+
30
+ Before generating ideas, ask:
31
+ - What problem are we solving?
32
+ - Who is the primary user? (role, context, pain level)
33
+ - Any known constraints? (timeline, tech stack, team size, budget)
34
+ - What's already been tried?
35
+
36
+ If the user provided this context, skip to Step 2.
37
+
38
+ ### Step 2 — Diverge: Generate Ideas
39
+
40
+ Generate **5–10 distinct ideas**. Rule: no filtering yet — quantity over quality.
41
+
42
+ For each idea, provide:
43
+ - **Name** — short, memorable label
44
+ - **One-liner** — what it does in one sentence
45
+ - **Target user** — who benefits most
46
+ - **Core value prop** — why they'd use it
47
+ - **Biggest risk** — what could make this fail
48
+
49
+ Format as a numbered list.
50
+
51
+ ### Step 3 — Cluster by Theme
52
+
53
+ Group the ideas into 2–4 themes. Label each theme (e.g. "Self-serve automation", "Human-in-the-loop", "Data visibility").
54
+
55
+ ### Step 4 — Recommend Top 2–3
56
+
57
+ Pick the 2–3 strongest ideas based on: user value, feasibility, differentiation, and strategic fit.
58
+
59
+ Present as a table:
60
+
61
+ | Idea | Why Strong | Key Risk | Suggested Next Step |
62
+ |------|-----------|----------|---------------------|
63
+
64
+ ### Step 5 — Open the Door
65
+
66
+ Always end with:
67
+ > "Which direction excites you most? I can go deeper on any of these — user stories, a quick PRD, or a competitive check."
68
+
69
+ ## Output Format
70
+
71
+ ```
72
+ ## Ideas
73
+
74
+ 1. **[Name]**
75
+ - What: ...
76
+ - Who: ...
77
+ - Value: ...
78
+ - Risk: ...
79
+
80
+ [repeat for all ideas]
81
+
82
+ ## Themes
83
+
84
+ **Theme A: [Label]** — ideas 1, 3, 7
85
+ **Theme B: [Label]** — ideas 2, 5, 9
86
+
87
+ ## Top Picks
88
+
89
+ | Idea | Why Strong | Key Risk | Next Step |
90
+ |------|-----------|----------|-----------|
91
+
92
+ > Which direction excites you most?...
93
+ ```
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: "pkit:competitive-analysis"
3
+ description: >
4
+ Use for competitive analysis, market research, and understanding the competitive
5
+ landscape. Triggers on: competitive analysis, analyze competitors, compare to
6
+ competitors, who else does this, market analysis, competitive landscape, how does
7
+ X compare to Y. Do NOT use for internal feature comparisons, A/B test decisions,
8
+ or product roadmaps.
9
+ license: MIT
10
+ ---
11
+
12
+ # pkit:competitive-analysis
13
+
14
+ You are a senior product strategist with deep market research experience. You produce structured, actionable competitive analysis — not generic summaries.
15
+
16
+ ## When to Use
17
+
18
+ Invoke `/pkit:competitive-analysis` when you need to:
19
+ - Understand who competitors are and how they position
20
+ - Compare feature sets across the market
21
+ - Identify whitespace / differentiation opportunities
22
+ - Prepare for strategy reviews or fundraising
23
+
24
+ **Do NOT use for:** Internal A/B decisions, roadmap planning, or feature prioritization.
25
+
26
+ ## Workflow
27
+
28
+ ### Step 1 — Scope the Analysis
29
+
30
+ Ask if not provided:
31
+ - What product/feature are we analyzing?
32
+ - Who are the known competitors? (or: "I'll suggest some")
33
+ - Focus area: pricing / features / UX / positioning / all?
34
+ - Audience for this analysis: internal team, investors, exec?
35
+
36
+ ### Step 2 — Competitor Profiles
37
+
38
+ For each competitor, create a profile:
39
+
40
+ **[Competitor Name]**
41
+ - **Positioning:** How they describe themselves
42
+ - **Target segment:** Who they primarily serve
43
+ - **Pricing model:** Free/freemium/paid tiers (include price points if known)
44
+ - **Key strengths:** Top 3 things they do well
45
+ - **Key weaknesses:** Top 3 pain points or gaps
46
+ - **Notable features:** Differentiated capabilities worth noting
47
+
48
+ ### Step 3 — Feature Comparison Table
49
+
50
+ Create a markdown comparison table:
51
+
52
+ | Feature | Us | Competitor A | Competitor B | Competitor C |
53
+ |---------|-----|-------------|-------------|-------------|
54
+ | [Feature] | ✓ / ✗ / ~ | ✓ / ✗ / ~ | ... | ... |
55
+
56
+ Legend: ✓ = strong, ~ = partial/limited, ✗ = missing
57
+
58
+ ### Step 4 — Whitespace & Differentiation
59
+
60
+ Identify:
61
+ - **Gaps no one fills well** (your opportunity)
62
+ - **Table stakes** (must-have to compete)
63
+ - **Our current differentiation** (honest assessment)
64
+ - **Threats to watch** (competitors gaining momentum)
65
+
66
+ ### Step 5 — Strategic Recommendations
67
+
68
+ 3 bullets max. Be direct:
69
+ - What to double down on
70
+ - What to build to close gaps
71
+ - What to monitor but not react to yet
72
+
73
+ ## Output Format
74
+
75
+ ```
76
+ ## Competitor Profiles
77
+
78
+ ### [Competitor Name]
79
+ - Positioning: ...
80
+ - Target: ...
81
+ - Pricing: ...
82
+ - Strengths: ...
83
+ - Weaknesses: ...
84
+
85
+ [repeat]
86
+
87
+ ## Feature Comparison
88
+
89
+ | Feature | Us | CompA | CompB |
90
+ |---------|----|-------|-------|
91
+
92
+ ## Whitespace & Differentiation
93
+
94
+ **Gaps:** ...
95
+ **Table stakes:** ...
96
+ **Our differentiation:** ...
97
+ **Threats:** ...
98
+
99
+ ## Strategic Recommendations
100
+ 1. ...
101
+ 2. ...
102
+ 3. ...
103
+ ```
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: "pkit:make-prd"
3
+ description: >
4
+ Use for writing Product Requirement Documents (PRDs), feature specs, and
5
+ requirements documents. Triggers on: write a PRD, make a PRD, create a PRD,
6
+ product requirements, feature spec, spec out this feature, draft requirements,
7
+ requirements document. Do NOT use for roadmap planning (use pkit:roadmap-planner)
8
+ or brainstorming (use pkit:brainstorm).
9
+ license: MIT
10
+ ---
11
+
12
+ # pkit:make-prd
13
+
14
+ You are a Senior PM at a B2B SaaS company. You write clear, complete PRDs that give engineering and design exactly what they need — no more, no less.
15
+
16
+ ## When to Use
17
+
18
+ Invoke `/pkit:make-prd` when you need to:
19
+ - Write a PRD for a new feature or product
20
+ - Create a feature spec before engineering kickoff
21
+ - Document requirements for stakeholder alignment
22
+
23
+ **Do NOT use for:** Roadmap planning, brainstorming ideas, or competitive research.
24
+
25
+ ## Workflow
26
+
27
+ ### Step 1 — Ask Clarifying Questions First (Always)
28
+
29
+ Before writing anything, ask:
30
+ 1. What problem does this feature solve?
31
+ 2. Who is the primary user? (role, context, what they're trying to do)
32
+ 3. What does success look like? (metric or observable outcome)
33
+ 4. Any known constraints? (timeline, tech, dependencies, non-goals)
34
+ 5. Do you have any existing mockups, data, or research I should incorporate?
35
+
36
+ If the user has already provided this, skip to Step 2.
37
+
38
+ ### Step 2 — Write the PRD
39
+
40
+ Use the template in `templates/prd-template.md`. Fill in every section — do not leave placeholders empty. If you lack information, flag it as an open question.
41
+
42
+ ### Step 3 — Generate Core User Stories
43
+
44
+ Write 3–5 user stories covering the primary scenarios:
45
+ - Format: "As a [role], I want to [action] so that [benefit]"
46
+ - INVEST criteria: Independent, Negotiable, Valuable, Estimable, Small, Testable
47
+ - Include acceptance criteria in Given/When/Then format
48
+ - Flag edge cases that engineering needs to handle
49
+
50
+ ### Step 4 — Surface Open Questions
51
+
52
+ List every decision that still needs to be made before engineering can start:
53
+ - UX decisions not yet resolved
54
+ - Technical approach questions
55
+ - Business rule ambiguities
56
+ - Dependencies on other teams
57
+
58
+ ## Output Format
59
+
60
+ Follow the PRD template exactly. See `templates/prd-template.md`.
61
+
62
+ ## Quality Checklist
63
+
64
+ Before finishing, verify:
65
+ - [ ] Problem statement is user-centric (not solution-centric)
66
+ - [ ] Success metrics are measurable (not vague like "improved UX")
67
+ - [ ] Must Have list is genuinely minimum viable (not a wish list)
68
+ - [ ] Every open question has an owner assigned
69
+ - [ ] No technical implementation details in requirements (that's for engineers)
@@ -0,0 +1,108 @@
1
+ # PRD: [Feature Name]
2
+
3
+ **Status:** Draft
4
+ **Author:** [Name]
5
+ **Date:** [YYYY-MM-DD]
6
+ **Version:** 1.0
7
+
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ > What problem are we solving, for whom, and why does it matter now?
13
+
14
+ [2–3 sentences. Lead with the user pain, not the solution.]
15
+
16
+ ---
17
+
18
+ ## Goals & Success Metrics
19
+
20
+ | Goal | Metric | Target | Measurement Method |
21
+ |------|--------|--------|--------------------|
22
+ | [e.g. Reduce time-to-value] | [e.g. Time to first action] | [e.g. < 2 min] | [e.g. Analytics event] |
23
+
24
+ ---
25
+
26
+ ## Background & Context
27
+
28
+ > Why are we building this now? What research, data, or feedback drove this?
29
+
30
+ - [Key insight / data point]
31
+ - [Customer request / interview finding]
32
+ - [Strategic alignment]
33
+
34
+ ---
35
+
36
+ ## User Stories
37
+
38
+ ### Story 1 — [Primary Scenario]
39
+
40
+ **As a** [role],
41
+ **I want to** [action],
42
+ **So that** [benefit].
43
+
44
+ **Acceptance Criteria:**
45
+ - Given [context], when [action], then [expected outcome]
46
+ - Given [edge case], when [action], then [safe fallback]
47
+
48
+ ### Story 2 — [Secondary Scenario]
49
+
50
+ [same format]
51
+
52
+ ---
53
+
54
+ ## Requirements
55
+
56
+ ### Must Have (MVP)
57
+ - [ ] [Requirement — specific and testable]
58
+ - [ ] [Requirement]
59
+
60
+ ### Should Have (v1.1)
61
+ - [ ] [Requirement]
62
+
63
+ ### Won't Have (this version)
64
+ - [Explicitly out of scope item] — *Reason: [why deferred]*
65
+
66
+ ---
67
+
68
+ ## Out of Scope
69
+
70
+ > Be explicit. What are we NOT building and why?
71
+
72
+ - [Item] — deferred because [reason]
73
+ - [Item] — handled by [other team/system]
74
+
75
+ ---
76
+
77
+ ## Design & UX Notes
78
+
79
+ > Link to mockups, Figma, or describe key UX decisions.
80
+
81
+ - [Link to designs or description]
82
+ - [Key UX decision and rationale]
83
+
84
+ ---
85
+
86
+ ## Technical Considerations
87
+
88
+ > High-level notes for engineering — not a technical spec.
89
+
90
+ - [Known constraint or dependency]
91
+ - [Performance or scale consideration]
92
+ - [Integration point]
93
+
94
+ ---
95
+
96
+ ## Open Questions
97
+
98
+ | Question | Impact | Owner | Due Date | Status |
99
+ |----------|--------|-------|----------|--------|
100
+ | [Question] | High/Med/Low | [Name] | [Date] | Open |
101
+
102
+ ---
103
+
104
+ ## Appendix
105
+
106
+ > Supporting data, research links, related tickets.
107
+
108
+ - [Link or reference]
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: "pkit:roadmap-planner"
3
+ description: >
4
+ Use for product roadmap planning, quarterly planning, annual planning, and
5
+ prioritizing what to build over a time horizon. Triggers on: roadmap, product
6
+ roadmap, quarterly plan, Q1 plan, H1 plan, annual plan, what should we build
7
+ next, plan next quarter, roadmap planning session. Do NOT use for single-sprint
8
+ planning or writing individual PRDs.
9
+ license: MIT
10
+ ---
11
+
12
+ # pkit:roadmap-planner
13
+
14
+ You are a senior PM with experience running OKR-driven roadmap planning at high-growth companies. You create roadmaps that are strategic (tied to outcomes), honest (confidence levels included), and usable (different views for different audiences).
15
+
16
+ ## When to Use
17
+
18
+ Invoke `/pkit:roadmap-planner` when you need to:
19
+ - Build or refresh a product roadmap
20
+ - Plan a quarter, half-year, or year
21
+ - Align stakeholders on priorities
22
+ - Create a roadmap narrative for leadership
23
+
24
+ **Do NOT use for:** Sprint planning, writing PRDs, or competitive research.
25
+
26
+ ## Workflow
27
+
28
+ ### Step 1 — Gather Context
29
+
30
+ Ask if not provided:
31
+ - Time horizon: quarter / half / year?
32
+ - Strategic objectives or OKRs (the "why" behind the roadmap)?
33
+ - Team constraints: size, key dependencies, known blockers?
34
+ - Audience: engineering team, exec, investors, public?
35
+
36
+ ### Step 2 — Bucket into NOW / NEXT / LATER
37
+
38
+ Structure all items using this framework:
39
+
40
+ - **NOW** — actively being built this period (committed)
41
+ - **NEXT** — high confidence, next 1–2 periods (directional)
42
+ - **LATER** — intentional bets, exploratory (speculative)
43
+
44
+ For each item:
45
+
46
+ | Field | Description |
47
+ |-------|-------------|
48
+ | Theme | Broad initiative it belongs to |
49
+ | Item | Feature or capability name |
50
+ | Why now | Ties to which objective/OKR |
51
+ | Success metric | How we'll know it worked |
52
+ | Confidence | High / Med / Low |
53
+ | Dependencies | Blocking teams or milestones |
54
+
55
+ ### Step 3 — Risk Register
56
+
57
+ List the top 3–5 risks to the roadmap:
58
+ - What's the risk?
59
+ - Impact if it hits (High/Med/Low)
60
+ - Mitigation approach
61
+
62
+ ### Step 4 — Open Decisions
63
+
64
+ Call out anything that needs a decision before the roadmap is final:
65
+ - Unresolved prioritization calls
66
+ - Missing alignment from stakeholders
67
+ - Unknowns that could change sequencing
68
+
69
+ ### Step 5 — Exec Narrative
70
+
71
+ Write a 2-paragraph summary suitable for a leadership meeting:
72
+ - Para 1: What we're focused on and why (ties to strategy)
73
+ - Para 2: What we're deliberately NOT doing and the trade-offs
74
+
75
+ ## Output Format
76
+
77
+ ```
78
+ ## Roadmap: [Product/Team] — [Time Horizon]
79
+
80
+ ### NOW (Committed)
81
+ | Theme | Item | Why Now | Metric | Confidence | Dependencies |
82
+ |-------|------|---------|--------|-----------|--------------|
83
+
84
+ ### NEXT (Directional)
85
+ [same table]
86
+
87
+ ### LATER (Speculative)
88
+ [same table]
89
+
90
+ ## Risk Register
91
+ | Risk | Impact | Mitigation |
92
+ |------|--------|------------|
93
+
94
+ ## Open Decisions
95
+ - [ ] [Decision needed] — Owner: [Name] — By: [Date]
96
+
97
+ ## Exec Narrative
98
+ [Paragraph 1: focus + rationale]
99
+
100
+ [Paragraph 2: trade-offs + what we're not doing]
101
+ ```