@smartsoft001-mobilems/claude-plugins 2.58.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 (52) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/package.json +13 -0
  3. package/plugins/flow/.claude-plugin/plugin.json +5 -0
  4. package/plugins/flow/agents/angular-component-scaffolder.md +174 -0
  5. package/plugins/flow/agents/angular-directive-builder.md +152 -0
  6. package/plugins/flow/agents/angular-guard-builder.md +242 -0
  7. package/plugins/flow/agents/angular-jest-test-writer.md +473 -0
  8. package/plugins/flow/agents/angular-pipe-builder.md +168 -0
  9. package/plugins/flow/agents/angular-resolver-builder.md +285 -0
  10. package/plugins/flow/agents/angular-service-builder.md +160 -0
  11. package/plugins/flow/agents/angular-signal-state-builder.md +338 -0
  12. package/plugins/flow/agents/angular-test-diagnostician.md +278 -0
  13. package/plugins/flow/agents/angular-testbed-configurator.md +314 -0
  14. package/plugins/flow/agents/arch-scaffolder.md +277 -0
  15. package/plugins/flow/agents/shared-build-verifier.md +159 -0
  16. package/plugins/flow/agents/shared-config-updater.md +309 -0
  17. package/plugins/flow/agents/shared-coverage-enforcer.md +183 -0
  18. package/plugins/flow/agents/shared-error-handler.md +216 -0
  19. package/plugins/flow/agents/shared-file-creator.md +343 -0
  20. package/plugins/flow/agents/shared-impl-orchestrator.md +309 -0
  21. package/plugins/flow/agents/shared-impl-reporter.md +338 -0
  22. package/plugins/flow/agents/shared-linear-subtask-iterator.md +336 -0
  23. package/plugins/flow/agents/shared-logic-implementer.md +242 -0
  24. package/plugins/flow/agents/shared-maia-api.md +25 -0
  25. package/plugins/flow/agents/shared-performance-validator.md +167 -0
  26. package/plugins/flow/agents/shared-project-standardizer.md +204 -0
  27. package/plugins/flow/agents/shared-security-scanner.md +185 -0
  28. package/plugins/flow/agents/shared-style-enforcer.md +229 -0
  29. package/plugins/flow/agents/shared-tdd-developer.md +349 -0
  30. package/plugins/flow/agents/shared-test-fixer.md +185 -0
  31. package/plugins/flow/agents/shared-test-runner.md +190 -0
  32. package/plugins/flow/agents/shared-ui-classifier.md +229 -0
  33. package/plugins/flow/agents/shared-verification-orchestrator.md +193 -0
  34. package/plugins/flow/agents/shared-verification-runner.md +139 -0
  35. package/plugins/flow/agents/ui-a11y-validator.md +304 -0
  36. package/plugins/flow/agents/ui-screenshot-reporter.md +328 -0
  37. package/plugins/flow/agents/ui-web-designer.md +213 -0
  38. package/plugins/flow/commands/commit.md +131 -0
  39. package/plugins/flow/commands/impl.md +625 -0
  40. package/plugins/flow/commands/plan.md +598 -0
  41. package/plugins/flow/commands/push.md +584 -0
  42. package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
  43. package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
  44. package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
  45. package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
  46. package/plugins/flow/skills/maia-files-delete/SKILL.md +60 -0
  47. package/plugins/flow/skills/maia-files-upload/SKILL.md +58 -0
  48. package/plugins/flow/skills/nx-conventions/SKILL.md +327 -0
  49. package/plugins/flow/skills/test-unit/SKILL.md +456 -0
  50. package/src/index.d.ts +6 -0
  51. package/src/index.js +10 -0
  52. package/src/index.js.map +1 -0
@@ -0,0 +1,584 @@
1
+ # Push Command
2
+
3
+ Push local changes to remote and optionally update Linear task status.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /push-local [linearTaskId]
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ - `linearTaskId` - Linear task ID (e.g., MOB-123)
14
+
15
+ ## Instructions
16
+
17
+ You are tasked with pushing local changes to the remote repository, summarizing what was done, and optionally moving the Linear task to "In Review".
18
+
19
+ ### Step 1: Check Git Status
20
+
21
+ Run `git status` to verify:
22
+
23
+ - Current branch name
24
+ - Number of commits ahead of remote
25
+ - Any uncommitted changes (warn user if present)
26
+
27
+ If there are uncommitted changes, warn the user and ask if they want to proceed or commit first.
28
+
29
+ ### Step 2: Get Commits to Push
30
+
31
+ Run `git log origin/<branch>..HEAD --oneline` to get the list of commits that will be pushed.
32
+
33
+ If no commits to push, inform the user and exit.
34
+
35
+ ### Step 3: Fetch Linear Task Details (if linearTaskId provided)
36
+
37
+ If `linearTaskId` was provided, use MCP Linear server to fetch:
38
+
39
+ - Task title
40
+ - Current status
41
+ - Subtasks (if any) and their statuses
42
+ - Comments on subtasks (to find reasons for incomplete items)
43
+
44
+ ### Step 4: Analyze Subtasks Status
45
+
46
+ For each subtask, determine:
47
+
48
+ 1. **Completed subtasks**: Status is "Done", "In Review", or has implementation completed
49
+ 2. **Incomplete subtasks**: Status is "To Do", "Blocked", or was not implemented
50
+
51
+ For incomplete subtasks, find the reason by:
52
+
53
+ - Reading comments on the subtask (look for "Analiza problemu", "Blocker", "Status: Blocked")
54
+ - Checking if it was marked as backend issue, external dependency, etc.
55
+
56
+ Build a summary of incomplete items with reasons.
57
+
58
+ ### Step 5: Show Summary and Ask About Status Update
59
+
60
+ Show summary of what will be pushed and ask user:
61
+
62
+ ```markdown
63
+ ## Podsumowanie
64
+
65
+ ### Commity do wysłania (X)
66
+
67
+ | Commit | Opis |
68
+ | ------- | -------------------------- |
69
+ | abc1234 | feat(scope): description 1 |
70
+ | def5678 | fix(scope): description 2 |
71
+
72
+ ### Podzadania
73
+
74
+ #### Zrealizowane
75
+
76
+ - ✅ MOB-549: Naprawić szerokość logo
77
+ - ✅ MOB-550: Usunąć zdublowane zdjęcia
78
+
79
+ #### Niezrealizowane
80
+
81
+ - ⚠️ MOB-554: Obsłużyć zdjęcia PNG → Problem backendu
82
+
83
+ ---
84
+
85
+ **Task**: [linearTaskId] - [Task Title]
86
+ **Aktualny status**: [Current Status]
87
+
88
+ Czy przenieść task do "In Review" i wysłać zmiany?
89
+ ```
90
+
91
+ Use `AskUserQuestion` tool with options:
92
+
93
+ - "Tak, przenieś do In Review i wyślij" (Recommended)
94
+ - "Tylko wyślij, bez zmiany statusu"
95
+ - "Anuluj"
96
+
97
+ ### Step 6: Update Linear Status (if confirmed)
98
+
99
+ **BEFORE pushing**, if user confirmed status change:
100
+
101
+ 1. **For tasks with subtasks**: Update all completed subtasks to "In Review"
102
+ 2. **For tasks without subtasks**: Update the task itself to "In Review"
103
+
104
+ Create a comment on the **parent task** summarizing:
105
+
106
+ ```markdown
107
+ ## Podsumowanie Implementacji
108
+
109
+ ### Branch
110
+
111
+ `<branch-name>`
112
+
113
+ ### Zrealizowane Podzadania
114
+
115
+ | Podzadanie | Tytuł | Status |
116
+ | ---------- | ------------------------- | --------------- |
117
+ | MOB-549 | Naprawić szerokość logo | ✅ Zrealizowane |
118
+ | MOB-550 | Usunąć zdublowane zdjęcia | ✅ Zrealizowane |
119
+
120
+ ### Niezrealizowane Podzadania
121
+
122
+ | Podzadanie | Tytuł | Powód |
123
+ | ---------- | -------------------- | ------------------------------------------------------- |
124
+ | MOB-554 | Obsłużyć zdjęcia PNG | ⚠️ Problem backendu - wymaga naprawy po stronie serwera |
125
+
126
+ ### Commity
127
+
128
+ | Commit | Opis |
129
+ | ------- | -------------------------- |
130
+ | abc1234 | feat(scope): description 1 |
131
+ | def5678 | fix(scope): description 2 |
132
+
133
+ ### Status
134
+
135
+ Task przeniesiony do "In Review".
136
+
137
+ ---
138
+
139
+ _Raport wygenerowany przez Claude Code_
140
+ ```
141
+
142
+ **Important**: For each incomplete subtask, include:
143
+
144
+ - The subtask ID and title
145
+ - A clear reason why it wasn't completed (e.g., "Problem backendu", "Zewnętrzna zależność", "Brak planu implementacji")
146
+ - Reference to any comments on the subtask that explain the issue
147
+
148
+ ### Step 7: Push to Remote
149
+
150
+ Execute `git push` to push the commits to the remote repository.
151
+
152
+ If push fails:
153
+
154
+ - Show the error message
155
+ - Suggest possible solutions (pull first, force push if appropriate, etc.)
156
+ - Note: Linear status was already updated, may need to revert if push ultimately fails
157
+
158
+ ### Step 8: Final Confirmation
159
+
160
+ Show final status to user:
161
+
162
+ ```markdown
163
+ ## Gotowe
164
+
165
+ ✅ Linear task [linearTaskId] przeniesiony do "In Review"
166
+ ✅ Zmiany wysłane do `origin/<branch-name>`
167
+
168
+ ### Następne kroki
169
+
170
+ - Oczekiwanie na code review
171
+ ```
172
+
173
+ ### Step 9: Branch-Specific Post-Push Actions
174
+
175
+ After successful push, determine the next action based on the current branch:
176
+
177
+ 1. **If branch is `development`**: Proceed to **Step 10** (Deployment Verification)
178
+ 2. **If branch is a feature branch** (matches Linear issue ID pattern like `MOB-123`, `mob-123`, etc.): Proceed to **Step 9a** (PR Workflow)
179
+
180
+ #### Step 9a: Feature Branch - Check/Create Pull Request
181
+
182
+ **Applicable only when on a feature branch (not `development`).**
183
+
184
+ 1. **Check if all subtasks are completed**:
185
+
186
+ Review the subtask analysis from Step 4. Consider a task "ready for PR" if:
187
+
188
+ - All subtasks are in "Done" or "In Review" status, OR
189
+ - Incomplete subtasks have documented reasons (backend issue, external dependency, etc.)
190
+
191
+ 2. **Check if PR already exists**:
192
+
193
+ ```bash
194
+ gh pr list --head <branch-name> --base development --json number,title,state,url
195
+ ```
196
+
197
+ 3. **If PR exists**:
198
+
199
+ ```markdown
200
+ ## Pull Request Already Exists
201
+
202
+ **PR**: #<number> - <title>
203
+ **Status**: <state>
204
+ **URL**: <url>
205
+
206
+ No action needed - PR already created.
207
+ ```
208
+
209
+ 4. **If PR does NOT exist**, ask user:
210
+
211
+ ```markdown
212
+ ## Create Pull Request?
213
+
214
+ Branch `<branch-name>` has no open PR to `development`.
215
+
216
+ ### Subtasks Status
217
+
218
+ - ✅ Completed: X
219
+ - ⚠️ Incomplete: Y (with documented reasons)
220
+
221
+ Do you want to create a Pull Request?
222
+ ```
223
+
224
+ Use `AskUserQuestion` tool with options:
225
+
226
+ - "Tak, utwórz PR do development" (Recommended)
227
+ - "Nie, zakończ bez PR"
228
+
229
+ 5. **If user confirms PR creation**:
230
+
231
+ Create PR using `gh pr create`:
232
+
233
+ ```bash
234
+ gh pr create --base development --head <branch-name> --title "<Linear-ID>: <Task Title>" --body "$(cat <<'EOF'
235
+ ## Summary
236
+
237
+ Implementation for [<Linear-ID>](https://linear.app/issue/<Linear-ID>)
238
+
239
+ ### Completed Subtasks
240
+
241
+ - ✅ <subtask-id>: <title>
242
+ - ✅ <subtask-id>: <title>
243
+
244
+ ### Incomplete Subtasks (with reasons)
245
+
246
+ - ⚠️ <subtask-id>: <title> → <reason>
247
+
248
+ ### Commits
249
+
250
+ | Commit | Description |
251
+ |--------|-------------|
252
+ | abc123 | feat: ... |
253
+
254
+ ---
255
+
256
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
257
+ EOF
258
+ )"
259
+ ```
260
+
261
+ 6. **Show PR creation result**:
262
+
263
+ ```markdown
264
+ ## ✅ Pull Request Created
265
+
266
+ **PR**: #<number> - <title>
267
+ **URL**: <url>
268
+ **Base**: development
269
+ **Head**: <branch-name>
270
+
271
+ ### Następne kroki
272
+
273
+ - Oczekiwanie na code review
274
+ - Po zatwierdzeniu: merge do development
275
+ ```
276
+
277
+ **End the command here for feature branches.**
278
+
279
+ ### Step 10: Ask About Deployment Verification (development branch only)
280
+
281
+ **Applicable only when on `development` branch.**
282
+
283
+ After successful push, ask the user if they want to verify deployment:
284
+
285
+ ```markdown
286
+ ## Deployment Verification
287
+
288
+ Do you want to verify the deployment on QA environment?
289
+
290
+ Verification process:
291
+
292
+ 1. Monitor GitHub Actions CI pipeline until completion
293
+ 2. Git pull and check if package.json was updated
294
+ 3. Wait 5 minutes for deployment
295
+ 4. Verify app version on QA site
296
+ ```
297
+
298
+ Use `AskUserQuestion` tool with options:
299
+
300
+ - "Yes, verify deployment" (Recommended)
301
+ - "No, finish now"
302
+
303
+ If user chooses not to verify, end the command here.
304
+
305
+ ### Step 11: Monitor CI Pipeline via GitHub Actions
306
+
307
+ **Do NOT wait a fixed time.** Instead, actively monitor GitHub Actions workflows using `gh` CLI.
308
+
309
+ 1. **Get the latest workflow run for the current branch**:
310
+
311
+ ```bash
312
+ gh run list --branch <branch-name> --limit 1 --json databaseId,status,conclusion,workflowName
313
+ ```
314
+
315
+ 2. **Poll workflow status** every 30 seconds until it completes:
316
+
317
+ ```bash
318
+ gh run view <run-id> --json status,conclusion
319
+ ```
320
+
321
+ Or use `gh run watch <run-id>` to watch in real-time (but this blocks).
322
+
323
+ 3. **Show progress to user**:
324
+
325
+ ```markdown
326
+ ## CI/CD Pipeline Monitoring
327
+
328
+ 🔄 Monitoring GitHub Actions workflow...
329
+
330
+ **Workflow**: <workflow-name>
331
+ **Run ID**: <run-id>
332
+ **Status**: in_progress | queued | completed
333
+ ```
334
+
335
+ 4. **Check workflow result**:
336
+
337
+ **If workflow FAILED**:
338
+
339
+ ```markdown
340
+ ## ❌ CI Pipeline Failed
341
+
342
+ **Workflow**: <workflow-name>
343
+ **Run ID**: <run-id>
344
+ **Conclusion**: failure
345
+
346
+ ### View logs
347
+
348
+ Run `gh run view <run-id> --log-failed` to see error details.
349
+
350
+ Or visit: https://github.com/<owner>/<repo>/actions/runs/<run-id>
351
+ ```
352
+
353
+ Stop here if workflow failed.
354
+
355
+ **If workflow SUCCEEDED**, run:
356
+
357
+ ```bash
358
+ git fetch origin
359
+ git pull origin <branch-name>
360
+ ```
361
+
362
+ Check if `package.json` version has changed:
363
+
364
+ 1. Read the current `package.json` version
365
+ 2. Compare with the version before push
366
+
367
+ **If package.json was NOT updated** (version unchanged):
368
+
369
+ ```markdown
370
+ ## ❌ Pipeline Error
371
+
372
+ **Problem**: CI/CD pipeline did not update the version in `package.json`.
373
+
374
+ **Expected**: Automatic version bump after push
375
+ **Current version**: X.X.X (unchanged)
376
+
377
+ ### Possible causes
378
+
379
+ 1. Version bump workflow not triggered
380
+ 2. Workflow succeeded but didn't bump version
381
+ 3. Auto-version configuration is not working
382
+
383
+ ### Recommended actions
384
+
385
+ 1. Check workflow logs: `gh run view <run-id> --log`
386
+ 2. Verify auto-versioning configuration
387
+ ```
388
+
389
+ Stop here if package.json was not updated.
390
+
391
+ **If package.json WAS updated**, save the new version and proceed to Step 12.
392
+
393
+ ### Step 12: Verify Deployment on QA (App Version Check)
394
+
395
+ Wait 5 minutes for deployment to complete:
396
+
397
+ ```markdown
398
+ ## QA Deployment Verification
399
+
400
+ ⏳ Waiting 5 minutes for QA deployment...
401
+ ```
402
+
403
+ Use `sleep 300` or equivalent to wait.
404
+
405
+ After waiting, read SITE_URL from `.env.dev` file and fetch the page:
406
+
407
+ ```bash
408
+ curl -s "<SITE_URL>" | grep -o '<meta name="app-version" content="[^"]*"'
409
+ ```
410
+
411
+ Or use WebFetch to get the page and extract the `<meta name="app-version">` tag.
412
+
413
+ Compare the deployed version with `package.json` version:
414
+
415
+ **If versions MATCH**:
416
+
417
+ ```markdown
418
+ ## ✅ Deployment Successful
419
+
420
+ **Version in package.json**: X.X.X
421
+ **Version on QA**: X.X.X
422
+
423
+ ✅ Application was successfully deployed to QA environment.
424
+ ```
425
+
426
+ **If versions DO NOT MATCH**:
427
+
428
+ ```markdown
429
+ ## ❌ Deployment Error
430
+
431
+ **Problem**: App version on QA does not match the version in `package.json`.
432
+
433
+ **Version in package.json**: X.X.X
434
+ **Version on QA**: Y.Y.Y
435
+
436
+ ### Possible causes
437
+
438
+ 1. Deployment is still in progress (try again in a few minutes)
439
+ 2. Deployment pipeline failed with error
440
+ 3. CDN cache is serving old version
441
+ 4. Deployment configuration error
442
+
443
+ ### Recommended actions
444
+
445
+ 1. Check deployment pipeline status
446
+ 2. Review server logs
447
+ 3. Clear browser cache and check again
448
+ 4. Wait additional 5 minutes and run `/push-local --verify-only`
449
+ ```
450
+
451
+ ### Step 13: Final Deployment Status
452
+
453
+ Show complete summary:
454
+
455
+ ```markdown
456
+ ## Complete Process Summary
457
+
458
+ ### Git
459
+
460
+ ✅ Changes pushed to `origin/<branch-name>`
461
+
462
+ ### Linear
463
+
464
+ ✅ Task [linearTaskId] moved to "In Review"
465
+
466
+ ### CI/CD Pipeline
467
+
468
+ ✅ Package.json updated to version X.X.X
469
+
470
+ ### QA Deployment
471
+
472
+ ✅ Application deployed to <SITE_URL>
473
+ ✅ Version: X.X.X
474
+ ```
475
+
476
+ ## Guidelines
477
+
478
+ 1. **Write comments in Polish**: All Linear comments must be written in Polish
479
+ 2. **Always confirm before status change**: Never change Linear status without user confirmation
480
+ 3. **Update Linear BEFORE push**: Status change happens before git push
481
+ 4. **Handle errors gracefully**: If push fails after status update, inform user
482
+ 5. **Warn about uncommitted changes**: Don't push if there are uncommitted changes without user acknowledgment
483
+ 6. **Show clear summaries**: Always show what commits will be pushed and subtask status
484
+ 7. **Document incomplete subtasks**: Always explain WHY a subtask wasn't completed
485
+ 8. **Deployment verification is optional**: Always ask user before starting the 10-minute verification process
486
+ 9. **Read SITE_URL from .env.dev**: Use the SITE_URL variable from `.env.dev` file for QA verification
487
+ 10. **Version comparison**: Compare `package.json` version with `<meta name="app-version">` tag on QA site
488
+ 11. **Branch-specific post-push actions**:
489
+ - **`development` branch**: Offer deployment verification (CI monitoring + QA version check)
490
+ - **Feature branch (e.g., `MOB-123`)**: Check/create PR to `development` when all subtasks are ready
491
+
492
+ ## Example Flows
493
+
494
+ ### Example 1: Push to `development` branch (with deployment verification)
495
+
496
+ ```
497
+ User: /push-local MOB-548
498
+ (on branch: development)
499
+
500
+ 1. Check git status → 6 commits ahead, no uncommitted changes
501
+ 2. List commits to push → 6 commits shown
502
+ 3. Fetch MOB-548 details → "Druga lista uwag", 6 subtasks
503
+ 4. Analyze subtasks → 5 completed, 1 incomplete (backend issue)
504
+ 5. Show summary, ask user: "Move to In Review and push?" → User: "Yes"
505
+ 6. Update MOB-548 subtasks to "In Review", create summary comment
506
+ 7. git push → success
507
+ 8. Show final confirmation
508
+ 9. Branch is `development` → Ask user: "Verify deployment?" → User: "Yes"
509
+ 10. Monitor GitHub Actions (gh run list/view) → workflow completed ✅
510
+ → git pull → package.json version changed (0.136.0 → 0.137.0) ✅
511
+ 11. Wait 5 minutes → curl SITE_URL → meta app-version="0.137.0" ✅
512
+ 12. Show complete deployment summary
513
+ ```
514
+
515
+ ### Example 2: Push to feature branch (with PR creation)
516
+
517
+ ```
518
+ User: /push-local MOB-560
519
+ (on branch: MOB-560)
520
+
521
+ 1. Check git status → 3 commits ahead, no uncommitted changes
522
+ 2. List commits to push → 3 commits shown
523
+ 3. Fetch MOB-560 details → "Implement dark mode", 4 subtasks
524
+ 4. Analyze subtasks → 4 completed, 0 incomplete
525
+ 5. Show summary, ask user: "Move to In Review and push?" → User: "Yes"
526
+ 6. Update MOB-560 subtasks to "In Review", create summary comment
527
+ 7. git push → success
528
+ 8. Show final confirmation
529
+ 9. Branch is feature branch (MOB-560) → Check for existing PR
530
+ → gh pr list --head MOB-560 --base development → No PR found
531
+ → Ask user: "Create PR to development?" → User: "Yes"
532
+ → gh pr create --base development --title "MOB-560: Implement dark mode"
533
+ → Show PR created: #42 - URL: https://github.com/.../pull/42
534
+ 10. End command (no deployment verification for feature branches)
535
+ ```
536
+
537
+ ## Error Handling
538
+
539
+ ### Push Rejected (non-fast-forward)
540
+
541
+ ```markdown
542
+ ## Push Failed
543
+
544
+ **Error**: Updates were rejected because the remote contains work that you do not have locally.
545
+
546
+ **Uwaga**: Status w Linear został już zaktualizowany do "In Review".
547
+
548
+ ### Options
549
+
550
+ 1. `git pull --rebase` - Pull remote changes and rebase your commits on top
551
+ 2. `git pull` - Pull remote changes and merge
552
+ 3. `git push --force` - Force push (⚠️ overwrites remote changes)
553
+
554
+ Which option do you want to use?
555
+ ```
556
+
557
+ ### No Commits to Push
558
+
559
+ ```markdown
560
+ ## Nothing to Push
561
+
562
+ Your branch is up to date with `origin/<branch-name>`.
563
+
564
+ No commits to push.
565
+ ```
566
+
567
+ ### Uncommitted Changes Present
568
+
569
+ ```markdown
570
+ ## Warning: Uncommitted Changes
571
+
572
+ You have uncommitted changes in your working directory:
573
+
574
+ - modified: path/to/file1.ts
575
+ - modified: path/to/file2.ts
576
+
577
+ ### Options
578
+
579
+ 1. Commit changes first (`/commit`)
580
+ 2. Stash changes and push
581
+ 3. Proceed anyway (push existing commits only)
582
+
583
+ What would you like to do?
584
+ ```