ima-claude 2.20.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 +48 -9
- package/dist/cli.js +1 -1
- package/package.json +1 -1
- package/plugins/ima-claude/.claude-plugin/plugin.json +1 -1
- 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 +35 -71
- 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 +43 -78
- 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 +92 -162
- 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 +33 -83
- 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
|
@@ -14,12 +14,12 @@ description: >-
|
|
|
14
14
|
# Atlassian Integration — Hybrid MCP + Direct API
|
|
15
15
|
|
|
16
16
|
MCP-first: use bundled tools (prefixed `mcp__claude_ai_Atlassian__`) for covered operations.
|
|
17
|
-
Direct REST API (curl via Bash) for gaps. See [Decision Logic](#decision-logic)
|
|
17
|
+
Direct REST API (curl via Bash) for gaps. See [Decision Logic](#decision-logic).
|
|
18
18
|
|
|
19
19
|
## Bootstrap (Required First Call)
|
|
20
20
|
|
|
21
|
-
Every session MUST start with `getAccessibleAtlassianResources` to obtain
|
|
22
|
-
Nearly all other tools require it. Cache
|
|
21
|
+
Every session MUST start with `getAccessibleAtlassianResources` to obtain `cloudId`.
|
|
22
|
+
Nearly all other tools require it. Cache for the session.
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
getAccessibleAtlassianResources → returns cloudId (UUID or site URL)
|
|
@@ -35,26 +35,26 @@ getAccessibleAtlassianResources → returns cloudId (UUID or site URL)
|
|
|
35
35
|
| `atlassianUserInfo` | Current authenticated user | *(none)* |
|
|
36
36
|
| `lookupJiraAccountId` | Find user accountId by name/email | `cloudId`, `searchString` |
|
|
37
37
|
|
|
38
|
-
### Search (
|
|
38
|
+
### Search (choose wisely)
|
|
39
39
|
|
|
40
40
|
| Tool | Query Language | Scope | When to Use |
|
|
41
41
|
|------|---------------|-------|-------------|
|
|
42
|
-
| `search` | Natural language | Jira + Confluence | Default
|
|
43
|
-
| `searchJiraIssuesUsingJql` | JQL | Jira only | Structured
|
|
44
|
-
| `searchConfluenceUsingCql` | CQL | Confluence only | Structured
|
|
42
|
+
| `search` | Natural language | Jira + Confluence | Default. Use unless JQL/CQL specifically needed |
|
|
43
|
+
| `searchJiraIssuesUsingJql` | JQL | Jira only | Structured: status, assignee, project, date ranges |
|
|
44
|
+
| `searchConfluenceUsingCql` | CQL | Confluence only | Structured: space, label, type, creator |
|
|
45
45
|
|
|
46
|
-
### Jira
|
|
46
|
+
### Jira — Read
|
|
47
47
|
|
|
48
48
|
| Tool | Purpose | Token-Saving Tip |
|
|
49
49
|
|------|---------|------------------|
|
|
50
|
-
| `getJiraIssue` | Get issue details | Use `fields` param
|
|
50
|
+
| `getJiraIssue` | Get issue details | Use `fields` param — request ONLY needed fields |
|
|
51
51
|
| `getVisibleJiraProjects` | List projects | Use `searchString` to filter |
|
|
52
|
-
| `getJiraProjectIssueTypesMetadata` | Issue types for
|
|
53
|
-
| `getJiraIssueTypeMetaWithFields` | Field metadata for issue type | Call before `editJiraIssue`
|
|
52
|
+
| `getJiraProjectIssueTypesMetadata` | Issue types for project | Call before `createJiraIssue` |
|
|
53
|
+
| `getJiraIssueTypeMetaWithFields` | Field metadata for issue type | Call before `editJiraIssue` |
|
|
54
54
|
| `getTransitionsForJiraIssue` | Available status transitions | MUST call before `transitionJiraIssue` |
|
|
55
|
-
| `getJiraIssueRemoteIssueLinks` | Remote links on
|
|
55
|
+
| `getJiraIssueRemoteIssueLinks` | Remote links on issue | |
|
|
56
56
|
|
|
57
|
-
### Jira
|
|
57
|
+
### Jira — Write
|
|
58
58
|
|
|
59
59
|
| Tool | Content Format | Purpose |
|
|
60
60
|
|------|---------------|---------|
|
|
@@ -64,18 +64,18 @@ getAccessibleAtlassianResources → returns cloudId (UUID or site URL)
|
|
|
64
64
|
| `transitionJiraIssue` | Transition object | Change status. Get transition IDs first |
|
|
65
65
|
| `addWorklogToJiraIssue` | Duration string | Log time: `"2h"`, `"30m"`, `"4d"` |
|
|
66
66
|
|
|
67
|
-
### Confluence
|
|
67
|
+
### Confluence — Read
|
|
68
68
|
|
|
69
69
|
| Tool | Purpose | Token-Saving Tip |
|
|
70
70
|
|------|---------|------------------|
|
|
71
|
-
| `getConfluencePage` | Get page by ID | Use `contentFormat: "markdown"`
|
|
71
|
+
| `getConfluencePage` | Get page by ID | Use `contentFormat: "markdown"` — much smaller than ADF |
|
|
72
72
|
| `getConfluenceSpaces` | List spaces | Filter with `keys`, `type`, `labels` |
|
|
73
|
-
| `getPagesInConfluenceSpace` | Pages in
|
|
73
|
+
| `getPagesInConfluenceSpace` | Pages in space | Filter with `title`, `status`, `sort` |
|
|
74
74
|
| `getConfluencePageDescendants` | Child pages | Use `depth` to limit |
|
|
75
75
|
| `getConfluencePageFooterComments` | Footer comments | |
|
|
76
76
|
| `getConfluencePageInlineComments` | Inline comments | Filter by `resolutionStatus` |
|
|
77
77
|
|
|
78
|
-
### Confluence
|
|
78
|
+
### Confluence — Write
|
|
79
79
|
|
|
80
80
|
| Tool | Content Format | Purpose |
|
|
81
81
|
|------|---------------|---------|
|
|
@@ -93,29 +93,23 @@ getAccessibleAtlassianResources → returns cloudId (UUID or site URL)
|
|
|
93
93
|
|
|
94
94
|
## Direct API — Gap Operations
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
### When to Use Direct API
|
|
99
|
-
|
|
100
|
-
The MCP handles issue CRUD, transitions, comments, Confluence pages, and search well.
|
|
101
|
-
Use direct API **only** for operations not in the Tool Catalog above.
|
|
96
|
+
Use `curl` via Bash only for operations not in the Tool Catalog above.
|
|
102
97
|
|
|
103
98
|
### Auth Setup
|
|
104
99
|
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
Two methods:
|
|
107
101
|
- **Gateway (Bearer)** — preferred for service accounts: `ATLASSIAN_CLOUD_ID` + `ATLASSIAN_BEARER_TOKEN`
|
|
108
102
|
- **Direct (Basic)** — fallback for personal tokens: `ATLASSIAN_DOMAIN` + `ATLASSIAN_EMAIL` + `ATLASSIAN_API_TOKEN`
|
|
109
103
|
|
|
110
|
-
|
|
104
|
+
Verify auth before first direct call:
|
|
111
105
|
```bash
|
|
112
106
|
curl -s -H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
113
107
|
"https://api.atlassian.com/ex/jira/$ATLASSIAN_CLOUD_ID/rest/api/3/myself" | jq '.displayName'
|
|
114
108
|
```
|
|
115
109
|
|
|
116
|
-
Full setup
|
|
110
|
+
Full setup: [references/direct-api-auth.md](references/direct-api-auth.md)
|
|
117
111
|
|
|
118
|
-
###
|
|
112
|
+
### Gap Recipes
|
|
119
113
|
|
|
120
114
|
| Operation | Reference | Priority |
|
|
121
115
|
|-----------|-----------|----------|
|
|
@@ -124,23 +118,36 @@ Full setup guide: [references/direct-api-auth.md](references/direct-api-auth.md)
|
|
|
124
118
|
| Bulk operations (batch edit, bulk transition) | [direct-api-bulk.md](references/direct-api-bulk.md) | P1 |
|
|
125
119
|
| Comment edit/delete, watchers, components, versions, page deletion | [direct-api-misc.md](references/direct-api-misc.md) | P2 |
|
|
126
120
|
|
|
127
|
-
|
|
121
|
+
## Decision Logic
|
|
128
122
|
|
|
129
123
|
```
|
|
130
|
-
Can
|
|
131
|
-
Attachment download/upload?
|
|
132
|
-
Sprint or board operation?
|
|
133
|
-
Bulk operation (5+ issues)?
|
|
134
|
-
Edit/delete comment?
|
|
135
|
-
Watchers, components, versions?
|
|
136
|
-
Delete Confluence page?
|
|
124
|
+
Can MCP tool handle it? → MCP tool (always preferred)
|
|
125
|
+
Attachment download/upload? → direct-api-attachments.md
|
|
126
|
+
Sprint or board operation? → direct-api-sprints.md
|
|
127
|
+
Bulk operation (5+ issues)? → direct-api-bulk.md
|
|
128
|
+
Edit/delete comment? → direct-api-misc.md
|
|
129
|
+
Watchers, components, versions? → direct-api-misc.md
|
|
130
|
+
Delete Confluence page? → direct-api-misc.md
|
|
131
|
+
|
|
132
|
+
Search across Jira AND Confluence? → search (Rovo, natural language)
|
|
133
|
+
Structured Jira query? → searchJiraIssuesUsingJql (JQL)
|
|
134
|
+
Structured Confluence query? → searchConfluenceUsingCql (CQL)
|
|
135
|
+
|
|
136
|
+
@mention in content? → lookupJiraAccountId first, then:
|
|
137
|
+
Confluence page → ADF with mention node
|
|
138
|
+
Jira description → editJiraIssue with ADF fields
|
|
139
|
+
Jira/Confluence comment → plain text name (Markdown limitation)
|
|
140
|
+
|
|
141
|
+
Issue field metadata before editing? → getJiraIssueTypeMetaWithFields
|
|
142
|
+
Change issue status? → getTransitionsForJiraIssue THEN transitionJiraIssue
|
|
143
|
+
Creating Confluence page? → need spaceId (NOT space key) from getConfluenceSpaces
|
|
137
144
|
```
|
|
138
145
|
|
|
139
146
|
## User Mentions (@tagging)
|
|
140
147
|
|
|
141
|
-
**
|
|
148
|
+
**Most error-prone area.** Follow exactly.
|
|
142
149
|
|
|
143
|
-
### Step 1:
|
|
150
|
+
### Step 1: Look Up accountId
|
|
144
151
|
|
|
145
152
|
```
|
|
146
153
|
lookupJiraAccountId
|
|
@@ -148,14 +155,13 @@ lookupJiraAccountId
|
|
|
148
155
|
searchString: "john@example.com" # or "John Doe" or partial "john"
|
|
149
156
|
```
|
|
150
157
|
|
|
151
|
-
|
|
152
|
-
(same Atlassian org user pool).
|
|
158
|
+
Works for both Jira and Confluence (same org user pool).
|
|
153
159
|
|
|
154
|
-
### Step 2: Choose
|
|
160
|
+
### Step 2: Choose Mention Strategy
|
|
155
161
|
|
|
156
|
-
#### Confluence Pages
|
|
162
|
+
#### Confluence Pages — use ADF (reliable)
|
|
157
163
|
|
|
158
|
-
|
|
164
|
+
`createConfluencePage` / `updateConfluencePage` with `contentFormat: "adf"`:
|
|
159
165
|
|
|
160
166
|
```json
|
|
161
167
|
{
|
|
@@ -167,10 +173,9 @@ Use `createConfluencePage` or `updateConfluencePage` with `contentFormat: "adf"`
|
|
|
167
173
|
}
|
|
168
174
|
```
|
|
169
175
|
|
|
170
|
-
**Critical:**
|
|
171
|
-
NOT a raw object. This is the #1 cause of failures.
|
|
176
|
+
**Critical:** `body` MUST be a JSON **string** (result of JSON.stringify), NOT a raw object. This is the #1 cause of failures.
|
|
172
177
|
|
|
173
|
-
ADF mention node
|
|
178
|
+
ADF mention node:
|
|
174
179
|
```json
|
|
175
180
|
{
|
|
176
181
|
"type": "mention",
|
|
@@ -181,19 +186,15 @@ ADF mention node structure:
|
|
|
181
186
|
}
|
|
182
187
|
```
|
|
183
188
|
|
|
184
|
-
|
|
185
|
-
never at the top-level `doc.content`.
|
|
189
|
+
Mention node is **inline** — MUST be inside `paragraph.content`, never at top-level `doc.content`.
|
|
186
190
|
|
|
187
|
-
#### Confluence Comments
|
|
191
|
+
#### Confluence Comments — no native mentions
|
|
188
192
|
|
|
189
|
-
`createConfluenceFooterComment`
|
|
190
|
-
Markdown. Real @mentions are not supported in Markdown mode. Workaround:
|
|
191
|
-
reference the user by name in plain text, or create/update the parent **page**
|
|
192
|
-
with ADF to include the mention there instead.
|
|
193
|
+
`createConfluenceFooterComment` / `createConfluenceInlineComment` accept Markdown only. Real @mentions unsupported. Workaround: reference by name in plain text, or add the mention to the parent page via ADF instead.
|
|
193
194
|
|
|
194
|
-
#### Jira
|
|
195
|
+
#### Jira Description — use ADF (reliable)
|
|
195
196
|
|
|
196
|
-
|
|
197
|
+
Use `editJiraIssue` with ADF description:
|
|
197
198
|
|
|
198
199
|
```json
|
|
199
200
|
{
|
|
@@ -224,69 +225,49 @@ For mentions in descriptions, use `editJiraIssue` with the ADF description field
|
|
|
224
225
|
}
|
|
225
226
|
```
|
|
226
227
|
|
|
227
|
-
|
|
228
|
-
WITH mentions, create the issue first (Markdown description), then immediately
|
|
229
|
-
`editJiraIssue` to replace the description with ADF containing mentions.
|
|
228
|
+
To create issue WITH mentions: create with `createJiraIssue` (Markdown), then immediately `editJiraIssue` to replace description with ADF.
|
|
230
229
|
|
|
231
|
-
#### Jira Comments
|
|
230
|
+
#### Jira Comments — limited
|
|
232
231
|
|
|
233
|
-
`addCommentToJiraIssue` accepts Markdown
|
|
234
|
-
are not directly available. Workaround: reference users by display name in the
|
|
235
|
-
Markdown text. If real @mentions in comments are critical, use a two-step
|
|
236
|
-
approach: add the comment, then use the Jira UI or a direct API call for the
|
|
237
|
-
mention.
|
|
232
|
+
`addCommentToJiraIssue` accepts Markdown only. Reference users by display name. For real @mentions in comments, use direct API after adding the comment.
|
|
238
233
|
|
|
239
|
-
### Mention Pitfalls
|
|
234
|
+
### Mention Pitfalls
|
|
240
235
|
|
|
241
236
|
| Pitfall | Symptom | Fix |
|
|
242
237
|
|---------|---------|-----|
|
|
243
238
|
| Using `username` instead of `accountId` | Shows "unlicensed user" | Always use `lookupJiraAccountId` first |
|
|
244
|
-
| ADF body as object instead of string | "invalid request body"
|
|
239
|
+
| ADF body as object instead of string | "invalid request body" | `JSON.stringify()` the ADF for Confluence |
|
|
245
240
|
| Mention at doc level, not in paragraph | Silent failure / no mention | Wrap in `{"type": "paragraph", "content": [...]}` |
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
| Using `@username` in Markdown | Plain text, not a real mention | Use ADF path for real mentions |
|
|
241
|
+
| Wiki notation `[~accountId:xxx]` in Markdown | Raw text, not mention | Use ADF via `editJiraIssue` instead |
|
|
242
|
+
| `@username` in Markdown | Plain text, not real mention | Use ADF path for real mentions |
|
|
249
243
|
|
|
250
244
|
## Token-Saving Strategies
|
|
251
245
|
|
|
252
|
-
|
|
253
|
-
|
|
246
|
+
**Filter Jira fields** — never fetch all:
|
|
254
247
|
```
|
|
255
248
|
getJiraIssue
|
|
256
|
-
fields: ["summary", "status", "assignee", "priority"]
|
|
249
|
+
fields: ["summary", "status", "assignee", "priority"]
|
|
257
250
|
```
|
|
258
251
|
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
-
|
|
263
|
-
|
|
264
|
-
### 2. Use Markdown for Confluence Reads
|
|
252
|
+
Common subsets:
|
|
253
|
+
- Quick status: `["summary", "status", "priority"]`
|
|
254
|
+
- Assignment: `["summary", "assignee", "reporter"]`
|
|
255
|
+
- Planning: `["summary", "status", "priority", "issuetype", "parent"]`
|
|
265
256
|
|
|
257
|
+
**Markdown for Confluence reads** — ADF is 5-10x larger:
|
|
266
258
|
```
|
|
267
259
|
getConfluencePage
|
|
268
|
-
contentFormat: "markdown"
|
|
260
|
+
contentFormat: "markdown"
|
|
269
261
|
```
|
|
270
262
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
### 3. Limit Search Results
|
|
274
|
-
|
|
263
|
+
**Limit search results:**
|
|
275
264
|
```
|
|
276
265
|
searchJiraIssuesUsingJql
|
|
277
|
-
maxResults: 10
|
|
278
|
-
fields: ["summary", "status"]
|
|
266
|
+
maxResults: 10
|
|
267
|
+
fields: ["summary", "status"]
|
|
279
268
|
```
|
|
280
269
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
- "Find issues about authentication" → `search` (natural language, cross-product)
|
|
284
|
-
- "All open bugs in PROJ assigned to me" → `searchJiraIssuesUsingJql` with JQL
|
|
285
|
-
- "Pages labeled 'architecture' in DEV space" → `searchConfluenceUsingCql` with CQL
|
|
286
|
-
|
|
287
|
-
### 5. Avoid Redundant Discovery Calls
|
|
288
|
-
|
|
289
|
-
Cache these within a session (they rarely change):
|
|
270
|
+
**Cache within session** (rarely change):
|
|
290
271
|
- `cloudId` from `getAccessibleAtlassianResources`
|
|
291
272
|
- Project keys from `getVisibleJiraProjects`
|
|
292
273
|
- Space IDs from `getConfluenceSpaces`
|
|
@@ -294,46 +275,29 @@ Cache these within a session (they rarely change):
|
|
|
294
275
|
|
|
295
276
|
## Common Workflows
|
|
296
277
|
|
|
297
|
-
### Create and Assign
|
|
298
|
-
|
|
278
|
+
### Create and Assign Jira Issue
|
|
299
279
|
```
|
|
300
280
|
1. getAccessibleAtlassianResources → cloudId
|
|
301
281
|
2. lookupJiraAccountId(searchString: "jane@co.com") → accountId
|
|
302
|
-
3. createJiraIssue(
|
|
303
|
-
|
|
304
|
-
issueTypeName: "Task",
|
|
305
|
-
summary: "Review Q4 report",
|
|
306
|
-
description: "Review and approve the Q4 financial report",
|
|
307
|
-
assignee_account_id: "<accountId>"
|
|
308
|
-
)
|
|
282
|
+
3. createJiraIssue(projectKey: "PROJ", issueTypeName: "Task",
|
|
283
|
+
summary: "Review Q4 report", assignee_account_id: "<accountId>")
|
|
309
284
|
```
|
|
310
285
|
|
|
311
|
-
### Transition
|
|
312
|
-
|
|
286
|
+
### Transition Jira Issue
|
|
313
287
|
```
|
|
314
|
-
1. getTransitionsForJiraIssue(issueIdOrKey: "PROJ-123") →
|
|
315
|
-
2. transitionJiraIssue(
|
|
316
|
-
issueIdOrKey: "PROJ-123",
|
|
317
|
-
transition: { "id": "<transitionId>" }
|
|
318
|
-
)
|
|
288
|
+
1. getTransitionsForJiraIssue(issueIdOrKey: "PROJ-123") → transition ID
|
|
289
|
+
2. transitionJiraIssue(issueIdOrKey: "PROJ-123", transition: {"id": "<transitionId>"})
|
|
319
290
|
```
|
|
320
291
|
|
|
321
|
-
### Create
|
|
322
|
-
|
|
292
|
+
### Create Confluence Page with Mention
|
|
323
293
|
```
|
|
324
294
|
1. getAccessibleAtlassianResources → cloudId
|
|
325
295
|
2. lookupJiraAccountId(searchString: "john") → accountId
|
|
326
296
|
3. getConfluenceSpaces(keys: ["DEV"]) → spaceId
|
|
327
|
-
4. createConfluencePage(
|
|
328
|
-
spaceId: "<spaceId>",
|
|
329
|
-
title: "Meeting Notes",
|
|
330
|
-
contentFormat: "adf",
|
|
331
|
-
body: "<ADF JSON string with mention node>"
|
|
332
|
-
)
|
|
297
|
+
4. createConfluencePage(spaceId, title, contentFormat: "adf", body: "<ADF JSON string>")
|
|
333
298
|
```
|
|
334
299
|
|
|
335
300
|
### Inline Comment on Specific Text
|
|
336
|
-
|
|
337
301
|
```
|
|
338
302
|
createConfluenceInlineComment(
|
|
339
303
|
pageId: "<pageId>",
|
|
@@ -346,67 +310,33 @@ createConfluenceInlineComment(
|
|
|
346
310
|
)
|
|
347
311
|
```
|
|
348
312
|
|
|
349
|
-
### Download Attachments
|
|
350
|
-
|
|
313
|
+
### Download Attachments (Hybrid)
|
|
351
314
|
```
|
|
352
|
-
1. getJiraIssue(issueIdOrKey: "PROJ-123", fields: ["attachment"])
|
|
353
|
-
→ get attachment metadata (filename, content URL)
|
|
315
|
+
1. getJiraIssue(issueIdOrKey: "PROJ-123", fields: ["attachment"]) → content URL
|
|
354
316
|
2. curl -s -L -H "Authorization: Bearer $ATLASSIAN_BEARER_TOKEN" \
|
|
355
|
-
-o "mockup.png" "<content-url
|
|
317
|
+
-o "mockup.png" "<content-url>"
|
|
356
318
|
```
|
|
357
|
-
|
|
358
319
|
Full recipes: [references/direct-api-attachments.md](references/direct-api-attachments.md)
|
|
359
320
|
|
|
360
|
-
### Move Issues to
|
|
361
|
-
|
|
321
|
+
### Move Issues to Sprint (Direct API)
|
|
362
322
|
```
|
|
363
323
|
1. curl: GET /rest/agile/1.0/board?projectKeyOrId=PROJ → boardId
|
|
364
324
|
2. curl: GET /rest/agile/1.0/board/{boardId}/sprint?state=active → sprintId
|
|
365
|
-
3. curl: POST /rest/agile/1.0/sprint/{sprintId}/issue
|
|
366
|
-
body: {"issues": ["PROJ-101", "PROJ-102"]}
|
|
325
|
+
3. curl: POST /rest/agile/1.0/sprint/{sprintId}/issue body: {"issues": ["PROJ-101"]}
|
|
367
326
|
```
|
|
368
|
-
|
|
369
327
|
Full recipes: [references/direct-api-sprints.md](references/direct-api-sprints.md)
|
|
370
328
|
|
|
371
|
-
## Decision Logic
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
Need to search across Jira AND Confluence?
|
|
375
|
-
→ search (Rovo, natural language)
|
|
376
|
-
|
|
377
|
-
Need structured Jira query (by project/status/assignee/date)?
|
|
378
|
-
→ searchJiraIssuesUsingJql (JQL)
|
|
379
|
-
|
|
380
|
-
Need structured Confluence query (by space/label/type)?
|
|
381
|
-
→ searchConfluenceUsingCql (CQL)
|
|
382
|
-
|
|
383
|
-
Need to @mention a user in content?
|
|
384
|
-
→ lookupJiraAccountId first, then:
|
|
385
|
-
- Confluence page → ADF with mention node
|
|
386
|
-
- Jira description → editJiraIssue with ADF fields
|
|
387
|
-
- Jira/Confluence comment → Plain text name (Markdown limitation)
|
|
388
|
-
|
|
389
|
-
Need issue field metadata before editing?
|
|
390
|
-
→ getJiraIssueTypeMetaWithFields
|
|
391
|
-
|
|
392
|
-
Need to change issue status?
|
|
393
|
-
→ getTransitionsForJiraIssue THEN transitionJiraIssue
|
|
394
|
-
|
|
395
|
-
Creating a Confluence page?
|
|
396
|
-
→ Need spaceId (NOT space key). Get from getConfluenceSpaces
|
|
397
|
-
```
|
|
398
|
-
|
|
399
329
|
## Limitations
|
|
400
330
|
|
|
401
|
-
### Not Supported
|
|
331
|
+
### Not Supported
|
|
402
332
|
|
|
403
|
-
-
|
|
333
|
+
- Atlassian storage format (XML) — MCP uses Markdown or ADF only
|
|
404
334
|
- Confluence page permissions management
|
|
405
|
-
- Jira custom field creation
|
|
335
|
+
- Jira custom field creation
|
|
406
336
|
- Confluence page templates
|
|
407
337
|
- Jira automation rules / webhooks
|
|
408
338
|
|
|
409
|
-
### Covered by Direct API
|
|
339
|
+
### Covered by Direct API
|
|
410
340
|
|
|
411
341
|
| Gap | Recipe |
|
|
412
342
|
|-----|--------|
|
|
@@ -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
|
```
|