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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +463 -0
  3. package/dist/cli.js +1064 -0
  4. package/package.json +49 -0
  5. package/platforms/claude/adapter.ts +115 -0
  6. package/platforms/junie/adapter.ts +254 -0
  7. package/platforms/junie/agents-template.md +113 -0
  8. package/platforms/junie/hook-translations.md +84 -0
  9. package/platforms/shared/detector.ts +27 -0
  10. package/platforms/shared/installer.ts +202 -0
  11. package/platforms/shared/types.ts +78 -0
  12. package/plugins/ima-claude/.claude-plugin/plugin.json +25 -0
  13. package/plugins/ima-claude/agents/explorer.md +30 -0
  14. package/plugins/ima-claude/agents/implementer.md +30 -0
  15. package/plugins/ima-claude/agents/memory.md +42 -0
  16. package/plugins/ima-claude/agents/reviewer.md +53 -0
  17. package/plugins/ima-claude/agents/tester.md +33 -0
  18. package/plugins/ima-claude/agents/wp-developer.md +46 -0
  19. package/plugins/ima-claude/hooks/README.md +145 -0
  20. package/plugins/ima-claude/hooks/atlassian_prereqs.py +112 -0
  21. package/plugins/ima-claude/hooks/block_sed_edits.py +59 -0
  22. package/plugins/ima-claude/hooks/bootstrap.sh +90 -0
  23. package/plugins/ima-claude/hooks/bootstrap_utility_check.py +94 -0
  24. package/plugins/ima-claude/hooks/composer_autoload_check.py +70 -0
  25. package/plugins/ima-claude/hooks/docs_organization.py +104 -0
  26. package/plugins/ima-claude/hooks/enforce_rg_over_grep.py +56 -0
  27. package/plugins/ima-claude/hooks/fp_utility_check.py +90 -0
  28. package/plugins/ima-claude/hooks/hook_logger.py +69 -0
  29. package/plugins/ima-claude/hooks/hooks.json +239 -0
  30. package/plugins/ima-claude/hooks/jira_issue_fetch.py +79 -0
  31. package/plugins/ima-claude/hooks/jquery_in_wordpress.py +92 -0
  32. package/plugins/ima-claude/hooks/memory_bootstrap.py +79 -0
  33. package/plugins/ima-claude/hooks/memory_store_reminder.py +75 -0
  34. package/plugins/ima-claude/hooks/prompt_coach.py +125 -0
  35. package/plugins/ima-claude/hooks/prompt_coach_digest.md +48 -0
  36. package/plugins/ima-claude/hooks/prompt_coach_system.md +30 -0
  37. package/plugins/ima-claude/hooks/sequential_thinking_check.py +81 -0
  38. package/plugins/ima-claude/hooks/serena_over_grep.py +96 -0
  39. package/plugins/ima-claude/hooks/serena_over_read.py +66 -0
  40. package/plugins/ima-claude/hooks/serena_project_check.py +133 -0
  41. package/plugins/ima-claude/hooks/sql_injection_check.py +73 -0
  42. package/plugins/ima-claude/hooks/task_master_after_plan.py +31 -0
  43. package/plugins/ima-claude/hooks/task_master_before_impl.py +93 -0
  44. package/plugins/ima-claude/hooks/tavily_extract_advanced.py +48 -0
  45. package/plugins/ima-claude/hooks/vestige_before_external.py +86 -0
  46. package/plugins/ima-claude/hooks/webfetch_to_tavily.py +42 -0
  47. package/plugins/ima-claude/hooks/websearch_to_tavily.py +41 -0
  48. package/plugins/ima-claude/hooks/wp_security_check.py +150 -0
  49. package/plugins/ima-claude/personalities/README.md +45 -0
  50. package/plugins/ima-claude/personalities/enable-40k.md +69 -0
  51. package/plugins/ima-claude/personalities/enable-templars.md +69 -0
  52. package/plugins/ima-claude/skills/.research-summary.md +340 -0
  53. package/plugins/ima-claude/skills/architect/SKILL.md +304 -0
  54. package/plugins/ima-claude/skills/compound-bridge/SKILL.md +200 -0
  55. package/plugins/ima-claude/skills/discourse/SKILL.md +440 -0
  56. package/plugins/ima-claude/skills/discourse-admin/SKILL.md +192 -0
  57. package/plugins/ima-claude/skills/discourse-admin/references/api-endpoints.md +441 -0
  58. package/plugins/ima-claude/skills/discourse-admin/references/gotchas.md +107 -0
  59. package/plugins/ima-claude/skills/discourse-admin/references/staging-defaults.md +98 -0
  60. package/plugins/ima-claude/skills/discourse-admin/scripts/discourse-admin.py +319 -0
  61. package/plugins/ima-claude/skills/docs-organize/SKILL.md +254 -0
  62. package/plugins/ima-claude/skills/docs-organize/templates/active-README.md +50 -0
  63. package/plugins/ima-claude/skills/docs-organize/templates/archive-README.md +57 -0
  64. package/plugins/ima-claude/skills/docs-organize/templates/docs-README.md +43 -0
  65. package/plugins/ima-claude/skills/docs-organize/templates/phase-archive-README.md +83 -0
  66. package/plugins/ima-claude/skills/docs-organize/templates/section-README.md +48 -0
  67. package/plugins/ima-claude/skills/docs-organize/templates/transient-README.md +79 -0
  68. package/plugins/ima-claude/skills/docs-organize/templates/transient-gitignore +9 -0
  69. package/plugins/ima-claude/skills/ember-discourse/SKILL.md +496 -0
  70. package/plugins/ima-claude/skills/functional-programmer/SKILL.md +258 -0
  71. package/plugins/ima-claude/skills/ima-bootstrap/SKILL.md +278 -0
  72. package/plugins/ima-claude/skills/ima-bootstrap/references/bootstrap-patterns.md +356 -0
  73. package/plugins/ima-claude/skills/ima-bootstrap/references/ima-brand.md +273 -0
  74. package/plugins/ima-claude/skills/ima-bootstrap/references/theme-integration.md +212 -0
  75. package/plugins/ima-claude/skills/ima-brand/SKILL.md +108 -0
  76. package/plugins/ima-claude/skills/ima-brand/references/brand-identity.md +140 -0
  77. package/plugins/ima-claude/skills/ima-brand/references/digital-standards.md +180 -0
  78. package/plugins/ima-claude/skills/ima-brand/references/visual-system.md +173 -0
  79. package/plugins/ima-claude/skills/ima-forms-expert/SKILL.md +175 -0
  80. package/plugins/ima-claude/skills/ima-forms-expert/references/container-components.md +154 -0
  81. package/plugins/ima-claude/skills/ima-forms-expert/references/examples.md +328 -0
  82. package/plugins/ima-claude/skills/ima-forms-expert/references/field-components.md +298 -0
  83. package/plugins/ima-claude/skills/ima-forms-expert/references/form-factory.md +193 -0
  84. package/plugins/ima-claude/skills/ima-forms-expert/references/quick-reference.md +153 -0
  85. package/plugins/ima-claude/skills/ima-forms-expert/references/validation-engine.md +336 -0
  86. package/plugins/ima-claude/skills/jira-checkpoint/SKILL.md +178 -0
  87. package/plugins/ima-claude/skills/jquery/SKILL.md +413 -0
  88. package/plugins/ima-claude/skills/js-fp/SKILL.md +463 -0
  89. package/plugins/ima-claude/skills/js-fp/core-principles.md +487 -0
  90. package/plugins/ima-claude/skills/js-fp/examples/pure-functions.js +260 -0
  91. package/plugins/ima-claude/skills/js-fp/examples/tests/pure-functions.test.js +262 -0
  92. package/plugins/ima-claude/skills/js-fp/references/anti-patterns.md +120 -0
  93. package/plugins/ima-claude/skills/js-fp/references/performance-patterns.md +116 -0
  94. package/plugins/ima-claude/skills/js-fp/references/testing-patterns.md +134 -0
  95. package/plugins/ima-claude/skills/js-fp-api/SKILL.md +280 -0
  96. package/plugins/ima-claude/skills/js-fp-api/examples/crud-endpoint.js +258 -0
  97. package/plugins/ima-claude/skills/js-fp-api/references/middleware-patterns.md +134 -0
  98. package/plugins/ima-claude/skills/js-fp-api/references/security-sql.md +110 -0
  99. package/plugins/ima-claude/skills/js-fp-api/references/validation-patterns.md +165 -0
  100. package/plugins/ima-claude/skills/js-fp-react/SKILL.md +447 -0
  101. package/plugins/ima-claude/skills/js-fp-react/examples/ProductCard.tsx +65 -0
  102. package/plugins/ima-claude/skills/js-fp-react/references/hooks-advanced.md +136 -0
  103. package/plugins/ima-claude/skills/js-fp-react/references/performance-patterns.md +175 -0
  104. package/plugins/ima-claude/skills/js-fp-vue/SKILL.md +322 -0
  105. package/plugins/ima-claude/skills/js-fp-vue/references/complete-examples.md +397 -0
  106. package/plugins/ima-claude/skills/js-fp-vue/references/composables-advanced.md +282 -0
  107. package/plugins/ima-claude/skills/js-fp-vue/references/reactivity-patterns.md +348 -0
  108. package/plugins/ima-claude/skills/js-fp-vue/references/testing.md +314 -0
  109. package/plugins/ima-claude/skills/js-fp-wordpress/SKILL.md +301 -0
  110. package/plugins/ima-claude/skills/js-fp-wordpress/references/ajax-patterns.md +192 -0
  111. package/plugins/ima-claude/skills/js-fp-wordpress/references/event-patterns.md +136 -0
  112. package/plugins/ima-claude/skills/js-fp-wordpress/references/wp-integration.md +248 -0
  113. package/plugins/ima-claude/skills/livecanvas/SKILL.md +209 -0
  114. package/plugins/ima-claude/skills/livecanvas/references/livecanvas-features.md +311 -0
  115. package/plugins/ima-claude/skills/livecanvas/references/loops-and-logic.md +730 -0
  116. package/plugins/ima-claude/skills/livecanvas/references/picostrap.md +227 -0
  117. package/plugins/ima-claude/skills/mcp-atlassian/SKILL.md +339 -0
  118. package/plugins/ima-claude/skills/mcp-context7/SKILL.md +109 -0
  119. package/plugins/ima-claude/skills/mcp-memory/SKILL.md +182 -0
  120. package/plugins/ima-claude/skills/mcp-qdrant/SKILL.md +233 -0
  121. package/plugins/ima-claude/skills/mcp-sequential/SKILL.md +149 -0
  122. package/plugins/ima-claude/skills/mcp-serena/SKILL.md +174 -0
  123. package/plugins/ima-claude/skills/mcp-tavily/SKILL.md +118 -0
  124. package/plugins/ima-claude/skills/mcp-vestige/SKILL.md +259 -0
  125. package/plugins/ima-claude/skills/php-authnet/SKILL.md +275 -0
  126. package/plugins/ima-claude/skills/php-authnet/references/api-reference.md +624 -0
  127. package/plugins/ima-claude/skills/php-authnet/references/sandbox-testing.md +424 -0
  128. package/plugins/ima-claude/skills/php-fp/SKILL.md +333 -0
  129. package/plugins/ima-claude/skills/php-fp/examples/pure-functions.php +403 -0
  130. package/plugins/ima-claude/skills/php-fp/examples/tests/PureFunctionsTest.php +515 -0
  131. package/plugins/ima-claude/skills/php-fp/references/core-principles.md +277 -0
  132. package/plugins/ima-claude/skills/php-fp/references/testing-patterns.md +374 -0
  133. package/plugins/ima-claude/skills/php-fp-wordpress/SKILL.md +216 -0
  134. package/plugins/ima-claude/skills/php-fp-wordpress/references/fp-patterns.md +275 -0
  135. package/plugins/ima-claude/skills/php-fp-wordpress/references/plugin-architecture.md +295 -0
  136. package/plugins/ima-claude/skills/php-fp-wordpress/references/security-examples.md +203 -0
  137. package/plugins/ima-claude/skills/php-fp-wordpress/references/testing-strategy.md +259 -0
  138. package/plugins/ima-claude/skills/phpunit-wp/SKILL.md +716 -0
  139. package/plugins/ima-claude/skills/playwright/SKILL.md +434 -0
  140. package/plugins/ima-claude/skills/playwright/references/accessibility-testing.md +153 -0
  141. package/plugins/ima-claude/skills/playwright/references/ci-cd.md +268 -0
  142. package/plugins/ima-claude/skills/playwright/references/network-mocking.md +270 -0
  143. package/plugins/ima-claude/skills/playwright/references/visual-regression.md +215 -0
  144. package/plugins/ima-claude/skills/py-fp/SKILL.md +663 -0
  145. package/plugins/ima-claude/skills/py-fp/examples/pure-functions.py +185 -0
  146. package/plugins/ima-claude/skills/py-fp/examples/tests/test_pure_functions.py +244 -0
  147. package/plugins/ima-claude/skills/py-fp/references/core-principles.md +381 -0
  148. package/plugins/ima-claude/skills/py-fp/references/testing-patterns.md +283 -0
  149. package/plugins/ima-claude/skills/quasar-fp/SKILL.md +327 -0
  150. package/plugins/ima-claude/skills/quasar-fp/metadata.json +85 -0
  151. package/plugins/ima-claude/skills/quasar-fp/references/component-patterns.md +257 -0
  152. package/plugins/ima-claude/skills/quasar-fp/references/theme-integration.md +233 -0
  153. package/plugins/ima-claude/skills/quasar-fp/references/utility-classes.md +237 -0
  154. package/plugins/ima-claude/skills/quickstart/SKILL.md +129 -0
  155. package/plugins/ima-claude/skills/rails/SKILL.md +359 -0
  156. package/plugins/ima-claude/skills/resume-session/SKILL.md +68 -0
  157. package/plugins/ima-claude/skills/rg/SKILL.md +205 -0
  158. package/plugins/ima-claude/skills/ruby-fp/SKILL.md +336 -0
  159. package/plugins/ima-claude/skills/save-session/SKILL.md +81 -0
  160. package/plugins/ima-claude/skills/scorecard/SKILL.md +96 -0
  161. package/plugins/ima-claude/skills/skill-analyzer/SKILL.md +127 -0
  162. package/plugins/ima-claude/skills/skill-analyzer/references/advanced-checklist.md +44 -0
  163. package/plugins/ima-claude/skills/skill-analyzer/references/core-checklist.md +60 -0
  164. package/plugins/ima-claude/skills/skill-analyzer/scripts/analyze_skill.py +418 -0
  165. package/plugins/ima-claude/skills/skill-creator/LICENSE.txt +202 -0
  166. package/plugins/ima-claude/skills/skill-creator/SKILL.md +343 -0
  167. package/plugins/ima-claude/skills/skill-creator/references/output-patterns.md +82 -0
  168. package/plugins/ima-claude/skills/skill-creator/references/workflows.md +28 -0
  169. package/plugins/ima-claude/skills/skill-creator/scripts/init_skill.py +303 -0
  170. package/plugins/ima-claude/skills/skill-creator/scripts/package_skill.py +110 -0
  171. package/plugins/ima-claude/skills/skill-creator/scripts/quick_validate.py +103 -0
  172. package/plugins/ima-claude/skills/task-master/SKILL.md +51 -0
  173. package/plugins/ima-claude/skills/task-planner/SKILL.md +228 -0
  174. package/plugins/ima-claude/skills/task-runner/SKILL.md +192 -0
  175. package/plugins/ima-claude/skills/unit-testing/SKILL.md +198 -0
  176. package/plugins/ima-claude/skills/unit-testing/references/mock-patterns.md +181 -0
  177. package/plugins/ima-claude/skills/unit-testing/references/tdd-workflow.md +177 -0
  178. package/plugins/ima-claude/skills/unit-testing/references/test-strategy.md +126 -0
  179. package/plugins/ima-claude/skills/wp-local/SKILL.md +246 -0
  180. package/plugins/ima-claude/skills/wp-local/references/configuration.md +198 -0
  181. package/plugins/ima-claude/skills/wp-local/references/wp-cli-reference.md +406 -0
  182. 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
+ ```