@assistkick/create 1.0.1 → 1.2.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 (176) hide show
  1. package/dist/src/scaffolder.d.ts +6 -1
  2. package/dist/src/scaffolder.js +20 -9
  3. package/dist/src/scaffolder.js.map +1 -1
  4. package/package.json +2 -2
  5. package/templates/{product-system → assistkick-product-system}/CLAUDE.md +4 -4
  6. package/templates/{product-system → assistkick-product-system}/package.json +5 -5
  7. package/templates/{product-system → assistkick-product-system}/packages/backend/package.json +2 -2
  8. package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/auth.ts +1 -1
  9. package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/coherence.ts +1 -1
  10. package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/graph.ts +3 -3
  11. package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/kanban.ts +2 -2
  12. package/templates/{product-system → assistkick-product-system}/packages/backend/src/server.ts +5 -5
  13. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/coherence-review.ts +4 -4
  14. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/init.ts +10 -10
  15. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/invitation_service.ts +1 -1
  16. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/password_reset_service.ts +1 -1
  17. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/project_service.ts +1 -1
  18. package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/user_management_service.ts +1 -1
  19. package/templates/{product-system → assistkick-product-system}/packages/frontend/package.json +1 -1
  20. package/templates/assistkick-product-system/packages/frontend/vite.config.ts +31 -0
  21. package/templates/{product-system → assistkick-product-system}/packages/shared/lib/db.ts +1 -1
  22. package/templates/{product-system → assistkick-product-system}/packages/shared/lib/prompt_builder.ts +2 -2
  23. package/templates/{product-system → assistkick-product-system}/packages/shared/package.json +1 -1
  24. package/templates/{product-system → assistkick-product-system}/tests/db_sqlite_fallback.test.ts +1 -1
  25. package/templates/skills/{product-bootstrap → assistkick-bootstrap}/SKILL.md +3 -3
  26. package/templates/skills/{product-code-reviewer → assistkick-code-reviewer}/SKILL.md +3 -3
  27. package/templates/skills/{product-debugger → assistkick-debugger}/SKILL.md +5 -5
  28. package/templates/skills/{product-developer → assistkick-developer}/SKILL.md +3 -3
  29. package/templates/skills/{product-interview → assistkick-interview}/SKILL.md +3 -3
  30. package/templates/product-system/packages/frontend/vite.config.ts +0 -20
  31. /package/templates/{product-system → assistkick-product-system}/.env.example +0 -0
  32. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/middleware/auth_middleware.test.ts +0 -0
  33. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/middleware/auth_middleware.ts +0 -0
  34. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/pipeline.ts +0 -0
  35. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/projects.ts +0 -0
  36. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/routes/users.ts +0 -0
  37. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/auth_service.test.ts +0 -0
  38. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/auth_service.ts +0 -0
  39. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/email_service.ts +0 -0
  40. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/invitation_service.test.ts +0 -0
  41. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/password_reset_service.test.ts +0 -0
  42. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/project_service.test.ts +0 -0
  43. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/pty_session_manager.test.ts +0 -0
  44. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/pty_session_manager.ts +0 -0
  45. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/terminal_ws_handler.ts +0 -0
  46. /package/templates/{product-system → assistkick-product-system}/packages/backend/src/services/user_management_service.test.ts +0 -0
  47. /package/templates/{product-system → assistkick-product-system}/packages/backend/tsconfig.json +0 -0
  48. /package/templates/{product-system → assistkick-product-system}/packages/frontend/index.html +0 -0
  49. /package/templates/{product-system → assistkick-product-system}/packages/frontend/package-lock.json +0 -0
  50. /package/templates/{product-system → assistkick-product-system}/packages/frontend/public/favicon.svg +0 -0
  51. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/App.tsx +0 -0
  52. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client.ts +0 -0
  53. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client_projects.test.ts +0 -0
  54. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/api/client_refresh.test.ts +0 -0
  55. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/CoherenceView.tsx +0 -0
  56. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphLegend.tsx +0 -0
  57. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphSettings.tsx +0 -0
  58. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/GraphView.tsx +0 -0
  59. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/InviteUserDialog.tsx +0 -0
  60. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/KanbanView.tsx +0 -0
  61. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/LoginPage.tsx +0 -0
  62. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/ProjectSelector.tsx +0 -0
  63. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/QaIssueSheet.tsx +0 -0
  64. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/SidePanel.tsx +0 -0
  65. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/TerminalView.tsx +0 -0
  66. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/Toolbar.tsx +0 -0
  67. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/components/UsersView.tsx +0 -0
  68. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/constants/graph.ts +0 -0
  69. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useAuth.tsx +0 -0
  70. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useGraph.ts +0 -0
  71. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useKanban.ts +0 -0
  72. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useProjects.ts +0 -0
  73. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useTheme.ts +0 -0
  74. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/useToast.tsx +0 -0
  75. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/hooks/use_projects_logic.test.ts +0 -0
  76. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/main.tsx +0 -0
  77. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/accept_invitation_page.tsx +0 -0
  78. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/forgot_password_page.tsx +0 -0
  79. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/register_page.tsx +0 -0
  80. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/pages/reset_password_page.tsx +0 -0
  81. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/ProtectedRoute.tsx +0 -0
  82. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/accept_invitation.tsx +0 -0
  83. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/dashboard.tsx +0 -0
  84. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/forgot_password.tsx +0 -0
  85. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/login.tsx +0 -0
  86. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/register.tsx +0 -0
  87. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/routes/reset_password.tsx +0 -0
  88. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/styles/index.css +0 -0
  89. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/auth_validation.test.ts +0 -0
  90. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/auth_validation.ts +0 -0
  91. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/login_validation.test.ts +0 -0
  92. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/login_validation.ts +0 -0
  93. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/logout.test.ts +0 -0
  94. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/node_sizing.test.ts +0 -0
  95. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/node_sizing.ts +0 -0
  96. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/task_status.test.ts +0 -0
  97. /package/templates/{product-system → assistkick-product-system}/packages/frontend/src/utils/task_status.ts +0 -0
  98. /package/templates/{product-system → assistkick-product-system}/packages/frontend/tsconfig.json +0 -0
  99. /package/templates/{product-system → assistkick-product-system}/packages/shared/.env.example +0 -0
  100. /package/templates/{product-system → assistkick-product-system}/packages/shared/README.md +0 -0
  101. /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrate.ts +0 -0
  102. /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrations/0000_dashing_gorgon.sql +0 -0
  103. /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrations/meta/0000_snapshot.json +0 -0
  104. /package/templates/{product-system → assistkick-product-system}/packages/shared/db/migrations/meta/_journal.json +0 -0
  105. /package/templates/{product-system → assistkick-product-system}/packages/shared/db/schema.ts +0 -0
  106. /package/templates/{product-system → assistkick-product-system}/packages/shared/drizzle.config.js +0 -0
  107. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/claude-service.ts +0 -0
  108. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/coherence.ts +0 -0
  109. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/completeness.ts +0 -0
  110. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/constants.ts +0 -0
  111. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/git_workflow.ts +0 -0
  112. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/graph.ts +0 -0
  113. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/kanban.ts +0 -0
  114. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/markdown.ts +0 -0
  115. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/pipeline-state-store.ts +0 -0
  116. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/pipeline.ts +0 -0
  117. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/relevance_search.ts +0 -0
  118. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/session.ts +0 -0
  119. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/validator.ts +0 -0
  120. /package/templates/{product-system → assistkick-product-system}/packages/shared/lib/work_summary_parser.ts +0 -0
  121. /package/templates/{product-system → assistkick-product-system}/packages/shared/scripts/assign-project.ts +0 -0
  122. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_edge.ts +0 -0
  123. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/add_node.ts +0 -0
  124. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/end_session.ts +0 -0
  125. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_gaps.ts +0 -0
  126. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_kanban.ts +0 -0
  127. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_node.ts +0 -0
  128. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/get_status.ts +0 -0
  129. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/migrate_to_turso.ts +0 -0
  130. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/move_card.ts +0 -0
  131. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/rebuild_index.ts +0 -0
  132. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_edge.ts +0 -0
  133. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/remove_node.ts +0 -0
  134. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/resolve_question.ts +0 -0
  135. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/search_nodes.ts +0 -0
  136. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/start_session.ts +0 -0
  137. /package/templates/{product-system → assistkick-product-system}/packages/shared/tools/update_node.ts +0 -0
  138. /package/templates/{product-system → assistkick-product-system}/packages/shared/tsconfig.json +0 -0
  139. /package/templates/{product-system → assistkick-product-system}/pnpm-workspace.yaml +0 -0
  140. /package/templates/{product-system → assistkick-product-system}/smoke_test.ts +0 -0
  141. /package/templates/{product-system → assistkick-product-system}/tests/coherence_review.test.ts +0 -0
  142. /package/templates/{product-system → assistkick-product-system}/tests/edge_type_color_coding.test.ts +0 -0
  143. /package/templates/{product-system → assistkick-product-system}/tests/emit-tool-use-events.test.ts +0 -0
  144. /package/templates/{product-system → assistkick-product-system}/tests/feature_kind.test.ts +0 -0
  145. /package/templates/{product-system → assistkick-product-system}/tests/gap_indicators.test.ts +0 -0
  146. /package/templates/{product-system → assistkick-product-system}/tests/graceful_init.test.ts +0 -0
  147. /package/templates/{product-system → assistkick-product-system}/tests/graph_legend.test.ts +0 -0
  148. /package/templates/{product-system → assistkick-product-system}/tests/graph_settings_sheet.test.ts +0 -0
  149. /package/templates/{product-system → assistkick-product-system}/tests/hide_defined_filter.test.ts +0 -0
  150. /package/templates/{product-system → assistkick-product-system}/tests/kanban.test.ts +0 -0
  151. /package/templates/{product-system → assistkick-product-system}/tests/neighborhood_focus.test.ts +0 -0
  152. /package/templates/{product-system → assistkick-product-system}/tests/node_search.test.ts +0 -0
  153. /package/templates/{product-system → assistkick-product-system}/tests/node_sizing.test.ts +0 -0
  154. /package/templates/{product-system → assistkick-product-system}/tests/node_type_toggle_filters.test.ts +0 -0
  155. /package/templates/{product-system → assistkick-product-system}/tests/node_type_visual_encoding.test.ts +0 -0
  156. /package/templates/{product-system → assistkick-product-system}/tests/pipeline-state-store.test.ts +0 -0
  157. /package/templates/{product-system → assistkick-product-system}/tests/pipeline-unit.test.ts +0 -0
  158. /package/templates/{product-system → assistkick-product-system}/tests/pipeline.test.ts +0 -0
  159. /package/templates/{product-system → assistkick-product-system}/tests/pipeline_stats_all_cards.test.ts +0 -0
  160. /package/templates/{product-system → assistkick-product-system}/tests/play_all.test.ts +0 -0
  161. /package/templates/{product-system → assistkick-product-system}/tests/qa_issue_sheet.test.ts +0 -0
  162. /package/templates/{product-system → assistkick-product-system}/tests/relevance_search.test.ts +0 -0
  163. /package/templates/{product-system → assistkick-product-system}/tests/search_reorder.test.ts +0 -0
  164. /package/templates/{product-system → assistkick-product-system}/tests/serve_ui.test.ts +0 -0
  165. /package/templates/{product-system → assistkick-product-system}/tests/serve_ui_drizzle.test.ts +0 -0
  166. /package/templates/{product-system → assistkick-product-system}/tests/session_context_recall.test.ts +0 -0
  167. /package/templates/{product-system → assistkick-product-system}/tests/side_panel.test.ts +0 -0
  168. /package/templates/{product-system → assistkick-product-system}/tests/spec_completeness_label.test.ts +0 -0
  169. /package/templates/{product-system → assistkick-product-system}/tests/url_routing_test.ts +0 -0
  170. /package/templates/{product-system → assistkick-product-system}/tests/user_login.test.ts +0 -0
  171. /package/templates/{product-system → assistkick-product-system}/tests/user_registration.test.ts +0 -0
  172. /package/templates/{product-system → assistkick-product-system}/tests/web_terminal.test.ts +0 -0
  173. /package/templates/{product-system → assistkick-product-system}/tests/work_summary.test.ts +0 -0
  174. /package/templates/{product-system → assistkick-product-system}/tests/zoom_pan.test.ts +0 -0
  175. /package/templates/{product-system → assistkick-product-system}/tsconfig.json +0 -0
  176. /package/templates/skills/{product-debugger → assistkick-debugger}/references/agent-browser.md +0 -0
@@ -5,6 +5,10 @@ type DbConfig = {
5
5
  url: string;
6
6
  authToken: string;
7
7
  };
8
+ type PortConfig = {
9
+ backendPort: number;
10
+ frontendPort: number;
11
+ };
8
12
  export type PromptFn = (question: string) => Promise<string>;
9
13
  export declare class Scaffolder {
10
14
  private readonly targetDir;
@@ -14,9 +18,10 @@ export declare class Scaffolder {
14
18
  run: () => Promise<void>;
15
19
  private checkPnpm;
16
20
  private promptDbConfig;
21
+ private promptPortConfig;
17
22
  private scaffoldProductSystem;
18
23
  private scaffoldSkills;
19
24
  skillHasModifications: (sourceDir: string, targetDir: string) => boolean;
20
- generateEnv: (productSystemDir: string, dbConfig: DbConfig) => void;
25
+ generateEnv: (productSystemDir: string, dbConfig: DbConfig, portConfig: PortConfig) => void;
21
26
  }
22
27
  export {};
@@ -17,27 +17,29 @@ export class Scaffolder {
17
17
  }
18
18
  run = async () => {
19
19
  this.checkPnpm();
20
- const productSystemTarget = join(this.targetDir, 'product-system');
20
+ const productSystemTarget = join(this.targetDir, 'assistkick-product-system');
21
21
  const skillsTarget = join(this.targetDir, '.claude', 'skills');
22
22
  const isRerun = existsSync(productSystemTarget);
23
23
  let dbConfig = null;
24
+ let portConfig = null;
24
25
  if (isRerun) {
25
- console.log('product-system/ already exists. Updating code, preserving data/ and .env...');
26
+ console.log('assistkick-product-system/ already exists. Updating code, preserving data/ and .env...');
26
27
  }
27
28
  else {
28
29
  dbConfig = await this.promptDbConfig();
30
+ portConfig = await this.promptPortConfig();
29
31
  }
30
32
  this.scaffoldProductSystem(productSystemTarget);
31
33
  await this.scaffoldSkills(skillsTarget, isRerun);
32
- if (!isRerun && dbConfig) {
33
- this.generateEnv(productSystemTarget, dbConfig);
34
+ if (!isRerun && dbConfig && portConfig) {
35
+ this.generateEnv(productSystemTarget, dbConfig, portConfig);
34
36
  }
35
37
  console.log('\nRunning pnpm install...');
36
38
  execSync('pnpm install', { cwd: productSystemTarget, stdio: 'inherit' });
37
39
  console.log('\nRunning db:migrate...');
38
40
  execSync('pnpm db:migrate', { cwd: productSystemTarget, stdio: 'inherit' });
39
- console.log('\nproduct-system is ready!');
40
- console.log(' cd product-system && pnpm dev');
41
+ console.log('\nassistkick-product-system is ready!');
42
+ console.log(' cd assistkick-product-system && pnpm dev');
41
43
  };
42
44
  checkPnpm = () => {
43
45
  try {
@@ -61,8 +63,16 @@ export class Scaffolder {
61
63
  }
62
64
  return { type: 'local' };
63
65
  };
66
+ promptPortConfig = async () => {
67
+ console.log('\nPort configuration:');
68
+ const backendInput = await this.prompt('Backend port [default=3000]: ');
69
+ const frontendInput = await this.prompt('Frontend port [default=5173]: ');
70
+ const backendPort = backendInput.trim() ? parseInt(backendInput.trim(), 10) : 3000;
71
+ const frontendPort = frontendInput.trim() ? parseInt(frontendInput.trim(), 10) : 5173;
72
+ return { backendPort, frontendPort };
73
+ };
64
74
  scaffoldProductSystem = (targetDir) => {
65
- const sourceDir = join(this.templatesDir, 'product-system');
75
+ const sourceDir = join(this.templatesDir, 'assistkick-product-system');
66
76
  mkdirSync(targetDir, { recursive: true });
67
77
  cpSync(sourceDir, targetDir, {
68
78
  recursive: true,
@@ -72,7 +82,7 @@ export class Scaffolder {
72
82
  return base !== 'node_modules';
73
83
  },
74
84
  });
75
- console.log('Scaffolded product-system/');
85
+ console.log('Scaffolded assistkick-product-system/');
76
86
  };
77
87
  scaffoldSkills = async (targetDir, isRerun) => {
78
88
  const sourceSkillsDir = join(this.templatesDir, 'skills');
@@ -105,7 +115,7 @@ export class Scaffolder {
105
115
  return false;
106
116
  return readFileSync(sourceFile, 'utf-8') !== readFileSync(targetFile, 'utf-8');
107
117
  };
108
- generateEnv = (productSystemDir, dbConfig) => {
118
+ generateEnv = (productSystemDir, dbConfig, portConfig) => {
109
119
  const lines = [];
110
120
  if (dbConfig.type === 'local') {
111
121
  lines.push('# Database — local SQLite', '# The database file is created automatically at data/local.db', '# To upgrade to Turso, uncomment and fill in the variables below:', '#TURSO_DATABASE_URL=libsql://your-db.turso.io', '#TURSO_AUTH_TOKEN=your-token', '');
@@ -113,6 +123,7 @@ export class Scaffolder {
113
123
  else {
114
124
  lines.push('# Database — Turso cloud', `TURSO_DATABASE_URL=${dbConfig.url}`, `TURSO_AUTH_TOKEN=${dbConfig.authToken}`, '');
115
125
  }
126
+ lines.push('# Ports', `PORT=${portConfig.backendPort}`, `FRONTEND_PORT=${portConfig.frontendPort}`, '');
116
127
  writeFileSync(join(productSystemDir, '.env'), lines.join('\n'));
117
128
  console.log('Generated .env');
118
129
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/scaffolder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/scaffolder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@assistkick/create",
3
- "version": "1.0.1",
4
- "description": "Scaffold the product-system into any project",
3
+ "version": "1.2.0",
4
+ "description": "Scaffold assistkick-product-system into any project",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "@assistkick/create": "./dist/bin/create.js"
@@ -15,11 +15,11 @@ AI requirements interview system that builds a specification knowledge graph thr
15
15
  ## Project Structure
16
16
 
17
17
  ```
18
- product-system/
18
+ assistkick-product-system/
19
19
  packages/
20
- backend/ — Express API server (@interview-system/backend)
21
- frontend/ — React SPA (@interview-system/frontend)
22
- shared/ — DB schema, migrations, shared types (@interview-system/shared)
20
+ backend/ — Express API server (@assistkick/backend)
21
+ frontend/ — React SPA (@assistkick/frontend)
22
+ shared/ — DB schema, migrations, shared types (@assistkick/shared)
23
23
  ```
24
24
 
25
25
  ## Commands
@@ -1,18 +1,18 @@
1
1
  {
2
- "name": "interview-system",
2
+ "name": "assistkick",
3
3
  "version": "1.0.0",
4
4
  "description": "AI requirements interview system — builds a specification knowledge graph through structured interviews",
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "scripts": {
8
- "dev": "concurrently -n backend,frontend -c blue,green \"pnpm --filter @interview-system/backend dev\" \"pnpm --filter @interview-system/frontend dev\"",
8
+ "dev": "concurrently -n backend,frontend -c blue,green \"pnpm --filter @assistkick/backend dev\" \"pnpm --filter @assistkick/frontend dev\"",
9
9
  "build": "pnpm -r build",
10
10
  "start": "tsx packages/backend/src/server.ts",
11
11
  "test": "tsx --test tests/**/*.test.ts",
12
12
  "clean": "pnpm -r clean",
13
- "db:migrate": "pnpm --filter @interview-system/shared db:migrate",
14
- "db:rollback": "pnpm --filter @interview-system/shared db:rollback",
15
- "db:generate": "pnpm --filter @interview-system/shared db:generate"
13
+ "db:migrate": "pnpm --filter @assistkick/shared db:migrate",
14
+ "db:rollback": "pnpm --filter @assistkick/shared db:rollback",
15
+ "db:generate": "pnpm --filter @assistkick/shared db:generate"
16
16
  },
17
17
  "pnpm": {
18
18
  "onlyBuiltDependencies": ["esbuild", "node-pty"]
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@interview-system/backend",
2
+ "name": "@assistkick/backend",
3
3
  "version": "1.0.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -11,7 +11,7 @@
11
11
  "postinstall": "chmod +x node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper 2>/dev/null || true"
12
12
  },
13
13
  "dependencies": {
14
- "@interview-system/shared": "workspace:*",
14
+ "@assistkick/shared": "workspace:*",
15
15
  "bcryptjs": "^3.0.3",
16
16
  "cookie-parser": "^1.4.7",
17
17
  "cors": "^2.8.5",
@@ -8,7 +8,7 @@
8
8
  import { Router } from 'express';
9
9
  import { eq, count } from 'drizzle-orm';
10
10
  import { randomUUID } from 'node:crypto';
11
- import { users, refreshTokens } from '@interview-system/shared/db/schema.js';
11
+ import { users, refreshTokens } from '@assistkick/shared/db/schema.js';
12
12
  import type { AuthService } from '../services/auth_service.js';
13
13
  import type { PasswordResetService } from '../services/password_reset_service.js';
14
14
  import type { InvitationService } from '../services/invitation_service.js';
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { Router } from 'express';
6
- import { detectConflicts } from '@interview-system/shared/lib/coherence.js';
6
+ import { detectConflicts } from '@assistkick/shared/lib/coherence.js';
7
7
  import { log } from '../services/init.js';
8
8
  import {
9
9
  coherenceRunning,
@@ -5,9 +5,9 @@
5
5
  import {Router} from 'express';
6
6
  import {readFile} from 'node:fs/promises';
7
7
  import {join} from 'node:path';
8
- import {readGraph} from '@interview-system/shared/lib/graph.js';
9
- import {getDb} from '@interview-system/shared/lib/db.js';
10
- import {nodes} from '@interview-system/shared/db/schema.js';
8
+ import {readGraph} from '@assistkick/shared/lib/graph.js';
9
+ import {getDb} from '@assistkick/shared/lib/db.js';
10
+ import {nodes} from '@assistkick/shared/db/schema.js';
11
11
  import {eq} from 'drizzle-orm';
12
12
  import matter from 'gray-matter';
13
13
  import {log, paths} from '../services/init.js';
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { Router } from 'express';
6
6
  import { randomUUID } from 'node:crypto';
7
- import { readGraph } from '@interview-system/shared/lib/graph.js';
8
- import { loadKanban, getKanbanEntry, saveKanbanEntry } from '@interview-system/shared/lib/kanban.js';
7
+ import { readGraph } from '@assistkick/shared/lib/graph.js';
8
+ import { loadKanban, getKanbanEntry, saveKanbanEntry } from '@assistkick/shared/lib/kanban.js';
9
9
  import { log, pipeline } from '../services/init.js';
10
10
 
11
11
  const router: Router = Router();
@@ -29,14 +29,14 @@ import { AuthMiddleware } from './middleware/auth_middleware.js';
29
29
  import { createAuthRoutes } from './routes/auth.js';
30
30
  import { createUserRoutes } from './routes/users.js';
31
31
  import { createProjectRoutes } from './routes/projects.js';
32
- import { getDb } from '@interview-system/shared/lib/db.js';
32
+ import { getDb } from '@assistkick/shared/lib/db.js';
33
33
  import graphRoutes from './routes/graph.js';
34
34
  import kanbanRoutes from './routes/kanban.js';
35
35
  import pipelineRoutes from './routes/pipeline.js';
36
36
  import coherenceRoutes from './routes/coherence.js';
37
37
 
38
38
  const __dirname = dirname(fileURLToPath(import.meta.url));
39
- const DEFAULT_PORT = 3000;
39
+ const DEFAULT_PORT = parseInt(process.env.PORT || '3000', 10);
40
40
 
41
41
  const parseArgs = (argv: string[]) => {
42
42
  const args = { port: DEFAULT_PORT, verbose: false };
@@ -80,7 +80,7 @@ const jwtSecret = process.env.JWT_SECRET || 'dev-secret-change-in-production';
80
80
  const isProduction = process.env.NODE_ENV === 'production';
81
81
  const authService = new AuthService({ jwtSecret, isProduction });
82
82
  const resendApiKey = process.env.RESEND_API_KEY || '';
83
- const appBaseUrl = process.env.APP_BASE_URL || 'https://product-system.localhost';
83
+ const appBaseUrl = process.env.APP_BASE_URL || 'https://assistkick.localhost';
84
84
  const emailFromAddress = process.env.EMAIL_FROM || 'noreply@example.com';
85
85
  const emailService = new EmailService({ apiKey: resendApiKey, fromAddress: emailFromAddress });
86
86
  const passwordResetService = new PasswordResetService({ getDb, emailService, authService, appBaseUrl, log });
@@ -130,7 +130,7 @@ const server = createServer(app);
130
130
 
131
131
  // Set up WebSocket for terminal
132
132
  const wss = new WebSocketServer({ noServer: true });
133
- // Resolve project root: from packages/backend/src → product-system → repo root
133
+ // Resolve project root: from packages/backend/src → assistkick-product-system → repo root
134
134
  const PROJECT_ROOT = join(__dirname, '..', '..', '..', '..');
135
135
  const ptyManager = new PtySessionManager({ spawn: pty.spawn, log, projectRoot: PROJECT_ROOT });
136
136
  const terminalHandler = new TerminalWsHandler({ wss, authService, ptyManager, log });
@@ -152,7 +152,7 @@ server.listen(args.port, () => {
152
152
  if (existsSync(FRONTEND_DIST)) {
153
153
  log('SERVER', `Serving frontend from ${FRONTEND_DIST}`);
154
154
  } else {
155
- log('SERVER', `No frontend dist found — run "pnpm --filter @interview-system/frontend build" first, or use dev mode`);
155
+ log('SERVER', `No frontend dist found — run "pnpm --filter @assistkick/frontend build" first, or use dev mode`);
156
156
  }
157
157
  });
158
158
 
@@ -4,10 +4,10 @@
4
4
 
5
5
  import { join } from 'node:path';
6
6
  import { randomUUID } from 'node:crypto';
7
- import { readGraph, removeEdge as removeEdgeDb, patchNode as patchNodeDb } from '@interview-system/shared/lib/graph.js';
8
- import { loadCoherence, saveCoherence, getDismissalKey, sortProposals } from '@interview-system/shared/lib/coherence.js';
9
- import { getDb } from '@interview-system/shared/lib/db.js';
10
- import { nodes } from '@interview-system/shared/db/schema.js';
7
+ import { readGraph, removeEdge as removeEdgeDb, patchNode as patchNodeDb } from '@assistkick/shared/lib/graph.js';
8
+ import { loadCoherence, saveCoherence, getDismissalKey, sortProposals } from '@assistkick/shared/lib/coherence.js';
9
+ import { getDb } from '@assistkick/shared/lib/db.js';
10
+ import { nodes } from '@assistkick/shared/db/schema.js';
11
11
  import { eq } from 'drizzle-orm';
12
12
  import { claudeService, paths, log } from './init.js';
13
13
 
@@ -6,18 +6,18 @@
6
6
  import { join, dirname } from 'node:path';
7
7
  import { fileURLToPath } from 'node:url';
8
8
  import { existsSync } from 'node:fs';
9
- import { createClaudeService } from '@interview-system/shared/lib/claude-service.js';
10
- import { Pipeline } from '@interview-system/shared/lib/pipeline.js';
11
- import { PipelineStateStore } from '@interview-system/shared/lib/pipeline-state-store.js';
12
- import { PromptBuilder } from '@interview-system/shared/lib/prompt_builder.js';
13
- import { GitWorkflow } from '@interview-system/shared/lib/git_workflow.js';
14
- import { getDb } from '@interview-system/shared/lib/db.js';
15
- import { getKanbanEntry, saveKanbanEntry } from '@interview-system/shared/lib/kanban.js';
16
- import { getNode } from '@interview-system/shared/lib/graph.js';
17
- import { WorkSummaryParser } from '@interview-system/shared/lib/work_summary_parser.js';
9
+ import { createClaudeService } from '@assistkick/shared/lib/claude-service.js';
10
+ import { Pipeline } from '@assistkick/shared/lib/pipeline.js';
11
+ import { PipelineStateStore } from '@assistkick/shared/lib/pipeline-state-store.js';
12
+ import { PromptBuilder } from '@assistkick/shared/lib/prompt_builder.js';
13
+ import { GitWorkflow } from '@assistkick/shared/lib/git_workflow.js';
14
+ import { getDb } from '@assistkick/shared/lib/db.js';
15
+ import { getKanbanEntry, saveKanbanEntry } from '@assistkick/shared/lib/kanban.js';
16
+ import { getNode } from '@assistkick/shared/lib/graph.js';
17
+ import { WorkSummaryParser } from '@assistkick/shared/lib/work_summary_parser.js';
18
18
 
19
19
  const __dirname = dirname(fileURLToPath(import.meta.url));
20
- // Navigate from packages/backend/src/services/ up to product-system/
20
+ // Navigate from packages/backend/src/services/ up to assistkick-product-system/
21
21
  const SKILL_ROOT = join(__dirname, '..', '..', '..', '..');
22
22
  const SHARED_DIR = join(SKILL_ROOT, 'packages', 'shared');
23
23
 
@@ -6,7 +6,7 @@
6
6
  import { randomBytes, randomUUID } from 'node:crypto';
7
7
  import { hash, compare } from 'bcryptjs';
8
8
  import { eq } from 'drizzle-orm';
9
- import { users, invitations } from '@interview-system/shared/db/schema.js';
9
+ import { users, invitations } from '@assistkick/shared/db/schema.js';
10
10
  import type { EmailService } from './email_service.js';
11
11
  import type { AuthService } from './auth_service.js';
12
12
 
@@ -6,7 +6,7 @@
6
6
  import { randomBytes, randomUUID } from 'node:crypto';
7
7
  import { hash, compare } from 'bcryptjs';
8
8
  import { eq, and } from 'drizzle-orm';
9
- import { users, passwordResetTokens } from '@interview-system/shared/db/schema.js';
9
+ import { users, passwordResetTokens } from '@assistkick/shared/db/schema.js';
10
10
  import type { EmailService } from './email_service.js';
11
11
  import type { AuthService } from './auth_service.js';
12
12
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { eq, isNull } from 'drizzle-orm';
7
- import { projects, nodes, edges, kanban, sessions } from '@interview-system/shared/db/schema.js';
7
+ import { projects, nodes, edges, kanban, sessions } from '@assistkick/shared/db/schema.js';
8
8
  import { randomBytes } from 'node:crypto';
9
9
 
10
10
  interface ProjectServiceDeps {
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { eq, ne } from 'drizzle-orm';
6
- import { users, invitations, refreshTokens } from '@interview-system/shared/db/schema.js';
6
+ import { users, invitations, refreshTokens } from '@assistkick/shared/db/schema.js';
7
7
 
8
8
  interface UserManagementServiceDeps {
9
9
  getDb: () => any;
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@interview-system/frontend",
2
+ "name": "@assistkick/frontend",
3
3
  "version": "1.0.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -0,0 +1,31 @@
1
+ import { defineConfig, loadEnv } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { dirname, resolve } from 'node:path';
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+
8
+ export default defineConfig(({ mode }) => {
9
+ const envDir = resolve(__dirname, '..', '..');
10
+ const env = loadEnv(mode, envDir, '');
11
+ const frontendPort = parseInt(env.FRONTEND_PORT || '5173', 10);
12
+ const backendPort = parseInt(env.PORT || '3000', 10);
13
+
14
+ return {
15
+ plugins: [react()],
16
+ build: {
17
+ outDir: 'dist',
18
+ emptyOutDir: true,
19
+ },
20
+ server: {
21
+ port: frontendPort,
22
+ strictPort: true,
23
+ proxy: {
24
+ '/api': {
25
+ target: `http://localhost:${backendPort}`,
26
+ ws: true,
27
+ },
28
+ },
29
+ },
30
+ };
31
+ });
@@ -14,7 +14,7 @@ import { existsSync, mkdirSync } from 'node:fs';
14
14
  import * as schema from '../db/schema.js';
15
15
 
16
16
  const __dirname = dirname(fileURLToPath(import.meta.url));
17
- // Walk up from packages/shared/lib/ (or build/lib/) to find product-system/
17
+ // Walk up from packages/shared/lib/ (or build/lib/) to find assistkick-product-system/
18
18
  let PROJECT_ROOT = join(__dirname, '..');
19
19
  while (PROJECT_ROOT !== dirname(PROJECT_ROOT)) {
20
20
  if (existsSync(join(PROJECT_ROOT, 'pnpm-workspace.yaml'))) break;
@@ -32,7 +32,7 @@ export class PromptBuilder {
32
32
  prompt += `- Example: cd ${mainSkillDir} && node tools/get_node.ts ${featureId}${pidFlag}\n`;
33
33
  prompt += `- Example: cd ${mainSkillDir} && node tools/move_card.ts ${featureId} in_review${pidFlag}\n`;
34
34
  prompt += `\n`;
35
- prompt += `NEVER run tools from the worktree directory. NEVER use relative paths like \`product-system/tools/\`.\n`;
35
+ prompt += `NEVER run tools from the worktree directory. NEVER use relative paths like \`assistkick-product-system/tools/\`.\n`;
36
36
  prompt += `ALWAYS \`cd ${mainSkillDir}\` before running any tool command.\n`;
37
37
  if (projectId) {
38
38
  prompt += `ALWAYS include --project-id ${projectId} when running any tool command.\n`;
@@ -153,7 +153,7 @@ export class PromptBuilder {
153
153
  prompt += `- Example: cd ${mainSkillDir} && node tools/get_node.ts ${featureId}${pidFlag}\n`;
154
154
  prompt += `- Example: cd ${mainSkillDir} && node tools/move_card.ts ${featureId} qa${pidFlag}\n`;
155
155
  prompt += `\n`;
156
- prompt += `NEVER run tools from the worktree directory. NEVER use relative paths like \`product-system/tools/\`.\n`;
156
+ prompt += `NEVER run tools from the worktree directory. NEVER use relative paths like \`assistkick-product-system/tools/\`.\n`;
157
157
  prompt += `ALWAYS \`cd ${mainSkillDir}\` before running any tool command.\n`;
158
158
  if (projectId) {
159
159
  prompt += `ALWAYS include --project-id ${projectId} when running any tool command.\n`;
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@interview-system/shared",
2
+ "name": "@assistkick/shared",
3
3
  "version": "1.0.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -8,7 +8,7 @@ import { join } from 'node:path';
8
8
 
9
9
  describe('Local SQLite URL format', () => {
10
10
  it('builds a file: URL from a data directory path', () => {
11
- const projectRoot = '/home/user/myproject/product-system';
11
+ const projectRoot = '/home/user/myproject/assistkick-product-system';
12
12
  const dataDir = join(projectRoot, 'data');
13
13
  const connectionUrl = `file:${join(dataDir, 'local.db')}`;
14
14
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: product-bootstrap
2
+ name: assistkick-bootstrap
3
3
  description: Bootstrap the product knowledge graph for an existing project by scanning the codebase and interviewing the user. Use when the user wants to onboard a project, bootstrap the graph, initialize the product system, or bring the knowledge graph up to speed for an existing codebase.
4
4
  ---
5
5
 
@@ -12,7 +12,7 @@ Your goal is to rapidly build a well-connected specification graph by
12
12
  priorities, and preferences**. You interact with the graph exclusively
13
13
  through the tools below.
14
14
 
15
- All tools live in `product-system/packages/shared/tools/` and
15
+ All tools live in `assistkick-product-system/packages/shared/tools/` and
16
16
  are run with `npx tsx`.
17
17
 
18
18
  ## Bootstrap Philosophy
@@ -300,7 +300,7 @@ The `search_nodes --query` tool returns graph-aware relevance-ranked results.
300
300
  4. Nodes should reflect reality (codebase + user statements), not inferences —
301
301
  use `assumption` node type for inferences
302
302
  5. If the user contradicts something in the graph, update it and add a note
303
- 6. All tool commands must be run from the `product-system/`
303
+ 6. All tool commands must be run from the `assistkick-product-system/`
304
304
  directory
305
305
  7. Set status to `defined` for features clearly implemented in the codebase;
306
306
  use `draft` for planned/future work
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: product-code-reviewer
2
+ name: assistkick-code-reviewer
3
3
  description: Review implemented features against their specification, coding standards, and test coverage. Use when the user wants to review code, check implementation quality, or validate features before QA.
4
4
  ---
5
5
 
@@ -11,7 +11,7 @@ in the feature spec has actually been implemented. You pick up features from
11
11
  the `in_review` column, validate them, and either approve or reject with
12
12
  actionable feedback.
13
13
 
14
- All tools live in `product-system/packages/shared/tools/` and are run with `npx tsx`.
14
+ All tools live in `assistkick-product-system/packages/shared/tools/` and are run with `npx tsx`.
15
15
 
16
16
  ## Session Start Protocol
17
17
  1. Call `get_kanban --column in_review` — identify features awaiting review
@@ -142,6 +142,6 @@ npx tsx packages/shared/tools/get_status.ts
142
142
  4. Always provide actionable rejection notes — reference specific acceptance criteria, integration issues, or connected node requirements
143
143
  5. Never read or write graph.tson, kanban.tson, or node .md files directly — always use the tools
144
144
  6. If you find a spec gap during review, add an open question via `update_node` and flag it to the user
145
- 7. All tool commands must be run from the `product-system/` directory
145
+ 7. All tool commands must be run from the `assistkick-product-system/` directory
146
146
  8. Review one feature at a time — complete the verdict before moving to the next
147
147
  9. The `move_card` tool validates transitions — trust the error if a move is rejected
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: product-debugger
2
+ name: assistkick-debugger
3
3
  description: Debug and investigate bugs reported by the user, find root causes, and create bugfix features with findings. Use when the user reports a bug, wants to investigate an issue, or needs help finding the root cause of a problem.
4
4
  ---
5
5
 
@@ -12,7 +12,7 @@ the root cause, and create a bugfix feature in the graph with your findings so
12
12
  the developer knows exactly what to fix. You never write production code — you
13
13
  only read code, run tests, and trace issues.
14
14
 
15
- All tools live in `product-system/packages/shared/tools/` and are run with `npx tsx`.
15
+ All tools live in `assistkick-product-system/packages/shared/tools/` and are run with `npx tsx`.
16
16
 
17
17
  ## Session Start Protocol
18
18
  1. Call `get_status` — understand current project state
@@ -52,7 +52,7 @@ When static code reading isn't enough to identify the root cause, **add temporar
52
52
  - Never leave debug logs in the codebase
53
53
 
54
54
  ### 5. Use Browser Automation to Reproduce and Observe
55
- Use `agent-browser` (already installed) to interact with the running application in a headless browser. See `.claude/skills/product-debugger/references/agent-browser.md` for the full command reference.
55
+ Use `agent-browser` (already installed) to interact with the running application in a headless browser. See `.claude/skills/assistkick-debugger/references/agent-browser.md` for the full command reference.
56
56
 
57
57
  **Core workflow:**
58
58
  ```bash
@@ -198,9 +198,9 @@ npx tsx packages/shared/tools/get_status.ts
198
198
  4. Always create a bugfix feature with detailed findings — the developer should be able to fix it without re-investigating
199
199
  5. Include specific file paths, line numbers, root cause analysis, and fix guidance in your bugfix notes
200
200
  6. Always link bugfix features to the affected feature(s) via `add_edge`
201
- 7. All tool commands must be run from the `product-system/` directory
201
+ 7. All tool commands must be run from the `assistkick-product-system/` directory
202
202
  8. The `move_card` tool validates transitions — trust the error if a move is rejected
203
203
  9. If the bug reveals a spec gap, add an open question via `update_node` on the affected feature and flag it to the user
204
204
  10. Investigate one bug at a time — complete the investigation before moving to the next
205
205
  11. Always remove any temporary debug logs you added before filing the bugfix feature — never leave debug code in the codebase
206
- 12. Use `agent-browser` for browser-based investigation — see `.claude/skills/product-debugger/references/agent-browser.md` for the full command reference, our app is available at http://localhost:5173
206
+ 12. Use `agent-browser` for browser-based investigation — see `.claude/skills/assistkick-debugger/references/agent-browser.md` for the full command reference, our app is available at http://localhost:5173
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: product-developer
2
+ name: assistkick-developer
3
3
  description: Implement features from the specification knowledge graph following project coding standards. Use when the user wants to build, implement, or develop features defined in the product graph.
4
4
  ---
5
5
 
@@ -11,7 +11,7 @@ Your goal is to pick up features from the kanban board, implement them following
11
11
  the project's coding standards, and move them through the pipeline. You interact
12
12
  with the project spec and kanban exclusively through the tools below.
13
13
 
14
- All tools live in `product-system/packages/shared/tools/` and are run with `npx tsx`.
14
+ All tools live in `assistkick-product-system/packages/shared/tools/` and are run with `npx tsx`.
15
15
 
16
16
  ## Session Start Protocol
17
17
  1. Call `get_status` — understand current project state
@@ -178,5 +178,5 @@ npx tsx packages/shared/tools/rebuild_index.ts --dry-run
178
178
  6. Write tests for every feature — test logic and data transformations
179
179
  7. If a spec is ambiguous, add an open question to the node and ask the user — do not guess
180
180
  8. Check for rejection notes when picking up a feature that was sent back to todo
181
- 9. All tool commands must be run from the `product-system/` directory
181
+ 9. All tool commands must be run from the `assistkick-product-system/` directory
182
182
  10. The `move_card` tool validates transitions — trust the error if a move is rejected
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: product-interview
2
+ name: assistkick-interview
3
3
  description: Conduct a structured requirements interview to build a specification knowledge graph. Use when the user wants to define software requirements, gather specs, build a PRD, or interview about a project's features and architecture.
4
4
  ---
5
5
 
@@ -10,7 +10,7 @@ You are conducting a structured requirements interview. Your goal is to
10
10
  progressively build a complete specification graph by asking the user-focused questions. You interact with the project exclusively through
11
11
  the tools below.
12
12
 
13
- All tools live in `product-system/packages/shared/tools/` and are run with `npx tsx`.
13
+ All tools live in `assistkick-product-system/packages/shared/tools/` and are run with `npx tsx`.
14
14
 
15
15
  ## Session Start Protocol
16
16
  1. Call `start_session` — this automatically loads context from recent sessions (last 3 session summaries, recently modified nodes, and recent decisions). Use this context to understand what was previously discussed and avoid re-asking resolved questions.
@@ -216,5 +216,5 @@ own codebase that you have full access to.
216
216
  3. Always record answers via resolve_question — don't just add a note
217
217
  4. Nodes you create should reflect what the user actually said, not your inferences — use assumption node type for inferences
218
218
  5. If the user contradicts something in the graph, update it and add a note
219
- 6. All tool commands must be run from the `product-system/` directory
219
+ 6. All tool commands must be run from the `assistkick-product-system/` directory
220
220
  7. Never modify features that are in the Done column on the Kanban board — check `get_kanban` first. If a Done feature needs changes, create a new feature that `depends_on` the original and place it in Todo
@@ -1,20 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import react from '@vitejs/plugin-react';
3
-
4
- export default defineConfig({
5
- plugins: [react()],
6
- build: {
7
- outDir: 'dist',
8
- emptyOutDir: true,
9
- },
10
- server: {
11
- port: 5173,
12
- strictPort: true,
13
- proxy: {
14
- '/api': {
15
- target: 'http://localhost:3000',
16
- ws: true,
17
- },
18
- },
19
- },
20
- });