@hailer/mcp 1.1.12 → 1.1.13

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 (271) hide show
  1. package/CHANGELOG.md +0 -7
  2. package/{.claude → dist}/CLAUDE.md +2 -2
  3. package/dist/app.js +18 -5
  4. package/dist/bot/bot-config.d.ts +10 -1
  5. package/dist/bot/bot-config.js +64 -3
  6. package/dist/bot/bot-manager.d.ts +2 -0
  7. package/dist/bot/bot-manager.js +9 -2
  8. package/dist/bot/bot.d.ts +33 -0
  9. package/dist/bot/bot.js +461 -160
  10. package/dist/bot/services/message-classifier.js +17 -0
  11. package/dist/bot/services/permission-guard.d.ts +52 -0
  12. package/dist/bot/services/permission-guard.js +149 -0
  13. package/dist/bot/services/types.d.ts +5 -0
  14. package/dist/bot/services/typing-indicator.d.ts +6 -1
  15. package/dist/bot/services/typing-indicator.js +19 -3
  16. package/dist/cli.js +0 -0
  17. package/dist/config.d.ts +6 -1
  18. package/dist/config.js +43 -0
  19. package/dist/core.js +3 -6
  20. package/dist/lib/discussion-lock.d.ts +42 -0
  21. package/dist/lib/discussion-lock.js +110 -0
  22. package/dist/mcp/UserContextCache.d.ts +5 -0
  23. package/dist/mcp/UserContextCache.js +51 -19
  24. package/dist/mcp/hailer-clients.d.ts +19 -1
  25. package/dist/mcp/hailer-clients.js +158 -24
  26. package/dist/mcp/session-store.d.ts +68 -0
  27. package/dist/mcp/session-store.js +169 -0
  28. package/dist/mcp/signal-handler.js +2 -0
  29. package/dist/mcp/tool-registry.d.ts +17 -4
  30. package/dist/mcp/tool-registry.js +37 -7
  31. package/dist/mcp/tools/activity.js +99 -7
  32. package/dist/mcp/tools/app-scaffold.js +304 -336
  33. package/dist/mcp/tools/bot-config/constants.d.ts +23 -0
  34. package/dist/mcp/tools/bot-config/constants.js +94 -0
  35. package/dist/mcp/tools/bot-config/core.d.ts +253 -0
  36. package/dist/mcp/tools/bot-config/core.js +2456 -0
  37. package/dist/mcp/tools/bot-config/index.d.ts +10 -0
  38. package/dist/mcp/tools/bot-config/index.js +59 -0
  39. package/dist/mcp/tools/bot-config/tools.d.ts +7 -0
  40. package/dist/mcp/tools/bot-config/tools.js +15 -0
  41. package/dist/mcp/tools/bot-config/types.d.ts +50 -0
  42. package/dist/mcp/tools/bot-config/types.js +6 -0
  43. package/dist/mcp/tools/bug-fixer-tools.d.ts +45 -0
  44. package/dist/mcp/tools/bug-fixer-tools.js +1096 -0
  45. package/dist/mcp/tools/company.d.ts +9 -0
  46. package/dist/mcp/tools/company.js +88 -0
  47. package/dist/mcp/tools/discussion.js +68 -0
  48. package/dist/mcp/tools/document.d.ts +11 -0
  49. package/dist/mcp/tools/document.js +741 -0
  50. package/dist/mcp/tools/investigate.d.ts +9 -0
  51. package/dist/mcp/tools/investigate.js +254 -0
  52. package/dist/mcp/tools/workflow-permissions.d.ts +15 -0
  53. package/dist/mcp/tools/workflow-permissions.js +204 -0
  54. package/dist/mcp/tools/workflow.js +57 -18
  55. package/dist/mcp/utils/index.d.ts +2 -0
  56. package/dist/mcp/utils/index.js +12 -1
  57. package/dist/mcp/utils/role-utils.d.ts +74 -0
  58. package/dist/mcp/utils/role-utils.js +151 -0
  59. package/dist/mcp/utils/types.d.ts +43 -1
  60. package/dist/mcp/utils/types.js +14 -0
  61. package/dist/mcp/webhook-handler.d.ts +4 -0
  62. package/dist/mcp/webhook-handler.js +8 -0
  63. package/dist/mcp-server.d.ts +23 -2
  64. package/dist/mcp-server.js +639 -127
  65. package/dist/plugins/vipunen/client.d.ts +150 -0
  66. package/dist/plugins/vipunen/client.js +535 -0
  67. package/dist/plugins/vipunen/config/schema-config.json +19 -0
  68. package/dist/plugins/vipunen/config/schema-doc.json +22 -0
  69. package/dist/plugins/vipunen/index.d.ts +41 -0
  70. package/dist/plugins/vipunen/index.js +88 -0
  71. package/dist/plugins/vipunen/tools.d.ts +26 -0
  72. package/dist/plugins/vipunen/tools.js +501 -0
  73. package/dist/stdio-server.d.ts +14 -0
  74. package/dist/stdio-server.js +101 -0
  75. package/package.json +2 -1
  76. package/.claude/agents/agent-ada-skill-builder.md +0 -94
  77. package/.claude/agents/agent-alejandro-function-fields.md +0 -342
  78. package/.claude/agents/agent-bjorn-config-audit.md +0 -103
  79. package/.claude/agents/agent-builder-agent-creator.md +0 -130
  80. package/.claude/agents/agent-code-simplifier.md +0 -53
  81. package/.claude/agents/agent-dmitri-activity-crud.md +0 -159
  82. package/.claude/agents/agent-giuseppe-app-builder.md +0 -247
  83. package/.claude/agents/agent-gunther-mcp-tools.md +0 -39
  84. package/.claude/agents/agent-helga-workflow-config.md +0 -204
  85. package/.claude/agents/agent-igor-activity-mover-automation.md +0 -125
  86. package/.claude/agents/agent-ingrid-doc-templates.md +0 -261
  87. package/.claude/agents/agent-ivan-monolith.md +0 -154
  88. package/.claude/agents/agent-kenji-data-reader.md +0 -86
  89. package/.claude/agents/agent-lars-code-inspector.md +0 -102
  90. package/.claude/agents/agent-marco-mockup-builder.md +0 -110
  91. package/.claude/agents/agent-marcus-api-documenter.md +0 -323
  92. package/.claude/agents/agent-marketplace-publisher.md +0 -280
  93. package/.claude/agents/agent-marketplace-reviewer.md +0 -309
  94. package/.claude/agents/agent-permissions-handler.md +0 -208
  95. package/.claude/agents/agent-simple-writer.md +0 -48
  96. package/.claude/agents/agent-svetlana-code-review.md +0 -171
  97. package/.claude/agents/agent-tanya-test-runner.md +0 -333
  98. package/.claude/agents/agent-ui-designer.md +0 -100
  99. package/.claude/agents/agent-viktor-sql-insights.md +0 -212
  100. package/.claude/agents/agent-web-search.md +0 -55
  101. package/.claude/agents/agent-yevgeni-discussions.md +0 -45
  102. package/.claude/agents/agent-zara-zapier.md +0 -159
  103. package/.claude/commands/app-squad.md +0 -135
  104. package/.claude/commands/audit-squad.md +0 -158
  105. package/.claude/commands/autoplan.md +0 -563
  106. package/.claude/commands/cleanup-squad.md +0 -98
  107. package/.claude/commands/config-squad.md +0 -106
  108. package/.claude/commands/crud-squad.md +0 -87
  109. package/.claude/commands/data-squad.md +0 -97
  110. package/.claude/commands/debug-squad.md +0 -303
  111. package/.claude/commands/doc-squad.md +0 -65
  112. package/.claude/commands/handoff.md +0 -137
  113. package/.claude/commands/health.md +0 -49
  114. package/.claude/commands/help.md +0 -29
  115. package/.claude/commands/help:agents.md +0 -151
  116. package/.claude/commands/help:commands.md +0 -78
  117. package/.claude/commands/help:faq.md +0 -79
  118. package/.claude/commands/help:plugins.md +0 -50
  119. package/.claude/commands/help:skills.md +0 -93
  120. package/.claude/commands/help:tools.md +0 -75
  121. package/.claude/commands/hotfix-squad.md +0 -112
  122. package/.claude/commands/integration-squad.md +0 -82
  123. package/.claude/commands/janitor-squad.md +0 -167
  124. package/.claude/commands/learn-auto.md +0 -120
  125. package/.claude/commands/learn.md +0 -120
  126. package/.claude/commands/mcp-list.md +0 -27
  127. package/.claude/commands/onboard-squad.md +0 -140
  128. package/.claude/commands/plan-workspace.md +0 -732
  129. package/.claude/commands/prd.md +0 -130
  130. package/.claude/commands/project-status.md +0 -82
  131. package/.claude/commands/publish.md +0 -138
  132. package/.claude/commands/recap.md +0 -69
  133. package/.claude/commands/restore.md +0 -64
  134. package/.claude/commands/review-squad.md +0 -152
  135. package/.claude/commands/save.md +0 -24
  136. package/.claude/commands/stats.md +0 -19
  137. package/.claude/commands/swarm.md +0 -210
  138. package/.claude/commands/tool-builder.md +0 -39
  139. package/.claude/commands/ws-pull.md +0 -44
  140. package/.claude/hooks/_shared-memory.cjs +0 -305
  141. package/.claude/hooks/_utils.cjs +0 -108
  142. package/.claude/hooks/agent-failure-detector.cjs +0 -383
  143. package/.claude/hooks/agent-usage-logger.cjs +0 -204
  144. package/.claude/hooks/app-edit-guard.cjs +0 -494
  145. package/.claude/hooks/auto-learn.cjs +0 -304
  146. package/.claude/hooks/bash-guard.cjs +0 -272
  147. package/.claude/hooks/builder-mode-manager.cjs +0 -354
  148. package/.claude/hooks/bulk-activity-guard.cjs +0 -271
  149. package/.claude/hooks/context-watchdog.cjs +0 -230
  150. package/.claude/hooks/delegation-reminder.cjs +0 -465
  151. package/.claude/hooks/design-system-lint.cjs +0 -271
  152. package/.claude/hooks/post-scaffold-hook.cjs +0 -181
  153. package/.claude/hooks/prompt-guard.cjs +0 -354
  154. package/.claude/hooks/publish-template-guard.cjs +0 -147
  155. package/.claude/hooks/session-start.cjs +0 -35
  156. package/.claude/hooks/shared-memory-writer.cjs +0 -147
  157. package/.claude/hooks/skill-injector.cjs +0 -140
  158. package/.claude/hooks/skill-usage-logger.cjs +0 -258
  159. package/.claude/hooks/src-edit-guard.cjs +0 -240
  160. package/.claude/hooks/sync-marketplace-agents.cjs +0 -346
  161. package/.claude/settings.json +0 -257
  162. package/.claude/skills/SDK-activity-patterns/SKILL.md +0 -428
  163. package/.claude/skills/SDK-document-templates/SKILL.md +0 -1033
  164. package/.claude/skills/SDK-function-fields/SKILL.md +0 -542
  165. package/.claude/skills/SDK-generate-skill/SKILL.md +0 -92
  166. package/.claude/skills/SDK-init-skill/SKILL.md +0 -127
  167. package/.claude/skills/SDK-insight-queries/SKILL.md +0 -787
  168. package/.claude/skills/SDK-ws-config-skill/SKILL.md +0 -1139
  169. package/.claude/skills/agent-structure/SKILL.md +0 -98
  170. package/.claude/skills/api-documentation-patterns/SKILL.md +0 -474
  171. package/.claude/skills/chrome-mcp-reference/SKILL.md +0 -370
  172. package/.claude/skills/delegation-routing/SKILL.md +0 -202
  173. package/.claude/skills/frontend-design/SKILL.md +0 -254
  174. package/.claude/skills/hailer-activity-mover/SKILL.md +0 -213
  175. package/.claude/skills/hailer-api-client/SKILL.md +0 -518
  176. package/.claude/skills/hailer-app-builder/SKILL.md +0 -1434
  177. package/.claude/skills/hailer-apps-pictures/SKILL.md +0 -269
  178. package/.claude/skills/hailer-design-system/SKILL.md +0 -235
  179. package/.claude/skills/hailer-monolith-automations/SKILL.md +0 -686
  180. package/.claude/skills/hailer-permissions-system/SKILL.md +0 -121
  181. package/.claude/skills/hailer-project-protocol/SKILL.md +0 -488
  182. package/.claude/skills/hailer-rest-api/SKILL.md +0 -61
  183. package/.claude/skills/hailer-rest-api/hailer-activities.md +0 -184
  184. package/.claude/skills/hailer-rest-api/hailer-admin.md +0 -473
  185. package/.claude/skills/hailer-rest-api/hailer-calendar.md +0 -256
  186. package/.claude/skills/hailer-rest-api/hailer-feed.md +0 -249
  187. package/.claude/skills/hailer-rest-api/hailer-insights.md +0 -195
  188. package/.claude/skills/hailer-rest-api/hailer-messaging.md +0 -276
  189. package/.claude/skills/hailer-rest-api/hailer-workflows.md +0 -283
  190. package/.claude/skills/insight-join-patterns/SKILL.md +0 -174
  191. package/.claude/skills/integration-patterns/SKILL.md +0 -421
  192. package/.claude/skills/json-only-output/SKILL.md +0 -72
  193. package/.claude/skills/lsp-setup/SKILL.md +0 -160
  194. package/.claude/skills/mcp-direct-tools/SKILL.md +0 -153
  195. package/.claude/skills/optional-parameters/SKILL.md +0 -72
  196. package/.claude/skills/publish-hailer-app/SKILL.md +0 -244
  197. package/.claude/skills/testing-patterns/SKILL.md +0 -630
  198. package/.claude/skills/tool-builder/SKILL.md +0 -250
  199. package/.claude/skills/tool-parameter-usage/SKILL.md +0 -126
  200. package/.claude/skills/tool-response-verification/SKILL.md +0 -92
  201. package/.claude/skills/zapier-hailer-patterns/SKILL.md +0 -581
  202. package/.mcp.json +0 -13
  203. package/.opencode/agent/agent-ada-skill-builder.md +0 -35
  204. package/.opencode/agent/agent-alejandro-function-fields.md +0 -39
  205. package/.opencode/agent/agent-bjorn-config-audit.md +0 -36
  206. package/.opencode/agent/agent-builder-agent-creator.md +0 -39
  207. package/.opencode/agent/agent-code-simplifier.md +0 -31
  208. package/.opencode/agent/agent-dmitri-activity-crud.md +0 -40
  209. package/.opencode/agent/agent-giuseppe-app-builder.md +0 -37
  210. package/.opencode/agent/agent-gunther-mcp-tools.md +0 -39
  211. package/.opencode/agent/agent-helga-workflow-config.md +0 -203
  212. package/.opencode/agent/agent-igor-activity-mover-automation.md +0 -46
  213. package/.opencode/agent/agent-ingrid-doc-templates.md +0 -39
  214. package/.opencode/agent/agent-ivan-monolith.md +0 -46
  215. package/.opencode/agent/agent-kenji-data-reader.md +0 -53
  216. package/.opencode/agent/agent-lars-code-inspector.md +0 -28
  217. package/.opencode/agent/agent-marco-mockup-builder.md +0 -42
  218. package/.opencode/agent/agent-marcus-api-documenter.md +0 -53
  219. package/.opencode/agent/agent-marketplace-publisher.md +0 -44
  220. package/.opencode/agent/agent-marketplace-reviewer.md +0 -42
  221. package/.opencode/agent/agent-permissions-handler.md +0 -50
  222. package/.opencode/agent/agent-simple-writer.md +0 -45
  223. package/.opencode/agent/agent-svetlana-code-review.md +0 -39
  224. package/.opencode/agent/agent-tanya-test-runner.md +0 -57
  225. package/.opencode/agent/agent-ui-designer.md +0 -56
  226. package/.opencode/agent/agent-viktor-sql-insights.md +0 -34
  227. package/.opencode/agent/agent-web-search.md +0 -42
  228. package/.opencode/agent/agent-yevgeni-discussions.md +0 -37
  229. package/.opencode/agent/agent-zara-zapier.md +0 -53
  230. package/.opencode/commands/app-squad.md +0 -135
  231. package/.opencode/commands/audit-squad.md +0 -158
  232. package/.opencode/commands/autoplan.md +0 -563
  233. package/.opencode/commands/cleanup-squad.md +0 -98
  234. package/.opencode/commands/config-squad.md +0 -106
  235. package/.opencode/commands/crud-squad.md +0 -87
  236. package/.opencode/commands/data-squad.md +0 -97
  237. package/.opencode/commands/debug-squad.md +0 -303
  238. package/.opencode/commands/doc-squad.md +0 -65
  239. package/.opencode/commands/handoff.md +0 -137
  240. package/.opencode/commands/health.md +0 -49
  241. package/.opencode/commands/help-agents.md +0 -151
  242. package/.opencode/commands/help-commands.md +0 -32
  243. package/.opencode/commands/help-faq.md +0 -29
  244. package/.opencode/commands/help-plugins.md +0 -28
  245. package/.opencode/commands/help-skills.md +0 -7
  246. package/.opencode/commands/help-tools.md +0 -40
  247. package/.opencode/commands/help.md +0 -28
  248. package/.opencode/commands/hotfix-squad.md +0 -112
  249. package/.opencode/commands/integration-squad.md +0 -82
  250. package/.opencode/commands/janitor-squad.md +0 -167
  251. package/.opencode/commands/learn-auto.md +0 -120
  252. package/.opencode/commands/learn.md +0 -120
  253. package/.opencode/commands/mcp-list.md +0 -27
  254. package/.opencode/commands/onboard-squad.md +0 -140
  255. package/.opencode/commands/plan-workspace.md +0 -732
  256. package/.opencode/commands/prd.md +0 -131
  257. package/.opencode/commands/project-status.md +0 -82
  258. package/.opencode/commands/publish.md +0 -138
  259. package/.opencode/commands/recap.md +0 -69
  260. package/.opencode/commands/restore.md +0 -64
  261. package/.opencode/commands/review-squad.md +0 -152
  262. package/.opencode/commands/save.md +0 -24
  263. package/.opencode/commands/stats.md +0 -19
  264. package/.opencode/commands/swarm.md +0 -210
  265. package/.opencode/commands/tool-builder.md +0 -39
  266. package/.opencode/commands/ws-pull.md +0 -44
  267. package/.opencode/opencode.json +0 -28
  268. package/SESSION-HANDOFF.md +0 -68
  269. package/inbox/2026-03-04-bot-config-patterns.md +0 -24
  270. package/scripts/postinstall.cjs +0 -64
  271. package/scripts/test-hal-tools.ts +0 -154
@@ -1,160 +0,0 @@
1
- ---
2
- name: lsp-setup
3
- description: How to set up LSP (Language Server Protocol) for Claude Code - enables code intelligence for Lars and other agents
4
- version: 1.0.0
5
- triggers:
6
- - LSP not available
7
- - typescript-language-server
8
- - code intelligence setup
9
- - Lars can't find unused code
10
- ---
11
-
12
- # LSP Setup for Claude Code
13
-
14
- LSP (Language Server Protocol) enables code intelligence features like go-to-definition, find-references, and accurate dead code detection.
15
-
16
- ## Why LSP?
17
-
18
- Without LSP, agents like Lars must guess about code usage via grep/file reads. With LSP:
19
- - **Accurate dead code detection** - knows if exports are used elsewhere
20
- - **Type error detection** - without running compiler
21
- - **Find all references** - across entire codebase
22
- - **Go to definition** - jump to where symbols are defined
23
-
24
- ## Requirements
25
-
26
- Three things needed for LSP to work:
27
-
28
- | Requirement | How to Check | How to Install |
29
- |-------------|--------------|----------------|
30
- | `ENABLE_LSP_TOOL=1` | Check `.claude/settings.json` | Add to env section |
31
- | `typescript-lsp` plugin | `claude plugin list` | `claude plugin install typescript-lsp@claude-plugins-official` |
32
- | Language server binary | `which typescript-language-server` | `npm install -g typescript-language-server typescript` |
33
-
34
- ## Setup Steps
35
-
36
- ### Step 1: Install the language server binary
37
-
38
- ```bash
39
- npm install -g typescript-language-server typescript
40
- ```
41
-
42
- Verify:
43
- ```bash
44
- typescript-language-server --version
45
- # Should show version like: 5.1.3
46
- ```
47
-
48
- ### Step 2: Install Claude Code plugin
49
-
50
- ```bash
51
- claude plugin install typescript-lsp@claude-plugins-official
52
- ```
53
-
54
- Verify:
55
- ```bash
56
- claude plugin list
57
- # Should show: typescript-lsp@claude-plugins-official ✔ enabled
58
- ```
59
-
60
- ### Step 3: Ensure settings.json has LSP enabled
61
-
62
- Check `.claude/settings.json` (project) or `~/.claude/settings.json` (global):
63
-
64
- ```json
65
- {
66
- "env": {
67
- "ENABLE_LSP_TOOL": "1"
68
- }
69
- }
70
- ```
71
-
72
- ### Step 4: Restart Claude
73
-
74
- LSP plugin activates on Claude restart:
75
- ```bash
76
- claude -c
77
- ```
78
-
79
- ### Step 5: Test
80
-
81
- Ask Lars to find unused code in a TypeScript file:
82
- ```
83
- Find unused code in src/App.tsx
84
- ```
85
-
86
- Or test LSP directly:
87
- ```
88
- Use LSP documentSymbol on src/App.tsx
89
- ```
90
-
91
- ## Supported File Types
92
-
93
- The `typescript-lsp` plugin supports:
94
- - `.ts`, `.tsx` - TypeScript + React
95
- - `.js`, `.jsx` - JavaScript + React
96
- - `.mts`, `.cts` - TypeScript ES modules / CommonJS
97
- - `.mjs`, `.cjs` - JavaScript ES modules / CommonJS
98
-
99
- ## LSP Operations Available
100
-
101
- | Operation | Purpose |
102
- |-----------|---------|
103
- | `documentSymbol` | List all symbols in a file |
104
- | `findReferences` | Find all usages of a symbol |
105
- | `goToDefinition` | Jump to where symbol is defined |
106
- | `hover` | Get type info and documentation |
107
- | `goToImplementation` | Find implementations of interface |
108
- | `incomingCalls` | What calls this function |
109
- | `outgoingCalls` | What this function calls |
110
- | `prepareCallHierarchy` | Get call hierarchy at position |
111
-
112
- ## Agents That Use LSP
113
-
114
- | Agent | How They Use LSP |
115
- |-------|------------------|
116
- | **Lars** | Primary user - dead code, unused imports, type errors |
117
- | **Svetlana** | Type checking during code review (optional) |
118
- | **Giuseppe** | Verify code compiles before build (optional) |
119
-
120
- ## Troubleshooting
121
-
122
- ### "No LSP server available"
123
-
124
- 1. Check binary is installed: `which typescript-language-server`
125
- 2. Check plugin is installed: `claude plugin list`
126
- 3. Restart Claude: `claude -c`
127
-
128
- ### LSP times out on first query
129
-
130
- Normal - language server is indexing the project. Wait a few seconds and retry.
131
-
132
- ### LSP works for .ts but not .tsx
133
-
134
- Check `typescript` is installed alongside `typescript-language-server`:
135
- ```bash
136
- npm install -g typescript-language-server typescript
137
- ```
138
-
139
- ### "Executable not found in $PATH"
140
-
141
- The binary isn't in your PATH. Either:
142
- - Install globally: `npm install -g typescript-language-server`
143
- - Or add npm global bin to PATH: `export PATH="$PATH:$(npm bin -g)"`
144
-
145
- ## Without LSP (Fallback)
146
-
147
- If LSP isn't available, agents can fall back to:
148
-
149
- ```bash
150
- # Type errors
151
- npx tsc --noEmit 2>&1
152
-
153
- # Unused variables (requires eslint config)
154
- npx eslint --rule '@typescript-eslint/no-unused-vars: error' src/
155
-
156
- # Find references (grep-based, less accurate)
157
- grep -r "functionName" src/
158
- ```
159
-
160
- This is less accurate but works without setup.
@@ -1,153 +0,0 @@
1
- ---
2
- name: mcp-direct-tools
3
- description: Reference for MCP tools not assigned to agents
4
- version: 1.0.0
5
- ---
6
-
7
- # MCP Direct Tools
8
-
9
- <purpose>
10
- Reference for MCP tools not assigned to agents. Load this skill when user requests direct tool usage or needs capabilities not covered by standard agents.
11
- </purpose>
12
-
13
- ---
14
-
15
- ## When to Load This Skill
16
-
17
- - User asks "can you use the bug fixer tools?"
18
- - User needs capabilities not covered by agents
19
- - Direct MCP tool access requested
20
- - Debugging/testing MCP tools
21
-
22
- ---
23
-
24
- ## Bug Fixer Tools (16 tools)
25
-
26
- Automated bug fixing suite for Hailer apps. Use these for automated debugging workflows.
27
-
28
- ### Discovery & Analysis
29
-
30
- | Tool | Description | Parameters |
31
- |------|-------------|------------|
32
- | `bug_fixer_find_app` | Locate app by name | `{ appName }` |
33
- | `bug_fixer_analyze_bug` | Classify bug report | `{ bugReport, appId }` |
34
-
35
- ### File Operations
36
-
37
- | Tool | Description | Parameters |
38
- |------|-------------|------------|
39
- | `bug_fixer_list_files` | List project files | `{ appId, path? }` |
40
- | `bug_fixer_read_file` | Read file content | `{ appId, filePath }` |
41
- | `bug_fixer_write_file` | Modify file content | `{ appId, filePath, content }` |
42
- | `bug_fixer_apply_fix` | Apply code patch | `{ appId, filePath, patch }` |
43
-
44
- ### Build & Test
45
-
46
- | Tool | Description | Parameters |
47
- |------|-------------|------------|
48
- | `bug_fixer_run_build` | Execute build command | `{ appId }` |
49
-
50
- ### Git Operations
51
-
52
- | Tool | Description | Parameters |
53
- |------|-------------|------------|
54
- | `bug_fixer_git_status` | Check git status | `{ appId }` |
55
- | `bug_fixer_git_pull` | Fetch latest code | `{ appId }` |
56
- | `bug_fixer_git_commit` | Commit changes | `{ appId, message }` |
57
- | `bug_fixer_git_push` | Push to remote | `{ appId }` |
58
- | `bug_fixer_git_revert` | Undo changes | `{ appId }` |
59
-
60
- ### Workflow Management
61
-
62
- | Tool | Description | Parameters |
63
- |------|-------------|------------|
64
- | `bug_fixer_start_fix` | Begin fix workflow | `{ bugId, appId }` |
65
- | `bug_fixer_mark_declined` | Close as not-a-bug | `{ bugId, reason }` |
66
- | `bug_fixer_publish_fix` | Deploy to production | `{ appId, version }` |
67
- | `bug_fixer_retry_fix` | Attempt with new context | `{ bugId, newContext }` |
68
-
69
- ### Bug Fixer Workflow
70
-
71
- ```
72
- 1. bug_fixer_find_app → Get app ID
73
- 2. bug_fixer_analyze_bug → Classify issue
74
- 3. bug_fixer_start_fix → Begin workflow
75
- 4. bug_fixer_list_files → Find relevant files
76
- 5. bug_fixer_read_file → Understand current code
77
- 6. bug_fixer_write_file / bug_fixer_apply_fix → Make changes
78
- 7. bug_fixer_run_build → Verify fix
79
- 8. bug_fixer_git_commit → Save changes
80
- 9. bug_fixer_publish_fix → Deploy
81
- ```
82
-
83
- ---
84
-
85
- ## Insight Tools (Not in Viktor)
86
-
87
- Viktor uses `preview_insight` and `get_insight_data`. These additional tools are available:
88
-
89
- | Tool | Description | When to Use |
90
- |------|-------------|-------------|
91
- | `list_insights` | List all insights in workspace | Discovery, cleanup |
92
- | `update_insight` | Modify existing insight | Query changes |
93
- | `remove_insight` | Delete insight (NUCLEAR) | Cleanup |
94
-
95
- **Note:** SDK has equivalents via insights.ts push. Use SDK for version-controlled changes, MCP for quick fixes.
96
-
97
- ---
98
-
99
- ## Workflow Tools (PLAYGROUND/NUCLEAR)
100
-
101
- Direct workflow manipulation. Normally use Helga + SDK, but these exist for quick operations:
102
-
103
- | Tool | Description | Group |
104
- |------|-------------|-------|
105
- | `install_workflow` | Create workflow via MCP | PLAYGROUND |
106
- | `remove_workflow` | Delete workflow | NUCLEAR |
107
- | `update_workflow_field` | Modify field config | PLAYGROUND |
108
- | `update_workflow_phase` | Modify phase config | PLAYGROUND |
109
- | `test_function_field` | Test JS function | PLAYGROUND |
110
-
111
- **Warning:** NUCLEAR tools require `ENABLE_NUCLEAR_TOOLS=true` in MCP config.
112
-
113
- ---
114
-
115
- ## Tool Groups Reference
116
-
117
- | Group | Risk Level | Examples |
118
- |-------|------------|----------|
119
- | READ | Safe | list_activities, get_workflow_schema |
120
- | WRITE | Updates data | create_activity, add_discussion_message |
121
- | PLAYGROUND | Admin ops | install_workflow, update_workflow_field |
122
- | NUCLEAR | Destructive | remove_workflow, remove_app |
123
- | BOT_INTERNAL | Bots only | Not exposed to MCP clients |
124
-
125
- ---
126
-
127
- ## Usage Pattern
128
-
129
- When user requests direct tool usage:
130
-
131
- ```
132
- User: "Use the bug fixer to fix this app"
133
-
134
- Orchestrator:
135
- 1. Load this skill
136
- 2. Call tools directly via mcp__hailer__<tool_name>
137
- 3. Follow workflow patterns above
138
- 4. Report results
139
- ```
140
-
141
- ---
142
-
143
- ## Tools NOT Covered Here
144
-
145
- These are assigned to agents - use the agent instead:
146
-
147
- | Tool | Agent |
148
- |------|-------|
149
- | Activity CRUD | Dmitri |
150
- | Discussions | Yevgeni |
151
- | App scaffold/create | Giuseppe |
152
- | Insights preview/data | Viktor |
153
- | User search | Permissions Handler |
@@ -1,72 +0,0 @@
1
- ---
2
- name: optional-parameters
3
- description: Omit optional parameters instead of passing empty values
4
- version: 1.0.0
5
- triggers: Tool error about empty array/string when parameter should be omitted
6
- ---
7
-
8
- # Optional Parameters
9
-
10
- <purpose>
11
- Teach correct handling of optional tool parameters - OMIT them entirely when not needed, rather than passing empty arrays, strings, or null values.
12
- </purpose>
13
-
14
- <patterns>
15
- ## Pattern 1: Omit vs Empty Value
16
-
17
- **Key distinction:**
18
- - **OMIT parameter**: Don't include it in the function call at all
19
- - **NOT same as empty value**: `[]`, `""`, `null`, `undefined` are NOT valid replacements for omission
20
-
21
- ## Pattern 2: When to Omit
22
-
23
- - Updating insight public/name but NOT sources → omit sources
24
- - Updating activity field but NOT name → omit name
25
- - Any "required" schema parameter that's not relevant to current operation
26
-
27
- ## Pattern 3: Rule of Thumb
28
-
29
- If you're not changing/using a value, OMIT the parameter entirely rather than passing empty/null.
30
- </patterns>
31
-
32
- <examples>
33
- ## Example 1: Correct - Omitting Unused Parameters
34
-
35
- ```typescript
36
- // Update insight - only changing public flag
37
- // sources parameter exists in schema but NOT needed for this update
38
- update_insight({
39
- insightId: "abc123",
40
- public: false
41
- // sources: NOT included - omit entirely
42
- });
43
-
44
- // Update insight - changing sources
45
- update_insight({
46
- insightId: "abc123",
47
- sources: [{
48
- name: 'tasks',
49
- workflowId: 'wf123',
50
- fields: [{ name: 'title', meta: 'name' }]
51
- }]
52
- // Include sources when actually updating them
53
- });
54
- ```
55
-
56
- ## Example 2: Wrong - Passing Empty Values
57
-
58
- ```typescript
59
- // WRONG - Passing empty array when parameter should be omitted
60
- update_insight({
61
- insightId: "abc123",
62
- public: false,
63
- sources: [] // Error: sources must contain at least 1 items
64
- });
65
-
66
- // WRONG - Passing empty string
67
- update_activity({
68
- activityId: "xyz",
69
- name: "" // Error: name cannot be empty
70
- });
71
- ```
72
- </examples>
@@ -1,244 +0,0 @@
1
- ---
2
- name: publish-hailer-app
3
- description: Guide for publishing Hailer apps to production
4
- version: 1.2.0
5
- triggers:
6
- - publish app
7
- - deploy app
8
- - production app
9
- ---
10
-
11
- # Publish Hailer App Skill
12
-
13
- Guide for publishing Hailer apps to production using MCP tools.
14
-
15
- <warning>
16
- ## ⚠️ Publishing Requires Explicit User Request
17
-
18
- **Default is local development** — scaffold creates a dev app at `http://localhost:3000` automatically.
19
-
20
- **Only use this skill when the user explicitly asks to publish or deploy to production.**
21
-
22
- Before publishing: validate manifest.json (see below), then `publish_hailer_app`, then `update_app` to switch URL.
23
- </warning>
24
-
25
- <critical>
26
- ## MANDATORY: Validate Before Publishing
27
-
28
- The `publish_hailer_app` tool will SILENTLY FAIL if manifest.json is misconfigured.
29
-
30
- **YOU MUST validate these before calling publish_hailer_app:**
31
-
32
- 1. Read `public/manifest.json` in the project
33
- 2. Check `appId` exists and is 24 characters
34
- 3. Check `version` exists and is NOT empty (e.g., "1.0.0")
35
- 4. Check `versionDescription` exists and is NOT empty
36
-
37
- If ANY are missing/empty, FIX THEM FIRST before publishing.
38
- </critical>
39
-
40
- <validation-code>
41
- ## Validation Steps (DO THIS FIRST)
42
-
43
- ```
44
- 1. Read({file_path: "{projectDir}/public/manifest.json"})
45
-
46
- 2. Verify JSON contains:
47
- - "appId": "24-char-id" ← If missing: use create_app first
48
- - "version": "1.0.0" ← If empty: set to "1.0.0"
49
- - "versionDescription": "..." ← If empty: set to "Initial release"
50
-
51
- 3. If any field missing/empty → Edit manifest.json to fix
52
-
53
- 4. ONLY THEN call publish_hailer_app
54
- ```
55
- </validation-code>
56
-
57
- <workflow>
58
- ## Full Publishing Workflow
59
-
60
- ### Step 1: Check if Production App Exists
61
-
62
- ```javascript
63
- list_apps()
64
- ```
65
- Look for your app with a `https://apps.hailer.com/...` URL (NOT localhost).
66
-
67
- ### Step 2: Create Production App (if needed)
68
-
69
- If app doesn't exist or only has localhost URL:
70
- ```javascript
71
- create_app({
72
- name: "My App Name",
73
- description: "What the app does"
74
- })
75
- ```
76
- Returns new appId with production URL.
77
-
78
- ### Step 3: Validate & Fix manifest.json
79
-
80
- Read the manifest:
81
- ```javascript
82
- Read({file_path: "{projectDir}/public/manifest.json"})
83
- ```
84
-
85
- Required structure:
86
- ```json
87
- {
88
- "appId": "695816e2ba1d8bef3af7e018",
89
- "version": "1.0.0",
90
- "versionDescription": "Initial production release"
91
- }
92
- ```
93
-
94
- **If appId missing:** Add the ID from Step 2
95
- **If version empty:** Set to "1.0.0"
96
- **If versionDescription empty:** Set to "Initial release"
97
-
98
- ### Step 4: Publish
99
-
100
- ```javascript
101
- publish_hailer_app({
102
- projectDirectory: "/path/to/app"
103
- })
104
- ```
105
-
106
- ### Step 5: Switch URL to Production
107
-
108
- `publish_hailer_app` uploads files but does NOT change the app URL. Switch it:
109
- ```javascript
110
- update_app({
111
- appId: "695816e2ba1d8bef3af7e018",
112
- url: "https://apps.hailer.com/{workspaceId}/{appId}/"
113
- })
114
- ```
115
-
116
- ### Step 6: Verify
117
-
118
- ```javascript
119
- list_apps()
120
- ```
121
- Confirm URL is `https://apps.hailer.com/...` (not localhost).
122
- </workflow>
123
-
124
- <silent-failure>
125
- ## Why Silent Failures Happen
126
-
127
- The SDK publish script requires `version` and `versionDescription` in manifest.json.
128
- If missing/empty, the tool returns "Success" but files are NOT uploaded.
129
-
130
- **Symptoms of silent failure:**
131
- - Tool says "App Published Successfully!"
132
- - But app URL is still `http://localhost:3000`
133
- - Or production URL returns 403/404
134
-
135
- **Always validate manifest BEFORE publishing.**
136
- </silent-failure>
137
-
138
- <dev-vs-prod>
139
- ## Dev vs Production Apps
140
-
141
- | Type | URL | Created By | Can Publish To |
142
- |------|-----|------------|----------------|
143
- | Dev | `http://localhost:3000` | `scaffold_hailer_app` or `create_app` | YES (after URL switch) |
144
- | Prod | `https://apps.hailer.com/{workspaceId}/{appId}/` | `create_app` | YES |
145
-
146
- **URL switching workflow:**
147
- 1. During development: app URL is `http://localhost:3000/`
148
- 2. When ready to publish: call `update_app` to set production URL: `https://apps.hailer.com/{workspaceId}/{appId}/`
149
- 3. After publishing: URL stays as production
150
-
151
- **Important:** `publish_hailer_app` uploads built files but does NOT automatically update the URL. You MUST also call `update_app` with the production URL format.
152
- </dev-vs-prod>
153
-
154
- <updating>
155
- ## Updating Published Apps
156
-
157
- 1. Bump version in manifest.json:
158
- ```json
159
- {
160
- "version": "1.0.1",
161
- "versionDescription": "Fixed data loading bug"
162
- }
163
- ```
164
-
165
- 2. Publish:
166
- ```javascript
167
- publish_hailer_app({
168
- projectDirectory: "/path/to/app"
169
- })
170
- ```
171
-
172
- New version replaces old at same URL.
173
- </updating>
174
-
175
- <sharing>
176
- ## Sharing Apps
177
-
178
- ```javascript
179
- // Entire workspace
180
- add_app_member({ appId: "...", member: "network_{workspaceId}" })
181
-
182
- // Team
183
- add_app_member({ appId: "...", member: "team_{teamId}" })
184
-
185
- // User
186
- add_app_member({ appId: "...", member: "user_{userId}" })
187
- ```
188
- </sharing>
189
-
190
- <vite-config>
191
- ## CRITICAL: Vite Base Path
192
-
193
- Vite apps MUST have `base: './'` in vite.config.ts for production deployment.
194
-
195
- ```typescript
196
- // vite.config.ts
197
- export default defineConfig({
198
- base: './', // REQUIRED for production
199
- // ... other config
200
- });
201
- ```
202
-
203
- **Without this:**
204
- - Asset paths resolve to root domain instead of app folder
205
- - Production app returns 403/404 errors
206
- - Works in localhost but fails in production
207
-
208
- **Also verify:** The .tgz package must have files at `package/dist/` path structure.
209
- </vite-config>
210
-
211
- <cache-busting>
212
- ## CRITICAL: Browser Cache for Published Apps
213
-
214
- Published Hailer apps serve stale versions from browser cache. Vite's hashed JS/CSS filenames handle asset cache-busting, but `index.html` itself needs no-cache headers.
215
-
216
- **Add these meta tags to `index.html` `<head>` before publishing:**
217
-
218
- ```html
219
- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
220
- <meta http-equiv="Pragma" content="no-cache" />
221
- <meta http-equiv="Expires" content="0" />
222
- ```
223
-
224
- **Without these:**
225
- - Users see old app version after publish
226
- - Hard refresh (Ctrl+Shift+R) works but users won't know to do it
227
- - Particularly bad for bug fix deploys where users expect changes immediately
228
-
229
- **Why meta tags not server headers?**
230
- Hailer apps are served from `apps.hailer.com` static hosting - we can't control server headers. Meta tags are the only client-side cache control available.
231
- </cache-busting>
232
-
233
- <checklist>
234
- ## Pre-Publish Checklist
235
-
236
- - [ ] Production app exists (`create_app`, not scaffold)
237
- - [ ] manifest.json `appId` is 24 chars (not empty)
238
- - [ ] manifest.json `version` is set (e.g., "1.0.0")
239
- - [ ] manifest.json `versionDescription` is set (not empty)
240
- - [ ] vite.config.ts has `base: './'`
241
- - [ ] index.html has no-cache meta tags (see cache-busting section)
242
- - [ ] node_modules exists (dependencies installed)
243
- - [ ] After publish: `update_app` called to switch URL to production format
244
- </checklist>