@kendoo.agentdesk/agentdesk 0.4.3 → 0.4.4

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 (2) hide show
  1. package/package.json +1 -1
  2. package/prompts/team.md +80 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kendoo.agentdesk/agentdesk",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "AI team orchestrator for Claude Code — run collaborative agent sessions from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
package/prompts/team.md CHANGED
@@ -152,13 +152,92 @@ When a task involves UI changes, the team MUST capture screenshots of the affect
152
152
  kill $DEV_PID 2>/dev/null
153
153
  ```
154
154
 
155
- 4. Upload screenshots to the task tracker and post them as a separate comment (see STRICT RULES above for format).
155
+ 4. Upload screenshots to the task tracker (see upload instructions below).
156
156
 
157
157
  **When to capture:**
158
158
  - After ALL code changes, reviews, and fixes are complete (during Bart's review step)
159
159
  - Before creating the PR
160
160
  - Only capture the pages/views that were actually affected by the changes
161
161
 
162
+ ### Uploading screenshots to the task tracker
163
+
164
+ {{#LINEAR}}
165
+ **Linear — Upload & attach screenshots:**
166
+
167
+ Step 1: Get an upload URL from Linear:
168
+ ```bash
169
+ UPLOAD_RESPONSE=$(curl -s -X POST https://api.linear.app/graphql \
170
+ -H "Authorization: $LINEAR_API_KEY" \
171
+ -H "Content-Type: application/json" \
172
+ -d '{"query":"mutation { fileUpload(contentType: \"image/png\", filename: \"screenshot.png\", size: '$(stat -f%z screenshot.png)') { uploadFile { uploadUrl assetUrl headers { key value } } } }"}')
173
+
174
+ UPLOAD_URL=$(echo "$UPLOAD_RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['fileUpload']['uploadFile']['uploadUrl'])")
175
+ ASSET_URL=$(echo "$UPLOAD_RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['fileUpload']['uploadFile']['assetUrl'])")
176
+ HEADERS=$(echo "$UPLOAD_RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); h=d['data']['fileUpload']['uploadFile']['headers']; print(' '.join([f'-H \"{x[\"key\"]}: {x[\"value\"]}\"' for x in h]))")
177
+ ```
178
+
179
+ Step 2: Upload the file to the signed URL:
180
+ ```bash
181
+ eval curl -s -X PUT "$UPLOAD_URL" \
182
+ -H "Content-Type: image/png" \
183
+ $HEADERS \
184
+ --data-binary @screenshot.png
185
+ ```
186
+
187
+ Step 3: Post a comment with the uploaded image URLs (as a SEPARATE comment, not inside badge blocks):
188
+ ```bash
189
+ curl -s -X POST https://api.linear.app/graphql \
190
+ -H "Authorization: $LINEAR_API_KEY" \
191
+ -H "Content-Type: application/json" \
192
+ -d '{"query":"mutation { commentCreate(input: { issueId: \"'$ISSUE_ID'\", body: \"![Desktop]('$DESKTOP_ASSET_URL')\n\nDesktop view.\n\n![Mobile]('$MOBILE_ASSET_URL')\n\nMobile view.\" }) { success } }"}'
193
+ ```
194
+
195
+ Repeat steps 1-2 for each screenshot file (desktop, mobile). Use the ASSET_URL values in the comment body.
196
+ {{/LINEAR}}
197
+
198
+ {{#JIRA}}
199
+ **Jira — Upload & attach screenshots:**
200
+
201
+ Upload each screenshot as an attachment:
202
+ ```bash
203
+ curl -s -X POST "$JIRA_BASE_URL/rest/api/3/issue/{{TASK_ID}}/attachments" \
204
+ -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
205
+ -H "X-Atlassian-Token: no-check" \
206
+ -F "file=@screenshots/desktop.png" \
207
+ -F "file=@screenshots/mobile.png"
208
+ ```
209
+
210
+ Then post a comment referencing the attachments:
211
+ ```bash
212
+ curl -s -X POST "$JIRA_BASE_URL/rest/api/3/issue/{{TASK_ID}}/comment" \
213
+ -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
214
+ -H "Content-Type: application/json" \
215
+ -d '{"body":{"type":"doc","version":1,"content":[{"type":"paragraph","content":[{"type":"text","text":"Screenshots of affected views:"}]},{"type":"mediaGroup","content":[{"type":"media","attrs":{"type":"file","collection":"","id":"desktop.png"}},{"type":"media","attrs":{"type":"file","collection":"","id":"mobile.png"}}]}]}}'
216
+ ```
217
+ {{/JIRA}}
218
+
219
+ {{#GITHUB}}
220
+ **GitHub — Upload & attach screenshots:**
221
+
222
+ GitHub supports drag-and-drop image uploads in comments. To upload via CLI, use the GitHub API:
223
+ ```bash
224
+ # Upload image to GitHub's user content (via issue comment with image)
225
+ # The simplest approach: create a comment with base64-embedded images or use gh CLI
226
+ gh issue comment {{TASK_ID}} --body "$(cat <<SCREENSHOT_EOF
227
+ **Screenshots of affected views:**
228
+
229
+ Desktop (1280x800):
230
+ ![Desktop]($(python3 -c "import base64; print('data:image/png;base64,' + base64.b64encode(open('screenshots/desktop.png','rb').read()).decode())"))
231
+
232
+ Mobile (375x812):
233
+ ![Mobile]($(python3 -c "import base64; print('data:image/png;base64,' + base64.b64encode(open('screenshots/mobile.png','rb').read()).decode())"))
234
+ SCREENSHOT_EOF
235
+ )"
236
+ ```
237
+
238
+ Note: If base64 images are too large, upload them as release assets or to a gist and reference the raw URLs instead.
239
+ {{/GITHUB}}
240
+
162
241
  {{#LINEAR}}
163
242
  ## LINEAR INTEGRATION
164
243