@hailer/mcp 0.0.6 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/ada.md +127 -0
- package/.claude/agents/agent-builder.md +151 -0
- package/.claude/agents/alejandro.md +66 -0
- package/.claude/agents/bjorn.md +305 -0
- package/.claude/agents/dmitri.md +61 -0
- package/.claude/agents/giuseppe.md +66 -0
- package/.claude/agents/gunther.md +355 -0
- package/.claude/agents/helga.md +68 -0
- package/.claude/agents/ingrid.md +108 -0
- package/.claude/agents/kenji.md +58 -0
- package/.claude/agents/svetlana.md +394 -0
- package/.claude/agents/viktor.md +63 -0
- package/.claude/agents/yevgeni.md +60 -0
- package/.claude/hooks/agent-failure-detector.cjs +286 -0
- package/.claude/hooks/app-edit-guard.cjs +462 -0
- package/.claude/hooks/interactive-mode.cjs +59 -0
- package/.claude/hooks/mcp-server-guard.cjs +92 -0
- package/.claude/hooks/post-scaffold-hook.cjs +31 -0
- package/.claude/hooks/sdk-delete-guard.cjs +2 -0
- package/.claude/hooks/src-edit-guard.cjs +208 -0
- package/.claude/settings.json +47 -2
- package/.claude/skills/insight-join-patterns/SKILL.md +209 -0
- package/.env.example +13 -1
- package/CLAUDE.md +135 -0
- package/dist/app.js +4 -3
- package/dist/cli.js +0 -0
- package/dist/client/adaptive-documentation-bot.d.ts +0 -2
- package/dist/client/adaptive-documentation-bot.js +5 -16
- package/dist/client/message-processor.js +5 -0
- package/dist/client/providers/anthropic-provider.js +21 -7
- package/dist/mcp/UserContextCache.d.ts +14 -0
- package/dist/mcp/UserContextCache.js +49 -24
- package/dist/mcp/auth.d.ts +7 -0
- package/dist/mcp/auth.js +13 -5
- package/dist/mcp/hailer-clients.d.ts +5 -2
- package/dist/mcp/signal-handler.d.ts +28 -2
- package/dist/mcp/signal-handler.js +4 -2
- package/dist/mcp/tool-registry.d.ts +55 -2
- package/dist/mcp/tool-registry.js +197 -2
- package/dist/mcp/tools/app-core.d.ts +15 -0
- package/dist/mcp/tools/app-core.js +609 -0
- package/dist/mcp/tools/app-marketplace.d.ts +21 -0
- package/dist/mcp/tools/app-marketplace.js +1284 -0
- package/dist/mcp/tools/app-member.d.ts +11 -0
- package/dist/mcp/tools/app-member.js +258 -0
- package/dist/mcp/tools/app-scaffold.d.ts +11 -0
- package/dist/mcp/tools/app-scaffold.js +743 -0
- package/dist/mcp/tools/app.d.ts +13 -22
- package/dist/mcp/tools/app.js +17 -2466
- package/dist/mcp/tools/file.js +6 -6
- package/dist/mcp/tools/insight.d.ts +1 -0
- package/dist/mcp/tools/insight.js +203 -64
- package/dist/mcp/tools/user.js +3 -9
- package/dist/mcp/tools/workflow.js +49 -38
- package/dist/mcp/utils/hailer-api-client.js +4 -13
- package/dist/mcp/utils/tool-helpers.d.ts +102 -0
- package/dist/mcp/utils/tool-helpers.js +179 -0
- package/dist/mcp/utils/types.d.ts +6 -0
- package/dist/mcp/workspace-cache.d.ts +5 -5
- package/dist/mcp/workspace-cache.js +4 -3
- package/package.json +1 -1
- package/.claude/hooks/PreToolUse.sh +0 -52
- package/.claude/hooks/prompt-skill-loader.cjs +0 -553
- package/.claude/hooks/skill-loader.cjs +0 -142
- package/.claude/settings.local.json +0 -49
- package/.claude/skills/MCP-add-app-member-skill/SKILL.md +0 -977
- package/.claude/skills/MCP-build-data-app-skill/SKILL.md +0 -372
- package/.claude/skills/MCP-create-app-skill/SKILL.md +0 -1101
- package/.claude/skills/MCP-create-insight-skill/SKILL.md +0 -1317
- package/.claude/skills/MCP-get-insight-data-skill/SKILL.md +0 -1053
- package/.claude/skills/MCP-insight-api/SKILL.md +0 -185
- package/.claude/skills/MCP-insight-api/references/insight-endpoints.md +0 -514
- package/.claude/skills/MCP-install-workflow-skill/SKILL.md +0 -1056
- package/.claude/skills/MCP-list-apps-skill/SKILL.md +0 -1010
- package/.claude/skills/MCP-list-workflows-minimal-skill/SKILL.md +0 -992
- package/.claude/skills/MCP-local-first-skill/SKILL.md +0 -570
- package/.claude/skills/MCP-populate-workflow-data-skill/SKILL.md +0 -395
- package/.claude/skills/MCP-preview-insight-skill/SKILL.md +0 -1290
- package/.claude/skills/MCP-publish-hailer-app-skill/SKILL.md +0 -453
- package/.claude/skills/MCP-publish-template-skill/SKILL.md +0 -278
- package/.claude/skills/MCP-remove-app-member-skill/SKILL.md +0 -671
- package/.claude/skills/MCP-remove-app-skill/SKILL.md +0 -985
- package/.claude/skills/MCP-remove-insight-skill/SKILL.md +0 -1011
- package/.claude/skills/MCP-remove-workflow-skill/SKILL.md +0 -920
- package/.claude/skills/MCP-scaffold-hailer-app-skill/SKILL.md +0 -1314
- package/.claude/skills/MCP-update-app-skill/SKILL.md +0 -970
- package/.claude/skills/MCP-update-workflow-field-skill/SKILL.md +0 -1098
- package/.claude/skills/SDK-create-function-field-skill/SKILL.md +0 -313
- package/.claude/skills/SDK-generate-skill/SKILL.md +0 -223
- package/.claude/skills/SDK-init-skill/SKILL.md +0 -177
- package/.claude/skills/SDK-workspace-setup-skill/SKILL.md +0 -605
- package/.claude/skills/SDK-ws-config-skill/SKILL.md +0 -435
- package/.claude/skills/activity-api/SKILL.md +0 -96
- package/.claude/skills/activity-api/references/activity-endpoints.md +0 -845
- package/.claude/skills/agent-building/SKILL.md +0 -243
- package/.claude/skills/agent-building/references/architecture-patterns.md +0 -446
- package/.claude/skills/agent-building/references/code-examples.md +0 -587
- package/.claude/skills/agent-building/references/implementation-guide.md +0 -619
- package/.claude/skills/app-api/SKILL.md +0 -219
- package/.claude/skills/app-api/references/app-endpoints.md +0 -759
- package/.claude/skills/building-hailer-apps-skill/SKILL.md +0 -813
- package/.claude/skills/hailer-api/SKILL.md +0 -283
- package/.claude/skills/hailer-api/references/activities.md +0 -620
- package/.claude/skills/hailer-api/references/authentication.md +0 -216
- package/.claude/skills/hailer-api/references/datasets.md +0 -437
- package/.claude/skills/hailer-api/references/files.md +0 -301
- package/.claude/skills/hailer-api/references/insights.md +0 -469
- package/.claude/skills/hailer-api/references/workflows.md +0 -720
- package/.claude/skills/hailer-api/references/workspaces-users.md +0 -445
- package/.claude/skills/hailer-app-builder/SKILL.md +0 -340
- package/.claude/skills/mcp-tools/SKILL.md +0 -419
- package/.claude/skills/mcp-tools/references/api-endpoints.md +0 -499
- package/.claude/skills/mcp-tools/references/data-structures.md +0 -554
- package/.claude/skills/mcp-tools/references/implementation-patterns.md +0 -717
- package/.claude/skills/skill-testing/README.md +0 -137
- package/.claude/skills/skill-testing/SKILL.md +0 -348
- package/.claude/skills/skill-testing/references/test-patterns.md +0 -705
- package/.claude/skills/skill-testing/references/testing-guide.md +0 -603
- package/.claude/skills/skill-testing/references/validation-checklist.md +0 -537
- package/.claude/skills/spawn-app-builder/SKILL.md +0 -366
- package/.claude/skills/tool-builder/SKILL.md +0 -328
- package/tsconfig.json +0 -23
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Publish Template Skill
|
|
3
|
-
description: Complete guide for publishing Hailer workspace templates to marketplace - use when creating shareable workflow configurations
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Publish Template Skill
|
|
7
|
-
|
|
8
|
-
This skill provides comprehensive documentation for publishing Hailer workspace templates to the marketplace. Templates allow you to share complete workspace configurations (workflows, fields, phases) with other workspaces.
|
|
9
|
-
|
|
10
|
-
## When to Use This Skill
|
|
11
|
-
|
|
12
|
-
Invoke this skill when:
|
|
13
|
-
- Publishing a workspace as a template
|
|
14
|
-
- Creating marketplace templates
|
|
15
|
-
- Sharing workflow configurations with others
|
|
16
|
-
- Managing template versions
|
|
17
|
-
|
|
18
|
-
## What are Templates?
|
|
19
|
-
|
|
20
|
-
**Templates = Shareable workspace configurations**
|
|
21
|
-
|
|
22
|
-
Think of them as:
|
|
23
|
-
- **Workspace Snapshots**: All workflows, fields, phases packaged together
|
|
24
|
-
- **Reusable Blueprints**: Install in other workspaces
|
|
25
|
-
- **Version Controlled**: Track changes across versions
|
|
26
|
-
|
|
27
|
-
## Available Template Tools
|
|
28
|
-
|
|
29
|
-
| Tool | Purpose |
|
|
30
|
-
|------|---------|
|
|
31
|
-
| `list_templates` | View templates in marketplace |
|
|
32
|
-
| `create_template` | Create template entry |
|
|
33
|
-
| `install_template` | Install template to workspace |
|
|
34
|
-
| `get_template` | Get template details |
|
|
35
|
-
| `publish_template` | Publish workspace as template |
|
|
36
|
-
| `get_product` | Get product details (v3 API) |
|
|
37
|
-
| `get_product_manifest` | Get product manifest |
|
|
38
|
-
|
|
39
|
-
## Publishing a Template
|
|
40
|
-
|
|
41
|
-
### Required Parameters
|
|
42
|
-
|
|
43
|
-
```javascript
|
|
44
|
-
publish_template({
|
|
45
|
-
title: "Template Name", // Required: Display name (max 64 chars)
|
|
46
|
-
description: "What it does", // Required: Description (max 4096 chars)
|
|
47
|
-
version: "1.0.0", // Required: Version string
|
|
48
|
-
versionDescription: "Release notes", // Required: Version notes
|
|
49
|
-
publisher: "Company Name", // Required: Publisher name
|
|
50
|
-
iconFileId: "24-char-file-id" // Required: Icon file ID
|
|
51
|
-
})
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Optional Parameters
|
|
55
|
-
|
|
56
|
-
```javascript
|
|
57
|
-
{
|
|
58
|
-
productId: "existing-product-id", // To UPDATE existing template
|
|
59
|
-
imageFileIds: ["file-id-1", "file-id-2"], // Preview images
|
|
60
|
-
externalUrl: "https://example.com" // External website
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Updating an Existing Template
|
|
65
|
-
|
|
66
|
-
To update an existing template (change icon, description, etc.), include the `productId`:
|
|
67
|
-
|
|
68
|
-
```javascript
|
|
69
|
-
publish_template({
|
|
70
|
-
productId: "692d46bfca77093f10b0c09c", // Existing product ID from list_templates
|
|
71
|
-
title: "Football Club Manager",
|
|
72
|
-
description: "Updated description",
|
|
73
|
-
version: "1.1.0",
|
|
74
|
-
versionDescription: "Updated icon and improved workflows",
|
|
75
|
-
publisher: "Community",
|
|
76
|
-
iconFileId: "new-icon-file-id"
|
|
77
|
-
})
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Complete Workflow
|
|
81
|
-
|
|
82
|
-
**Step 1: Gather ALL information from user**
|
|
83
|
-
|
|
84
|
-
Use `AskUserQuestion` or direct questions to collect:
|
|
85
|
-
- Template name (max 64 chars)
|
|
86
|
-
- Description (what workflows are included)
|
|
87
|
-
- Version (e.g., "1.0.0")
|
|
88
|
-
- Version description (release notes)
|
|
89
|
-
- Publisher name (company or person)
|
|
90
|
-
- Icon source (URL, file path, or existing fileId)
|
|
91
|
-
|
|
92
|
-
**Step 2: Upload the icon**
|
|
93
|
-
|
|
94
|
-
**CRITICAL: Icons MUST be uploaded with `isPublic: true` or they won't display!**
|
|
95
|
-
|
|
96
|
-
```javascript
|
|
97
|
-
upload_files({ files: [{ path: "/path/to/icon.png", isPublic: true }] })
|
|
98
|
-
// Returns: { fileId: "692d3e66e98c7bab4af7f0a1" }
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**Step 3: Publish the template**
|
|
102
|
-
```javascript
|
|
103
|
-
publish_template({
|
|
104
|
-
title: "Football Manager",
|
|
105
|
-
description: "Complete football club management workspace",
|
|
106
|
-
version: "1.0.0",
|
|
107
|
-
versionDescription: "Initial release with Players, Matches, Training workflows",
|
|
108
|
-
publisher: "Hailer Oy",
|
|
109
|
-
iconFileId: "692d3e66e98c7bab4af7f0a1"
|
|
110
|
-
})
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Interactive Icon Workflow
|
|
114
|
-
|
|
115
|
-
When user asks to publish a template, use `AskUserQuestion` to ask about the icon:
|
|
116
|
-
|
|
117
|
-
```javascript
|
|
118
|
-
// Ask about icon
|
|
119
|
-
AskUserQuestion({
|
|
120
|
-
questions: [{
|
|
121
|
-
question: "Template icon is required. How would you like to provide it?",
|
|
122
|
-
header: "Icon",
|
|
123
|
-
options: [
|
|
124
|
-
{ label: "Upload from URL", description: "Provide a URL to an image" },
|
|
125
|
-
{ label: "Upload from file path", description: "Provide a local file path" },
|
|
126
|
-
{ label: "Use existing fileId", description: "I already have a file ID" }
|
|
127
|
-
],
|
|
128
|
-
multiSelect: false
|
|
129
|
-
}]
|
|
130
|
-
})
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Then:
|
|
134
|
-
- If URL: `upload_files({ files: [{ url: "https://...", isPublic: true }] })`
|
|
135
|
-
- If path: `upload_files({ files: [{ path: "/path/to/icon.png", isPublic: true }] })`
|
|
136
|
-
- If fileId: Use directly in `publish_template`
|
|
137
|
-
|
|
138
|
-
**IMPORTANT:** Always use `isPublic: true` when uploading icons or they won't display in the UI!
|
|
139
|
-
|
|
140
|
-
## What Gets Published
|
|
141
|
-
|
|
142
|
-
When you publish a template, the **entire current workspace** is included:
|
|
143
|
-
- All workflows
|
|
144
|
-
- All fields and their configurations
|
|
145
|
-
- All phases and their settings
|
|
146
|
-
- Field relationships (activitylinks)
|
|
147
|
-
- Function fields with formulas
|
|
148
|
-
|
|
149
|
-
## Listing Templates
|
|
150
|
-
|
|
151
|
-
```javascript
|
|
152
|
-
// List private/workspace templates (default)
|
|
153
|
-
list_templates()
|
|
154
|
-
|
|
155
|
-
// List public marketplace templates
|
|
156
|
-
list_templates({ publicOnly: true })
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
## Installing Templates
|
|
160
|
-
|
|
161
|
-
```javascript
|
|
162
|
-
install_template({
|
|
163
|
-
templateId: "692d3eade98c7bab4af7f173"
|
|
164
|
-
})
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
This creates new workflows in your workspace based on the template.
|
|
168
|
-
|
|
169
|
-
## Getting Template Details
|
|
170
|
-
|
|
171
|
-
```javascript
|
|
172
|
-
// Get template info
|
|
173
|
-
get_template({ templateId: "692d3eade98c7bab4af7f173" })
|
|
174
|
-
|
|
175
|
-
// Get product details (v3 API)
|
|
176
|
-
get_product({ productId: "692d3eade98c7bab4af7f173" })
|
|
177
|
-
|
|
178
|
-
// Get manifest
|
|
179
|
-
get_product_manifest({ productId: "692d3eade98c7bab4af7f173" })
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## API Flow (Internal)
|
|
183
|
-
|
|
184
|
-
The `publish_template` tool performs two API calls:
|
|
185
|
-
|
|
186
|
-
1. **v2.network.product.publishTemplate** - Creates template manifest
|
|
187
|
-
- Returns product ID
|
|
188
|
-
|
|
189
|
-
2. **v3.product.create** - Publishes to marketplace
|
|
190
|
-
- Requires: `cid`, `targetId`, `name`, `description`, `type`, `publisher`, `icon`, `images`
|
|
191
|
-
|
|
192
|
-
## PreToolUse Hook Protection
|
|
193
|
-
|
|
194
|
-
A hook will **BLOCK** `publish_template` if any required field is missing:
|
|
195
|
-
- title, description, version, versionDescription, publisher, iconFileId
|
|
196
|
-
|
|
197
|
-
This ensures you gather ALL information before calling the tool.
|
|
198
|
-
|
|
199
|
-
## Example: Full Publishing Flow
|
|
200
|
-
|
|
201
|
-
```javascript
|
|
202
|
-
// 1. User asks to publish template
|
|
203
|
-
|
|
204
|
-
// 2. Gather ALL required information:
|
|
205
|
-
// - Ask for template name, description, version, release notes, publisher
|
|
206
|
-
// - Ask how to provide icon
|
|
207
|
-
|
|
208
|
-
// 3. Upload icon if needed (MUST use isPublic: true!)
|
|
209
|
-
const uploadResult = await upload_files({
|
|
210
|
-
files: [{ path: "/home/user/icons/football.png", isPublic: true }]
|
|
211
|
-
});
|
|
212
|
-
const iconFileId = uploadResult.fileIds[0];
|
|
213
|
-
|
|
214
|
-
// 4. Publish template with ALL required fields
|
|
215
|
-
const result = await publish_template({
|
|
216
|
-
title: "Football Manager",
|
|
217
|
-
description: "Complete football club management workspace with player tracking, match management, and statistics",
|
|
218
|
-
version: "1.0.0",
|
|
219
|
-
versionDescription: "Initial release with Players, Matches, Training workflows",
|
|
220
|
-
publisher: "Hailer Oy",
|
|
221
|
-
iconFileId: iconFileId
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
// 5. Share the product ID
|
|
225
|
-
// Result includes productId for others to install
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Version Updates
|
|
229
|
-
|
|
230
|
-
To update an existing template, include the `productId` parameter:
|
|
231
|
-
|
|
232
|
-
```javascript
|
|
233
|
-
// Get the product ID from list_templates first
|
|
234
|
-
const templates = await list_templates();
|
|
235
|
-
// Find your template's ID
|
|
236
|
-
|
|
237
|
-
// Update with new version
|
|
238
|
-
publish_template({
|
|
239
|
-
productId: "existing-product-id",
|
|
240
|
-
title: "Template Name",
|
|
241
|
-
description: "Updated description",
|
|
242
|
-
version: "1.1.0", // New version number
|
|
243
|
-
versionDescription: "What changed in this version",
|
|
244
|
-
publisher: "Publisher Name",
|
|
245
|
-
iconFileId: "icon-file-id"
|
|
246
|
-
})
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
## Requirements
|
|
250
|
-
|
|
251
|
-
- User must be workspace administrator
|
|
252
|
-
- Icon file must be uploaded first (24-char fileId required)
|
|
253
|
-
- All required parameters must be provided
|
|
254
|
-
|
|
255
|
-
## Common Errors
|
|
256
|
-
|
|
257
|
-
| Error | Cause | Solution |
|
|
258
|
-
|-------|-------|----------|
|
|
259
|
-
| `"fileId" is required` | No icon provided | Upload icon first with `upload_files` |
|
|
260
|
-
| `"images" is required` | Icon format wrong | Tool handles this automatically |
|
|
261
|
-
| Permission denied | Not admin | User needs admin permissions |
|
|
262
|
-
| Icon not displaying | File not public | Upload with `isPublic: true` |
|
|
263
|
-
| Product not found | Wrong product ID | Use `list_templates` to get correct ID |
|
|
264
|
-
|
|
265
|
-
## Best Practices
|
|
266
|
-
|
|
267
|
-
1. **Use descriptive titles** - Clear names help users understand purpose
|
|
268
|
-
2. **Write good descriptions** - Explain what workflows are included
|
|
269
|
-
3. **Version semantically** - Use 1.0.0, 1.1.0, 2.0.0 format
|
|
270
|
-
4. **Write release notes** - Document what changed in each version
|
|
271
|
-
5. **Choose good icons** - Visual identity helps recognition
|
|
272
|
-
|
|
273
|
-
## Related Tools
|
|
274
|
-
|
|
275
|
-
- `list_workflows` - See workflows before publishing
|
|
276
|
-
- `upload_files` - Upload template icon
|
|
277
|
-
- `list_templates` - Verify template was published
|
|
278
|
-
- `install_template` - Test by installing in another workspace
|