ima-claude 2.18.0 → 2.25.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.
- package/README.md +55 -9
- package/dist/cli.js +5 -1
- package/package.json +1 -1
- package/plugins/ima-claude/.claude-plugin/plugin.json +2 -2
- package/plugins/ima-claude/agents/explorer.md +29 -15
- package/plugins/ima-claude/agents/implementer.md +58 -13
- package/plugins/ima-claude/agents/memory.md +19 -19
- package/plugins/ima-claude/agents/reviewer.md +56 -34
- package/plugins/ima-claude/agents/tester.md +59 -16
- package/plugins/ima-claude/agents/wp-developer.md +66 -21
- package/plugins/ima-claude/hooks/bootstrap.sh +42 -44
- package/plugins/ima-claude/hooks/prompt_coach_digest.md +14 -17
- package/plugins/ima-claude/hooks/prompt_coach_system.md +10 -12
- package/plugins/ima-claude/personalities/README.md +17 -6
- package/plugins/ima-claude/personalities/enable-efficient.md +61 -0
- package/plugins/ima-claude/personalities/enable-terse.md +71 -0
- package/plugins/ima-claude/skills/agentic-workflows/SKILL.md +97 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/phases/deliver.md +181 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/phases/draft.md +99 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/phases/gather.md +130 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/phases/outline.md +106 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/phases/review.md +137 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/standards/draft-format.md +159 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/standards/editorial-standards.md +160 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/standards/outline-format.md +110 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/avada-construction-guide.md +263 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/avada-webinar-example.txt +275 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/cta-block-catalog.md +169 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/espo-email-preparation.md +241 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/webinar-recap-email-espo.html +339 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/templates/webinar-reminder-email-espo.html +458 -0
- package/plugins/ima-claude/skills/agentic-workflows/references/workflows/editorial/webinar-summary.md +81 -0
- package/plugins/ima-claude/skills/architect/SKILL.md +54 -168
- package/plugins/ima-claude/skills/compound-bridge/SKILL.md +41 -94
- package/plugins/ima-claude/skills/design-to-code/SKILL.md +91 -0
- package/plugins/ima-claude/skills/design-to-code/references/guardrails.md +46 -0
- package/plugins/ima-claude/skills/design-to-code/references/phase-a-design-to-prompt.md +141 -0
- package/plugins/ima-claude/skills/design-to-code/references/phase-b-prompt-to-code.md +155 -0
- package/plugins/ima-claude/skills/design-to-code/references/prompt-template.md +95 -0
- package/plugins/ima-claude/skills/discourse/SKILL.md +79 -194
- package/plugins/ima-claude/skills/discourse-admin/SKILL.md +41 -103
- package/plugins/ima-claude/skills/docs-organize/SKILL.md +63 -203
- package/plugins/ima-claude/skills/ember-discourse/SKILL.md +90 -200
- package/plugins/ima-claude/skills/espocrm/SKILL.md +14 -23
- package/plugins/ima-claude/skills/espocrm-api/SKILL.md +79 -192
- package/plugins/ima-claude/skills/functional-programmer/SKILL.md +33 -237
- package/plugins/ima-claude/skills/gh-cli/SKILL.md +26 -65
- package/plugins/ima-claude/skills/ima-bootstrap/SKILL.md +71 -104
- package/plugins/ima-claude/skills/ima-bootstrap/references/ima-brand.md +32 -22
- package/plugins/ima-claude/skills/ima-brand/SKILL.md +18 -23
- package/plugins/ima-claude/skills/ima-copywriting/SKILL.md +68 -179
- package/plugins/ima-claude/skills/ima-doc2pdf/SKILL.md +32 -102
- package/plugins/ima-claude/skills/ima-editorial-scorecard/SKILL.md +38 -63
- package/plugins/ima-claude/skills/ima-editorial-workflow/SKILL.md +69 -114
- package/plugins/ima-claude/skills/ima-email-creator/SKILL.md +16 -22
- package/plugins/ima-claude/skills/ima-forms-expert/SKILL.md +21 -37
- package/plugins/ima-claude/skills/jira-checkpoint/SKILL.md +39 -120
- package/plugins/ima-claude/skills/jquery/SKILL.md +107 -233
- package/plugins/ima-claude/skills/js-fp/SKILL.md +75 -296
- package/plugins/ima-claude/skills/js-fp-api/SKILL.md +52 -162
- package/plugins/ima-claude/skills/js-fp-react/SKILL.md +47 -270
- package/plugins/ima-claude/skills/js-fp-vue/SKILL.md +55 -209
- package/plugins/ima-claude/skills/js-fp-wordpress/SKILL.md +59 -204
- package/plugins/ima-claude/skills/livecanvas/SKILL.md +19 -32
- package/plugins/ima-claude/skills/mcp-atlassian/SKILL.md +146 -136
- package/plugins/ima-claude/skills/mcp-atlassian/references/direct-api-attachments.md +115 -0
- package/plugins/ima-claude/skills/mcp-atlassian/references/direct-api-auth.md +103 -0
- package/plugins/ima-claude/skills/mcp-atlassian/references/direct-api-bulk.md +149 -0
- package/plugins/ima-claude/skills/mcp-atlassian/references/direct-api-misc.md +195 -0
- package/plugins/ima-claude/skills/mcp-atlassian/references/direct-api-sprints.md +158 -0
- package/plugins/ima-claude/skills/mcp-context7/SKILL.md +32 -64
- package/plugins/ima-claude/skills/mcp-gitea/SKILL.md +98 -188
- package/plugins/ima-claude/skills/mcp-github/SKILL.md +60 -124
- package/plugins/ima-claude/skills/mcp-memory/SKILL.md +1 -177
- package/plugins/ima-claude/skills/mcp-qdrant/SKILL.md +58 -115
- package/plugins/ima-claude/skills/mcp-sequential/SKILL.md +32 -87
- package/plugins/ima-claude/skills/mcp-serena/SKILL.md +54 -80
- package/plugins/ima-claude/skills/mcp-tavily/SKILL.md +40 -63
- package/plugins/ima-claude/skills/mcp-vestige/SKILL.md +75 -116
- package/plugins/ima-claude/skills/php-authnet/SKILL.md +32 -65
- package/plugins/ima-claude/skills/php-fp/SKILL.md +50 -129
- package/plugins/ima-claude/skills/php-fp-wordpress/SKILL.md +25 -73
- package/plugins/ima-claude/skills/phpunit-wp/SKILL.md +103 -463
- package/plugins/ima-claude/skills/playwright/SKILL.md +69 -220
- package/plugins/ima-claude/skills/prompt-starter/SKILL.md +35 -82
- package/plugins/ima-claude/skills/prompt-starter/references/code-review.md +38 -0
- package/plugins/ima-claude/skills/py-fp/SKILL.md +78 -384
- package/plugins/ima-claude/skills/quasar-fp/SKILL.md +54 -255
- package/plugins/ima-claude/skills/quickstart/SKILL.md +7 -11
- package/plugins/ima-claude/skills/rails/SKILL.md +63 -184
- package/plugins/ima-claude/skills/resume-session/SKILL.md +14 -35
- package/plugins/ima-claude/skills/rg/SKILL.md +61 -146
- package/plugins/ima-claude/skills/ruby-fp/SKILL.md +66 -163
- package/plugins/ima-claude/skills/save-session/SKILL.md +10 -39
- package/plugins/ima-claude/skills/scorecard/SKILL.md +24 -38
- package/plugins/ima-claude/skills/skill-analyzer/SKILL.md +42 -71
- package/plugins/ima-claude/skills/skill-creator/SKILL.md +79 -250
- package/plugins/ima-claude/skills/task-master/SKILL.md +11 -31
- package/plugins/ima-claude/skills/task-planner/SKILL.md +44 -153
- package/plugins/ima-claude/skills/task-runner/SKILL.md +61 -143
- package/plugins/ima-claude/skills/unit-testing/SKILL.md +59 -134
- package/plugins/ima-claude/skills/wp-ddev/SKILL.md +38 -120
- package/plugins/ima-claude/skills/wp-local/SKILL.md +26 -108
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Atlassian Direct API — Bulk Operations
|
|
2
|
+
|
|
3
|
+
MCP gap: no batch/bulk endpoints. Use these patterns for multi-issue operations.
|
|
4
|
+
|
|
5
|
+
See [direct-api-auth.md](direct-api-auth.md) for auth setup.
|
|
6
|
+
|
|
7
|
+
All examples use Gateway (Bearer) auth.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### Bulk Edit Issues (Jira v3)
|
|
12
|
+
|
|
13
|
+
**API:** `POST /rest/api/3/issue/bulk`
|
|
14
|
+
**When:** Updating the same fields on many issues at once.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
curl -s -X POST \
|
|
18
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
19
|
+
-H "Content-Type: application/json" \
|
|
20
|
+
-d '{
|
|
21
|
+
"issueUpdates": [
|
|
22
|
+
{
|
|
23
|
+
"issueIdOrKey": "PROJ-101",
|
|
24
|
+
"fields": {"priority": {"name": "High"}, "labels": ["urgent"]}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"issueIdOrKey": "PROJ-102",
|
|
28
|
+
"fields": {"priority": {"name": "High"}, "labels": ["urgent"]}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}' \
|
|
32
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/bulk" \
|
|
33
|
+
| jq '.errors'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### Notes
|
|
37
|
+
- Max ~50 issues per request (Atlassian soft limit)
|
|
38
|
+
- Response includes per-issue errors — check `.errors` for partial failures
|
|
39
|
+
- Each issue can have different field updates
|
|
40
|
+
- This endpoint may not be available on all Jira Cloud plans
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### Bulk Transition (Loop Pattern)
|
|
45
|
+
|
|
46
|
+
**When:** Moving many issues through a workflow step (e.g., close all done issues).
|
|
47
|
+
|
|
48
|
+
This uses the MCP `transitionJiraIssue` in a loop. No direct bulk transition API exists.
|
|
49
|
+
|
|
50
|
+
**Pattern:**
|
|
51
|
+
1. Find issues with JQL via MCP `searchJiraIssuesUsingJql`
|
|
52
|
+
2. Get transitions for one representative issue via MCP `getTransitionsForJiraIssue`
|
|
53
|
+
3. Loop `transitionJiraIssue` for each issue
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
# Step 1: Find issues
|
|
57
|
+
searchJiraIssuesUsingJql
|
|
58
|
+
cloudId: "<cloudId>"
|
|
59
|
+
jql: "project = PROJ AND status = 'In Review'"
|
|
60
|
+
maxResults: 50
|
|
61
|
+
fields: ["summary", "status"]
|
|
62
|
+
|
|
63
|
+
# Step 2: Get transition ID (same for all issues in the same workflow)
|
|
64
|
+
getTransitionsForJiraIssue
|
|
65
|
+
cloudId: "<cloudId>"
|
|
66
|
+
issueIdOrKey: "PROJ-101" # any issue from the results
|
|
67
|
+
|
|
68
|
+
# Step 3: Transition each issue
|
|
69
|
+
# Repeat for each issue key from Step 1:
|
|
70
|
+
transitionJiraIssue
|
|
71
|
+
cloudId: "<cloudId>"
|
|
72
|
+
issueIdOrKey: "PROJ-101"
|
|
73
|
+
transition: {"id": "<transitionId>"}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Notes
|
|
77
|
+
- Rate limit: ~100 requests/minute for Jira Cloud
|
|
78
|
+
- For large batches (50+ issues), add a brief delay between calls
|
|
79
|
+
- If issues span different workflows, group by issue type and get transitions per group
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Paginated JQL Fetch
|
|
84
|
+
|
|
85
|
+
**When:** Fetching more results than the default page size (50).
|
|
86
|
+
|
|
87
|
+
Use MCP `searchJiraIssuesUsingJql` with pagination:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
# Page 1
|
|
91
|
+
searchJiraIssuesUsingJql
|
|
92
|
+
cloudId: "<cloudId>"
|
|
93
|
+
jql: "project = PROJ AND status != Done"
|
|
94
|
+
maxResults: 50
|
|
95
|
+
startAt: 0
|
|
96
|
+
fields: ["summary", "status"]
|
|
97
|
+
|
|
98
|
+
# Page 2
|
|
99
|
+
searchJiraIssuesUsingJql
|
|
100
|
+
cloudId: "<cloudId>"
|
|
101
|
+
jql: "project = PROJ AND status != Done"
|
|
102
|
+
maxResults: 50
|
|
103
|
+
startAt: 50
|
|
104
|
+
fields: ["summary", "status"]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Or via direct API for more control:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
curl -s \
|
|
111
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
112
|
+
-H "Content-Type: application/json" \
|
|
113
|
+
-d '{
|
|
114
|
+
"jql": "project = PROJ AND status != Done ORDER BY created DESC",
|
|
115
|
+
"maxResults": 100,
|
|
116
|
+
"startAt": 0,
|
|
117
|
+
"fields": ["summary", "status", "assignee"]
|
|
118
|
+
}' \
|
|
119
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/search" \
|
|
120
|
+
| jq '{total: .total, count: (.issues | length), issues: [.issues[] | {key, summary: .fields.summary, status: .fields.status.name}]}'
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Notes
|
|
124
|
+
- MCP `searchJiraIssuesUsingJql` max is typically 50 per page
|
|
125
|
+
- Direct API `POST /search` supports up to 100 per page
|
|
126
|
+
- Check `.total` in response to know when to stop paginating
|
|
127
|
+
- Use `POST` (not `GET`) for the search endpoint — JQL strings can exceed URL length limits
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Bulk Add Labels
|
|
132
|
+
|
|
133
|
+
**When:** Tagging many issues with the same label.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# For each issue, use the update operations syntax
|
|
137
|
+
for KEY in PROJ-101 PROJ-102 PROJ-103; do
|
|
138
|
+
curl -s -X PUT \
|
|
139
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
140
|
+
-H "Content-Type: application/json" \
|
|
141
|
+
-d '{"update": {"labels": [{"add": "reviewed"}]}}' \
|
|
142
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/$KEY"
|
|
143
|
+
echo "Labeled: $KEY"
|
|
144
|
+
done
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### Notes
|
|
148
|
+
- Uses Jira's `update` operations (add/remove/set) — more precise than replacing the entire `fields.labels` array
|
|
149
|
+
- Same pattern works for `components`, `fixVersions`, and other array fields
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Atlassian Direct API — Miscellaneous Operations
|
|
2
|
+
|
|
3
|
+
MCP gaps: comment edit/delete, watchers, components, versions, page deletion.
|
|
4
|
+
|
|
5
|
+
See [direct-api-auth.md](direct-api-auth.md) for auth setup.
|
|
6
|
+
|
|
7
|
+
All examples use Gateway (Bearer) auth.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Comments
|
|
12
|
+
|
|
13
|
+
### Edit a Jira Comment
|
|
14
|
+
|
|
15
|
+
**API:** `PUT /rest/api/3/issue/{issueKey}/comment/{commentId}`
|
|
16
|
+
**When:** Correcting or updating an existing comment.
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
curl -s -X PUT \
|
|
20
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
21
|
+
-H "Content-Type: application/json" \
|
|
22
|
+
-d '{
|
|
23
|
+
"body": {
|
|
24
|
+
"type": "doc",
|
|
25
|
+
"version": 1,
|
|
26
|
+
"content": [
|
|
27
|
+
{
|
|
28
|
+
"type": "paragraph",
|
|
29
|
+
"content": [{"type": "text", "text": "Updated comment text"}]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}' \
|
|
34
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/PROJ-123/comment/10042"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### Notes
|
|
38
|
+
- Comment body must be ADF (not Markdown) for the v3 API
|
|
39
|
+
- Get comment IDs from `getJiraIssue` with `fields: ["comment"]`
|
|
40
|
+
- Only the comment author or an admin can edit
|
|
41
|
+
|
|
42
|
+
### Delete a Jira Comment
|
|
43
|
+
|
|
44
|
+
**API:** `DELETE /rest/api/3/issue/{issueKey}/comment/{commentId}`
|
|
45
|
+
**When:** Removing erroneous or sensitive comments.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
curl -s -X DELETE \
|
|
49
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
50
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/PROJ-123/comment/10042"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### Notes
|
|
54
|
+
- Returns HTTP 204 on success (no body)
|
|
55
|
+
- Only the comment author or an admin can delete
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Watchers
|
|
60
|
+
|
|
61
|
+
### Get Watchers
|
|
62
|
+
|
|
63
|
+
**API:** `GET /rest/api/3/issue/{issueKey}/watchers`
|
|
64
|
+
**When:** Checking who is watching an issue.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
curl -s \
|
|
68
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
69
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/PROJ-123/watchers" \
|
|
70
|
+
| jq '.watchers[] | {accountId, displayName}'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Add a Watcher
|
|
74
|
+
|
|
75
|
+
**API:** `POST /rest/api/3/issue/{issueKey}/watchers`
|
|
76
|
+
**When:** Subscribing someone to issue notifications.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
curl -s -X POST \
|
|
80
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
81
|
+
-H "Content-Type: application/json" \
|
|
82
|
+
-d '"5b10a2844c20165700ede21g"' \
|
|
83
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/PROJ-123/watchers"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Notes
|
|
87
|
+
- Body is a **raw JSON string** (the accountId in quotes), not an object
|
|
88
|
+
- Get `accountId` from MCP `lookupJiraAccountId`
|
|
89
|
+
|
|
90
|
+
### Remove a Watcher
|
|
91
|
+
|
|
92
|
+
**API:** `DELETE /rest/api/3/issue/{issueKey}/watchers?accountId={accountId}`
|
|
93
|
+
**When:** Unsubscribing someone from issue notifications.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
curl -s -X DELETE \
|
|
97
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
98
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/issue/PROJ-123/watchers?accountId=5b10a2844c20165700ede21g"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Components
|
|
104
|
+
|
|
105
|
+
### List Project Components
|
|
106
|
+
|
|
107
|
+
**API:** `GET /rest/api/3/project/{projectKey}/components`
|
|
108
|
+
**When:** Finding component IDs for issue creation or filtering.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
curl -s \
|
|
112
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
113
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/project/PROJ/components" \
|
|
114
|
+
| jq '.[] | {id, name, lead: .lead.displayName}'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Create a Component
|
|
118
|
+
|
|
119
|
+
**API:** `POST /rest/api/3/component`
|
|
120
|
+
**When:** Adding a new component to a project.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
curl -s -X POST \
|
|
124
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
125
|
+
-H "Content-Type: application/json" \
|
|
126
|
+
-d '{
|
|
127
|
+
"name": "Authentication",
|
|
128
|
+
"project": "PROJ",
|
|
129
|
+
"description": "Auth and identity management",
|
|
130
|
+
"leadAccountId": "5b10a2844c20165700ede21g"
|
|
131
|
+
}' \
|
|
132
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/component" \
|
|
133
|
+
| jq '{id, name}'
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Versions (Releases)
|
|
139
|
+
|
|
140
|
+
### List Project Versions
|
|
141
|
+
|
|
142
|
+
**API:** `GET /rest/api/3/project/{projectKey}/versions`
|
|
143
|
+
**When:** Finding version IDs for fix-version assignment.
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
curl -s \
|
|
147
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
148
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/project/PROJ/versions" \
|
|
149
|
+
| jq '.[] | {id, name, released, releaseDate}'
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Create a Version
|
|
153
|
+
|
|
154
|
+
**API:** `POST /rest/api/3/version`
|
|
155
|
+
**When:** Setting up a new release version.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
curl -s -X POST \
|
|
159
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
160
|
+
-H "Content-Type: application/json" \
|
|
161
|
+
-d '{
|
|
162
|
+
"name": "v2.1.0",
|
|
163
|
+
"projectId": 10001,
|
|
164
|
+
"description": "Q2 release",
|
|
165
|
+
"releaseDate": "2026-06-30",
|
|
166
|
+
"released": false
|
|
167
|
+
}' \
|
|
168
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/version" \
|
|
169
|
+
| jq '{id, name}'
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### Notes
|
|
173
|
+
- Uses numeric `projectId`, not project key — get it from `getVisibleJiraProjects`
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Confluence Page Deletion
|
|
178
|
+
|
|
179
|
+
### Delete a Confluence Page
|
|
180
|
+
|
|
181
|
+
**API:** `DELETE /wiki/api/v2/pages/{pageId}`
|
|
182
|
+
**When:** Removing outdated or draft Confluence pages.
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
curl -s -X DELETE \
|
|
186
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
187
|
+
"https://api.atlassian.com/ex/confluence/$ATLASSIAN_CLOUD_ID/wiki/api/v2/pages/12345"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Notes
|
|
191
|
+
- Uses Confluence **v2 API** (not v1)
|
|
192
|
+
- Returns HTTP 204 on success
|
|
193
|
+
- Page is moved to trash first (recoverable for 30 days)
|
|
194
|
+
- Get page ID from MCP `getConfluencePage` or `searchConfluenceUsingCql`
|
|
195
|
+
- Child pages become orphans — reassign or delete them first
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Atlassian Direct API — Sprint & Board Management
|
|
2
|
+
|
|
3
|
+
MCP gap: no Scrum/Kanban board or sprint tools. The Agile API uses a different base path.
|
|
4
|
+
|
|
5
|
+
See [direct-api-auth.md](direct-api-auth.md) for auth setup.
|
|
6
|
+
|
|
7
|
+
All examples use Gateway (Bearer) auth. The Agile API base is:
|
|
8
|
+
```
|
|
9
|
+
https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### List Boards
|
|
15
|
+
|
|
16
|
+
**API:** `GET /rest/agile/1.0/board`
|
|
17
|
+
**When:** Finding the board ID for a project.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
curl -s \
|
|
21
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
22
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/board?projectKeyOrId=PROJ" \
|
|
23
|
+
| jq '.values[] | {id, name, type}'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Notes
|
|
27
|
+
- Filter by project with `projectKeyOrId` param
|
|
28
|
+
- `type` is `scrum` or `kanban`
|
|
29
|
+
- Board ID is needed for all subsequent sprint operations
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### Get Active Sprint
|
|
34
|
+
|
|
35
|
+
**API:** `GET /rest/agile/1.0/board/{boardId}/sprint?state=active`
|
|
36
|
+
**When:** Finding the current sprint to add issues to.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
curl -s \
|
|
40
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
41
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/board/42/sprint?state=active" \
|
|
42
|
+
| jq '.values[] | {id, name, state, startDate, endDate}'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Notes
|
|
46
|
+
- `state` filter accepts: `future`, `active`, `closed`
|
|
47
|
+
- Multiple states: `state=active,future`
|
|
48
|
+
- Only Scrum boards have sprints — Kanban boards return empty
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Get Issues in a Sprint
|
|
53
|
+
|
|
54
|
+
**API:** `GET /rest/agile/1.0/sprint/{sprintId}/issue`
|
|
55
|
+
**When:** Reviewing what's in a sprint.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
curl -s \
|
|
59
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
60
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/sprint/100/issue?fields=summary,status,assignee" \
|
|
61
|
+
| jq '.issues[] | {key, summary: .fields.summary, status: .fields.status.name}'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
#### Notes
|
|
65
|
+
- Use `fields` param to limit response size (same as Jira REST API v3)
|
|
66
|
+
- Supports `jql` param for additional filtering within the sprint
|
|
67
|
+
- Paginated: use `startAt` and `maxResults` for large sprints
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### Move Issues to a Sprint
|
|
72
|
+
|
|
73
|
+
**API:** `POST /rest/agile/1.0/sprint/{sprintId}/issue`
|
|
74
|
+
**When:** Adding issues to a sprint (sprint planning).
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
curl -s -X POST \
|
|
78
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
79
|
+
-H "Content-Type: application/json" \
|
|
80
|
+
-d '{"issues": ["PROJ-101", "PROJ-102", "PROJ-103"]}' \
|
|
81
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/sprint/100/issue"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Notes
|
|
85
|
+
- Accepts issue keys or issue IDs
|
|
86
|
+
- Issues are moved from their current sprint (or backlog) to the target sprint
|
|
87
|
+
- No response body on success (HTTP 204)
|
|
88
|
+
- To move to backlog: use `POST /rest/agile/1.0/backlog/issue` with same body
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Create a Sprint
|
|
93
|
+
|
|
94
|
+
**API:** `POST /rest/agile/1.0/sprint`
|
|
95
|
+
**When:** Setting up a new sprint.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
curl -s -X POST \
|
|
99
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
100
|
+
-H "Content-Type: application/json" \
|
|
101
|
+
-d '{
|
|
102
|
+
"name": "Sprint 42",
|
|
103
|
+
"originBoardId": 42,
|
|
104
|
+
"startDate": "2026-04-06T09:00:00.000Z",
|
|
105
|
+
"endDate": "2026-04-20T17:00:00.000Z",
|
|
106
|
+
"goal": "Complete auth migration"
|
|
107
|
+
}' \
|
|
108
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/sprint" \
|
|
109
|
+
| jq '{id, name, state}'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### Notes
|
|
113
|
+
- `originBoardId` is required — use the board ID from "List Boards"
|
|
114
|
+
- Dates are ISO 8601
|
|
115
|
+
- Sprint starts in `future` state
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
### Start or Close a Sprint
|
|
120
|
+
|
|
121
|
+
**API:** `PUT /rest/agile/1.0/sprint/{sprintId}`
|
|
122
|
+
**When:** Starting a planned sprint or closing a completed one.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Start a sprint
|
|
126
|
+
curl -s -X PUT \
|
|
127
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
128
|
+
-H "Content-Type: application/json" \
|
|
129
|
+
-d '{"state": "active"}' \
|
|
130
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/sprint/100"
|
|
131
|
+
|
|
132
|
+
# Close a sprint (must specify where incomplete issues go)
|
|
133
|
+
curl -s -X PUT \
|
|
134
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
135
|
+
-H "Content-Type: application/json" \
|
|
136
|
+
-d '{"state": "closed"}' \
|
|
137
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/sprint/100"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### Notes
|
|
141
|
+
- Only one sprint can be `active` per board at a time
|
|
142
|
+
- When closing, incomplete issues move to the backlog by default
|
|
143
|
+
- To move incomplete issues to a specific sprint, close the sprint via the Jira UI (API doesn't support the move-to-sprint parameter natively)
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### Move Issues to Backlog
|
|
148
|
+
|
|
149
|
+
**API:** `POST /rest/agile/1.0/backlog/issue`
|
|
150
|
+
**When:** Removing issues from a sprint without deleting them.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
curl -s -X POST \
|
|
154
|
+
-H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
155
|
+
-H "Content-Type: application/json" \
|
|
156
|
+
-d '{"issues": ["PROJ-101", "PROJ-102"]}' \
|
|
157
|
+
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/agile/1.0/backlog/issue"
|
|
158
|
+
```
|
|
@@ -5,105 +5,73 @@ description: Use Context7 MCP for official library documentation, framework APIs
|
|
|
5
5
|
|
|
6
6
|
# Context7 MCP - Library Documentation
|
|
7
7
|
|
|
8
|
-
Use Context7 for official library
|
|
8
|
+
Use Context7 for official library docs instead of web searching or guessing APIs.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Tool
|
|
11
11
|
|
|
12
12
|
| Tool | Purpose |
|
|
13
13
|
|------|---------|
|
|
14
|
-
| `mcp__context7__search` | Search
|
|
15
|
-
|
|
16
|
-
## Basic Usage
|
|
17
|
-
|
|
18
|
-
Context7 combines library resolution and documentation retrieval into a single tool.
|
|
14
|
+
| `mcp__context7__search` | Search libraries and retrieve documentation |
|
|
19
15
|
|
|
20
16
|
```
|
|
21
17
|
mcp__context7__search
|
|
22
18
|
query: "How to use QDialog component in Quasar"
|
|
23
19
|
```
|
|
24
20
|
|
|
25
|
-
**Parameters**:
|
|
26
|
-
- `query` (required): Your question or search query including the library name
|
|
27
|
-
|
|
28
|
-
The tool will:
|
|
29
|
-
1. Identify the library from your query
|
|
30
|
-
2. Find the relevant documentation
|
|
31
|
-
3. Return focused, relevant docs
|
|
32
|
-
|
|
33
21
|
## Query Optimization
|
|
34
22
|
|
|
35
|
-
|
|
36
|
-
- Component/function names: "QDialog component API props events slots"
|
|
37
|
-
- What you want to do: "How to set up authentication with JWT"
|
|
38
|
-
- Context: "React useState hook example with TypeScript"
|
|
23
|
+
Include component/function name + what you want to do + context. Be specific.
|
|
39
24
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|-------|---------------|
|
|
25
|
+
| Good Query | Why |
|
|
26
|
+
|------------|-----|
|
|
43
27
|
| "Quasar QDialog props and events" | Specific component, clear intent |
|
|
44
|
-
| "React useEffect cleanup function" | Specific hook
|
|
45
|
-
| "Prisma findMany where clause syntax" | Specific method
|
|
28
|
+
| "React useEffect cleanup function" | Specific hook + aspect |
|
|
29
|
+
| "Prisma findMany where clause syntax" | Specific method + feature |
|
|
46
30
|
| "Express middleware error handling" | Framework + feature |
|
|
47
31
|
|
|
48
|
-
|
|
49
|
-
- ❌ "How does Quasar work?"
|
|
50
|
-
- ✅ "How to create a Quasar button with icon"
|
|
32
|
+
Avoid: "How does Quasar work?" — use: "How to create a Quasar button with icon"
|
|
51
33
|
|
|
52
34
|
## Decision Logic
|
|
53
35
|
|
|
54
36
|
```
|
|
55
|
-
IF
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
→ Use native Claude knowledge
|
|
61
|
-
ELSE IF library not found:
|
|
62
|
-
→ Fallback to WebSearch or Tavily
|
|
63
|
-
ELSE IF asking for "latest" or "new" features post-cutoff:
|
|
64
|
-
→ Use Tavily instead
|
|
37
|
+
IF library/framework API question → Context7
|
|
38
|
+
IF import detected AND user asks about that library → Context7
|
|
39
|
+
IF general programming concept (closures, promises) → native Claude knowledge
|
|
40
|
+
IF library not found → fallback to Tavily
|
|
41
|
+
IF "latest" / post-cutoff features → Tavily instead
|
|
65
42
|
```
|
|
66
43
|
|
|
67
44
|
## When NOT to Use
|
|
68
45
|
|
|
69
|
-
-
|
|
70
|
-
- Debugging
|
|
71
|
-
- Simple syntax
|
|
72
|
-
-
|
|
46
|
+
- No specific library involved
|
|
47
|
+
- Debugging business logic (no library APIs)
|
|
48
|
+
- Simple syntax Claude already knows
|
|
49
|
+
- Current/latest info post-cutoff → use Tavily
|
|
73
50
|
|
|
74
|
-
##
|
|
51
|
+
## Supported Libraries
|
|
75
52
|
|
|
76
|
-
**Frontend**: React, Vue, Quasar, Next.js, Nuxt, Svelte, Angular, Tailwind, Bootstrap
|
|
77
|
-
**Backend**: Express, Fastify, Nest.js, tRPC, Prisma, Sequelize, TypeORM
|
|
78
|
-
**Utilities**: Lodash, Ramda, date-fns, Zod, Yup, Joi
|
|
79
|
-
**Build**: Vite, Webpack, Rollup, ESBuild
|
|
53
|
+
**Frontend**: React, Vue, Quasar, Next.js, Nuxt, Svelte, Angular, Tailwind, Bootstrap
|
|
54
|
+
**Backend**: Express, Fastify, Nest.js, tRPC, Prisma, Sequelize, TypeORM
|
|
55
|
+
**Utilities**: Lodash, Ramda, date-fns, Zod, Yup, Joi
|
|
56
|
+
**Build**: Vite, Webpack, Rollup, ESBuild
|
|
80
57
|
**Testing**: Jest, Vitest, Playwright, Cypress
|
|
81
58
|
|
|
82
59
|
## Examples
|
|
83
60
|
|
|
84
|
-
|
|
|
85
|
-
|
|
86
|
-
| "How to use QDialog in Vue?" | search(
|
|
87
|
-
| "React useState example" | search(
|
|
88
|
-
| "Prisma query syntax" | search(
|
|
89
|
-
| "What's a closure?" | Native Claude
|
|
90
|
-
| "Latest React 19 features" |
|
|
61
|
+
| Request | Action |
|
|
62
|
+
|---------|--------|
|
|
63
|
+
| "How to use QDialog in Vue?" | `search("QDialog component Quasar Vue")` |
|
|
64
|
+
| "React useState example" | `search("React useState hook example")` |
|
|
65
|
+
| "Prisma query syntax" | `search("Prisma findMany where query")` |
|
|
66
|
+
| "What's a closure?" | Native Claude |
|
|
67
|
+
| "Latest React 19 features" | Tavily |
|
|
91
68
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
If initial results aren't sufficient, refine your query:
|
|
95
|
-
1. First attempt: "Quasar form validation"
|
|
96
|
-
2. If needed: "Quasar QForm validation rules API"
|
|
97
|
-
3. If needed: "Quasar field validation with Vuelidate"
|
|
69
|
+
If initial results insufficient, refine: "Quasar form validation" → "Quasar QForm validation rules API"
|
|
98
70
|
|
|
99
71
|
## Setup
|
|
100
72
|
|
|
101
|
-
No API key required. Install with:
|
|
102
73
|
```bash
|
|
103
74
|
bun run scripts/setup-mcp.ts
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
Or manually:
|
|
107
|
-
```bash
|
|
75
|
+
# or manually:
|
|
108
76
|
claude mcp add --scope user context7 -- npx -y @upstash/context7-mcp@latest
|
|
109
77
|
```
|