@assistkick/create 1.2.0 → 1.3.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 (49) hide show
  1. package/package.json +2 -1
  2. package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
  3. package/templates/assistkick-product-system/packages/backend/src/routes/kanban.ts +4 -4
  4. package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +49 -2
  5. package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
  6. package/templates/assistkick-product-system/packages/backend/src/server.ts +19 -6
  7. package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
  8. package/templates/assistkick-product-system/packages/backend/src/services/init.ts +69 -2
  9. package/templates/assistkick-product-system/packages/backend/src/services/project_service.ts +71 -0
  10. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
  11. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
  12. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +88 -17
  13. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.ts +114 -39
  14. package/templates/assistkick-product-system/packages/backend/src/services/terminal_ws_handler.ts +28 -14
  15. package/templates/assistkick-product-system/packages/frontend/src/App.tsx +1 -1
  16. package/templates/assistkick-product-system/packages/frontend/src/api/client.ts +151 -0
  17. package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
  18. package/templates/assistkick-product-system/packages/frontend/src/components/KanbanView.tsx +208 -95
  19. package/templates/assistkick-product-system/packages/frontend/src/components/ProjectSelector.tsx +17 -1
  20. package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +238 -105
  21. package/templates/assistkick-product-system/packages/frontend/src/components/Toolbar.tsx +15 -13
  22. package/templates/assistkick-product-system/packages/frontend/src/constants/graph.ts +1 -0
  23. package/templates/assistkick-product-system/packages/frontend/src/hooks/useProjects.ts +4 -0
  24. package/templates/assistkick-product-system/packages/frontend/src/routes/dashboard.tsx +22 -4
  25. package/templates/assistkick-product-system/packages/frontend/src/styles/index.css +486 -38
  26. package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
  27. package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
  28. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
  29. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
  30. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +14 -0
  31. package/templates/assistkick-product-system/packages/shared/db/schema.ts +5 -0
  32. package/templates/assistkick-product-system/packages/shared/lib/claude-service.ts +54 -1
  33. package/templates/assistkick-product-system/packages/shared/lib/git_workflow.ts +25 -0
  34. package/templates/assistkick-product-system/packages/shared/lib/pipeline-state-store.ts +4 -0
  35. package/templates/assistkick-product-system/packages/shared/lib/pipeline.ts +329 -89
  36. package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
  37. package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
  38. package/templates/assistkick-product-system/packages/shared/tools/get_kanban.ts +2 -1
  39. package/templates/assistkick-product-system/packages/shared/tools/move_card.ts +3 -2
  40. package/templates/assistkick-product-system/packages/shared/tools/update_node.ts +2 -2
  41. package/templates/assistkick-product-system/tests/kanban.test.ts +1 -1
  42. package/templates/assistkick-product-system/tests/pipeline_stats_all_cards.test.ts +1 -1
  43. package/templates/assistkick-product-system/tests/web_terminal.test.ts +189 -150
  44. package/templates/skills/assistkick-bootstrap/SKILL.md +33 -25
  45. package/templates/skills/assistkick-code-reviewer/SKILL.md +23 -15
  46. package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
  47. package/templates/skills/assistkick-debugger/SKILL.md +30 -22
  48. package/templates/skills/assistkick-developer/SKILL.md +37 -29
  49. package/templates/skills/assistkick-interview/SKILL.md +34 -26
@@ -181,37 +181,45 @@ from the features they apply to.
181
181
  3. Call `end_session` with a summary
182
182
  4. Tell the user which phase to resume at next session
183
183
 
184
+ ## Project ID
185
+
186
+ All tools require `--project-id <project_id>`. Resolve it at session start:
187
+ - If the user passed a project ID in the invocation arguments → use it directly
188
+ - Otherwise → ask the user: "Which project ID should I use?"
189
+
190
+ Use the same `<project_id>` on **every** tool call in this session.
191
+
184
192
  ## Tool Reference
185
193
 
186
194
  ### start_session
187
195
  ```
188
- npx tsx packages/shared/tools/start_session.ts
196
+ npx tsx packages/shared/tools/start_session.ts --project-id <project_id>
189
197
  ```
190
198
 
191
199
  ### end_session
192
200
  ```
193
- npx tsx packages/shared/tools/end_session.ts --summary "..." --nodes-touched "feat_001,dec_001" --questions-resolved 3
201
+ npx tsx packages/shared/tools/end_session.ts --project-id <project_id> --summary "..." --nodes-touched "feat_001,dec_001" --questions-resolved 3
194
202
  ```
195
203
 
196
204
  ### search_nodes
197
205
  ```
198
- npx tsx packages/shared/tools/search_nodes.ts --query "keyword"
199
- npx tsx packages/shared/tools/search_nodes.ts --type feature
200
- npx tsx packages/shared/tools/search_nodes.ts --has-open-questions
201
- npx tsx packages/shared/tools/search_nodes.ts --completeness-below 0.5
206
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --query "keyword"
207
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --type feature
208
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --has-open-questions
209
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --completeness-below 0.5
202
210
  ```
203
211
 
204
212
  ### get_node
205
213
  ```
206
- npx tsx packages/shared/tools/get_node.ts <node_id>
207
- npx tsx packages/shared/tools/get_node.ts --name "Node Name"
214
+ npx tsx packages/shared/tools/get_node.ts <node_id> --project-id <project_id>
215
+ npx tsx packages/shared/tools/get_node.ts --name "Node Name" --project-id <project_id>
208
216
  ```
209
217
  Returns full .md content plus a Relations section listing all connected nodes
210
218
  with direction, relation type, name, type, and status.
211
219
 
212
220
  ### add_node
213
221
  ```
214
- npx tsx packages/shared/tools/add_node.ts --type <type> --name "Name" --description "..."
222
+ npx tsx packages/shared/tools/add_node.ts --project-id <project_id> --type <type> --name "Name" --description "..."
215
223
  ```
216
224
  Valid types: feature, component, data_entity, decision, tech_choice,
217
225
  non_functional_requirement, design_token, design_pattern, user_role,
@@ -219,23 +227,23 @@ flow, assumption, open_question
219
227
 
220
228
  ### update_node
221
229
  ```
222
- npx tsx packages/shared/tools/update_node.ts <id> --add-acceptance-criteria "..."
223
- npx tsx packages/shared/tools/update_node.ts <id> --add-open-question "..."
224
- npx tsx packages/shared/tools/update_node.ts <id> --add-note "Session N: ..."
225
- npx tsx packages/shared/tools/update_node.ts <id> --set-status <draft|partially_defined|defined>
226
- npx tsx packages/shared/tools/update_node.ts <id> --set-priority <low|medium|high|blocking>
227
- npx tsx packages/shared/tools/update_node.ts <id> --set-description "..."
228
- npx tsx packages/shared/tools/update_node.ts <id> --set-section "SectionName=content"
230
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-acceptance-criteria "..."
231
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-open-question "..."
232
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-note "Session N: ..."
233
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-status <draft|partially_defined|defined>
234
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-priority <low|medium|high|blocking>
235
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-description "..."
236
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-section "SectionName=content"
229
237
  ```
230
238
 
231
239
  ### resolve_question
232
240
  ```
233
- npx tsx packages/shared/tools/resolve_question.ts <id> --question "..." --answer "..."
241
+ npx tsx packages/shared/tools/resolve_question.ts <id> --project-id <project_id> --question "..." --answer "..."
234
242
  ```
235
243
 
236
244
  ### add_edge
237
245
  ```
238
- npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id>
246
+ npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id> --project-id <project_id>
239
247
  ```
240
248
  Valid relations: contains, depends_on, governed_by, constrained_by,
241
249
  implemented_with, reads_writes, exposes, consumes, performed_by,
@@ -243,25 +251,25 @@ escalates_to, relates_to
243
251
 
244
252
  ### remove_edge
245
253
  ```
246
- npx tsx packages/shared/tools/remove_edge.ts <from_id> <relation> <to_id>
254
+ npx tsx packages/shared/tools/remove_edge.ts <from_id> <relation> <to_id> --project-id <project_id>
247
255
  ```
248
256
 
249
257
  ### get_gaps
250
258
  ```
251
- npx tsx packages/shared/tools/get_gaps.ts
252
- npx tsx packages/shared/tools/get_gaps.ts --blocking-only
253
- npx tsx packages/shared/tools/get_gaps.ts --type feature
259
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id>
260
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id> --blocking-only
261
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id> --type feature
254
262
  ```
255
263
 
256
264
  ### get_status
257
265
  ```
258
- npx tsx packages/shared/tools/get_status.ts
266
+ npx tsx packages/shared/tools/get_status.ts --project-id <project_id>
259
267
  ```
260
268
 
261
269
  ### rebuild_index
262
270
  ```
263
- npx tsx packages/shared/tools/rebuild_index.ts
264
- npx tsx packages/shared/tools/rebuild_index.ts --dry-run
271
+ npx tsx packages/shared/tools/rebuild_index.ts --project-id <project_id>
272
+ npx tsx packages/shared/tools/rebuild_index.ts --project-id <project_id> --dry-run
265
273
  ```
266
274
 
267
275
  ## Search Strategy
@@ -72,14 +72,14 @@ After reviewing, you MUST take exactly one action:
72
72
  ### Approve
73
73
  If the feature delivers what was requested and passes all checks:
74
74
  ```
75
- npx tsx packages/shared/tools/move_card.ts <feat_id> qa
75
+ npx tsx packages/shared/tools/move_card.ts <feat_id> qa --project-id <project_id>
76
76
  ```
77
77
  Report to the user: what was reviewed, how it integrates with existing features, and that it passed.
78
78
 
79
79
  ### Reject
80
80
  If any check fails — especially if the feature does not deliver what was requested:
81
81
  ```
82
- npx tsx packages/shared/tools/move_card.ts <feat_id> todo --note "Clear description of what needs fixing"
82
+ npx tsx packages/shared/tools/move_card.ts <feat_id> todo --project-id <project_id> --note "Clear description of what needs fixing"
83
83
  ```
84
84
  The note MUST be actionable — reference specific acceptance criteria that are not met,
85
85
  specific integration issues with existing features, or specific connected node requirements
@@ -91,48 +91,56 @@ Your transitions:
91
91
  - **In Review → QA**: Feature passes review (approve)
92
92
  - **In Review → Todo**: Feature fails review (reject with notes)
93
93
 
94
+ ## Project ID
95
+
96
+ All tools require `--project-id <project_id>`. Resolve it at session start:
97
+ - If the user passed a project ID in the invocation arguments → use it directly
98
+ - Otherwise → ask the user: "Which project ID should I use?"
99
+
100
+ Use the same `<project_id>` on **every** tool call in this session.
101
+
94
102
  ## Tool Reference
95
103
 
96
104
  ### get_kanban
97
105
  ```
98
- npx tsx packages/shared/tools/get_kanban.ts # show all columns
99
- npx tsx packages/shared/tools/get_kanban.ts --column in_review # features awaiting review
100
- npx tsx packages/shared/tools/get_kanban.ts --column done # already shipped features
106
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> # show all columns
107
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column in_review # features awaiting review
108
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column done # already shipped features
101
109
  ```
102
110
 
103
111
  ### move_card
104
112
  ```
105
- npx tsx packages/shared/tools/move_card.ts <feature_id> qa # approve
106
- npx tsx packages/shared/tools/move_card.ts <feature_id> todo --note "What to fix" # reject
113
+ npx tsx packages/shared/tools/move_card.ts <feature_id> qa --project-id <project_id> # approve
114
+ npx tsx packages/shared/tools/move_card.ts <feature_id> todo --project-id <project_id> --note "What to fix" # reject
107
115
  ```
108
116
 
109
117
  ### get_node
110
118
  ```
111
- npx tsx packages/shared/tools/get_node.ts <node_id>
112
- npx tsx packages/shared/tools/get_node.ts --name "Node Name"
119
+ npx tsx packages/shared/tools/get_node.ts <node_id> --project-id <project_id>
120
+ npx tsx packages/shared/tools/get_node.ts --name "Node Name" --project-id <project_id>
113
121
  ```
114
122
  Returns full .md content plus a Relations section listing all connected nodes with direction, relation type, name, type, and status.
115
123
 
116
124
  ### search_nodes
117
125
  ```
118
- npx tsx packages/shared/tools/search_nodes.ts --query "keyword"
119
- npx tsx packages/shared/tools/search_nodes.ts --type feature
126
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --query "keyword"
127
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --type feature
120
128
  ```
121
129
 
122
130
  ### update_node
123
131
  ```
124
- npx tsx packages/shared/tools/update_node.ts <id> --add-note "Review: ..."
125
- npx tsx packages/shared/tools/update_node.ts <id> --add-open-question "..."
132
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-note "Review: ..."
133
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-open-question "..."
126
134
  ```
127
135
 
128
136
  ### get_gaps
129
137
  ```
130
- npx tsx packages/shared/tools/get_gaps.ts
138
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id>
131
139
  ```
132
140
 
133
141
  ### get_status
134
142
  ```
135
- npx tsx packages/shared/tools/get_status.ts
143
+ npx tsx packages/shared/tools/get_status.ts --project-id <project_id>
136
144
  ```
137
145
 
138
146
  ## Rules
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: assistkick-db-explorer
3
+ description: Explore and inspect the database with read-only access. Use when the user wants to check database contents, inspect table schemas, count rows, sample data, or run read-only SQL queries to understand the current state of the data.
4
+ ---
5
+
6
+ # Database Explorer Skill
7
+
8
+ ## Your Role
9
+ You are a database inspector. You use the `db_explorer` tool to help the user
10
+ understand the current state of the database — table structures, row counts,
11
+ data samples, and custom read-only queries. You have absolutely NO write
12
+ capabilities. You can only read and inspect.
13
+
14
+ All commands are run from the `assistkick-product-system/` directory.
15
+
16
+ ## Tool Reference
17
+
18
+ ### List all tables
19
+ ```
20
+ npx tsx packages/shared/tools/db_explorer.ts tables
21
+ ```
22
+ Shows all tables with row counts.
23
+
24
+ ### Describe a table schema
25
+ ```
26
+ npx tsx packages/shared/tools/db_explorer.ts describe <table_name>
27
+ ```
28
+ Shows columns, types, nullability, defaults, primary keys, indexes, and foreign keys.
29
+
30
+ ### Count rows
31
+ ```
32
+ npx tsx packages/shared/tools/db_explorer.ts count <table_name>
33
+ npx tsx packages/shared/tools/db_explorer.ts count <table_name> --where "status = 'draft'"
34
+ npx tsx packages/shared/tools/db_explorer.ts count <table_name> --where "project_id = 'proj_001'"
35
+ ```
36
+
37
+ ### Sample rows
38
+ ```
39
+ npx tsx packages/shared/tools/db_explorer.ts sample <table_name>
40
+ npx tsx packages/shared/tools/db_explorer.ts sample <table_name> --limit 5
41
+ npx tsx packages/shared/tools/db_explorer.ts sample <table_name> --where "type = 'feature'" --limit 3
42
+ npx tsx packages/shared/tools/db_explorer.ts sample <table_name> --order-by "created_at DESC" --limit 5
43
+ ```
44
+
45
+ ### Run a read-only SQL query
46
+ ```
47
+ npx tsx packages/shared/tools/db_explorer.ts query "SELECT id, name, type, status FROM nodes WHERE type = 'feature'"
48
+ npx tsx packages/shared/tools/db_explorer.ts query "SELECT n.id, n.name, k.column_name FROM nodes n JOIN kanban k ON n.id = k.node_id"
49
+ npx tsx packages/shared/tools/db_explorer.ts query "SELECT type, COUNT(*) as cnt FROM nodes GROUP BY type ORDER BY cnt DESC"
50
+ npx tsx packages/shared/tools/db_explorer.ts query "PRAGMA table_info('nodes')"
51
+ ```
52
+ Only SELECT, PRAGMA, and EXPLAIN queries are allowed. Write operations are blocked.
53
+ A safety LIMIT of 100 is auto-appended to SELECT queries without an explicit LIMIT.
54
+
55
+ ## Available Tables
56
+
57
+ | Table | Description |
58
+ |-------|-------------|
59
+ | `nodes` | Knowledge graph nodes (features, components, decisions, etc.) |
60
+ | `edges` | Relationships between nodes |
61
+ | `kanban` | Feature kanban board state |
62
+ | `sessions` | Interview session history |
63
+ | `coherence_reviews` | Graph change proposals |
64
+ | `review_meta` | Kanban metadata and review state |
65
+ | `users` | User accounts |
66
+ | `refresh_tokens` | JWT refresh tokens |
67
+ | `password_reset_tokens` | Password reset flow |
68
+ | `invitations` | User invitations |
69
+ | `projects` | Project contexts |
70
+ | `pipeline_state` | Pipeline execution state |
71
+
72
+ ## Security
73
+
74
+ - Only SELECT, PRAGMA, and EXPLAIN queries are allowed
75
+ - Write keywords (INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, etc.) are blocked
76
+ - Multiple statements (semicolons) are blocked
77
+ - Sensitive columns (`password_hash`, `token_hash`) are automatically redacted as `[REDACTED]`
78
+ - SQL comments are stripped before validation
79
+
80
+ ## Rules
81
+ 1. Never attempt write operations — the tool will reject them
82
+ 2. Use `--where` to filter results rather than dumping entire tables
83
+ 3. Use `--limit` to keep output manageable
84
+ 4. The `--project-id` flag is optional — use `--where "project_id = '...'"` to filter by project
85
+ 5. All tool commands must be run from the `assistkick-product-system/` directory
86
+ 6. Start with `tables` to understand what's available, then `describe` to understand structure, then `sample` or `query` to inspect data
@@ -104,17 +104,17 @@ Once you've found the root cause, create a bugfix feature:
104
104
 
105
105
  1. **Create the bugfix feature** with a clear description of the problem and root cause:
106
106
  ```
107
- npx tsx packages/shared/tools/add_node.ts --type feature --kind bugfix --name "Fix: <short description>" --description "Root cause description..."
107
+ npx tsx packages/shared/tools/add_node.ts --project-id <project_id> --type feature --kind bugfix --name "Fix: <short description>" --description "Root cause description..."
108
108
  ```
109
109
 
110
110
  2. **Add acceptance criteria** that describe the correct behavior:
111
111
  ```
112
- npx tsx packages/shared/tools/update_node.ts <new_feat_id> --add-acceptance-criteria "..."
112
+ npx tsx packages/shared/tools/update_node.ts <new_feat_id> --project-id <project_id> --add-acceptance-criteria "..."
113
113
  ```
114
114
 
115
115
  3. **Add investigation notes** with root cause details, code locations, and fix guidance:
116
116
  ```
117
- npx tsx packages/shared/tools/update_node.ts <new_feat_id> --add-note "Investigation: ..."
117
+ npx tsx packages/shared/tools/update_node.ts <new_feat_id> --project-id <project_id> --add-note "Investigation: ..."
118
118
  ```
119
119
  The note should include:
120
120
  - Reproduction steps
@@ -124,71 +124,79 @@ The note should include:
124
124
 
125
125
  4. **Link the bugfix** to the affected feature(s):
126
126
  ```
127
- npx tsx packages/shared/tools/add_edge.ts <new_feat_id> relates_to <affected_feat_id>
127
+ npx tsx packages/shared/tools/add_edge.ts <new_feat_id> relates_to <affected_feat_id> --project-id <project_id>
128
128
  ```
129
129
 
130
130
  5. **Report findings** to the user with a summary of the root cause and the bugfix feature ID
131
131
 
132
+ ## Project ID
133
+
134
+ All tools require `--project-id <project_id>`. Resolve it at session start:
135
+ - If the user passed a project ID in the invocation arguments → use it directly
136
+ - Otherwise → ask the user: "Which project ID should I use?"
137
+
138
+ Use the same `<project_id>` on **every** tool call in this session.
139
+
132
140
  ## Tool Reference
133
141
 
134
142
  ### get_kanban
135
143
  ```
136
- npx tsx packages/shared/tools/get_kanban.ts # show all columns
137
- npx tsx packages/shared/tools/get_kanban.ts --column qa # features in QA
138
- npx tsx packages/shared/tools/get_kanban.ts --column done # shipped features
144
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> # show all columns
145
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column qa # features in QA
146
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column done # shipped features
139
147
  ```
140
148
 
141
149
  ### move_card
142
150
  ```
143
- npx tsx packages/shared/tools/move_card.ts <feature_id> todo --note "Bug found — see feat_NNN for details"
151
+ npx tsx packages/shared/tools/move_card.ts <feature_id> todo --project-id <project_id> --note "Bug found — see feat_NNN for details"
144
152
  ```
145
153
 
146
154
  ### get_node
147
155
  ```
148
- npx tsx packages/shared/tools/get_node.ts <node_id>
149
- npx tsx packages/shared/tools/get_node.ts --name "Node Name"
156
+ npx tsx packages/shared/tools/get_node.ts <node_id> --project-id <project_id>
157
+ npx tsx packages/shared/tools/get_node.ts --name "Node Name" --project-id <project_id>
150
158
  ```
151
159
  Returns full .md content plus a Relations section listing all connected nodes with direction, relation type, name, type, and status.
152
160
 
153
161
  ### search_nodes
154
162
  ```
155
- npx tsx packages/shared/tools/search_nodes.ts --query "keyword"
156
- npx tsx packages/shared/tools/search_nodes.ts --type feature
157
- npx tsx packages/shared/tools/search_nodes.ts --has-open-questions
163
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --query "keyword"
164
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --type feature
165
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --has-open-questions
158
166
  ```
159
167
 
160
168
  ### add_node
161
169
  ```
162
- npx tsx packages/shared/tools/add_node.ts --type feature --kind bugfix --name "Fix: ..." --description "..."
170
+ npx tsx packages/shared/tools/add_node.ts --project-id <project_id> --type feature --kind bugfix --name "Fix: ..." --description "..."
163
171
  ```
164
172
  Use `--kind bugfix` when creating bug features.
165
173
 
166
174
  ### update_node
167
175
  ```
168
- npx tsx packages/shared/tools/update_node.ts <id> --add-acceptance-criteria "..."
169
- npx tsx packages/shared/tools/update_node.ts <id> --add-open-question "..."
170
- npx tsx packages/shared/tools/update_node.ts <id> --add-note "Investigation: ..."
171
- npx tsx packages/shared/tools/update_node.ts <id> --set-description "..."
176
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-acceptance-criteria "..."
177
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-open-question "..."
178
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-note "Investigation: ..."
179
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-description "..."
172
180
  ```
173
181
 
174
182
  ### add_edge
175
183
  ```
176
- npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id>
184
+ npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id> --project-id <project_id>
177
185
  ```
178
186
 
179
187
  ### resolve_question
180
188
  ```
181
- npx tsx packages/shared/tools/resolve_question.ts <id> --question "..." --answer "..."
189
+ npx tsx packages/shared/tools/resolve_question.ts <id> --project-id <project_id> --question "..." --answer "..."
182
190
  ```
183
191
 
184
192
  ### get_gaps
185
193
  ```
186
- npx tsx packages/shared/tools/get_gaps.ts
194
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id>
187
195
  ```
188
196
 
189
197
  ### get_status
190
198
  ```
191
- npx tsx packages/shared/tools/get_status.ts
199
+ npx tsx packages/shared/tools/get_status.ts --project-id <project_id>
192
200
  ```
193
201
 
194
202
  ## Rules
@@ -72,18 +72,26 @@ Features may be sent back to `todo` with rejection notes:
72
72
  ### Browser Support
73
73
  - Latest Chrome and Firefox
74
74
 
75
+ ## Project ID
76
+
77
+ All tools require `--project-id <project_id>`. Resolve it at session start:
78
+ - If the user passed a project ID in the invocation arguments → use it directly
79
+ - Otherwise → ask the user: "Which project ID should I use?"
80
+
81
+ Use the same `<project_id>` on **every** tool call in this session.
82
+
75
83
  ## Tool Reference
76
84
 
77
85
  ### get_kanban
78
86
  ```
79
- npx tsx packages/shared/tools/get_kanban.ts # show all columns
80
- npx tsx packages/shared/tools/get_kanban.ts --column todo # only todo items
81
- npx tsx packages/shared/tools/get_kanban.ts --column qa # only qa items
87
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> # show all columns
88
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column todo # only todo items
89
+ npx tsx packages/shared/tools/get_kanban.ts --project-id <project_id> --column qa # only qa items
82
90
  ```
83
91
 
84
92
  ### move_card
85
93
  ```
86
- npx tsx packages/shared/tools/move_card.ts <feature_id> <target_column>
94
+ npx tsx packages/shared/tools/move_card.ts <feature_id> <target_column> --project-id <project_id>
87
95
  ```
88
96
  Your allowed transitions:
89
97
  - `todo` → `in_progress`
@@ -91,32 +99,32 @@ Your allowed transitions:
91
99
 
92
100
  ### start_session
93
101
  ```
94
- npx tsx packages/shared/tools/start_session.ts
102
+ npx tsx packages/shared/tools/start_session.ts --project-id <project_id>
95
103
  ```
96
104
 
97
105
  ### end_session
98
106
  ```
99
- npx tsx packages/shared/tools/end_session.ts --summary "..." --nodes-touched "feat_001,dec_001" --questions-resolved 3
107
+ npx tsx packages/shared/tools/end_session.ts --project-id <project_id> --summary "..." --nodes-touched "feat_001,dec_001" --questions-resolved 3
100
108
  ```
101
109
 
102
110
  ### search_nodes
103
111
  ```
104
- npx tsx packages/shared/tools/search_nodes.ts --query "keyword"
105
- npx tsx packages/shared/tools/search_nodes.ts --type feature
106
- npx tsx packages/shared/tools/search_nodes.ts --has-open-questions
107
- npx tsx packages/shared/tools/search_nodes.ts --completeness-below 0.5
112
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --query "keyword"
113
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --type feature
114
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --has-open-questions
115
+ npx tsx packages/shared/tools/search_nodes.ts --project-id <project_id> --completeness-below 0.5
108
116
  ```
109
117
 
110
118
  ### get_node
111
119
  ```
112
- npx tsx packages/shared/tools/get_node.ts <node_id>
113
- npx tsx packages/shared/tools/get_node.ts --name "Node Name"
120
+ npx tsx packages/shared/tools/get_node.ts <node_id> --project-id <project_id>
121
+ npx tsx packages/shared/tools/get_node.ts --name "Node Name" --project-id <project_id>
114
122
  ```
115
123
  Returns full .md content plus a Relations section listing all connected nodes with direction, relation type, name, type, and status.
116
124
 
117
125
  ### add_node
118
126
  ```
119
- npx tsx packages/shared/tools/add_node.ts --type <type> --name "Name" --description "..."
127
+ npx tsx packages/shared/tools/add_node.ts --project-id <project_id> --type <type> --name "Name" --description "..."
120
128
  ```
121
129
  Valid types: feature, component, data_entity, decision, tech_choice,
122
130
  non_functional_requirement, design_token, design_pattern, user_role,
@@ -124,23 +132,23 @@ flow, assumption, open_question
124
132
 
125
133
  ### update_node
126
134
  ```
127
- npx tsx packages/shared/tools/update_node.ts <id> --add-acceptance-criteria "..."
128
- npx tsx packages/shared/tools/update_node.ts <id> --add-open-question "..."
129
- npx tsx packages/shared/tools/update_node.ts <id> --add-note "Session N: ..."
130
- npx tsx packages/shared/tools/update_node.ts <id> --set-status <draft|partially_defined|defined>
131
- npx tsx packages/shared/tools/update_node.ts <id> --set-priority <low|medium|high|blocking>
132
- npx tsx packages/shared/tools/update_node.ts <id> --set-description "..."
133
- npx tsx packages/shared/tools/update_node.ts <id> --set-section "SectionName=content"
135
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-acceptance-criteria "..."
136
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-open-question "..."
137
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --add-note "Session N: ..."
138
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-status <draft|partially_defined|defined>
139
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-priority <low|medium|high|blocking>
140
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-description "..."
141
+ npx tsx packages/shared/tools/update_node.ts <id> --project-id <project_id> --set-section "SectionName=content"
134
142
  ```
135
143
 
136
144
  ### resolve_question
137
145
  ```
138
- npx tsx packages/shared/tools/resolve_question.ts <id> --question "..." --answer "..."
146
+ npx tsx packages/shared/tools/resolve_question.ts <id> --project-id <project_id> --question "..." --answer "..."
139
147
  ```
140
148
 
141
149
  ### add_edge
142
150
  ```
143
- npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id>
151
+ npx tsx packages/shared/tools/add_edge.ts <from_id> <relation> <to_id> --project-id <project_id>
144
152
  ```
145
153
  Valid relations: contains, depends_on, governed_by, constrained_by,
146
154
  implemented_with, reads_writes, exposes, consumes, performed_by,
@@ -148,25 +156,25 @@ escalates_to, relates_to
148
156
 
149
157
  ### remove_edge
150
158
  ```
151
- npx tsx packages/shared/tools/remove_edge.ts <from_id> <relation> <to_id>
159
+ npx tsx packages/shared/tools/remove_edge.ts <from_id> <relation> <to_id> --project-id <project_id>
152
160
  ```
153
161
 
154
162
  ### get_gaps
155
163
  ```
156
- npx tsx packages/shared/tools/get_gaps.ts
157
- npx tsx packages/shared/tools/get_gaps.ts --blocking-only
158
- npx tsx packages/shared/tools/get_gaps.ts --type feature
164
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id>
165
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id> --blocking-only
166
+ npx tsx packages/shared/tools/get_gaps.ts --project-id <project_id> --type feature
159
167
  ```
160
168
 
161
169
  ### get_status
162
170
  ```
163
- npx tsx packages/shared/tools/get_status.ts
171
+ npx tsx packages/shared/tools/get_status.ts --project-id <project_id>
164
172
  ```
165
173
 
166
174
  ### rebuild_index
167
175
  ```
168
- npx tsx packages/shared/tools/rebuild_index.ts
169
- npx tsx packages/shared/tools/rebuild_index.ts --dry-run
176
+ npx tsx packages/shared/tools/rebuild_index.ts --project-id <project_id>
177
+ npx tsx packages/shared/tools/rebuild_index.ts --project-id <project_id> --dry-run
170
178
  ```
171
179
 
172
180
  ## Rules