ima-claude 2.9.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/LICENSE +21 -0
- package/README.md +463 -0
- package/dist/cli.js +1064 -0
- package/package.json +49 -0
- package/platforms/claude/adapter.ts +115 -0
- package/platforms/junie/adapter.ts +254 -0
- package/platforms/junie/agents-template.md +113 -0
- package/platforms/junie/hook-translations.md +84 -0
- package/platforms/shared/detector.ts +27 -0
- package/platforms/shared/installer.ts +202 -0
- package/platforms/shared/types.ts +78 -0
- package/plugins/ima-claude/.claude-plugin/plugin.json +25 -0
- package/plugins/ima-claude/agents/explorer.md +30 -0
- package/plugins/ima-claude/agents/implementer.md +30 -0
- package/plugins/ima-claude/agents/memory.md +42 -0
- package/plugins/ima-claude/agents/reviewer.md +53 -0
- package/plugins/ima-claude/agents/tester.md +33 -0
- package/plugins/ima-claude/agents/wp-developer.md +46 -0
- package/plugins/ima-claude/hooks/README.md +145 -0
- package/plugins/ima-claude/hooks/atlassian_prereqs.py +112 -0
- package/plugins/ima-claude/hooks/block_sed_edits.py +59 -0
- package/plugins/ima-claude/hooks/bootstrap.sh +90 -0
- package/plugins/ima-claude/hooks/bootstrap_utility_check.py +94 -0
- package/plugins/ima-claude/hooks/composer_autoload_check.py +70 -0
- package/plugins/ima-claude/hooks/docs_organization.py +104 -0
- package/plugins/ima-claude/hooks/enforce_rg_over_grep.py +56 -0
- package/plugins/ima-claude/hooks/fp_utility_check.py +90 -0
- package/plugins/ima-claude/hooks/hook_logger.py +69 -0
- package/plugins/ima-claude/hooks/hooks.json +239 -0
- package/plugins/ima-claude/hooks/jira_issue_fetch.py +79 -0
- package/plugins/ima-claude/hooks/jquery_in_wordpress.py +92 -0
- package/plugins/ima-claude/hooks/memory_bootstrap.py +79 -0
- package/plugins/ima-claude/hooks/memory_store_reminder.py +75 -0
- package/plugins/ima-claude/hooks/prompt_coach.py +125 -0
- package/plugins/ima-claude/hooks/prompt_coach_digest.md +48 -0
- package/plugins/ima-claude/hooks/prompt_coach_system.md +30 -0
- package/plugins/ima-claude/hooks/sequential_thinking_check.py +81 -0
- package/plugins/ima-claude/hooks/serena_over_grep.py +96 -0
- package/plugins/ima-claude/hooks/serena_over_read.py +66 -0
- package/plugins/ima-claude/hooks/serena_project_check.py +133 -0
- package/plugins/ima-claude/hooks/sql_injection_check.py +73 -0
- package/plugins/ima-claude/hooks/task_master_after_plan.py +31 -0
- package/plugins/ima-claude/hooks/task_master_before_impl.py +93 -0
- package/plugins/ima-claude/hooks/tavily_extract_advanced.py +48 -0
- package/plugins/ima-claude/hooks/vestige_before_external.py +86 -0
- package/plugins/ima-claude/hooks/webfetch_to_tavily.py +42 -0
- package/plugins/ima-claude/hooks/websearch_to_tavily.py +41 -0
- package/plugins/ima-claude/hooks/wp_security_check.py +150 -0
- package/plugins/ima-claude/personalities/README.md +45 -0
- package/plugins/ima-claude/personalities/enable-40k.md +69 -0
- package/plugins/ima-claude/personalities/enable-templars.md +69 -0
- package/plugins/ima-claude/skills/.research-summary.md +340 -0
- package/plugins/ima-claude/skills/architect/SKILL.md +304 -0
- package/plugins/ima-claude/skills/compound-bridge/SKILL.md +200 -0
- package/plugins/ima-claude/skills/discourse/SKILL.md +440 -0
- package/plugins/ima-claude/skills/discourse-admin/SKILL.md +192 -0
- package/plugins/ima-claude/skills/discourse-admin/references/api-endpoints.md +441 -0
- package/plugins/ima-claude/skills/discourse-admin/references/gotchas.md +107 -0
- package/plugins/ima-claude/skills/discourse-admin/references/staging-defaults.md +98 -0
- package/plugins/ima-claude/skills/discourse-admin/scripts/discourse-admin.py +319 -0
- package/plugins/ima-claude/skills/docs-organize/SKILL.md +254 -0
- package/plugins/ima-claude/skills/docs-organize/templates/active-README.md +50 -0
- package/plugins/ima-claude/skills/docs-organize/templates/archive-README.md +57 -0
- package/plugins/ima-claude/skills/docs-organize/templates/docs-README.md +43 -0
- package/plugins/ima-claude/skills/docs-organize/templates/phase-archive-README.md +83 -0
- package/plugins/ima-claude/skills/docs-organize/templates/section-README.md +48 -0
- package/plugins/ima-claude/skills/docs-organize/templates/transient-README.md +79 -0
- package/plugins/ima-claude/skills/docs-organize/templates/transient-gitignore +9 -0
- package/plugins/ima-claude/skills/ember-discourse/SKILL.md +496 -0
- package/plugins/ima-claude/skills/functional-programmer/SKILL.md +258 -0
- package/plugins/ima-claude/skills/ima-bootstrap/SKILL.md +278 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/bootstrap-patterns.md +356 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/ima-brand.md +273 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/theme-integration.md +212 -0
- package/plugins/ima-claude/skills/ima-brand/SKILL.md +108 -0
- package/plugins/ima-claude/skills/ima-brand/references/brand-identity.md +140 -0
- package/plugins/ima-claude/skills/ima-brand/references/digital-standards.md +180 -0
- package/plugins/ima-claude/skills/ima-brand/references/visual-system.md +173 -0
- package/plugins/ima-claude/skills/ima-forms-expert/SKILL.md +175 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/container-components.md +154 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/examples.md +328 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/field-components.md +298 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/form-factory.md +193 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/quick-reference.md +153 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/validation-engine.md +336 -0
- package/plugins/ima-claude/skills/jira-checkpoint/SKILL.md +178 -0
- package/plugins/ima-claude/skills/jquery/SKILL.md +413 -0
- package/plugins/ima-claude/skills/js-fp/SKILL.md +463 -0
- package/plugins/ima-claude/skills/js-fp/core-principles.md +487 -0
- package/plugins/ima-claude/skills/js-fp/examples/pure-functions.js +260 -0
- package/plugins/ima-claude/skills/js-fp/examples/tests/pure-functions.test.js +262 -0
- package/plugins/ima-claude/skills/js-fp/references/anti-patterns.md +120 -0
- package/plugins/ima-claude/skills/js-fp/references/performance-patterns.md +116 -0
- package/plugins/ima-claude/skills/js-fp/references/testing-patterns.md +134 -0
- package/plugins/ima-claude/skills/js-fp-api/SKILL.md +280 -0
- package/plugins/ima-claude/skills/js-fp-api/examples/crud-endpoint.js +258 -0
- package/plugins/ima-claude/skills/js-fp-api/references/middleware-patterns.md +134 -0
- package/plugins/ima-claude/skills/js-fp-api/references/security-sql.md +110 -0
- package/plugins/ima-claude/skills/js-fp-api/references/validation-patterns.md +165 -0
- package/plugins/ima-claude/skills/js-fp-react/SKILL.md +447 -0
- package/plugins/ima-claude/skills/js-fp-react/examples/ProductCard.tsx +65 -0
- package/plugins/ima-claude/skills/js-fp-react/references/hooks-advanced.md +136 -0
- package/plugins/ima-claude/skills/js-fp-react/references/performance-patterns.md +175 -0
- package/plugins/ima-claude/skills/js-fp-vue/SKILL.md +322 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/complete-examples.md +397 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/composables-advanced.md +282 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/reactivity-patterns.md +348 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/testing.md +314 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/SKILL.md +301 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/ajax-patterns.md +192 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/event-patterns.md +136 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/wp-integration.md +248 -0
- package/plugins/ima-claude/skills/livecanvas/SKILL.md +209 -0
- package/plugins/ima-claude/skills/livecanvas/references/livecanvas-features.md +311 -0
- package/plugins/ima-claude/skills/livecanvas/references/loops-and-logic.md +730 -0
- package/plugins/ima-claude/skills/livecanvas/references/picostrap.md +227 -0
- package/plugins/ima-claude/skills/mcp-atlassian/SKILL.md +339 -0
- package/plugins/ima-claude/skills/mcp-context7/SKILL.md +109 -0
- package/plugins/ima-claude/skills/mcp-memory/SKILL.md +182 -0
- package/plugins/ima-claude/skills/mcp-qdrant/SKILL.md +233 -0
- package/plugins/ima-claude/skills/mcp-sequential/SKILL.md +149 -0
- package/plugins/ima-claude/skills/mcp-serena/SKILL.md +174 -0
- package/plugins/ima-claude/skills/mcp-tavily/SKILL.md +118 -0
- package/plugins/ima-claude/skills/mcp-vestige/SKILL.md +259 -0
- package/plugins/ima-claude/skills/php-authnet/SKILL.md +275 -0
- package/plugins/ima-claude/skills/php-authnet/references/api-reference.md +624 -0
- package/plugins/ima-claude/skills/php-authnet/references/sandbox-testing.md +424 -0
- package/plugins/ima-claude/skills/php-fp/SKILL.md +333 -0
- package/plugins/ima-claude/skills/php-fp/examples/pure-functions.php +403 -0
- package/plugins/ima-claude/skills/php-fp/examples/tests/PureFunctionsTest.php +515 -0
- package/plugins/ima-claude/skills/php-fp/references/core-principles.md +277 -0
- package/plugins/ima-claude/skills/php-fp/references/testing-patterns.md +374 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/SKILL.md +216 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/fp-patterns.md +275 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/plugin-architecture.md +295 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/security-examples.md +203 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/testing-strategy.md +259 -0
- package/plugins/ima-claude/skills/phpunit-wp/SKILL.md +716 -0
- package/plugins/ima-claude/skills/playwright/SKILL.md +434 -0
- package/plugins/ima-claude/skills/playwright/references/accessibility-testing.md +153 -0
- package/plugins/ima-claude/skills/playwright/references/ci-cd.md +268 -0
- package/plugins/ima-claude/skills/playwright/references/network-mocking.md +270 -0
- package/plugins/ima-claude/skills/playwright/references/visual-regression.md +215 -0
- package/plugins/ima-claude/skills/py-fp/SKILL.md +663 -0
- package/plugins/ima-claude/skills/py-fp/examples/pure-functions.py +185 -0
- package/plugins/ima-claude/skills/py-fp/examples/tests/test_pure_functions.py +244 -0
- package/plugins/ima-claude/skills/py-fp/references/core-principles.md +381 -0
- package/plugins/ima-claude/skills/py-fp/references/testing-patterns.md +283 -0
- package/plugins/ima-claude/skills/quasar-fp/SKILL.md +327 -0
- package/plugins/ima-claude/skills/quasar-fp/metadata.json +85 -0
- package/plugins/ima-claude/skills/quasar-fp/references/component-patterns.md +257 -0
- package/plugins/ima-claude/skills/quasar-fp/references/theme-integration.md +233 -0
- package/plugins/ima-claude/skills/quasar-fp/references/utility-classes.md +237 -0
- package/plugins/ima-claude/skills/quickstart/SKILL.md +129 -0
- package/plugins/ima-claude/skills/rails/SKILL.md +359 -0
- package/plugins/ima-claude/skills/resume-session/SKILL.md +68 -0
- package/plugins/ima-claude/skills/rg/SKILL.md +205 -0
- package/plugins/ima-claude/skills/ruby-fp/SKILL.md +336 -0
- package/plugins/ima-claude/skills/save-session/SKILL.md +81 -0
- package/plugins/ima-claude/skills/scorecard/SKILL.md +96 -0
- package/plugins/ima-claude/skills/skill-analyzer/SKILL.md +127 -0
- package/plugins/ima-claude/skills/skill-analyzer/references/advanced-checklist.md +44 -0
- package/plugins/ima-claude/skills/skill-analyzer/references/core-checklist.md +60 -0
- package/plugins/ima-claude/skills/skill-analyzer/scripts/analyze_skill.py +418 -0
- package/plugins/ima-claude/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/ima-claude/skills/skill-creator/SKILL.md +343 -0
- package/plugins/ima-claude/skills/skill-creator/references/output-patterns.md +82 -0
- package/plugins/ima-claude/skills/skill-creator/references/workflows.md +28 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/plugins/ima-claude/skills/task-master/SKILL.md +51 -0
- package/plugins/ima-claude/skills/task-planner/SKILL.md +228 -0
- package/plugins/ima-claude/skills/task-runner/SKILL.md +192 -0
- package/plugins/ima-claude/skills/unit-testing/SKILL.md +198 -0
- package/plugins/ima-claude/skills/unit-testing/references/mock-patterns.md +181 -0
- package/plugins/ima-claude/skills/unit-testing/references/tdd-workflow.md +177 -0
- package/plugins/ima-claude/skills/unit-testing/references/test-strategy.md +126 -0
- package/plugins/ima-claude/skills/wp-local/SKILL.md +246 -0
- package/plugins/ima-claude/skills/wp-local/references/configuration.md +198 -0
- package/plugins/ima-claude/skills/wp-local/references/wp-cli-reference.md +406 -0
- package/plugins/ima-claude/skills/wp-local/scripts/wp-local.sh +61 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# PicoStrap Theme Integration
|
|
2
|
+
|
|
3
|
+
PicoStrap5 — free, open-source Bootstrap 5 starter theme by the LiveCanvas team. Ultra-lightweight, no bloat.
|
|
4
|
+
|
|
5
|
+
**GitHub**: https://github.com/livecanvas-team/picostrap5
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
1. [Overview](#overview)
|
|
10
|
+
2. [Architecture](#architecture)
|
|
11
|
+
3. [SCSS Pipeline](#scss-pipeline)
|
|
12
|
+
4. [Child Theme Setup](#child-theme-setup)
|
|
13
|
+
5. [NinjaBootstrap](#ninjabootstrap)
|
|
14
|
+
6. [Dark Mode](#dark-mode)
|
|
15
|
+
7. [Customizer Options](#customizer-options)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
- Pure Bootstrap 5.3 — no extras, no jQuery
|
|
22
|
+
- Built-in browser-based SCSS compiler (no CLI tools needed)
|
|
23
|
+
- Hit Publish in Customizer → Bootstrap recompiles on the fly
|
|
24
|
+
- jQuery-free (vanilla JS Bootstrap)
|
|
25
|
+
- No icon fonts (inline SVGs)
|
|
26
|
+
- RFS (Responsive Font Sizing) enabled by default
|
|
27
|
+
- WooCommerce support out of the box
|
|
28
|
+
- Clean HTML head (removes WP default header bloat)
|
|
29
|
+
- GPL licensed
|
|
30
|
+
- LiveCanvas auto-detects PicoStrap5 and enables Bootstrap 5 mode
|
|
31
|
+
|
|
32
|
+
## Architecture
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
picostrap5/
|
|
36
|
+
├── header.php
|
|
37
|
+
├── footer.php
|
|
38
|
+
├── index.php
|
|
39
|
+
├── page.php
|
|
40
|
+
├── single.php
|
|
41
|
+
├── archive.php
|
|
42
|
+
├── search.php
|
|
43
|
+
├── 404.php
|
|
44
|
+
├── functions.php
|
|
45
|
+
├── inc/
|
|
46
|
+
│ ├── template-tags.php # Hooks and filters
|
|
47
|
+
│ └── clean-head.php # Remove WP bloat
|
|
48
|
+
├── sass/
|
|
49
|
+
│ ├── main.scss # Entry point
|
|
50
|
+
│ ├── _bootstrap-loader.scss # Bootstrap import
|
|
51
|
+
│ └── _custom.scss # Theme customizations
|
|
52
|
+
├── css-output/
|
|
53
|
+
│ └── main.css # Compiled output
|
|
54
|
+
├── loops/ # Loop templates
|
|
55
|
+
├── partials/ # Template parts
|
|
56
|
+
├── woocommerce/ # WC template overrides
|
|
57
|
+
└── livecanvas/
|
|
58
|
+
├── pages/ # Readymade page templates
|
|
59
|
+
└── sections/ # Custom section library
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## SCSS Pipeline
|
|
63
|
+
|
|
64
|
+
Compilation order:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
main.scss
|
|
68
|
+
└── _bootstrap-loader.scss
|
|
69
|
+
├── Bootstrap 5.3 source SCSS
|
|
70
|
+
├── NinjaBootstrap extensions
|
|
71
|
+
└── _custom.scss (your overrides)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Variable Override Strategy
|
|
75
|
+
|
|
76
|
+
Bootstrap uses `!default` — your variables take precedence when defined before Bootstrap's imports:
|
|
77
|
+
|
|
78
|
+
```scss
|
|
79
|
+
// In child theme sass/_custom.scss
|
|
80
|
+
$primary: #your-brand-color;
|
|
81
|
+
$font-family-base: 'Your Font', sans-serif;
|
|
82
|
+
$border-radius: 0.5rem;
|
|
83
|
+
|
|
84
|
+
// These override Bootstrap defaults because they're loaded first
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Where to Customize
|
|
88
|
+
|
|
89
|
+
| What | Where |
|
|
90
|
+
|------|-------|
|
|
91
|
+
| Bootstrap variable overrides | Child theme `sass/_custom.scss` |
|
|
92
|
+
| Custom component styles | Child theme `sass/_custom.scss` |
|
|
93
|
+
| Theme structure/templates | Child theme PHP files |
|
|
94
|
+
| LiveCanvas page templates | Child theme `livecanvas/pages/` |
|
|
95
|
+
| LiveCanvas sections | Child theme `livecanvas/sections/` |
|
|
96
|
+
|
|
97
|
+
### Recompiling
|
|
98
|
+
|
|
99
|
+
1. Go to Appearance → Customize
|
|
100
|
+
2. Change any SASS variable or save `_custom.scss`
|
|
101
|
+
3. Hit Publish — SCSS recompiles in browser
|
|
102
|
+
4. Output → `css-output/main.css`
|
|
103
|
+
|
|
104
|
+
No Node.js, no webpack, no CLI tools required.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Child Theme Setup
|
|
109
|
+
|
|
110
|
+
PicoStrap provides a blank child theme starter:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
picostrap5-child/
|
|
114
|
+
├── style.css # Theme header (Template: picostrap5)
|
|
115
|
+
├── functions.php # Child functions
|
|
116
|
+
├── sass/
|
|
117
|
+
│ └── _custom.scss # Bootstrap variable overrides + custom CSS
|
|
118
|
+
├── livecanvas/
|
|
119
|
+
│ ├── pages/ # Custom readymade page templates
|
|
120
|
+
│ └── sections/ # Custom section library
|
|
121
|
+
└── woocommerce/ # WC template overrides (optional)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Key Override Points
|
|
125
|
+
|
|
126
|
+
**Colors**:
|
|
127
|
+
```scss
|
|
128
|
+
$primary: #your-color;
|
|
129
|
+
$secondary: #your-color;
|
|
130
|
+
$success: #your-color;
|
|
131
|
+
$info: #your-color;
|
|
132
|
+
$warning: #your-color;
|
|
133
|
+
$danger: #your-color;
|
|
134
|
+
$light: #your-color;
|
|
135
|
+
$dark: #your-color;
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Typography**:
|
|
139
|
+
```scss
|
|
140
|
+
$font-family-base: 'Your Font', system-ui, sans-serif;
|
|
141
|
+
$font-family-monospace: 'Your Mono', monospace;
|
|
142
|
+
$font-size-base: 1rem;
|
|
143
|
+
$line-height-base: 1.5;
|
|
144
|
+
$headings-font-family: 'Your Heading Font', serif;
|
|
145
|
+
$headings-font-weight: 700;
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Spacing & Sizing**:
|
|
149
|
+
```scss
|
|
150
|
+
$spacer: 1rem;
|
|
151
|
+
$border-radius: 0.375rem;
|
|
152
|
+
$border-radius-lg: 0.5rem;
|
|
153
|
+
$border-radius-sm: 0.25rem;
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Components**:
|
|
157
|
+
```scss
|
|
158
|
+
$btn-border-radius: 0.375rem;
|
|
159
|
+
$card-border-radius: 0.5rem;
|
|
160
|
+
$input-border-radius: 0.375rem;
|
|
161
|
+
$navbar-padding-y: 0.5rem;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
For IMA-specific overrides, see the `ima-bootstrap` skill's `references/theme-integration.md`.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## NinjaBootstrap
|
|
169
|
+
|
|
170
|
+
Built into PicoStrap v3+. Extends Bootstrap 5.3 with additional utility classes:
|
|
171
|
+
|
|
172
|
+
- **10 color shades per theme color**: `.text-primary-100` through `.text-primary-900`, `.bg-primary-100` through `.bg-primary-900`
|
|
173
|
+
- **Automatic dark mode inversion**: Shades flip appropriately in `[data-bs-theme="dark"]`
|
|
174
|
+
- **Extra utilities**: Additional spacing, sizing, and display helpers beyond Bootstrap defaults
|
|
175
|
+
|
|
176
|
+
Usage in LiveCanvas:
|
|
177
|
+
```html
|
|
178
|
+
<section class="bg-primary-100 py-5">
|
|
179
|
+
<div class="container">
|
|
180
|
+
<h2 class="text-primary-800">Section Title</h2>
|
|
181
|
+
<p class="text-primary-600">Subtitle text with lighter shade</p>
|
|
182
|
+
</div>
|
|
183
|
+
</section>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Dark Mode
|
|
189
|
+
|
|
190
|
+
PicoStrap supports Bootstrap 5.3's native dark mode via `data-bs-theme` attribute:
|
|
191
|
+
|
|
192
|
+
```html
|
|
193
|
+
<!-- Page-level -->
|
|
194
|
+
<html data-bs-theme="dark">
|
|
195
|
+
|
|
196
|
+
<!-- Component-level -->
|
|
197
|
+
<div data-bs-theme="dark" class="card">
|
|
198
|
+
<div class="card-body">Always dark</div>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
<!-- Toggle via JavaScript -->
|
|
202
|
+
<script>
|
|
203
|
+
document.documentElement.setAttribute('data-bs-theme',
|
|
204
|
+
document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'
|
|
205
|
+
);
|
|
206
|
+
</script>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
NinjaBootstrap color shades automatically invert in dark mode.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Customizer Options
|
|
214
|
+
|
|
215
|
+
PicoStrap exposes key Bootstrap variables through the WordPress Customizer:
|
|
216
|
+
|
|
217
|
+
- **Colors**: All theme colors (primary, secondary, etc.)
|
|
218
|
+
- **Typography**: Font families, sizes, weights
|
|
219
|
+
- **Spacing**: Base spacer value
|
|
220
|
+
- **Components**: Border radius, button styles
|
|
221
|
+
- **AI Color Palette**: Generate harmonious color schemes
|
|
222
|
+
|
|
223
|
+
Changes trigger SCSS recompilation on Publish.
|
|
224
|
+
|
|
225
|
+
### Export/Import
|
|
226
|
+
|
|
227
|
+
PicoStrap supports Customizer Export/Import for sharing design system settings across sites. Useful for team standardization.
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-atlassian
|
|
3
|
+
description: >-
|
|
4
|
+
Atlassian MCP for Jira and Confluence operations (Claude's bundled integration).
|
|
5
|
+
Token-efficient workflows for issue management, page creation, search, and user mentions.
|
|
6
|
+
Use when: creating/editing Jira issues, searching with JQL/CQL, creating/updating Confluence
|
|
7
|
+
pages, adding comments, transitioning issue status, looking up users, mentioning/tagging
|
|
8
|
+
users in Jira or Confluence content, or any Atlassian Cloud operation. Triggers on: Jira,
|
|
9
|
+
Confluence, JQL, CQL, sprint, epic, story, issue, wiki page, Atlassian, @mention in
|
|
10
|
+
Jira/Confluence context. Provides 50-80% token savings over naive API usage through
|
|
11
|
+
field filtering, pagination control, and format selection.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Atlassian MCP - Jira & Confluence Integration
|
|
15
|
+
|
|
16
|
+
Claude's bundled Atlassian MCP. All tools prefixed `mcp__claude_ai_Atlassian__`.
|
|
17
|
+
|
|
18
|
+
## Bootstrap (Required First Call)
|
|
19
|
+
|
|
20
|
+
Every session MUST start with `getAccessibleAtlassianResources` to obtain the `cloudId`.
|
|
21
|
+
Nearly all other tools require it. Cache this value mentally for the session.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
getAccessibleAtlassianResources → returns cloudId (UUID or site URL)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Tool Catalog
|
|
28
|
+
|
|
29
|
+
### Discovery & Users
|
|
30
|
+
|
|
31
|
+
| Tool | Purpose | Key Params |
|
|
32
|
+
|------|---------|------------|
|
|
33
|
+
| `getAccessibleAtlassianResources` | Get cloudId (CALL FIRST) | *(none)* |
|
|
34
|
+
| `atlassianUserInfo` | Current authenticated user | *(none)* |
|
|
35
|
+
| `lookupJiraAccountId` | Find user accountId by name/email | `cloudId`, `searchString` |
|
|
36
|
+
|
|
37
|
+
### Search (3 tools - choose wisely)
|
|
38
|
+
|
|
39
|
+
| Tool | Query Language | Scope | When to Use |
|
|
40
|
+
|------|---------------|-------|-------------|
|
|
41
|
+
| `search` | Natural language | Jira + Confluence | Default search. Always use unless JQL/CQL specifically needed |
|
|
42
|
+
| `searchJiraIssuesUsingJql` | JQL | Jira only | Structured queries: status, assignee, project, date ranges |
|
|
43
|
+
| `searchConfluenceUsingCql` | CQL | Confluence only | Structured queries: space, label, type, creator |
|
|
44
|
+
|
|
45
|
+
### Jira - Read
|
|
46
|
+
|
|
47
|
+
| Tool | Purpose | Token-Saving Tip |
|
|
48
|
+
|------|---------|------------------|
|
|
49
|
+
| `getJiraIssue` | Get issue details | Use `fields` param to request ONLY needed fields |
|
|
50
|
+
| `getVisibleJiraProjects` | List projects | Use `searchString` to filter |
|
|
51
|
+
| `getJiraProjectIssueTypesMetadata` | Issue types for a project | Call before `createJiraIssue` |
|
|
52
|
+
| `getJiraIssueTypeMetaWithFields` | Field metadata for issue type | Call before `editJiraIssue` to know valid fields |
|
|
53
|
+
| `getTransitionsForJiraIssue` | Available status transitions | MUST call before `transitionJiraIssue` |
|
|
54
|
+
| `getJiraIssueRemoteIssueLinks` | Remote links on an issue | |
|
|
55
|
+
|
|
56
|
+
### Jira - Write
|
|
57
|
+
|
|
58
|
+
| Tool | Content Format | Purpose |
|
|
59
|
+
|------|---------------|---------|
|
|
60
|
+
| `createJiraIssue` | **Markdown** (description) | Create issue. Has `assignee_account_id` param |
|
|
61
|
+
| `editJiraIssue` | **Raw fields object** | Update any fields. Use for ADF descriptions with mentions |
|
|
62
|
+
| `addCommentToJiraIssue` | **Markdown** | Add comment. Has `commentVisibility` for restricted comments |
|
|
63
|
+
| `transitionJiraIssue` | Transition object | Change status. Get transition IDs first |
|
|
64
|
+
| `addWorklogToJiraIssue` | Duration string | Log time: `"2h"`, `"30m"`, `"4d"` |
|
|
65
|
+
|
|
66
|
+
### Confluence - Read
|
|
67
|
+
|
|
68
|
+
| Tool | Purpose | Token-Saving Tip |
|
|
69
|
+
|------|---------|------------------|
|
|
70
|
+
| `getConfluencePage` | Get page by ID | Use `contentFormat: "markdown"` for smaller responses |
|
|
71
|
+
| `getConfluenceSpaces` | List spaces | Filter with `keys`, `type`, `labels` |
|
|
72
|
+
| `getPagesInConfluenceSpace` | Pages in a space | Filter with `title`, `status`, `sort` |
|
|
73
|
+
| `getConfluencePageDescendants` | Child pages | Use `depth` to limit |
|
|
74
|
+
| `getConfluencePageFooterComments` | Footer comments | |
|
|
75
|
+
| `getConfluencePageInlineComments` | Inline comments | Filter by `resolutionStatus` |
|
|
76
|
+
|
|
77
|
+
### Confluence - Write
|
|
78
|
+
|
|
79
|
+
| Tool | Content Format | Purpose |
|
|
80
|
+
|------|---------------|---------|
|
|
81
|
+
| `createConfluencePage` | **Markdown** or **ADF** | Create page. Requires `spaceId` (not space key!) |
|
|
82
|
+
| `updateConfluencePage` | **Markdown** or **ADF** | Replace entire page body |
|
|
83
|
+
| `createConfluenceFooterComment` | **Markdown only** | Comment on page |
|
|
84
|
+
| `createConfluenceInlineComment` | **Markdown only** | Comment on specific text selection |
|
|
85
|
+
|
|
86
|
+
### Cross-Product
|
|
87
|
+
|
|
88
|
+
| Tool | Purpose |
|
|
89
|
+
|------|---------|
|
|
90
|
+
| `search` | Rovo natural language search across Jira + Confluence |
|
|
91
|
+
| `fetch` | Get detail by ARI (Atlassian Resource Identifier). Read-only |
|
|
92
|
+
|
|
93
|
+
## User Mentions (@tagging)
|
|
94
|
+
|
|
95
|
+
**This is the most error-prone area.** Follow these patterns exactly.
|
|
96
|
+
|
|
97
|
+
### Step 1: Always Look Up the accountId First
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
lookupJiraAccountId
|
|
101
|
+
cloudId: "<your-cloud-id>"
|
|
102
|
+
searchString: "john@example.com" # or "John Doe" or partial "john"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Returns users with `accountId` values. This works for BOTH Jira and Confluence
|
|
106
|
+
(same Atlassian org user pool).
|
|
107
|
+
|
|
108
|
+
### Step 2: Choose the Right Mention Strategy
|
|
109
|
+
|
|
110
|
+
#### Confluence Pages (RELIABLE - use ADF)
|
|
111
|
+
|
|
112
|
+
Use `createConfluencePage` or `updateConfluencePage` with `contentFormat: "adf"`:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"cloudId": "<cloud-id>",
|
|
117
|
+
"spaceId": "<space-id>",
|
|
118
|
+
"title": "Page Title",
|
|
119
|
+
"contentFormat": "adf",
|
|
120
|
+
"body": "{\"version\":1,\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Assigned to \"},{\"type\":\"mention\",\"attrs\":{\"id\":\"5b10a2844c20165700ede21g\",\"text\":\"@John Doe\"}},{\"type\":\"text\",\"text\":\" for review.\"}]}]}"
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Critical:** The `body` value MUST be a JSON **string** (result of JSON.stringify),
|
|
125
|
+
NOT a raw object. This is the #1 cause of failures.
|
|
126
|
+
|
|
127
|
+
ADF mention node structure:
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"type": "mention",
|
|
131
|
+
"attrs": {
|
|
132
|
+
"id": "<accountId>",
|
|
133
|
+
"text": "@Display Name"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The mention node is **inline** - it MUST be inside a `paragraph.content` array,
|
|
139
|
+
never at the top-level `doc.content`.
|
|
140
|
+
|
|
141
|
+
#### Confluence Comments (Markdown only - no native mentions)
|
|
142
|
+
|
|
143
|
+
`createConfluenceFooterComment` and `createConfluenceInlineComment` accept only
|
|
144
|
+
Markdown. Real @mentions are not supported in Markdown mode. Workaround:
|
|
145
|
+
reference the user by name in plain text, or create/update the parent **page**
|
|
146
|
+
with ADF to include the mention there instead.
|
|
147
|
+
|
|
148
|
+
#### Jira Issue Description (RELIABLE - use editJiraIssue with ADF)
|
|
149
|
+
|
|
150
|
+
For mentions in descriptions, use `editJiraIssue` with the ADF description field:
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"cloudId": "<cloud-id>",
|
|
155
|
+
"issueIdOrKey": "PROJ-123",
|
|
156
|
+
"fields": {
|
|
157
|
+
"description": {
|
|
158
|
+
"version": 1,
|
|
159
|
+
"type": "doc",
|
|
160
|
+
"content": [
|
|
161
|
+
{
|
|
162
|
+
"type": "paragraph",
|
|
163
|
+
"content": [
|
|
164
|
+
{ "type": "text", "text": "Assigned to " },
|
|
165
|
+
{
|
|
166
|
+
"type": "mention",
|
|
167
|
+
"attrs": {
|
|
168
|
+
"id": "5b10a2844c20165700ede21g",
|
|
169
|
+
"text": "@John Doe"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{ "type": "text", "text": " for review." }
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Note:** `createJiraIssue` takes Markdown for description. To create an issue
|
|
182
|
+
WITH mentions, create the issue first (Markdown description), then immediately
|
|
183
|
+
`editJiraIssue` to replace the description with ADF containing mentions.
|
|
184
|
+
|
|
185
|
+
#### Jira Comments (Markdown - limited mention support)
|
|
186
|
+
|
|
187
|
+
`addCommentToJiraIssue` accepts Markdown via `commentBody`. Real ADF mentions
|
|
188
|
+
are not directly available. Workaround: reference users by display name in the
|
|
189
|
+
Markdown text. If real @mentions in comments are critical, use a two-step
|
|
190
|
+
approach: add the comment, then use the Jira UI or a direct API call for the
|
|
191
|
+
mention.
|
|
192
|
+
|
|
193
|
+
### Mention Pitfalls Checklist
|
|
194
|
+
|
|
195
|
+
| Pitfall | Symptom | Fix |
|
|
196
|
+
|---------|---------|-----|
|
|
197
|
+
| Using `username` instead of `accountId` | Shows "unlicensed user" | Always use `lookupJiraAccountId` first |
|
|
198
|
+
| ADF body as object instead of string | "invalid request body" error | `JSON.stringify()` the ADF for Confluence |
|
|
199
|
+
| Mention at doc level, not in paragraph | Silent failure / no mention | Wrap in `{"type": "paragraph", "content": [...]}` |
|
|
200
|
+
| Missing `<ac:link>` wrapper (storage format) | Not rendered as mention | N/A for this MCP (uses ADF/Markdown, not storage format) |
|
|
201
|
+
| Wiki notation `[~accountId:xxx]` in Markdown | Raw text, not a mention | Use ADF via `editJiraIssue` instead |
|
|
202
|
+
| Using `@username` in Markdown | Plain text, not a real mention | Use ADF path for real mentions |
|
|
203
|
+
|
|
204
|
+
## Token-Saving Strategies
|
|
205
|
+
|
|
206
|
+
### 1. Filter Jira Fields
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
getJiraIssue
|
|
210
|
+
fields: ["summary", "status", "assignee", "priority"] # NOT the full issue
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Never fetch all fields. Common useful subsets:
|
|
214
|
+
- **Quick status check:** `["summary", "status", "priority"]`
|
|
215
|
+
- **Assignment info:** `["summary", "assignee", "reporter"]`
|
|
216
|
+
- **Planning:** `["summary", "status", "priority", "issuetype", "parent"]`
|
|
217
|
+
|
|
218
|
+
### 2. Use Markdown for Confluence Reads
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
getConfluencePage
|
|
222
|
+
contentFormat: "markdown" # Much smaller than ADF
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
ADF responses can be 5-10x larger than Markdown equivalents.
|
|
226
|
+
|
|
227
|
+
### 3. Limit Search Results
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
searchJiraIssuesUsingJql
|
|
231
|
+
maxResults: 10 # Default is 50, often excessive
|
|
232
|
+
fields: ["summary", "status"] # Minimal fields
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 4. Use Rovo Search for Discovery, JQL/CQL for Precision
|
|
236
|
+
|
|
237
|
+
- "Find issues about authentication" → `search` (natural language, cross-product)
|
|
238
|
+
- "All open bugs in PROJ assigned to me" → `searchJiraIssuesUsingJql` with JQL
|
|
239
|
+
- "Pages labeled 'architecture' in DEV space" → `searchConfluenceUsingCql` with CQL
|
|
240
|
+
|
|
241
|
+
### 5. Avoid Redundant Discovery Calls
|
|
242
|
+
|
|
243
|
+
Cache these within a session (they rarely change):
|
|
244
|
+
- `cloudId` from `getAccessibleAtlassianResources`
|
|
245
|
+
- Project keys from `getVisibleJiraProjects`
|
|
246
|
+
- Space IDs from `getConfluenceSpaces`
|
|
247
|
+
- Issue type IDs from `getJiraProjectIssueTypesMetadata`
|
|
248
|
+
|
|
249
|
+
## Common Workflows
|
|
250
|
+
|
|
251
|
+
### Create and Assign a Jira Issue
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
1. getAccessibleAtlassianResources → cloudId
|
|
255
|
+
2. lookupJiraAccountId(searchString: "jane@co.com") → accountId
|
|
256
|
+
3. createJiraIssue(
|
|
257
|
+
projectKey: "PROJ",
|
|
258
|
+
issueTypeName: "Task",
|
|
259
|
+
summary: "Review Q4 report",
|
|
260
|
+
description: "Review and approve the Q4 financial report",
|
|
261
|
+
assignee_account_id: "<accountId>"
|
|
262
|
+
)
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Transition a Jira Issue
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
1. getTransitionsForJiraIssue(issueIdOrKey: "PROJ-123") → find transition ID
|
|
269
|
+
2. transitionJiraIssue(
|
|
270
|
+
issueIdOrKey: "PROJ-123",
|
|
271
|
+
transition: { "id": "<transitionId>" }
|
|
272
|
+
)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Create a Confluence Page with User Mention
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
1. getAccessibleAtlassianResources → cloudId
|
|
279
|
+
2. lookupJiraAccountId(searchString: "john") → accountId
|
|
280
|
+
3. getConfluenceSpaces(keys: ["DEV"]) → spaceId
|
|
281
|
+
4. createConfluencePage(
|
|
282
|
+
spaceId: "<spaceId>",
|
|
283
|
+
title: "Meeting Notes",
|
|
284
|
+
contentFormat: "adf",
|
|
285
|
+
body: "<ADF JSON string with mention node>"
|
|
286
|
+
)
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Inline Comment on Specific Text
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
createConfluenceInlineComment(
|
|
293
|
+
pageId: "<pageId>",
|
|
294
|
+
body: "This section needs updating",
|
|
295
|
+
inlineCommentProperties: {
|
|
296
|
+
"textSelection": "exact text on page",
|
|
297
|
+
"textSelectionMatchCount": 1,
|
|
298
|
+
"textSelectionMatchIndex": 0
|
|
299
|
+
}
|
|
300
|
+
)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Decision Logic
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
Need to search across Jira AND Confluence?
|
|
307
|
+
→ search (Rovo, natural language)
|
|
308
|
+
|
|
309
|
+
Need structured Jira query (by project/status/assignee/date)?
|
|
310
|
+
→ searchJiraIssuesUsingJql (JQL)
|
|
311
|
+
|
|
312
|
+
Need structured Confluence query (by space/label/type)?
|
|
313
|
+
→ searchConfluenceUsingCql (CQL)
|
|
314
|
+
|
|
315
|
+
Need to @mention a user in content?
|
|
316
|
+
→ lookupJiraAccountId first, then:
|
|
317
|
+
- Confluence page → ADF with mention node
|
|
318
|
+
- Jira description → editJiraIssue with ADF fields
|
|
319
|
+
- Jira/Confluence comment → Plain text name (Markdown limitation)
|
|
320
|
+
|
|
321
|
+
Need issue field metadata before editing?
|
|
322
|
+
→ getJiraIssueTypeMetaWithFields
|
|
323
|
+
|
|
324
|
+
Need to change issue status?
|
|
325
|
+
→ getTransitionsForJiraIssue THEN transitionJiraIssue
|
|
326
|
+
|
|
327
|
+
Creating a Confluence page?
|
|
328
|
+
→ Need spaceId (NOT space key). Get from getConfluenceSpaces
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## What This MCP Does NOT Support
|
|
332
|
+
|
|
333
|
+
- Direct Atlassian storage format (XML) - uses Markdown or ADF only
|
|
334
|
+
- Confluence page permissions management
|
|
335
|
+
- Jira board/sprint management
|
|
336
|
+
- Jira custom field creation
|
|
337
|
+
- Attachment uploads
|
|
338
|
+
- Bulk operations
|
|
339
|
+
- Confluence page templates
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-context7
|
|
3
|
+
description: Use Context7 MCP for official library documentation, framework APIs, best practices, code examples. Triggers on library/framework questions like 'how to use [library]', 'show [library] example', '[library] docs', '[library] API', or framework names (React, Vue, Quasar, Next.js, Express, Fastify, Prisma, tRPC, Zod, Tailwind, etc). Also triggers on import statements detected in code or package.json library lookups. Provides 70-80% token savings over web searching.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Context7 MCP - Library Documentation
|
|
7
|
+
|
|
8
|
+
Use Context7 for official library documentation instead of web searching or guessing APIs.
|
|
9
|
+
|
|
10
|
+
## MCP Tools
|
|
11
|
+
|
|
12
|
+
| Tool | Purpose |
|
|
13
|
+
|------|---------|
|
|
14
|
+
| `mcp__context7__search` | Search for libraries and get documentation |
|
|
15
|
+
|
|
16
|
+
## Basic Usage
|
|
17
|
+
|
|
18
|
+
Context7 combines library resolution and documentation retrieval into a single tool.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
mcp__context7__search
|
|
22
|
+
query: "How to use QDialog component in Quasar"
|
|
23
|
+
```
|
|
24
|
+
|
|
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
|
+
## Query Optimization
|
|
34
|
+
|
|
35
|
+
**Be specific and include**:
|
|
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"
|
|
39
|
+
|
|
40
|
+
**Good queries**:
|
|
41
|
+
| Query | Why It's Good |
|
|
42
|
+
|-------|---------------|
|
|
43
|
+
| "Quasar QDialog props and events" | Specific component, clear intent |
|
|
44
|
+
| "React useEffect cleanup function" | Specific hook, specific aspect |
|
|
45
|
+
| "Prisma findMany where clause syntax" | Specific method, specific feature |
|
|
46
|
+
| "Express middleware error handling" | Framework + feature |
|
|
47
|
+
|
|
48
|
+
**Avoid vague queries**:
|
|
49
|
+
- ❌ "How does Quasar work?"
|
|
50
|
+
- ✅ "How to create a Quasar button with icon"
|
|
51
|
+
|
|
52
|
+
## Decision Logic
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
IF question about library/framework API:
|
|
56
|
+
→ Use Context7
|
|
57
|
+
ELSE IF import statement detected AND user asks about that library:
|
|
58
|
+
→ Use Context7
|
|
59
|
+
ELSE IF general programming concept (closures, promises, etc.):
|
|
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
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## When NOT to Use
|
|
68
|
+
|
|
69
|
+
- General programming questions (no specific library)
|
|
70
|
+
- Debugging code that doesn't involve library APIs
|
|
71
|
+
- Simple syntax questions Claude already knows
|
|
72
|
+
- User wants current/latest info post-cutoff (use Tavily instead)
|
|
73
|
+
|
|
74
|
+
## Common Libraries Supported
|
|
75
|
+
|
|
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
|
|
80
|
+
**Testing**: Jest, Vitest, Playwright, Cypress
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
| User Request | Action |
|
|
85
|
+
|--------------|--------|
|
|
86
|
+
| "How to use QDialog in Vue?" | search(query: "QDialog component Quasar Vue") |
|
|
87
|
+
| "React useState example" | search(query: "React useState hook example") |
|
|
88
|
+
| "Prisma query syntax" | search(query: "Prisma findMany where query") |
|
|
89
|
+
| "What's a closure?" | Native Claude (no library) |
|
|
90
|
+
| "Latest React 19 features" | Use Tavily (current info needed) |
|
|
91
|
+
|
|
92
|
+
## Multiple Queries
|
|
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"
|
|
98
|
+
|
|
99
|
+
## Setup
|
|
100
|
+
|
|
101
|
+
No API key required. Install with:
|
|
102
|
+
```bash
|
|
103
|
+
bun run scripts/setup-mcp.ts
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Or manually:
|
|
107
|
+
```bash
|
|
108
|
+
claude mcp add --scope user context7 -- npx -y @upstash/context7-mcp@latest
|
|
109
|
+
```
|