@hailer/mcp 1.0.29 → 1.1.3

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 (233) hide show
  1. package/.claude/.session-checked +1 -0
  2. package/.claude/agents/agent-ada-skill-builder.md +10 -2
  3. package/.claude/agents/agent-alejandro-function-fields.md +104 -37
  4. package/.claude/agents/agent-bjorn-config-audit.md +41 -21
  5. package/.claude/agents/agent-builder-agent-creator.md +13 -3
  6. package/.claude/agents/agent-code-simplifier.md +53 -0
  7. package/.claude/agents/agent-dmitri-activity-crud.md +126 -11
  8. package/.claude/agents/agent-giuseppe-app-builder.md +212 -22
  9. package/.claude/agents/agent-gunther-mcp-tools.md +7 -36
  10. package/.claude/agents/agent-helga-workflow-config.md +75 -10
  11. package/.claude/agents/agent-igor-activity-mover-automation.md +125 -0
  12. package/.claude/agents/agent-ingrid-doc-templates.md +164 -36
  13. package/.claude/agents/agent-ivan-monolith.md +154 -0
  14. package/.claude/agents/agent-kenji-data-reader.md +15 -8
  15. package/.claude/agents/agent-lars-code-inspector.md +56 -8
  16. package/.claude/agents/agent-marco-mockup-builder.md +110 -0
  17. package/.claude/agents/agent-marcus-api-documenter.md +323 -0
  18. package/.claude/agents/agent-marketplace-publisher.md +232 -72
  19. package/.claude/agents/agent-marketplace-reviewer.md +255 -79
  20. package/.claude/agents/agent-permissions-handler.md +208 -0
  21. package/.claude/agents/agent-simple-writer.md +48 -0
  22. package/.claude/agents/agent-svetlana-code-review.md +127 -14
  23. package/.claude/agents/agent-tanya-test-runner.md +333 -0
  24. package/.claude/agents/agent-ui-designer.md +100 -0
  25. package/.claude/agents/agent-viktor-sql-insights.md +19 -6
  26. package/.claude/agents/agent-web-search.md +55 -0
  27. package/.claude/agents/agent-yevgeni-discussions.md +7 -1
  28. package/.claude/agents/agent-zara-zapier.md +159 -0
  29. package/.claude/commands/app-squad.md +135 -0
  30. package/.claude/commands/audit-squad.md +158 -0
  31. package/.claude/commands/autoplan.md +563 -0
  32. package/.claude/commands/cleanup-squad.md +98 -0
  33. package/.claude/commands/config-squad.md +106 -0
  34. package/.claude/commands/crud-squad.md +87 -0
  35. package/.claude/commands/data-squad.md +97 -0
  36. package/.claude/commands/debug-squad.md +303 -0
  37. package/.claude/commands/doc-squad.md +65 -0
  38. package/.claude/commands/handoff.md +137 -0
  39. package/.claude/commands/health.md +49 -0
  40. package/.claude/commands/help.md +2 -1
  41. package/.claude/commands/help:agents.md +96 -16
  42. package/.claude/commands/help:commands.md +55 -11
  43. package/.claude/commands/help:faq.md +16 -1
  44. package/.claude/commands/help:skills.md +93 -0
  45. package/.claude/commands/hotfix-squad.md +112 -0
  46. package/.claude/commands/integration-squad.md +82 -0
  47. package/.claude/commands/janitor-squad.md +167 -0
  48. package/.claude/commands/learn-auto.md +120 -0
  49. package/.claude/commands/learn.md +120 -0
  50. package/.claude/commands/mcp-list.md +27 -0
  51. package/.claude/commands/onboard-squad.md +140 -0
  52. package/.claude/commands/plan-workspace.md +732 -0
  53. package/.claude/commands/prd.md +131 -0
  54. package/.claude/commands/project-status.md +82 -0
  55. package/.claude/commands/publish.md +138 -0
  56. package/.claude/commands/recap.md +69 -0
  57. package/.claude/commands/restore.md +64 -0
  58. package/.claude/commands/review-squad.md +152 -0
  59. package/.claude/commands/save.md +24 -0
  60. package/.claude/commands/stats.md +19 -0
  61. package/.claude/commands/swarm.md +210 -0
  62. package/.claude/commands/tool-builder.md +3 -1
  63. package/.claude/commands/ws-pull.md +1 -1
  64. package/.claude/commands/yolo-off.md +17 -0
  65. package/.claude/commands/yolo.md +82 -0
  66. package/.claude/hooks/_shared-memory.cjs +305 -0
  67. package/.claude/hooks/_utils.cjs +134 -0
  68. package/.claude/hooks/agent-failure-detector.cjs +164 -79
  69. package/.claude/hooks/agent-usage-logger.cjs +204 -0
  70. package/.claude/hooks/app-edit-guard.cjs +20 -4
  71. package/.claude/hooks/auto-learn.cjs +316 -0
  72. package/.claude/hooks/bash-guard.cjs +282 -0
  73. package/.claude/hooks/builder-mode-manager.cjs +183 -54
  74. package/.claude/hooks/bulk-activity-guard.cjs +283 -0
  75. package/.claude/hooks/context-watchdog.cjs +292 -0
  76. package/.claude/hooks/delegation-reminder.cjs +478 -0
  77. package/.claude/hooks/design-system-lint.cjs +283 -0
  78. package/.claude/hooks/post-scaffold-hook.cjs +16 -3
  79. package/.claude/hooks/prompt-guard.cjs +366 -0
  80. package/.claude/hooks/publish-template-guard.cjs +16 -0
  81. package/.claude/hooks/session-start.cjs +35 -0
  82. package/.claude/hooks/shared-memory-writer.cjs +147 -0
  83. package/.claude/hooks/skill-injector.cjs +140 -0
  84. package/.claude/hooks/skill-usage-logger.cjs +258 -0
  85. package/.claude/hooks/src-edit-guard.cjs +16 -1
  86. package/.claude/hooks/sync-marketplace-agents.cjs +53 -8
  87. package/.claude/scripts/yolo-toggle.cjs +142 -0
  88. package/.claude/settings.json +141 -14
  89. package/.claude/skills/SDK-activity-patterns/SKILL.md +428 -0
  90. package/.claude/skills/SDK-document-templates/SKILL.md +1033 -0
  91. package/.claude/skills/SDK-function-fields/SKILL.md +542 -0
  92. package/.claude/skills/SDK-generate-skill/SKILL.md +92 -0
  93. package/.claude/skills/SDK-init-skill/SKILL.md +127 -0
  94. package/.claude/skills/SDK-insight-queries/SKILL.md +787 -0
  95. package/.claude/skills/SDK-ws-config-skill/SKILL.md +1139 -0
  96. package/.claude/skills/agent-structure/SKILL.md +98 -0
  97. package/.claude/skills/api-documentation-patterns/SKILL.md +474 -0
  98. package/.claude/skills/chrome-mcp-reference/SKILL.md +370 -0
  99. package/.claude/skills/delegation-routing/SKILL.md +202 -0
  100. package/.claude/skills/frontend-design/SKILL.md +254 -0
  101. package/.claude/skills/hailer-activity-mover/SKILL.md +213 -0
  102. package/.claude/skills/hailer-api-client/SKILL.md +518 -0
  103. package/.claude/skills/hailer-app-builder/SKILL.md +939 -11
  104. package/.claude/skills/hailer-apps-pictures/SKILL.md +269 -0
  105. package/.claude/skills/hailer-design-system/SKILL.md +235 -0
  106. package/.claude/skills/hailer-monolith-automations/SKILL.md +686 -0
  107. package/.claude/skills/hailer-permissions-system/SKILL.md +121 -0
  108. package/.claude/skills/hailer-project-protocol/SKILL.md +488 -0
  109. package/.claude/skills/hailer-rest-api/SKILL.md +61 -0
  110. package/.claude/skills/hailer-rest-api/hailer-activities.md +184 -0
  111. package/.claude/skills/hailer-rest-api/hailer-admin.md +473 -0
  112. package/.claude/skills/hailer-rest-api/hailer-calendar.md +256 -0
  113. package/.claude/skills/hailer-rest-api/hailer-feed.md +249 -0
  114. package/.claude/skills/hailer-rest-api/hailer-insights.md +195 -0
  115. package/.claude/skills/hailer-rest-api/hailer-messaging.md +276 -0
  116. package/.claude/skills/hailer-rest-api/hailer-workflows.md +283 -0
  117. package/.claude/skills/insight-join-patterns/SKILL.md +3 -0
  118. package/.claude/skills/integration-patterns/SKILL.md +421 -0
  119. package/.claude/skills/json-only-output/SKILL.md +52 -12
  120. package/.claude/skills/lsp-setup/SKILL.md +160 -0
  121. package/.claude/skills/mcp-direct-tools/SKILL.md +153 -0
  122. package/.claude/skills/optional-parameters/SKILL.md +32 -23
  123. package/.claude/skills/publish-hailer-app/SKILL.md +76 -12
  124. package/.claude/skills/testing-patterns/SKILL.md +630 -0
  125. package/.claude/skills/tool-builder/SKILL.md +250 -0
  126. package/.claude/skills/tool-parameter-usage/SKILL.md +59 -45
  127. package/.claude/skills/tool-response-verification/SKILL.md +82 -48
  128. package/.claude/skills/zapier-hailer-patterns/SKILL.md +581 -0
  129. package/.env.example +26 -7
  130. package/CLAUDE.md +290 -224
  131. package/dist/CLAUDE.md +370 -0
  132. package/dist/app.d.ts +1 -1
  133. package/dist/app.js +101 -101
  134. package/dist/bot/bot-config.d.ts +26 -0
  135. package/dist/bot/bot-config.js +135 -0
  136. package/dist/bot/bot-manager.d.ts +40 -0
  137. package/dist/bot/bot-manager.js +137 -0
  138. package/dist/bot/bot.d.ts +127 -0
  139. package/dist/bot/bot.js +1328 -0
  140. package/dist/bot/operation-logger.d.ts +28 -0
  141. package/dist/bot/operation-logger.js +132 -0
  142. package/dist/bot/services/conversation-manager.d.ts +60 -0
  143. package/dist/bot/services/conversation-manager.js +246 -0
  144. package/dist/bot/services/index.d.ts +9 -0
  145. package/dist/bot/services/index.js +18 -0
  146. package/dist/bot/services/message-classifier.d.ts +42 -0
  147. package/dist/bot/services/message-classifier.js +228 -0
  148. package/dist/bot/services/message-formatter.d.ts +88 -0
  149. package/dist/bot/services/message-formatter.js +411 -0
  150. package/dist/bot/services/session-logger.d.ts +162 -0
  151. package/dist/bot/services/session-logger.js +724 -0
  152. package/dist/bot/services/token-billing.d.ts +78 -0
  153. package/dist/bot/services/token-billing.js +233 -0
  154. package/dist/bot/services/types.d.ts +169 -0
  155. package/dist/bot/services/types.js +12 -0
  156. package/dist/bot/services/typing-indicator.d.ts +23 -0
  157. package/dist/bot/services/typing-indicator.js +60 -0
  158. package/dist/bot/services/workspace-schema-cache.d.ts +122 -0
  159. package/dist/bot/services/workspace-schema-cache.js +506 -0
  160. package/dist/bot/tool-executor.d.ts +28 -0
  161. package/dist/bot/tool-executor.js +48 -0
  162. package/dist/bot/workspace-overview.d.ts +12 -0
  163. package/dist/bot/workspace-overview.js +94 -0
  164. package/dist/cli.d.ts +1 -8
  165. package/dist/cli.js +1 -253
  166. package/dist/config.d.ts +96 -3
  167. package/dist/config.js +148 -37
  168. package/dist/core.d.ts +5 -0
  169. package/dist/core.js +61 -8
  170. package/dist/lib/discussion-lock.d.ts +42 -0
  171. package/dist/lib/discussion-lock.js +110 -0
  172. package/dist/lib/logger.d.ts +0 -1
  173. package/dist/lib/logger.js +39 -23
  174. package/dist/lib/request-logger.d.ts +77 -0
  175. package/dist/lib/request-logger.js +147 -0
  176. package/dist/mcp/UserContextCache.js +16 -13
  177. package/dist/mcp/hailer-clients.js +18 -17
  178. package/dist/mcp/signal-handler.js +43 -13
  179. package/dist/mcp/tool-registry.d.ts +4 -15
  180. package/dist/mcp/tool-registry.js +94 -32
  181. package/dist/mcp/tools/activity.js +28 -69
  182. package/dist/mcp/tools/app-core.js +9 -4
  183. package/dist/mcp/tools/app-marketplace.js +22 -12
  184. package/dist/mcp/tools/app-member.js +5 -2
  185. package/dist/mcp/tools/app-scaffold.js +32 -18
  186. package/dist/mcp/tools/bot-config/constants.d.ts +23 -0
  187. package/dist/mcp/tools/bot-config/constants.js +94 -0
  188. package/dist/mcp/tools/bot-config/core.d.ts +253 -0
  189. package/dist/mcp/tools/bot-config/core.js +2456 -0
  190. package/dist/mcp/tools/bot-config/index.d.ts +10 -0
  191. package/dist/mcp/tools/bot-config/index.js +59 -0
  192. package/dist/mcp/tools/bot-config/tools.d.ts +7 -0
  193. package/dist/mcp/tools/bot-config/tools.js +15 -0
  194. package/dist/mcp/tools/bot-config/types.d.ts +50 -0
  195. package/dist/mcp/tools/bot-config/types.js +6 -0
  196. package/dist/mcp/tools/discussion.js +107 -77
  197. package/dist/mcp/tools/document.d.ts +11 -0
  198. package/dist/mcp/tools/document.js +741 -0
  199. package/dist/mcp/tools/file.js +5 -2
  200. package/dist/mcp/tools/insight.js +36 -12
  201. package/dist/mcp/tools/investigate.d.ts +9 -0
  202. package/dist/mcp/tools/investigate.js +254 -0
  203. package/dist/mcp/tools/user.d.ts +2 -4
  204. package/dist/mcp/tools/user.js +9 -50
  205. package/dist/mcp/tools/workflow.d.ts +1 -0
  206. package/dist/mcp/tools/workflow.js +164 -52
  207. package/dist/mcp/utils/hailer-api-client.js +26 -17
  208. package/dist/mcp/webhook-handler.d.ts +64 -3
  209. package/dist/mcp/webhook-handler.js +227 -9
  210. package/dist/mcp-server.d.ts +4 -0
  211. package/dist/mcp-server.js +237 -25
  212. package/dist/plugins/bug-fixer/index.d.ts +2 -0
  213. package/dist/plugins/bug-fixer/index.js +18 -0
  214. package/dist/plugins/bug-fixer/tools.d.ts +45 -0
  215. package/dist/plugins/bug-fixer/tools.js +1096 -0
  216. package/package.json +10 -10
  217. package/scripts/test-hal-tools.ts +154 -0
  218. package/.claude/agents/agent-nora-name-functions.md +0 -123
  219. package/.claude/assistant-knowledge.md +0 -23
  220. package/.claude/commands/install-plugin.md +0 -261
  221. package/.claude/commands/list-plugins.md +0 -42
  222. package/.claude/commands/marketplace-setup.md +0 -33
  223. package/.claude/commands/publish-plugin.md +0 -55
  224. package/.claude/commands/uninstall-plugin.md +0 -87
  225. package/.claude/hooks/interactive-mode.cjs +0 -87
  226. package/.claude/hooks/mcp-server-guard.cjs +0 -108
  227. package/.claude/skills/marketplace-publishing.md +0 -155
  228. package/dist/bot/chat-bot.d.ts +0 -31
  229. package/dist/bot/chat-bot.js +0 -357
  230. package/dist/mcp/tools/metrics.d.ts +0 -13
  231. package/dist/mcp/tools/metrics.js +0 -546
  232. package/dist/stdio-server.d.ts +0 -14
  233. package/dist/stdio-server.js +0 -114
@@ -1,120 +1,280 @@
1
1
  ---
2
2
  name: agent-marketplace-publisher
3
- description: Publishes plugins to Hailer marketplace via PR workflow. Creates branches, validates, opens PRs for review.\n\n<example>\nuser: {"task":"publish","plugin":{"name":"my-agent","type":"agent","version":"1.0.0"}}\nassistant: {"status":"success","result":{"pr_url":"https://github.com/...","branch":"publish/my-agent-v1.0.0"},"summary":"PR created for my-agent v1.0.0"}\n</example>
4
- model: sonnet
3
+ description: Publishes plugins to Hailer marketplace. Git workflows, registry updates, PR creation.
4
+ model: haiku
5
5
  tools: Bash, Read, Write, Edit, Glob
6
+ skills:
7
+ - json-only-output
6
8
  ---
7
9
 
8
10
  <identity>
9
- I am the Marketplace Publisher. I create branches and push changes. Reviewer merges.
11
+ I am the Marketplace Publisher. I execute git workflows by running actual Bash commands.
12
+
13
+ CRITICAL: I MUST use the Bash tool for EVERY git/rsync/gh operation. I MUST NOT return JSON results without first running the actual commands. If I return a PR number, it MUST come from real `gh pr create` output. Returning fabricated results is a critical failure.
14
+
15
+ My workflow: Read inputs → Run bash commands → Capture real output → Return JSON with real values.
10
16
  </identity>
11
17
 
12
18
  <handles>
13
- - Publish agents to marketplace
14
- - Publish skills to marketplace
15
- - Publish hooks to marketplace
19
+ - **version_check** - Compare manifest.json with marketplace, show out-of-sync items
20
+ - **publish_plugin** - Publish single plugin to marketplace
21
+ - **publish_all** - Publish all out-of-sync plugins
16
22
  - Create plugin.json metadata
17
23
  - Update marketplace.json registry
18
24
  - Version validation (block downgrades)
25
+ - Git branch, commit, push, PR creation
26
+ - Changelog generation
19
27
  </handles>
20
28
 
29
+ <skills>
30
+ Core skills are auto-injected by SubagentStart hook — already in your context.
31
+ </skills>
32
+
21
33
  <rules>
22
- 1. **NEVER FABRICATE** - Must call tools to verify paths, check git status.
23
- 2. **VERSION CHECK** - If plugin exists, new version MUST be > existing version.
24
- 3. **JSON SAFETY** - Verify marketplace.json is valid JSON after edit.
25
- 4. **NEVER MERGE** - Only push branch. Reviewer does the merge.
26
- 5. **JSON ONLY** - Output closing brace, then STOP. Zero prose after JSON.
34
+ 1. **MUST EXECUTE COMMANDS** - Every workflow step with a bash command MUST be run via the Bash tool. NEVER return success/pr_created status without actually running git and gh commands.
35
+ 2. **NEVER FABRICATE** - Must call tools to verify paths, check git status. Every PR number and URL in output must come from actual gh command output.
36
+ 3. **VERSION CHECK** - If plugin exists, new version MUST be > existing version (semver).
37
+ 4. **DUPLICATE CHECK** - Scan ALL plugins for same filename. Return needs_confirmation if found.
38
+ 5. **JSON SAFETY** - Verify marketplace.json is valid JSON after edit.
39
+ 6. **GIT CLEAN** - Check git status before commit.
40
+ 7. **GIT TAG** - Always create tag: `plugin-name@version` after commit.
41
+ 8. **CHANGELOG** - Always update plugin's CHANGELOG.md with version entry.
42
+ 9. **JSON ONLY** - Output closing brace, then STOP. Zero prose after JSON.
27
43
  </rules>
28
44
 
29
- <marketplace-path>
30
- Use absolute path: `$(pwd)/hailer-marketplace`
45
+ <manifest-versioning>
46
+ ## Manifest-Based Version Tracking
47
+
48
+ The manifest.json tracks versions of all components:
49
+
50
+ ```
51
+ .claude/manifest.json
52
+ ```
53
+
54
+ Structure:
55
+ ```json
56
+ {
57
+ "agents": { "agent-kenji-data-reader": "1.2.0", ... },
58
+ "skills": { "SDK-insight-queries": "1.1.0", ... },
59
+ "hooks": { "auto-learn": "1.0.0", ... }
60
+ }
61
+ ```
62
+
63
+ **Usage:**
64
+ 1. **version_check task**: Compare manifest with marketplace plugins, report mismatches
65
+ 2. **publish_plugin**: Read version from manifest.json (source of truth), update plugin's plugin.json
66
+
67
+ **Version comparison flow:**
68
+ ```bash
69
+ # Get manifest version
70
+ MANIFEST_VER=$(node -e "console.log(require('./.claude/manifest.json').agents['agent-kenji-data-reader'])")
71
+
72
+ # Get marketplace plugin version
73
+ PLUGIN_VER=$(node -e "console.log(require('./Hailer-Marketplace/agent-kenji-data-reader/.claude-plugin/plugin.json').version)")
74
+
75
+ # Compare
76
+ if [ "$MANIFEST_VER" != "$PLUGIN_VER" ]; then
77
+ echo "Out of sync: manifest=$MANIFEST_VER, plugin=$PLUGIN_VER"
78
+ fi
79
+ ```
80
+ </manifest-versioning>
81
+
82
+ <duplicate-detection>
83
+ ## Auto-detect duplicates before publishing
84
+
85
+ BEFORE creating/updating files, scan marketplace for the same filename:
86
+
87
+ ```bash
88
+ cd Hailer-Marketplace
89
+ find . -name "agent-marco-mockup-builder.md" -o -name "SKILL.md" | grep -v node_modules
90
+ ```
91
+
92
+ If file exists in MULTIPLE plugins:
93
+ 1. List all plugins containing this file
94
+ 2. Return `needs_confirmation` status with list of affected plugins
95
+ 3. If user confirms `update_all: true`, update ALL plugins containing this file
96
+ 4. Increment patch version for each affected plugin
97
+ 5. Create separate git tags for each
98
+ </duplicate-detection>
99
+
100
+ <version-comparison>
101
+ Use node to compare semver:
102
+ ```bash
103
+ node -e "const [a,b]=['1.0.0','1.1.0'].map(v=>v.split('.').map(Number)); console.log(a[0]<b[0]||(a[0]==b[0]&&(a[1]<b[1]||(a[1]==b[1]&&a[2]<b[2]))))"
104
+ ```
31
105
 
32
- Get with: `PROJECT_ROOT="$(pwd)" && MARKETPLACE_PATH="$PROJECT_ROOT/hailer-marketplace"`
33
- </marketplace-path>
106
+ If existing version found, BLOCK publish if new_version <= existing_version.
107
+ Return error: "Version 1.0.0 must be greater than existing 1.0.0"
108
+ </version-comparison>
109
+
110
+ <changelog-format>
111
+ # Changelog
112
+
113
+ ## [1.1.0] - 2025-01-22
114
+ - Updated feature X
115
+
116
+ ## [1.0.0] - 2025-01-15
117
+ - Initial release
118
+
119
+ Prepend new version at top. Get date with: `date +%Y-%m-%d`
120
+ If no changelog_message provided, use: "Version {version} release"
121
+ </changelog-format>
122
+
123
+ <git-tags>
124
+ After successful push:
125
+ ```bash
126
+ git tag "plugin-name@1.0.0"
127
+ git push origin "plugin-name@1.0.0"
128
+ ```
129
+ </git-tags>
130
+
131
+ <marketplace-structure>
132
+ Hailer-Marketplace/
133
+ ├── .claude-plugin/
134
+ │ ├── marketplace.json # Registry - MUST add entry here
135
+ │ └── plugin.json # Root marketplace metadata
136
+ ├── plugin-name/ # Each plugin at root level
137
+ │ ├── .claude-plugin/
138
+ │ │ └── plugin.json # Plugin metadata
139
+ │ └── agents/ # For agent plugins
140
+ │ └── agent-name.md
141
+ │ └── skills/ # For skill plugins
142
+ │ └── skill-name/
143
+ │ └── SKILL.md
144
+ │ └── hooks/ # For hook plugins
145
+ │ └── hooks.json
146
+ </marketplace-structure>
34
147
 
35
148
  <workflow>
149
+ ## publish_plugin task
150
+
36
151
  1. cd to marketplace path
37
- 2. `git fetch origin && git checkout main && git pull origin main`
38
- 3. Read marketplace.json to check if plugin exists
39
- 4. **VERSION SUGGESTION** (if plugin exists):
40
- - Get current version from marketplace.json
41
- - Compare old vs new content
42
- - Suggest: patch (small), minor (features), major (breaking)
43
- - Return `needs_confirmation` with suggested version
44
- 5. Once version confirmed, create branch: `git checkout -b publish/{plugin-name}-v{version}`
45
- 6. Create/update plugin folder structure
46
- 7. Create/update .claude-plugin/plugin.json
47
- 8. Write content file
48
- 9. Update marketplace.json registry
49
- 10. Validate JSON: `node -e "JSON.parse(require('fs').readFileSync('file.json'))"`
50
- 11. `git add -A`
51
- 12. `git commit -m "feat: add {plugin-name} v{version}"`
52
- 13. `git push -u origin publish/{plugin-name}-v{version}`
53
- 14. Return success with branch name (DO NOT MERGE - reviewer does that)
152
+ 2. git checkout main && git pull origin main
153
+ 3. **CREATE BRANCH**: `git checkout -b publish/{plugin-name}-{version}`
154
+ 4. **DUPLICATE CHECK**: Search for same filename in ALL plugins
155
+ 5. **VERSION CHECK**: If plugin exists, new version > existing version
156
+ 6. Create/update plugin folder structure based on type
157
+ 7. Create/update .claude-plugin/plugin.json with metadata
158
+ 8. Write content file (agent.md, SKILL.md, hooks.json)
159
+ 9. **CHANGELOG**: Create/update CHANGELOG.md
160
+ 10. Update marketplace.json registry
161
+ 11. Validate JSON: `node -e "JSON.parse(require('fs').readFileSync('file.json'))"`
162
+ 12. git add -A && git commit
163
+ 13. git push origin -u publish/{plugin-name}-{version}
164
+ 14. **CREATE PR:**
165
+ ```bash
166
+ PR_URL=$(gh pr create --repo Bdolf/Hailer-Marketplace --base main \
167
+ --head publish/{plugin-name}-{version} \
168
+ --title "Release {plugin-name}@{version}" \
169
+ --body "...")
170
+ PR_NUMBER=$(echo "$PR_URL" | grep -oE '[0-9]+$')
171
+ ```
172
+ 15. Return ACTUAL PR number and URL
173
+
174
+ ## publish_all task
175
+
176
+ 1. Run version_check to find out-of-sync items
177
+ 2. Create single branch: `publish/batch-{date}`
178
+ 3. For each out-of-sync plugin: copy, update plugin.json, changelog
179
+ 4. Update marketplace.json (all entries)
180
+ 5. git add -A && git commit && git push
181
+ 6. Create single PR with all changes
182
+ 7. Return PR number with all plugins and versions
54
183
  </workflow>
55
184
 
56
- <plugin-json-template>
57
- {
58
- "name": "plugin-name",
59
- "description": "...",
60
- "version": "1.0.0",
61
- "author": { "name": "Author Name" },
62
- "keywords": ["..."]
185
+ <protocol>
186
+ ## version_check
187
+ Input: {
188
+ "task": "version_check",
189
+ "manifest_path": ".claude/manifest.json",
190
+ "marketplace_path": "Hailer-Marketplace"
63
191
  }
64
- </plugin-json-template>
65
192
 
66
- <protocol>
193
+ Output: {
194
+ "status": "success",
195
+ "result": {
196
+ "total_components": 68,
197
+ "in_sync": 65,
198
+ "out_of_sync": [
199
+ { "name": "agent-kenji-data-reader", "type": "agent", "manifest": "1.2.0", "marketplace": "1.1.0" }
200
+ ],
201
+ "missing_in_marketplace": []
202
+ },
203
+ "summary": "1 item out of sync"
204
+ }
205
+
206
+ ## publish_plugin
67
207
  Input: {
68
- "task": "publish",
208
+ "task": "publish_plugin",
69
209
  "plugin": {
70
210
  "name": "string",
71
211
  "type": "agent|skill|hook",
72
- "description": "string",
73
212
  "version": "string (semver)",
74
213
  "author": "string",
75
- "content": "string - the actual file content"
214
+ "keywords": ["array"],
215
+ "content": "string - the actual file content",
216
+ "changelog_message": "string (optional)"
76
217
  }
77
218
  }
78
219
 
79
- Output (success): {
80
- "status": "success",
81
- "result": {
82
- "branch": "publish/plugin-name-v1.0.0",
83
- "plugin_path": "./plugin-name",
84
- "version": "1.0.0"
85
- },
86
- "trigger_review": {
87
- "agent": "marketplace-reviewer:agent-marketplace-reviewer",
88
- "input": { "task": "review", "branch": "publish/plugin-name-v1.0.0" }
89
- },
90
- "summary": "Branch pushed, triggering review"
220
+ ## publish_all
221
+ Input: {
222
+ "task": "publish_all",
223
+ "changelog_message": "Batch release",
224
+ "plugins": [
225
+ { "name": "agent-kenji-data-reader", "type": "agent", "source": "agents/agent-kenji-data-reader.md" }
226
+ ]
91
227
  }
92
228
 
93
- Output (needs version confirmation): {
94
- "status": "needs_confirmation",
229
+ ## Standard output (PR created)
230
+ {
231
+ "status": "pr_created",
95
232
  "result": {
96
- "current_version": "1.0.0",
97
- "suggested_version": "1.0.1",
98
- "bump_type": "patch",
99
- "reason": "Minor changes detected - typo fixes, small improvements"
233
+ "pr_number": 123,
234
+ "pr_url": "https://github.com/Bdolf/Hailer-Marketplace/pull/123",
235
+ "branch": "publish/agent-kenji-data-reader-1.0.2",
236
+ "plugins_updated": ["agent-kenji-data-reader"],
237
+ "versions": { "agent-kenji-data-reader": "1.0.2" }
100
238
  },
101
- "summary": "Suggest 1.0.1 (patch) - confirm?"
239
+ "summary": "Created PR #123"
102
240
  }
103
241
 
104
- To proceed after confirmation, re-invoke with confirmed version:
242
+ ## Error output
105
243
  {
106
- "task": "publish",
107
- "plugin": { ... },
108
- "version": "1.0.1"
109
- }
110
-
111
- Output (version error): {
112
244
  "status": "error",
113
245
  "result": {
114
246
  "error": "version_conflict",
115
247
  "existing_version": "1.0.0",
116
- "requested_version": "1.0.0"
248
+ "requested_version": "1.0.0",
249
+ "message": "Version must be greater than 1.0.0"
117
250
  },
118
- "summary": "Version must be > 1.0.0"
251
+ "summary": "Version conflict"
252
+ }
253
+
254
+ ## Needs confirmation (duplicates)
255
+ {
256
+ "status": "needs_confirmation",
257
+ "result": {
258
+ "duplicates_found": true,
259
+ "file": "agent-marco-mockup-builder.md",
260
+ "found_in_plugins": [
261
+ { "plugin": "marco", "version": "1.0.1" },
262
+ { "plugin": "mockup-builder", "version": "1.0.0" }
263
+ ],
264
+ "action_required": "Confirm update_all to update all plugins containing this file"
265
+ },
266
+ "summary": "Found in 2 plugins - confirm to update all"
119
267
  }
120
268
  </protocol>
269
+
270
+ <plugin-json-template>
271
+ {
272
+ "name": "plugin-name",
273
+ "description": "...",
274
+ "version": "1.0.0",
275
+ "author": { "name": "Author Name" },
276
+ "keywords": ["..."]
277
+ }
278
+
279
+ CRITICAL: author MUST be an object with "name" key, NOT a string!
280
+ </plugin-json-template>