@tydung26/product-kit 0.1.3 → 1.0.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/README.md CHANGED
@@ -15,7 +15,7 @@ pkit init # Interactive: pick tool + commands
15
15
  pkit init --yes # Install all commands to all tools
16
16
  pkit list # Show available/installed commands
17
17
  pkit update # Update all installed commands
18
- pkit remove pkit:brainstorm
18
+ pkit remove pkit:discover
19
19
  pkit config # View configuration
20
20
  pkit config set toolPaths.antigravity /custom/path
21
21
  pkit doctor # Diagnose installation issues
@@ -25,17 +25,17 @@ pkit doctor # Diagnose installation issues
25
25
 
26
26
  | Slash Command | Purpose |
27
27
  |---|---|
28
- | `/pkit:brainstorm` | Ideation → clustered ideas → top picks |
29
- | `/pkit:competitive-analysis` | Competitor profiles → feature matrix → whitespace |
30
- | `/pkit:roadmap-planner` | NOW/NEXT/LATER table → risk register → exec narrative |
31
- | `/pkit:make-prd` | Clarifying questions full PRDuser stories |
28
+ | `/pkit:discover` | Discoverycustomer slicing → clustered ideas → top picks |
29
+ | `/pkit:market-intel` | Competitor profiles → feature matrix → whitespace → strategic recs |
30
+ | `/pkit:roadmap` | NOW/NEXT/LATER table → risk register → exec narrative |
31
+ | `/pkit:product-design` | PRDbrand guidelinewireframes polished design |
32
32
 
33
33
  ## Install Paths
34
34
 
35
35
  | Tool | Global path |
36
36
  |---|---|
37
- | Claude Code + OpenCode | `~/.claude/commands/pkit/` |
38
- | Antigravity | `~/.gemini/antigravity/commands/pkit/` |
37
+ | Claude Code + OpenCode | `~/.claude/skills/` |
38
+ | Antigravity | `~/.gemini/antigravity/skills/` |
39
39
 
40
40
  ## License
41
41
 
@@ -45,7 +45,7 @@ function registerInstall(cli) {
45
45
  force: opts.force,
46
46
  yes: opts.yes,
47
47
  });
48
- (0, prompts_1.outro)('Done! Use /pkit:brainstorm (or other skill names) in your AI tool.');
48
+ (0, prompts_1.outro)('Done! Use /pkit:discover (or other skill names) in your AI tool.');
49
49
  });
50
50
  }
51
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":";;AAcA,0CA2CC;AAxDD,iDAA2D;AAC3D,6DAA2D;AAC3D,sDAAmG;AAWnG,SAAgB,eAAe,CAAC,GAAQ;IACtC,GAAG;SACA,OAAO,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAiB,EAAE,EAAE;QACpD,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,IAAA,6BAAmB,GAAE,IAAI,SAAS,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;YACpB,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBACtB,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,IAAA,4BAAa,EAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAgB;YACvB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,oEAAoE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":";;AAcA,0CA2CC;AAxDD,iDAA2D;AAC3D,6DAA2D;AAC3D,sDAAmG;AAWnG,SAAgB,eAAe,CAAC,GAAQ;IACtC,GAAG;SACA,OAAO,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAiB,EAAE,EAAE;QACpD,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,IAAA,6BAAmB,GAAE,IAAI,SAAS,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;YACpB,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBACtB,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,IAAA,4BAAa,EAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAgB;YACvB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,kEAAkE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA0BtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA2BtC"}
@@ -23,6 +23,7 @@ function registerUpdate(cli) {
23
23
  tools: opts.tool ?? 'all',
24
24
  scope: opts.scope,
25
25
  force: true,
26
+ toolOverride: !!opts.tool,
26
27
  });
27
28
  (0, prompts_1.outro)('Skills updated.');
28
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":";;AAQA,wCA0BC;AAjCD,6DAA8E;AAC9E,sDAAwD;AACxD,gDAA0C;AAK1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;SAC7E,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,YAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":";;AAQA,wCA2BC;AAlCD,6DAA8E;AAC9E,sDAAwD;AACxD,gDAA0C;AAK1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;SAC7E,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,YAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -2,6 +2,8 @@ import { getManifestEntries } from './manifest-manager';
2
2
  import type { InstallOptions } from '../../types';
3
3
  export declare function installSkills(names: string[], opts: InstallOptions): Promise<void>;
4
4
  export declare function removeSkills(names: string[]): Promise<void>;
5
- export declare function updateSkills(names: string[], opts: InstallOptions): Promise<void>;
5
+ export declare function updateSkills(names: string[], opts: InstallOptions & {
6
+ toolOverride?: boolean;
7
+ }): Promise<void>;
6
8
  export { getManifestEntries };
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWlD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAW5D,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAID,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BpH;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -109,8 +109,35 @@ async function removeSkills(names) {
109
109
  }
110
110
  }
111
111
  }
112
- // Update = reinstall with force, comparing pkg version
112
+ // Update skills using manifest-recorded tools (not blindly 'all').
113
+ // When --tool is explicitly passed, use that override instead.
113
114
  async function updateSkills(names, opts) {
114
- await installSkills(names, { ...opts, force: true });
115
+ // If user explicitly passed --tool, use it directly
116
+ if (opts.toolOverride) {
117
+ await installSkills(names, { ...opts, force: true });
118
+ return;
119
+ }
120
+ // Derive tools from manifest entries per skill
121
+ const entries = (0, manifest_manager_1.getManifestEntries)().filter(e => names.includes(e.name));
122
+ if (entries.length === 0) {
123
+ logger_1.log.warn('No matching manifest entries to update.');
124
+ return;
125
+ }
126
+ // Group by tool to batch reinstalls
127
+ const byTool = new Map();
128
+ for (const entry of entries) {
129
+ if (!byTool.has(entry.tool))
130
+ byTool.set(entry.tool, []);
131
+ const skillNames = byTool.get(entry.tool);
132
+ if (!skillNames.includes(entry.name))
133
+ skillNames.push(entry.name);
134
+ }
135
+ for (const [tool, skillNames] of byTool) {
136
+ await installSkills(skillNames, {
137
+ ...opts,
138
+ tools: tool,
139
+ force: true,
140
+ });
141
+ }
115
142
  }
116
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,mBAAmB,IAAI,KAAK,EAAE,CAoB7C;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D"}
1
+ {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,mBAAmB,IAAI,KAAK,EAAE,CAsB7C;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D"}
@@ -6,32 +6,35 @@ const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const paths_1 = require("../../shared/paths");
8
8
  const skill_validator_1 = require("./skill-validator");
9
- // Derives the slash-command name from a filename: "brainstorm.md" → "pkit:brainstorm"
10
- function fileNameToCommandName(filename) {
11
- return `pkit:${(0, path_1.basename)(filename, '.md')}`;
9
+ // Derives the slash-command name from a directory: "discover" → "pkit:discover"
10
+ function dirNameToCommandName(dirName) {
11
+ return `pkit:${dirName}`;
12
12
  }
13
- // Loads all commands from the bundled commands/pkit/ directory
13
+ // Loads all skills from skills/ directories (each dir contains a SKILL.md file)
14
14
  function loadAvailableSkills() {
15
15
  if (!(0, fs_1.existsSync)(paths_1.PACKAGE_COMMANDS_DIR))
16
16
  return [];
17
17
  const skills = [];
18
18
  const entries = (0, fs_1.readdirSync)(paths_1.PACKAGE_COMMANDS_DIR, { withFileTypes: true });
19
19
  for (const entry of entries) {
20
- if (!entry.isFile() || !entry.name.endsWith('.md'))
20
+ if (!entry.isDirectory())
21
+ continue;
22
+ // Look for SKILL.md inside each skill directory
23
+ const filePath = (0, path_1.join)(paths_1.PACKAGE_COMMANDS_DIR, entry.name, 'SKILL.md');
24
+ if (!(0, fs_1.existsSync)(filePath))
21
25
  continue;
22
- const filePath = (0, path_1.join)(paths_1.PACKAGE_COMMANDS_DIR, entry.name);
23
26
  try {
24
27
  const content = (0, fs_1.readFileSync)(filePath, 'utf8');
25
28
  const meta = (0, skill_validator_1.validateSkillContent)(content, filePath);
26
- skills.push({ name: fileNameToCommandName(entry.name), filePath, meta });
29
+ skills.push({ name: dirNameToCommandName(entry.name), filePath, meta });
27
30
  }
28
31
  catch {
29
- // Skip invalid command files silently in production
32
+ // Skip invalid skill files silently in production
30
33
  }
31
34
  }
32
35
  return skills;
33
36
  }
34
- // Find a single command by name (e.g. "pkit:brainstorm")
37
+ // Find a single skill by name (e.g. "pkit:discover")
35
38
  function findSkillByName(name) {
36
39
  return loadAvailableSkills().find(s => s.name === name);
37
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":";;AAYA,kDAoBC;AAGD,0CAEC;AArCD,2BAA2D;AAC3D,+BAAsC;AACtC,8CAA0D;AAC1D,uDAAyD;AAGzD,sFAAsF;AACtF,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,OAAO,QAAQ,IAAA,eAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,+DAA+D;AAC/D,SAAgB,mBAAmB;IACjC,IAAI,CAAC,IAAA,eAAU,EAAC,4BAAoB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,4BAAoB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,4BAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAA,sCAAoB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":";;AAYA,kDAsBC;AAGD,0CAEC;AAvCD,2BAA2D;AAC3D,+BAA4B;AAC5B,8CAA0D;AAC1D,uDAAyD;AAGzD,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,QAAQ,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAChF,SAAgB,mBAAmB;IACjC,IAAI,CAAC,IAAA,eAAU,EAAC,4BAAoB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,4BAAoB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,4BAAoB,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAA,sCAAoB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,QAAkD,CAAC;AAGpF,eAAO,MAAM,UAAU,QAAuC,CAAC;AAC/D,eAAO,MAAM,aAAa,QAAoC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAAkC,CAAC;AAG3D,eAAO,MAAM,kBAAkB;;;;CAOrB,CAAC;AAGX,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,QAAwC,CAAC;AAG1E,eAAO,MAAM,UAAU,QAAuC,CAAC;AAC/D,eAAO,MAAM,aAAa,QAAoC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAAkC,CAAC;AAG3D,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAGX,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC"}
@@ -4,25 +4,22 @@ exports.PROJECT_TOOL_SEGMENTS = exports.DEFAULT_TOOL_PATHS = exports.CONFIG_PATH
4
4
  const os_1 = require("os");
5
5
  const path_1 = require("path");
6
6
  const home = (0, os_1.homedir)();
7
- // Absolute path to the commands/pkit/ directory bundled in this npm package
8
- exports.PACKAGE_COMMANDS_DIR = (0, path_1.join)(__dirname, '..', '..', 'commands', 'pkit');
7
+ // Absolute path to the skills/ directory bundled in this npm package
8
+ exports.PACKAGE_COMMANDS_DIR = (0, path_1.join)(__dirname, '..', '..', 'skills');
9
9
  // Manifest + config storage
10
10
  exports.CONFIG_DIR = (0, path_1.join)(home, '.config', 'product-kit');
11
11
  exports.MANIFEST_PATH = (0, path_1.join)(exports.CONFIG_DIR, 'manifest.json');
12
12
  exports.CONFIG_PATH = (0, path_1.join)(exports.CONFIG_DIR, 'config.json');
13
- // Default install paths per tool (global scope) — commands go into commands/pkit/
13
+ // Default install paths per tool (global scope) — skills install to ~/.claude/skills/
14
14
  exports.DEFAULT_TOOL_PATHS = {
15
- // Claude Code + OpenCode both read ~/.claude/commands/
16
- claude: (0, path_1.join)(home, '.claude', 'commands', 'pkit'),
17
- // OpenCode shares the same path as Claude Code
18
- opencode: (0, path_1.join)(home, '.claude', 'commands', 'pkit'),
19
- // Antigravity uses a separate path (configurable)
20
- antigravity: (0, path_1.join)(home, '.gemini', 'antigravity', 'commands', 'pkit'),
15
+ claude: (0, path_1.join)(home, '.claude', 'skills'),
16
+ opencode: (0, path_1.join)(home, '.claude', 'skills'),
17
+ antigravity: (0, path_1.join)(home, '.gemini', 'antigravity', 'skills'),
21
18
  };
22
19
  // Project-scope path segments (joined with cwd at runtime in resolve-paths.ts)
23
20
  exports.PROJECT_TOOL_SEGMENTS = {
24
- claude: (0, path_1.join)('.claude', 'commands', 'pkit'),
25
- opencode: (0, path_1.join)('.claude', 'commands', 'pkit'),
26
- antigravity: (0, path_1.join)('.agent', 'commands', 'pkit'),
21
+ claude: (0, path_1.join)('.claude', 'skills'),
22
+ opencode: (0, path_1.join)('.claude', 'skills'),
23
+ antigravity: (0, path_1.join)('.agent', 'skills'),
27
24
  };
28
25
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":";;;AAAA,2BAA6B;AAC7B,+BAA4B;AAE5B,MAAM,IAAI,GAAG,IAAA,YAAO,GAAE,CAAC;AAEvB,4EAA4E;AAC/D,QAAA,oBAAoB,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAEpF,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,kFAAkF;AACrE,QAAA,kBAAkB,GAAG;IAChC,uDAAuD;IACvD,MAAM,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACjD,+CAA+C;IAC/C,QAAQ,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACnD,kDAAkD;IAClD,WAAW,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC;CAC7D,CAAC;AAEX,+EAA+E;AAClE,QAAA,qBAAqB,GAAG;IACnC,MAAM,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAC3C,QAAQ,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAC7C,WAAW,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;CACvC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":";;;AAAA,2BAA6B;AAC7B,+BAA4B;AAE5B,MAAM,IAAI,GAAG,IAAA,YAAO,GAAE,CAAC;AAEvB,qEAAqE;AACxD,QAAA,oBAAoB,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE1E,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,sFAAsF;AACzE,QAAA,kBAAkB,GAAG;IAChC,MAAM,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;IACvC,QAAQ,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;IACzC,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,SAAS,EAAE,QAAQ,CAAC;IACnC,WAAW,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tydung26/product-kit",
3
- "version": "0.1.3",
3
+ "version": "1.0.0",
4
4
  "description": "🧠 Product management skills kit",
5
5
  "bin": {
6
6
  "pkit": "bin/pkit.js"
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "files": [
20
20
  "dist/",
21
- "commands/",
21
+ "skills/",
22
22
  "bin/",
23
23
  "README.md"
24
24
  ],
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: "pkit:discover"
3
+ description: >
4
+ Use for product discovery, ideation, exploring solutions, and customer segment
5
+ slicing. Triggers on: discover, brainstorm, ideate, explore ideas, what if we,
6
+ what could we build, idea generation, think through options, who is the customer.
7
+ Do NOT use for writing PRDs (use pkit:product-design), roadmaps
8
+ (use pkit:roadmap), or market intel (use pkit:market-intel).
9
+ license: MIT
10
+ ---
11
+
12
+ # Discover - Structured Product Ideation
13
+
14
+ Divergent thinking → customer slicing → clustered themes → top picks with next steps.
15
+
16
+ **Principles:** Quantity over quality (diverge first) | Ground in real user needs | Be specific, not generic
17
+
18
+ ## Usage
19
+
20
+ ```
21
+ /pkit:discover <product/feature/problem-space>
22
+ ```
23
+
24
+ **Do NOT use for:** Writing PRDs (`/pkit:product-design`), roadmaps (`/pkit:roadmap`), or market intel (`/pkit:market-intel`).
25
+
26
+ ## Workflow Overview
27
+
28
+ ```
29
+ [Clarify Problem] → [Slice Customer Segment] → [Generate 5-10 Ideas] → [Cluster by Theme] → [Top 2-3 Picks] → [Next Steps]
30
+ ```
31
+
32
+ | Step | Action | Skip if |
33
+ | ------------ | ------------------------------------------ | ------------------------- |
34
+ | 1. Clarify | Ask problem/user/constraints/prior art | Context already provided |
35
+ | 2. Slice | Narrow customer segment via who-where test | Specific segment provided |
36
+ | 3. Diverge | Generate 5–10 ideas, no filtering | — |
37
+ | 4. Cluster | Group into 2–4 themes | — |
38
+ | 5. Recommend | Pick top 2–3, present as table | — |
39
+ | 6. Open door | Offer deeper dives | — |
40
+
41
+ ## Step Details
42
+
43
+ ### Step 1 — Clarify the Problem Space
44
+
45
+ Ask:
46
+
47
+ - What problem are we solving?
48
+ - Who is the primary user? (role, context, pain level)
49
+ - Any known constraints? (timeline, tech stack, team size, budget)
50
+ - What's already been tried?
51
+
52
+ ### Step 2 — Slice the Customer Segment
53
+
54
+ Narrow down **who** you're building for. Vague audience → vague ideas.
55
+
56
+ **Slicing questions (repeat until specific):**
57
+
58
+ 1. Within this customer group, who has the **strongest need**?
59
+ 2. Will **everyone** buy/use it, or only a subset?
60
+ 3. **Why** do they want this? Underlying motivation?
61
+ 4. Is there a **trigger or forcing function** driving them?
62
+ 5. What **other groups** share that same motivation?
63
+
64
+ **Two answer types:**
65
+
66
+ - **Demographic cluster** — role, company size, geography, etc.
67
+ - **Goal/motivation cluster** — shared objectives and pain drivers
68
+
69
+ **Keep slicing until you can answer both:**
70
+
71
+ - **Who** are they? (specific enough to describe a real person)
72
+ - **Where** do you find them? (channels, communities, platforms)
73
+
74
+ Can't answer "where"? Segment too broad — slice again.
75
+
76
+ **Pick focus using:** 1) Ability to pay & market size 2) Ease of reach 3) Personal energy
77
+
78
+ ### Step 3 — Diverge: Generate Ideas
79
+
80
+ Generate **5–10 distinct ideas**. No filtering yet.
81
+
82
+ Per idea: **Name** | **One-liner** | **Target user** | **Core value prop** | **Biggest risk**
83
+
84
+ ### Step 4 — Cluster by Theme
85
+
86
+ Group into 2–4 themes. Label each (e.g. "Self-serve automation", "Human-in-the-loop", "Data visibility").
87
+
88
+ ### Step 5 — Recommend Top 2–3
89
+
90
+ Pick strongest by: user value, feasibility, differentiation, strategic fit.
91
+
92
+ | Idea | Why Strong | Key Risk | Suggested Next Step |
93
+ | ---- | ---------- | -------- | ------------------- |
94
+
95
+ ### Step 6 — Open the Door
96
+
97
+ Always end with:
98
+
99
+ > "Which direction excites you most? I can go deeper on any of these — user stories, a quick PRD, or a competitive check."
100
+
101
+ ## Output Format
102
+
103
+ ```
104
+ ## Target Segment
105
+
106
+ **Who:** [specific persona]
107
+ **Where:** [channels/communities to reach them]
108
+ **Why them:** [motivation + ability to pay + reachability]
109
+
110
+ ## Ideas
111
+
112
+ 1. **[Name]**
113
+ - What: ...
114
+ - Who: ...
115
+ - Value: ...
116
+ - Risk: ...
117
+
118
+ [repeat for all ideas]
119
+
120
+ ## Themes
121
+
122
+ **Theme A: [Label]** — ideas 1, 3, 7
123
+ **Theme B: [Label]** — ideas 2, 5, 9
124
+
125
+ ## Top Picks
126
+
127
+ | Idea | Why Strong | Key Risk | Next Step |
128
+ |------|-----------|----------|-----------|
129
+
130
+ > Which direction excites you most?...
131
+ ```
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: "pkit:market-intel"
3
+ description: >
4
+ Use for competitive analysis, market research, and understanding the competitive
5
+ landscape. Triggers on: competitive analysis, market intel, analyze competitors,
6
+ compare to competitors, who else does this, market analysis, competitive landscape,
7
+ how does X compare to Y. Do NOT use for internal feature comparisons, A/B test
8
+ decisions, or product roadmaps.
9
+ license: MIT
10
+ ---
11
+
12
+ # Market Intel - Competitive Landscape Analysis
13
+
14
+ Scope → competitor profiles → feature matrix → whitespace mapping → strategic recommendations.
15
+
16
+ **Principles:** Be honest about strengths and gaps | Actionable recs over generic summaries | Evidence over opinion
17
+
18
+ ## Usage
19
+
20
+ ```
21
+ /pkit:market-intel <product/feature/market>
22
+ ```
23
+
24
+ **Do NOT use for:** Internal A/B decisions, roadmap planning (`/pkit:roadmap`), or feature prioritization.
25
+
26
+ ## Workflow Overview
27
+
28
+ ```
29
+ [Scope Analysis] → [Competitor Profiles] → [Feature Comparison] → [Whitespace & Differentiation] → [Strategic Recs]
30
+ ```
31
+
32
+ | Step | Action | Skip if |
33
+ | ------------- | -------------------------------------------- | ---------------- |
34
+ | 1. Scope | Define product, competitors, focus area | Context provided |
35
+ | 2. Profiles | Build competitor profiles | — |
36
+ | 3. Compare | Feature comparison matrix | — |
37
+ | 4. Whitespace | Gaps, table stakes, differentiation, threats | — |
38
+ | 5. Recommend | 3 strategic bullets | — |
39
+
40
+ ## Step Details
41
+
42
+ ### Step 1 — Scope the Analysis
43
+
44
+ Ask if not provided:
45
+
46
+ - What product/feature are we analyzing?
47
+ - Who are the known competitors? (or: "I'll suggest some")
48
+ - Focus area: pricing / features / UX / positioning / all?
49
+ - Audience for this analysis: internal team, investors, exec?
50
+
51
+ ### Step 2 — Competitor Profiles
52
+
53
+ For each competitor, create a profile:
54
+
55
+ **[Competitor Name]**
56
+
57
+ - **Positioning:** How they describe themselves
58
+ - **Target segment:** Who they primarily serve
59
+ - **Pricing model:** Free/freemium/paid tiers (include price points if known)
60
+ - **Key strengths:** Top 3 things they do well
61
+ - **Key weaknesses:** Top 3 pain points or gaps
62
+ - **Notable features:** Differentiated capabilities worth noting
63
+
64
+ ### Step 3 — Feature Comparison Table
65
+
66
+ Create a markdown comparison table:
67
+
68
+ | Feature | Us | Competitor A | Competitor B | Competitor C |
69
+ | --------- | --------- | ------------ | ------------ | ------------ |
70
+ | [Feature] | ✓ / ✗ / ~ | ✓ / ✗ / ~ | ... | ... |
71
+
72
+ Legend: ✓ = strong, ~ = partial/limited, ✗ = missing
73
+
74
+ ### Step 4 — Whitespace & Differentiation
75
+
76
+ Identify:
77
+
78
+ - **Gaps no one fills well** (your opportunity)
79
+ - **Table stakes** (must-have to compete)
80
+ - **Our current differentiation** (honest assessment)
81
+ - **Threats to watch** (competitors gaining momentum)
82
+
83
+ ### Step 5 — Strategic Recommendations
84
+
85
+ 3 bullets max. Be direct:
86
+
87
+ - What to double down on
88
+ - What to build to close gaps
89
+ - What to monitor but not react to yet
90
+
91
+ ## Output Format
92
+
93
+ ```
94
+ ## Competitor Profiles
95
+
96
+ ### [Competitor Name]
97
+ - Positioning: ...
98
+ - Target: ...
99
+ - Pricing: ...
100
+ - Strengths: ...
101
+ - Weaknesses: ...
102
+
103
+ [repeat]
104
+
105
+ ## Feature Comparison
106
+
107
+ | Feature | Us | CompA | CompB |
108
+ |---------|----|-------|-------|
109
+
110
+ ## Whitespace & Differentiation
111
+
112
+ **Gaps:** ...
113
+ **Table stakes:** ...
114
+ **Our differentiation:** ...
115
+ **Threats:** ...
116
+
117
+ ## Strategic Recommendations
118
+ 1. ...
119
+ 2. ...
120
+ 3. ...
121
+ ```
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: "pkit:product-design"
3
+ description: >
4
+ Use for product design workflow: PRD, brand guidelines, wireframes, moodboards,
5
+ and design refinement. Triggers on: write a PRD, make a PRD, product design,
6
+ brand guideline, design spec, feature spec, product requirements, design flow.
7
+ Do NOT use for roadmap planning (use pkit:roadmap)
8
+ or discovery/brainstorming (use pkit:discover).
9
+ license: MIT
10
+ ---
11
+
12
+ # Product Design - PRD to Polished Design
13
+
14
+ End-to-end product design pipeline: research → PRD → brand → wireframes → moodboard → final design.
15
+
16
+ **Principles:** User pain first, solution second | Be specific, flag unknowns | No implementation details in requirements
17
+
18
+ ## Usage
19
+
20
+ ```
21
+ /pkit:product-design <feature-name>
22
+ ```
23
+
24
+ **Do NOT use for:** Roadmap planning (`/pkit:roadmap`), discovery (`/pkit:discover`), or market intel (`/pkit:market-intel`).
25
+
26
+ ## Workflow Overview
27
+
28
+ ```
29
+ [Clarify] → [Write PRD] → [User Stories] → [Open Questions] → [Next Steps: Brand Guideline]
30
+ ```
31
+
32
+ | Step | Action | Skip if |
33
+ | ------------- | ----------------------------------------- | ---------------- |
34
+ | 1. Clarify | Ask problem/user/success/constraints | Context provided |
35
+ | 2. PRD | Write full PRD using template | — |
36
+ | 3. Stories | 3–5 user stories with acceptance criteria | — |
37
+ | 4. Questions | Surface all open decisions | — |
38
+ | 5. Next steps | Point to Brand Guideline as next step | — |
39
+
40
+ ## Step Details
41
+
42
+ ### Step 1 — Clarify (Always First)
43
+
44
+ Ask:
45
+
46
+ 1. What problem does this feature solve?
47
+ 2. Who is the primary user? (role, context, what they're trying to do)
48
+ 3. What does success look like? (metric or observable outcome)
49
+ 4. Any known constraints? (timeline, tech, dependencies, non-goals)
50
+ 5. Existing mockups, data, or research to incorporate?
51
+
52
+ ### Step 2 — Write the PRD
53
+
54
+ Use template below. Fill every section — no empty placeholders. Flag unknowns as open questions.
55
+
56
+ ### Step 3 — Generate Core User Stories
57
+
58
+ Write 3–5 user stories:
59
+
60
+ - Format: "As a [role], I want to [action] so that [benefit]"
61
+ - INVEST criteria: Independent, Negotiable, Valuable, Estimable, Small, Testable
62
+ - Acceptance criteria in Given/When/Then format
63
+ - Flag edge cases for engineering
64
+
65
+ ### Step 4 — Surface Open Questions
66
+
67
+ List every decision needed before engineering starts:
68
+
69
+ - UX decisions not yet resolved
70
+ - Technical approach questions
71
+ - Business rule ambiguities
72
+ - Dependencies on other teams
73
+
74
+ ### Step 5 — Point to Next Steps
75
+
76
+ Always end with:
77
+
78
+ > "PRD is done — Step 1 of 6 complete. Next: define your **Brand Guideline** (tone, colors, typography, spacing, icon/image style). Want me to draft one based on this PRD?"
79
+
80
+ ## Product Design Flow
81
+
82
+ The PRD is Step 1 of a 6-step pipeline from research to polished design:
83
+
84
+ ```
85
+ [1. PRD] → [2. Brand Guideline] → [3. Wireframes] → [4. Moodboard] → [5. Design] → [6. Refine]
86
+ ```
87
+
88
+ | Step | What | Output | Tool |
89
+ | ------------------ | ------------------------------------------------ | ----------------------------- | ---------------- |
90
+ | 1. Research & PRD | User needs, pain points, barriers | PRD document | This command |
91
+ | 2. Brand Guideline | Tone, colors, typography, spacing, icons, images | Brand Guideline doc | AI-assisted |
92
+ | 3. Wireframes | Feed PRD + Brand Guideline → generate screens | Layout wireframes (not final) | Google Stitch |
93
+ | 4. Inspiration | Browse references for specific components | Moodboard in Figma | Mobbin, Awwwards |
94
+ | 5. Design | Wireframe structure + Moodboard style | Final design | Figma |
95
+ | 6. Refine | Audit against Brand Guideline | Polished, consistent design | Manual review |
96
+
97
+ **Key rules:**
98
+
99
+ - Step 3 output = **wireframes only** — don't ship as final design
100
+ - Step 4 = search with intent (find references for specific components, not aimless browsing)
101
+ - Step 6 = check spacing, text sizes, components, colors match the guideline
102
+
103
+ ## Quality Checklist
104
+
105
+ - [ ] Problem statement is user-centric (not solution-centric)
106
+ - [ ] Success metrics are measurable (not vague like "improved UX")
107
+ - [ ] Must Have list is genuinely minimum viable (not a wish list)
108
+ - [ ] Every open question has an owner assigned
109
+ - [ ] No technical implementation details in requirements
110
+
111
+ ## PRD Template
112
+
113
+ See `templates/prd-template.md` for the full template.
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: "pkit:roadmap"
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
+ # Roadmap - OKR-Driven Product Planning
13
+
14
+ Context → NOW/NEXT/LATER bucketing → risk register → open decisions → exec narrative.
15
+
16
+ **Principles:** Tie everything to outcomes | Include confidence levels | Different views for different audiences
17
+
18
+ ## Usage
19
+
20
+ ```
21
+ /pkit:roadmap <product/team/time-horizon>
22
+ ```
23
+
24
+ **Do NOT use for:** Sprint planning, writing PRDs (`/pkit:product-design`), or market intel (`/pkit:market-intel`).
25
+
26
+ ## Workflow Overview
27
+
28
+ ```
29
+ [Gather Context] → [NOW/NEXT/LATER] → [Risk Register] → [Open Decisions] → [Exec Narrative]
30
+ ```
31
+
32
+ | Step | Action | Skip if |
33
+ | ------------ | ---------------------------------------- | ---------------- |
34
+ | 1. Context | Ask horizon, OKRs, constraints, audience | Context provided |
35
+ | 2. Bucket | NOW/NEXT/LATER with metrics + confidence | — |
36
+ | 3. Risks | Top 3–5 risks + mitigation | — |
37
+ | 4. Decisions | Unresolved calls blocking the roadmap | — |
38
+ | 5. Narrative | 2-paragraph exec summary | — |
39
+
40
+ ## Step Details
41
+
42
+ ### Step 1 — Gather Context
43
+
44
+ Ask if not provided:
45
+
46
+ - Time horizon: quarter / half / year?
47
+ - Strategic objectives or OKRs (the "why" behind the roadmap)?
48
+ - Team constraints: size, key dependencies, known blockers?
49
+ - Audience: engineering team, exec, investors, public?
50
+
51
+ ### Step 2 — Bucket into NOW / NEXT / LATER
52
+
53
+ Structure all items using this framework:
54
+
55
+ - **NOW** — actively being built this period (committed)
56
+ - **NEXT** — high confidence, next 1–2 periods (directional)
57
+ - **LATER** — intentional bets, exploratory (speculative)
58
+
59
+ For each item:
60
+
61
+ | Field | Description |
62
+ | -------------- | ------------------------------ |
63
+ | Theme | Broad initiative it belongs to |
64
+ | Item | Feature or capability name |
65
+ | Why now | Ties to which objective/OKR |
66
+ | Success metric | How we'll know it worked |
67
+ | Confidence | High / Med / Low |
68
+ | Dependencies | Blocking teams or milestones |
69
+
70
+ ### Step 3 — Risk Register
71
+
72
+ List the top 3–5 risks to the roadmap:
73
+
74
+ - What's the risk?
75
+ - Impact if it hits (High/Med/Low)
76
+ - Mitigation approach
77
+
78
+ ### Step 4 — Open Decisions
79
+
80
+ Call out anything that needs a decision before the roadmap is final:
81
+
82
+ - Unresolved prioritization calls
83
+ - Missing alignment from stakeholders
84
+ - Unknowns that could change sequencing
85
+
86
+ ### Step 5 — Exec Narrative
87
+
88
+ Write a 2-paragraph summary suitable for a leadership meeting:
89
+
90
+ - Para 1: What we're focused on and why (ties to strategy)
91
+ - Para 2: What we're deliberately NOT doing and the trade-offs
92
+
93
+ ## Output Format
94
+
95
+ ```
96
+ ## Roadmap: [Product/Team] — [Time Horizon]
97
+
98
+ ### NOW (Committed)
99
+ | Theme | Item | Why Now | Metric | Confidence | Dependencies |
100
+ |-------|------|---------|--------|-----------|--------------|
101
+
102
+ ### NEXT (Directional)
103
+ [same table]
104
+
105
+ ### LATER (Speculative)
106
+ [same table]
107
+
108
+ ## Risk Register
109
+ | Risk | Impact | Mitigation |
110
+ |------|--------|------------|
111
+
112
+ ## Open Decisions
113
+ - [ ] [Decision needed] — Owner: [Name] — By: [Date]
114
+
115
+ ## Exec Narrative
116
+ [Paragraph 1: focus + rationale]
117
+
118
+ [Paragraph 2: trade-offs + what we're not doing]
119
+ ```
@@ -1,90 +0,0 @@
1
- ---
2
- description: Ideation → clustered themes → top picks with risks and next steps
3
- argument-hint: <product/feature/problem-space>
4
- ---
5
-
6
- Brainstorm product ideas or solutions for the given topic.
7
- <task>$ARGUMENTS</task>
8
-
9
- ---
10
-
11
- 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).
12
-
13
- ## When to Use
14
-
15
- Invoke `/pkit:brainstorm` when you need to:
16
- - Generate multiple product or feature ideas
17
- - Explore solutions to a problem space
18
- - Break out of tunnel vision on a single approach
19
- - Prepare for a product strategy session
20
-
21
- **Do NOT use for:** Writing formal PRDs, building roadmaps, or analyzing competitors — those have dedicated commands.
22
-
23
- ## Workflow
24
-
25
- ### Step 1 — Clarify the Problem Space
26
-
27
- Before generating ideas, ask:
28
- - What problem are we solving?
29
- - Who is the primary user? (role, context, pain level)
30
- - Any known constraints? (timeline, tech stack, team size, budget)
31
- - What's already been tried?
32
-
33
- If the user provided this context, skip to Step 2.
34
-
35
- ### Step 2 — Diverge: Generate Ideas
36
-
37
- Generate **5–10 distinct ideas**. Rule: no filtering yet — quantity over quality.
38
-
39
- For each idea, provide:
40
- - **Name** — short, memorable label
41
- - **One-liner** — what it does in one sentence
42
- - **Target user** — who benefits most
43
- - **Core value prop** — why they'd use it
44
- - **Biggest risk** — what could make this fail
45
-
46
- Format as a numbered list.
47
-
48
- ### Step 3 — Cluster by Theme
49
-
50
- Group the ideas into 2–4 themes. Label each theme (e.g. "Self-serve automation", "Human-in-the-loop", "Data visibility").
51
-
52
- ### Step 4 — Recommend Top 2–3
53
-
54
- Pick the 2–3 strongest ideas based on: user value, feasibility, differentiation, and strategic fit.
55
-
56
- Present as a table:
57
-
58
- | Idea | Why Strong | Key Risk | Suggested Next Step |
59
- |------|-----------|----------|---------------------|
60
-
61
- ### Step 5 — Open the Door
62
-
63
- Always end with:
64
- > "Which direction excites you most? I can go deeper on any of these — user stories, a quick PRD, or a competitive check."
65
-
66
- ## Output Format
67
-
68
- ```
69
- ## Ideas
70
-
71
- 1. **[Name]**
72
- - What: ...
73
- - Who: ...
74
- - Value: ...
75
- - Risk: ...
76
-
77
- [repeat for all ideas]
78
-
79
- ## Themes
80
-
81
- **Theme A: [Label]** — ideas 1, 3, 7
82
- **Theme B: [Label]** — ideas 2, 5, 9
83
-
84
- ## Top Picks
85
-
86
- | Idea | Why Strong | Key Risk | Next Step |
87
- |------|-----------|----------|-----------|
88
-
89
- > Which direction excites you most?...
90
- ```
@@ -1,100 +0,0 @@
1
- ---
2
- description: Competitor profiles → feature matrix → whitespace opportunities
3
- argument-hint: <product/market> [focus-area]
4
- ---
5
-
6
- Run a structured competitive analysis for the given product or market.
7
- <task>$ARGUMENTS</task>
8
-
9
- ---
10
-
11
- You are a senior product strategist with deep market research experience. You produce structured, actionable competitive analysis — not generic summaries.
12
-
13
- ## When to Use
14
-
15
- Invoke `/pkit:competitive-analysis` when you need to:
16
- - Understand who competitors are and how they position
17
- - Compare feature sets across the market
18
- - Identify whitespace / differentiation opportunities
19
- - Prepare for strategy reviews or fundraising
20
-
21
- **Do NOT use for:** Internal A/B decisions, roadmap planning, or feature prioritization.
22
-
23
- ## Workflow
24
-
25
- ### Step 1 — Scope the Analysis
26
-
27
- Ask if not provided:
28
- - What product/feature are we analyzing?
29
- - Who are the known competitors? (or: "I'll suggest some")
30
- - Focus area: pricing / features / UX / positioning / all?
31
- - Audience for this analysis: internal team, investors, exec?
32
-
33
- ### Step 2 — Competitor Profiles
34
-
35
- For each competitor, create a profile:
36
-
37
- **[Competitor Name]**
38
- - **Positioning:** How they describe themselves
39
- - **Target segment:** Who they primarily serve
40
- - **Pricing model:** Free/freemium/paid tiers (include price points if known)
41
- - **Key strengths:** Top 3 things they do well
42
- - **Key weaknesses:** Top 3 pain points or gaps
43
- - **Notable features:** Differentiated capabilities worth noting
44
-
45
- ### Step 3 — Feature Comparison Table
46
-
47
- Create a markdown comparison table:
48
-
49
- | Feature | Us | Competitor A | Competitor B | Competitor C |
50
- |---------|-----|-------------|-------------|-------------|
51
- | [Feature] | ✓ / ✗ / ~ | ✓ / ✗ / ~ | ... | ... |
52
-
53
- Legend: ✓ = strong, ~ = partial/limited, ✗ = missing
54
-
55
- ### Step 4 — Whitespace & Differentiation
56
-
57
- Identify:
58
- - **Gaps no one fills well** (your opportunity)
59
- - **Table stakes** (must-have to compete)
60
- - **Our current differentiation** (honest assessment)
61
- - **Threats to watch** (competitors gaining momentum)
62
-
63
- ### Step 5 — Strategic Recommendations
64
-
65
- 3 bullets max. Be direct:
66
- - What to double down on
67
- - What to build to close gaps
68
- - What to monitor but not react to yet
69
-
70
- ## Output Format
71
-
72
- ```
73
- ## Competitor Profiles
74
-
75
- ### [Competitor Name]
76
- - Positioning: ...
77
- - Target: ...
78
- - Pricing: ...
79
- - Strengths: ...
80
- - Weaknesses: ...
81
-
82
- [repeat]
83
-
84
- ## Feature Comparison
85
-
86
- | Feature | Us | CompA | CompB |
87
- |---------|----|-------|-------|
88
-
89
- ## Whitespace & Differentiation
90
-
91
- **Gaps:** ...
92
- **Table stakes:** ...
93
- **Our differentiation:** ...
94
- **Threats:** ...
95
-
96
- ## Strategic Recommendations
97
- 1. ...
98
- 2. ...
99
- 3. ...
100
- ```
@@ -1,177 +0,0 @@
1
- ---
2
- description: Clarifying questions → full PRD → user stories with acceptance criteria
3
- argument-hint: <feature-name>
4
- ---
5
-
6
- Write a Product Requirements Document for the given feature.
7
- <task>$ARGUMENTS</task>
8
-
9
- ---
10
-
11
- 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.
12
-
13
- ## When to Use
14
-
15
- Invoke `/pkit:make-prd` when you need to:
16
- - Write a PRD for a new feature or product
17
- - Create a feature spec before engineering kickoff
18
- - Document requirements for stakeholder alignment
19
-
20
- **Do NOT use for:** Roadmap planning, brainstorming ideas, or competitive research.
21
-
22
- ## Workflow
23
-
24
- ### Step 1 — Ask Clarifying Questions First (Always)
25
-
26
- Before writing anything, ask:
27
- 1. What problem does this feature solve?
28
- 2. Who is the primary user? (role, context, what they're trying to do)
29
- 3. What does success look like? (metric or observable outcome)
30
- 4. Any known constraints? (timeline, tech, dependencies, non-goals)
31
- 5. Do you have any existing mockups, data, or research I should incorporate?
32
-
33
- If the user has already provided this, skip to Step 2.
34
-
35
- ### Step 2 — Write the PRD
36
-
37
- Use the PRD template below. Fill in every section — do not leave placeholders empty. If you lack information, flag it as an open question.
38
-
39
- ### Step 3 — Generate Core User Stories
40
-
41
- Write 3–5 user stories covering the primary scenarios:
42
- - Format: "As a [role], I want to [action] so that [benefit]"
43
- - INVEST criteria: Independent, Negotiable, Valuable, Estimable, Small, Testable
44
- - Include acceptance criteria in Given/When/Then format
45
- - Flag edge cases that engineering needs to handle
46
-
47
- ### Step 4 — Surface Open Questions
48
-
49
- List every decision that still needs to be made before engineering can start:
50
- - UX decisions not yet resolved
51
- - Technical approach questions
52
- - Business rule ambiguities
53
- - Dependencies on other teams
54
-
55
- ## Quality Checklist
56
-
57
- Before finishing, verify:
58
- - [ ] Problem statement is user-centric (not solution-centric)
59
- - [ ] Success metrics are measurable (not vague like "improved UX")
60
- - [ ] Must Have list is genuinely minimum viable (not a wish list)
61
- - [ ] Every open question has an owner assigned
62
- - [ ] No technical implementation details in requirements (that's for engineers)
63
-
64
- ---
65
-
66
- ## PRD Template
67
-
68
- ---
69
-
70
- # PRD: [Feature Name]
71
-
72
- **Status:** Draft
73
- **Author:** [Name]
74
- **Date:** [YYYY-MM-DD]
75
- **Version:** 1.0
76
-
77
- ---
78
-
79
- ## Problem
80
-
81
- > What problem are we solving, for whom, and why does it matter now?
82
-
83
- [2–3 sentences. Lead with the user pain, not the solution.]
84
-
85
- ---
86
-
87
- ## Goals & Success Metrics
88
-
89
- | Goal | Metric | Target | Measurement Method |
90
- |------|--------|--------|--------------------|
91
- | [e.g. Reduce time-to-value] | [e.g. Time to first action] | [e.g. < 2 min] | [e.g. Analytics event] |
92
-
93
- ---
94
-
95
- ## Background & Context
96
-
97
- > Why are we building this now? What research, data, or feedback drove this?
98
-
99
- - [Key insight / data point]
100
- - [Customer request / interview finding]
101
- - [Strategic alignment]
102
-
103
- ---
104
-
105
- ## User Stories
106
-
107
- ### Story 1 — [Primary Scenario]
108
-
109
- **As a** [role],
110
- **I want to** [action],
111
- **So that** [benefit].
112
-
113
- **Acceptance Criteria:**
114
- - Given [context], when [action], then [expected outcome]
115
- - Given [edge case], when [action], then [safe fallback]
116
-
117
- ### Story 2 — [Secondary Scenario]
118
-
119
- [same format]
120
-
121
- ---
122
-
123
- ## Requirements
124
-
125
- ### Must Have (MVP)
126
- - [ ] [Requirement — specific and testable]
127
- - [ ] [Requirement]
128
-
129
- ### Should Have (v1.1)
130
- - [ ] [Requirement]
131
-
132
- ### Won't Have (this version)
133
- - [Explicitly out of scope item] — *Reason: [why deferred]*
134
-
135
- ---
136
-
137
- ## Out of Scope
138
-
139
- > Be explicit. What are we NOT building and why?
140
-
141
- - [Item] — deferred because [reason]
142
- - [Item] — handled by [other team/system]
143
-
144
- ---
145
-
146
- ## Design & UX Notes
147
-
148
- > Link to mockups, Figma, or describe key UX decisions.
149
-
150
- - [Link to designs or description]
151
- - [Key UX decision and rationale]
152
-
153
- ---
154
-
155
- ## Technical Considerations
156
-
157
- > High-level notes for engineering — not a technical spec.
158
-
159
- - [Known constraint or dependency]
160
- - [Performance or scale consideration]
161
- - [Integration point]
162
-
163
- ---
164
-
165
- ## Open Questions
166
-
167
- | Question | Impact | Owner | Due Date | Status |
168
- |----------|--------|-------|----------|--------|
169
- | [Question] | High/Med/Low | [Name] | [Date] | Open |
170
-
171
- ---
172
-
173
- ## Appendix
174
-
175
- > Supporting data, research links, related tickets.
176
-
177
- - [Link or reference]
@@ -1,98 +0,0 @@
1
- ---
2
- description: NOW/NEXT/LATER roadmap → risk register → exec narrative
3
- argument-hint: <team/product> [time-horizon]
4
- ---
5
-
6
- Plan a product roadmap for the given team or product.
7
- <task>$ARGUMENTS</task>
8
-
9
- ---
10
-
11
- 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).
12
-
13
- ## When to Use
14
-
15
- Invoke `/pkit:roadmap-planner` when you need to:
16
- - Build or refresh a product roadmap
17
- - Plan a quarter, half-year, or year
18
- - Align stakeholders on priorities
19
- - Create a roadmap narrative for leadership
20
-
21
- **Do NOT use for:** Sprint planning, writing PRDs, or competitive research.
22
-
23
- ## Workflow
24
-
25
- ### Step 1 — Gather Context
26
-
27
- Ask if not provided:
28
- - Time horizon: quarter / half / year?
29
- - Strategic objectives or OKRs (the "why" behind the roadmap)?
30
- - Team constraints: size, key dependencies, known blockers?
31
- - Audience: engineering team, exec, investors, public?
32
-
33
- ### Step 2 — Bucket into NOW / NEXT / LATER
34
-
35
- Structure all items using this framework:
36
-
37
- - **NOW** — actively being built this period (committed)
38
- - **NEXT** — high confidence, next 1–2 periods (directional)
39
- - **LATER** — intentional bets, exploratory (speculative)
40
-
41
- For each item:
42
-
43
- | Field | Description |
44
- |-------|-------------|
45
- | Theme | Broad initiative it belongs to |
46
- | Item | Feature or capability name |
47
- | Why now | Ties to which objective/OKR |
48
- | Success metric | How we'll know it worked |
49
- | Confidence | High / Med / Low |
50
- | Dependencies | Blocking teams or milestones |
51
-
52
- ### Step 3 — Risk Register
53
-
54
- List the top 3–5 risks to the roadmap:
55
- - What's the risk?
56
- - Impact if it hits (High/Med/Low)
57
- - Mitigation approach
58
-
59
- ### Step 4 — Open Decisions
60
-
61
- Call out anything that needs a decision before the roadmap is final:
62
- - Unresolved prioritization calls
63
- - Missing alignment from stakeholders
64
- - Unknowns that could change sequencing
65
-
66
- ### Step 5 — Exec Narrative
67
-
68
- Write a 2-paragraph summary suitable for a leadership meeting:
69
- - Para 1: What we're focused on and why (ties to strategy)
70
- - Para 2: What we're deliberately NOT doing and the trade-offs
71
-
72
- ## Output Format
73
-
74
- ```
75
- ## Roadmap: [Product/Team] — [Time Horizon]
76
-
77
- ### NOW (Committed)
78
- | Theme | Item | Why Now | Metric | Confidence | Dependencies |
79
- |-------|------|---------|--------|-----------|--------------|
80
-
81
- ### NEXT (Directional)
82
- [same table]
83
-
84
- ### LATER (Speculative)
85
- [same table]
86
-
87
- ## Risk Register
88
- | Risk | Impact | Mitigation |
89
- |------|--------|------------|
90
-
91
- ## Open Decisions
92
- - [ ] [Decision needed] — Owner: [Name] — By: [Date]
93
-
94
- ## Exec Narrative
95
- [Paragraph 1: focus + rationale]
96
-
97
- [Paragraph 2: trade-offs + what we're not doing]
98
- ```