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,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "mcp-memory"
|
|
3
|
+
description: "DEPRECATED — Use mcp-vestige instead. Vestige provides semantic search, spaced repetition, auto-dedup, and codebase awareness as a superset of Memory MCP. Triggers on: mcp-memory."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **DEPRECATED**: This skill is replaced by **mcp-vestige**. Vestige is a superset of Memory MCP with semantic search, FSRS-6 spaced repetition, prediction error gating, and codebase awareness. All proactive memory behaviors now route through Vestige.
|
|
7
|
+
>
|
|
8
|
+
> This file is retained for reference during the transition period.
|
|
9
|
+
|
|
10
|
+
# Memory MCP - Proactive Knowledge Graph (DEPRECATED)
|
|
11
|
+
|
|
12
|
+
**You have access to a persistent knowledge graph that you rely on across all sessions.**
|
|
13
|
+
|
|
14
|
+
Like Serena for code operations, Memory MCP is your system for preserving context. You use it **proactively** without being asked - checking for relevant context, storing decisions as they're made, and capturing learnings.
|
|
15
|
+
|
|
16
|
+
## Proactive Behavior Rules
|
|
17
|
+
|
|
18
|
+
**These are MUST behaviors, not suggestions:**
|
|
19
|
+
|
|
20
|
+
### 1. Session Start: Check for Context
|
|
21
|
+
When beginning work on any project, **automatically search memory** for relevant context:
|
|
22
|
+
```
|
|
23
|
+
mcp__memory__search_nodes query: "{project-name}"
|
|
24
|
+
mcp__memory__open_nodes names: ["user-eric"]
|
|
25
|
+
```
|
|
26
|
+
This takes 2 seconds and prevents re-learning what you already know.
|
|
27
|
+
|
|
28
|
+
### 2. During Work: Store Decisions As They Happen
|
|
29
|
+
When ANY of these occur, **immediately store without being asked**:
|
|
30
|
+
|
|
31
|
+
| Event | Action |
|
|
32
|
+
|-------|--------|
|
|
33
|
+
| User states a preference | Store to `user-eric` entity |
|
|
34
|
+
| Architectural decision made | Create `decision-{topic}` entity |
|
|
35
|
+
| Bug root cause identified | Create `bug-{description}` entity |
|
|
36
|
+
| Pattern chosen over alternatives | Create `pattern-{name}` with rationale |
|
|
37
|
+
| User corrects your approach | Update `user-eric` with the correction |
|
|
38
|
+
| Configuration choice with rationale | Create `decision-{topic}` entity |
|
|
39
|
+
|
|
40
|
+
**Recognition patterns** - store when you hear:
|
|
41
|
+
- "I prefer..." / "I like..." / "I always..." / "I never..."
|
|
42
|
+
- "Let's go with X because..." / "We chose X over Y"
|
|
43
|
+
- "The reason this failed was..." / "Root cause:"
|
|
44
|
+
- "From now on..." / "Going forward..."
|
|
45
|
+
- "That's not how we do it" / "Actually, we..."
|
|
46
|
+
|
|
47
|
+
### 3. Session End: Capture Learnings
|
|
48
|
+
Before ending significant sessions, consider:
|
|
49
|
+
- What decisions were made that should persist?
|
|
50
|
+
- What did you learn about the user's preferences?
|
|
51
|
+
- What patterns or approaches worked well?
|
|
52
|
+
- What should you remember for next time?
|
|
53
|
+
|
|
54
|
+
### 4. Before Asking Questions You Might Already Know
|
|
55
|
+
Before asking "What framework do you use?" or "How do you prefer X?", **check memory first**:
|
|
56
|
+
```
|
|
57
|
+
mcp__memory__search_nodes query: "preference"
|
|
58
|
+
mcp__memory__search_nodes query: "{topic}"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Entity Structure
|
|
62
|
+
|
|
63
|
+
### Core Entities (create these)
|
|
64
|
+
|
|
65
|
+
**User Entity** (singleton - add observations, don't recreate):
|
|
66
|
+
```
|
|
67
|
+
name: "user-eric"
|
|
68
|
+
entityType: "user"
|
|
69
|
+
observations:
|
|
70
|
+
- "Prefers FP patterns over OOP"
|
|
71
|
+
- "Anti-over-engineering philosophy"
|
|
72
|
+
- "Wants minimal code comments"
|
|
73
|
+
- "Uses Quasar for Vue projects"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Project Entities**:
|
|
77
|
+
```
|
|
78
|
+
name: "project-{name}"
|
|
79
|
+
entityType: "project"
|
|
80
|
+
observations:
|
|
81
|
+
- "Tech stack: X, Y, Z"
|
|
82
|
+
- "Key patterns: ..."
|
|
83
|
+
- "Gotchas: ..."
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Decision Entities**:
|
|
87
|
+
```
|
|
88
|
+
name: "decision-{topic}"
|
|
89
|
+
entityType: "decision"
|
|
90
|
+
observations:
|
|
91
|
+
- "Chose X over Y"
|
|
92
|
+
- "Rationale: ..."
|
|
93
|
+
- "Made: {date}"
|
|
94
|
+
- "Applies to: {scope}"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Relations (create these to build the graph)
|
|
98
|
+
```
|
|
99
|
+
user-eric → owns → project-imanetwork
|
|
100
|
+
project-imanetwork → follows → decision-fp-patterns
|
|
101
|
+
decision-fp-patterns → supersedes → decision-old-oop-approach
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Available Tools
|
|
105
|
+
|
|
106
|
+
| Tool | When to Use |
|
|
107
|
+
|------|-------------|
|
|
108
|
+
| `search_nodes` | **First** - before creating, before asking user |
|
|
109
|
+
| `open_nodes` | Load specific known entities |
|
|
110
|
+
| `create_entities` | New project, decision, pattern, bug |
|
|
111
|
+
| `add_observations` | New facts about existing entity |
|
|
112
|
+
| `create_relations` | Connect related entities |
|
|
113
|
+
| `read_graph` | Debug / audit (use sparingly) |
|
|
114
|
+
| `delete_*` | Cleanup outdated information |
|
|
115
|
+
|
|
116
|
+
## Quick Patterns
|
|
117
|
+
|
|
118
|
+
### Store a user preference (do this automatically)
|
|
119
|
+
```
|
|
120
|
+
mcp__memory__search_nodes query: "user-eric"
|
|
121
|
+
# If exists:
|
|
122
|
+
mcp__memory__add_observations
|
|
123
|
+
observations: [{"entityName": "user-eric", "contents": ["Prefers early returns over nested conditionals"]}]
|
|
124
|
+
# If not exists:
|
|
125
|
+
mcp__memory__create_entities
|
|
126
|
+
entities: [{"name": "user-eric", "entityType": "user", "observations": ["..."]}]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Store a decision with rationale
|
|
130
|
+
```
|
|
131
|
+
mcp__memory__create_entities
|
|
132
|
+
entities: [{
|
|
133
|
+
"name": "decision-validators-at-registration",
|
|
134
|
+
"entityType": "decision",
|
|
135
|
+
"observations": [
|
|
136
|
+
"IMA Forms: validators defined at field registration, not validation time",
|
|
137
|
+
"Rationale: single source of truth, template IS the definition",
|
|
138
|
+
"Made: 2026-01-15",
|
|
139
|
+
"Supersedes: separate validation schema approach"
|
|
140
|
+
]
|
|
141
|
+
}]
|
|
142
|
+
mcp__memory__create_relations
|
|
143
|
+
relations: [{"from": "project-ima-forms", "to": "decision-validators-at-registration", "relationType": "follows"}]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Check before asking
|
|
147
|
+
```
|
|
148
|
+
# Instead of asking "What's your code style preference?"
|
|
149
|
+
mcp__memory__search_nodes query: "code style"
|
|
150
|
+
mcp__memory__search_nodes query: "preference"
|
|
151
|
+
# Only ask if nothing found
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## What NOT to Store
|
|
155
|
+
|
|
156
|
+
- Temporary debugging steps
|
|
157
|
+
- One-off fixes unlikely to recur
|
|
158
|
+
- Information already in project docs (CLAUDE.md, README)
|
|
159
|
+
- Sensitive data (credentials, API keys)
|
|
160
|
+
|
|
161
|
+
## Naming Conventions
|
|
162
|
+
|
|
163
|
+
| Prefix | Use |
|
|
164
|
+
|--------|-----|
|
|
165
|
+
| `user-{name}` | User preferences, corrections |
|
|
166
|
+
| `project-{name}` | Project context, tech stack |
|
|
167
|
+
| `decision-{topic}` | Architectural choices with rationale |
|
|
168
|
+
| `pattern-{name}` | Reusable code patterns |
|
|
169
|
+
| `bug-{description}` | Root causes worth remembering |
|
|
170
|
+
| `standard-{topic}` | Team/org standards |
|
|
171
|
+
|
|
172
|
+
## The Key Insight
|
|
173
|
+
|
|
174
|
+
**Serena works because it's wired into code operations automatically.**
|
|
175
|
+
**Memory works when it's wired into decision-making automatically.**
|
|
176
|
+
|
|
177
|
+
Don't wait to be asked. When context flows through the conversation that should persist:
|
|
178
|
+
1. Recognize it
|
|
179
|
+
2. Store it
|
|
180
|
+
3. Mention briefly: "I've noted your preference for X"
|
|
181
|
+
|
|
182
|
+
This builds a knowledge graph that makes every future session better.
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-qdrant
|
|
3
|
+
description: "Qdrant MCP — the permanent library. Unlike Vestige (neural memory that fades), nothing stored here is ever forgotten. Use for all reference material: wiki articles, coding standards, architecture docs, code samples, PRDs, plans, meeting notes, research findings. Triggers on: 'store this', 'what do we know about', 'search knowledge', 'add to library', 'find in docs'. Triggers proactively when reference material is created, discussed, or finalized — feed the library without being asked. Search the library before starting any new work."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Qdrant MCP - The Permanent Library
|
|
7
|
+
|
|
8
|
+
Our permanent reference library. Unlike Vestige (neural memory that fades if unused), nothing stored here is ever forgotten. This is where we feed our entire universe — wiki articles, coding standards, architecture docs, code samples, PRDs, plans, and research findings.
|
|
9
|
+
|
|
10
|
+
## Architecture: How This Fits
|
|
11
|
+
|
|
12
|
+
| System | Role | Lifecycle | Example |
|
|
13
|
+
|--------|------|-----------|---------|
|
|
14
|
+
| **Qdrant** | Permanent library — reference material, standards, PRDs, architecture docs, code samples | Persistent forever | "Our payment system uses Accept.js with ARB" |
|
|
15
|
+
| **Vestige** | Neural memory — decisions, preferences, patterns, bugs, learnings | Fades if unused (FSRS-6 decay) | "We chose JWT over sessions because..." |
|
|
16
|
+
| **Serena Memory** | Project workbench — session state, task progress | Project-scoped, survives git ops | "Currently on task 3/5" |
|
|
17
|
+
|
|
18
|
+
**Will it fade if we stop referencing it?** If no → Qdrant (permanent). If yes → Vestige (neural decay).
|
|
19
|
+
|
|
20
|
+
## Embedding Stack
|
|
21
|
+
|
|
22
|
+
| Component | Value |
|
|
23
|
+
|---|---|
|
|
24
|
+
| MCP server | `qdrant-mcp` (custom, at `~/dev/qdrant-mcp-server`) |
|
|
25
|
+
| Embedding model | `nomic-embed-text` via Ollama |
|
|
26
|
+
| Vector dimensions | 768 |
|
|
27
|
+
| Distance metric | Cosine |
|
|
28
|
+
| Vector type | Default (unnamed) |
|
|
29
|
+
| Default collection | `ima-knowledge` |
|
|
30
|
+
|
|
31
|
+
## Per-Project Collection
|
|
32
|
+
|
|
33
|
+
Projects can specify their Qdrant collection via a `.qdrant` file in the project root (YAML format, like `.serena`):
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
# .qdrant — project-level config
|
|
37
|
+
collection: my-project-knowledge
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**At session start**, check for a `.qdrant` file in the working directory. If found, read its `collection` value and pass it as `collection_name` on every `qdrant_store` and `qdrant_find` call for that session.
|
|
41
|
+
|
|
42
|
+
If no `.qdrant` file is found, omit `collection_name` — the server defaults to `ima-knowledge` (from the `COLLECTION_NAME` env var).
|
|
43
|
+
|
|
44
|
+
## MCP Tools
|
|
45
|
+
|
|
46
|
+
MCP server name: `qdrant-memory`. Tool prefix: `mcp__qdrant-memory__`.
|
|
47
|
+
|
|
48
|
+
| Tool | Purpose | Parameters |
|
|
49
|
+
|------|---------|------------|
|
|
50
|
+
| `qdrant_store` | Store text with auto-embedding | `information` (required), `collection_name`, `metadata` |
|
|
51
|
+
| `qdrant_find` | Semantic search across stored knowledge | `query` (required), `collection_name`, `limit` |
|
|
52
|
+
|
|
53
|
+
## Storing Knowledge
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
mcp__qdrant-memory__qdrant_store
|
|
57
|
+
information: "The IMA donation system uses Authorize.net Accept.js for payment
|
|
58
|
+
processing. Guest donations use charge-then-profile for ARB recurring."
|
|
59
|
+
metadata: {"source": "donation-system-prd", "type": "architecture", "date": "2026-02-21"}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
To target a specific collection explicitly:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
mcp__qdrant-memory__qdrant_store
|
|
66
|
+
collection_name: "other-project-knowledge"
|
|
67
|
+
information: "..."
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### What to Store
|
|
71
|
+
|
|
72
|
+
Anything that should never be forgotten — reference material for our permanent library.
|
|
73
|
+
|
|
74
|
+
| Content Type | Metadata `type` |
|
|
75
|
+
|---|---|
|
|
76
|
+
| PRDs / Feature Specs | `prd` |
|
|
77
|
+
| Architecture decisions & diagrams | `architecture` |
|
|
78
|
+
| Integration guides | `integration` |
|
|
79
|
+
| Domain knowledge | `domain` |
|
|
80
|
+
| Requirements / meeting notes | `requirements` |
|
|
81
|
+
| Coding standards & conventions | `standard` |
|
|
82
|
+
| Useful code samples | `sample` |
|
|
83
|
+
|
|
84
|
+
### Chunking Large Documents
|
|
85
|
+
|
|
86
|
+
For documents over ~2000 words, store by section:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Store: "Donation System PRD - Overview: [content]"
|
|
90
|
+
metadata: {"source": "donation-prd", "type": "prd", "section": "overview"}
|
|
91
|
+
|
|
92
|
+
Store: "Donation System PRD - Payment Flow: [content]"
|
|
93
|
+
metadata: {"source": "donation-prd", "type": "prd", "section": "payment-flow"}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Include the document title in each chunk so search results have context.
|
|
97
|
+
|
|
98
|
+
## Searching Knowledge
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
mcp__qdrant-memory__qdrant_find
|
|
102
|
+
query: "how does guest recurring donation work"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Broad**: `"payment processing"` — discover what's available
|
|
106
|
+
**Specific**: `"Authorize.net ARB guest checkout"` — find exact knowledge
|
|
107
|
+
**Problem-oriented**: `"SSO authentication between WordPress and Discourse"` — find solutions
|
|
108
|
+
|
|
109
|
+
## Proactive Behavior
|
|
110
|
+
|
|
111
|
+
### Feed the Library When:
|
|
112
|
+
|
|
113
|
+
- A wiki article, PRD, or spec is created or discussed → store it
|
|
114
|
+
- Architecture is documented or diagrammed → store it
|
|
115
|
+
- A coding standard or convention is established → store it
|
|
116
|
+
- A useful code sample is written → store it
|
|
117
|
+
- Research is completed on a topic → store the findings
|
|
118
|
+
- A Compound Engineering solution is finalized → store it
|
|
119
|
+
- Integration is documented → store it
|
|
120
|
+
- Meeting notes capture decisions or context → store them
|
|
121
|
+
- User says "add this to knowledge base" or "store this"
|
|
122
|
+
|
|
123
|
+
### Search the Library When:
|
|
124
|
+
|
|
125
|
+
- Starting implementation of any feature → check if prior art exists
|
|
126
|
+
- Debugging an integration → search for architecture context
|
|
127
|
+
- User asks "how does X work" → check library before guessing
|
|
128
|
+
- Planning new work → search for related PRDs or standards
|
|
129
|
+
- Before making architectural decisions → search for existing conventions
|
|
130
|
+
|
|
131
|
+
## Ingestion: Claude Web → Qdrant
|
|
132
|
+
|
|
133
|
+
When user shares content from Claude Web Projects:
|
|
134
|
+
|
|
135
|
+
1. User pastes document content
|
|
136
|
+
2. For short docs (<2000 words): store as single entry
|
|
137
|
+
3. For long docs: chunk by section with shared `source` metadata
|
|
138
|
+
4. Confirm: "Stored [title] in knowledge base ([N] chunks)"
|
|
139
|
+
|
|
140
|
+
## Decision Logic
|
|
141
|
+
|
|
142
|
+
**Will it fade if we stop referencing it?** If no → store here. Qdrant is the permanent library.
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
IF reference material that should never be forgotten
|
|
146
|
+
(wiki, standards, PRDs, architecture docs, code samples, plans):
|
|
147
|
+
→ Qdrant qdrant_store (permanent library)
|
|
148
|
+
ELSE IF knowledge that should strengthen with use, fade if unused
|
|
149
|
+
(preferences, decisions, patterns, bugs):
|
|
150
|
+
→ Vestige smart_ingest (neural memory)
|
|
151
|
+
ELSE IF session state or project progress:
|
|
152
|
+
→ Serena write_memory (project workbench)
|
|
153
|
+
|
|
154
|
+
Searching:
|
|
155
|
+
IF need reference docs, architecture context, prior art:
|
|
156
|
+
→ Qdrant qdrant_find
|
|
157
|
+
IF need user preferences or past decisions:
|
|
158
|
+
→ Vestige search
|
|
159
|
+
IF starting any new work:
|
|
160
|
+
→ Search BOTH Qdrant and Vestige
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Metadata Conventions
|
|
164
|
+
|
|
165
|
+
| Key | Values | Purpose |
|
|
166
|
+
|-----|--------|---------|
|
|
167
|
+
| `source` | Document name (kebab-case) | Group chunks from same doc |
|
|
168
|
+
| `type` | `prd`, `architecture`, `integration`, `domain`, `requirements`, `standard`, `sample` | Categorize |
|
|
169
|
+
| `date` | `YYYY-MM-DD` | When stored |
|
|
170
|
+
|
|
171
|
+
## Error Recovery
|
|
172
|
+
|
|
173
|
+
| Issue | Resolution |
|
|
174
|
+
|-------|------------|
|
|
175
|
+
| No results | Broaden query terms |
|
|
176
|
+
| Irrelevant results | Use more specific key terms |
|
|
177
|
+
| Qdrant not responding | `docker ps \| grep qdrant` — restart if needed |
|
|
178
|
+
| Ollama not responding | `ollama list` — ensure it's running with `nomic-embed-text` |
|
|
179
|
+
| Duplicate content | Search before storing to verify novelty |
|
|
180
|
+
|
|
181
|
+
## When NOT to Use
|
|
182
|
+
|
|
183
|
+
- Knowledge that should fade if unused (preferences, decisions, patterns) → Vestige (neural memory)
|
|
184
|
+
- Session state or task progress → Serena memory (project workbench)
|
|
185
|
+
- Code symbol search → Serena or Grep
|
|
186
|
+
- Current web info → Tavily
|
|
187
|
+
- Library API docs → Context7
|
|
188
|
+
|
|
189
|
+
## Setup
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# 1. Start Qdrant with persistent storage
|
|
193
|
+
docker run -d --name qdrant \
|
|
194
|
+
-p 6333:6333 \
|
|
195
|
+
-v qdrant_storage:/qdrant/storage \
|
|
196
|
+
qdrant/qdrant:latest
|
|
197
|
+
|
|
198
|
+
# 2. Install Ollama and pull embedding model
|
|
199
|
+
ollama pull nomic-embed-text
|
|
200
|
+
|
|
201
|
+
# 3. Install custom MCP server
|
|
202
|
+
cd ~/dev/qdrant-mcp-server && pip install -e .
|
|
203
|
+
|
|
204
|
+
# 4. Add to Claude Code (in ~/.claude.json mcpServers)
|
|
205
|
+
# "qdrant-memory": {
|
|
206
|
+
# "type": "stdio",
|
|
207
|
+
# "command": "qdrant-mcp",
|
|
208
|
+
# "args": [],
|
|
209
|
+
# "env": {
|
|
210
|
+
# "QDRANT_URL": "http://localhost:6333",
|
|
211
|
+
# "COLLECTION_NAME": "ima-knowledge",
|
|
212
|
+
# "OLLAMA_URL": "http://localhost:11434",
|
|
213
|
+
# "EMBEDDING_MODEL": "nomic-embed-text"
|
|
214
|
+
# }
|
|
215
|
+
# }
|
|
216
|
+
|
|
217
|
+
# 5. Verify
|
|
218
|
+
curl http://localhost:6333/health
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Persistence**: `-v qdrant_storage:/qdrant/storage` preserves data across restarts.
|
|
222
|
+
**Embeddings**: Ollama with `nomic-embed-text` (768d). All data stays on your machine.
|
|
223
|
+
|
|
224
|
+
### Per-Project Setup
|
|
225
|
+
|
|
226
|
+
Add a `.qdrant` file to any project root to use a project-specific collection:
|
|
227
|
+
|
|
228
|
+
```yaml
|
|
229
|
+
# .qdrant
|
|
230
|
+
collection: my-project-knowledge
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
This keeps project knowledge isolated from the global `ima-knowledge` collection. The collection is created automatically on first store.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "mcp-sequential"
|
|
3
|
+
description: "Sequential Thinking MCP — use for debugging, root cause analysis, trade-off evaluation, architectural decisions, and any multi-step problem where the approach may need revision mid-stream. Triggers on: think through, step by step, debug this, figure out why, what's causing, root cause, troubleshoot, analyze, trade-offs, pros and cons, why is this failing, complex problem, design decision, how should we approach. Prevents expensive trial-and-error by structuring reasoning before acting."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sequential Thinking MCP - Structured Reasoning
|
|
7
|
+
|
|
8
|
+
Use Sequential Thinking for complex problems that benefit from structured, revisable analysis.
|
|
9
|
+
|
|
10
|
+
## Available Tool
|
|
11
|
+
|
|
12
|
+
| Tool | Purpose |
|
|
13
|
+
|------|---------|
|
|
14
|
+
| `mcp__sequential-thinking__sequentialThinking` | Execute a thought in a reasoning chain |
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
**Use Sequential Thinking for:**
|
|
19
|
+
- Breaking down complex problems into steps
|
|
20
|
+
- Debugging issues where the cause isn't obvious
|
|
21
|
+
- Architectural/design decisions with trade-offs
|
|
22
|
+
- Problems where you might need to revise your approach
|
|
23
|
+
- Multi-step analysis that needs context maintained
|
|
24
|
+
- Filtering irrelevant information from complex scenarios
|
|
25
|
+
- Hypothesis generation and verification
|
|
26
|
+
|
|
27
|
+
**Don't use for:**
|
|
28
|
+
- Simple, straightforward tasks
|
|
29
|
+
- Questions with obvious answers
|
|
30
|
+
- Tasks that don't require multi-step reasoning
|
|
31
|
+
|
|
32
|
+
## Basic Usage
|
|
33
|
+
|
|
34
|
+
Each call represents one thought in your reasoning chain.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
mcp__sequential-thinking__sequentialThinking
|
|
38
|
+
thought: "First, let me understand the problem. We have X happening when Y..."
|
|
39
|
+
nextThoughtNeeded: true
|
|
40
|
+
thoughtNumber: 1
|
|
41
|
+
totalThoughts: 5
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Parameters
|
|
45
|
+
|
|
46
|
+
| Parameter | Required | Description |
|
|
47
|
+
|-----------|----------|-------------|
|
|
48
|
+
| `thought` | Yes | Current thinking step content |
|
|
49
|
+
| `nextThoughtNeeded` | Yes | `true` to continue, `false` when done |
|
|
50
|
+
| `thoughtNumber` | Yes | Current step number (1, 2, 3...) |
|
|
51
|
+
| `totalThoughts` | Yes | Estimated total (can adjust up/down) |
|
|
52
|
+
| `isRevision` | No | `true` if revising previous thought |
|
|
53
|
+
| `revisesThought` | No | Which thought number being revised |
|
|
54
|
+
| `branchFromThought` | No | Thought number to branch from |
|
|
55
|
+
| `branchId` | No | Identifier for the branch |
|
|
56
|
+
|
|
57
|
+
## Continue Chain
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
mcp__sequential-thinking__sequentialThinking
|
|
61
|
+
thought: "Based on step 1, the likely cause is Z because..."
|
|
62
|
+
nextThoughtNeeded: true
|
|
63
|
+
thoughtNumber: 2
|
|
64
|
+
totalThoughts: 5
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Revise if Needed
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
mcp__sequential-thinking__sequentialThinking
|
|
71
|
+
thought: "Actually, my assumption in thought 2 was wrong. Let me reconsider..."
|
|
72
|
+
nextThoughtNeeded: true
|
|
73
|
+
thoughtNumber: 3
|
|
74
|
+
totalThoughts: 6
|
|
75
|
+
isRevision: true
|
|
76
|
+
revisesThought: 2
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Branch for Alternatives
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
mcp__sequential-thinking__sequentialThinking
|
|
83
|
+
thought: "Let me explore an alternative approach from step 2..."
|
|
84
|
+
nextThoughtNeeded: true
|
|
85
|
+
thoughtNumber: 4
|
|
86
|
+
totalThoughts: 7
|
|
87
|
+
branchFromThought: 2
|
|
88
|
+
branchId: "alternative-approach"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Conclude
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
mcp__sequential-thinking__sequentialThinking
|
|
95
|
+
thought: "Based on my analysis, the solution is X because of Y and Z."
|
|
96
|
+
nextThoughtNeeded: false
|
|
97
|
+
thoughtNumber: 5
|
|
98
|
+
totalThoughts: 5
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Best Practices
|
|
102
|
+
|
|
103
|
+
1. **Start with estimate, adjust as needed** - `totalThoughts` is flexible
|
|
104
|
+
2. **Express uncertainty** - It's OK to say "I'm not sure, but..."
|
|
105
|
+
3. **Revise freely** - Use `isRevision` when your understanding changes
|
|
106
|
+
4. **Branch for alternatives** - Explore multiple approaches
|
|
107
|
+
5. **Verify hypotheses** - Don't just guess, test your reasoning
|
|
108
|
+
6. **Filter noise** - Focus on relevant information per step
|
|
109
|
+
7. **Only conclude when confident** - Keep `nextThoughtNeeded: true` until satisfied
|
|
110
|
+
|
|
111
|
+
## Example: Debugging a Bug
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Thought 1: "The bug report says the form submits but data isn't saved. Let me identify possible failure points: 1) Frontend validation, 2) AJAX request, 3) Backend handler, 4) Database write."
|
|
115
|
+
|
|
116
|
+
Thought 2: "Starting with the AJAX request - I should check if the request is being sent and what response comes back."
|
|
117
|
+
|
|
118
|
+
Thought 3: "The request is sent but returns 500. So the issue is backend. Let me check the error logs."
|
|
119
|
+
|
|
120
|
+
Thought 4: "Error log shows 'undefined index: email'. The frontend is sending 'user_email' but backend expects 'email'. This is a field name mismatch."
|
|
121
|
+
|
|
122
|
+
Thought 5 (conclusion): "Root cause: Field name mismatch between frontend ('user_email') and backend ('email'). Solution: Update frontend to use 'email' or backend to accept 'user_email'."
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Example: Architecture Decision
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Thought 1: "Need to decide between REST API and GraphQL for this project. Let me list the requirements: multiple clients, varying data needs, team experience."
|
|
129
|
+
|
|
130
|
+
Thought 2: "REST pros: Team knows it well, simple caching, established patterns. Cons: Over-fetching for mobile, multiple endpoints."
|
|
131
|
+
|
|
132
|
+
Thought 3: "GraphQL pros: Single endpoint, client specifies data needs, good for mobile. Cons: Learning curve, caching complexity."
|
|
133
|
+
|
|
134
|
+
Thought 4 (revision): "Wait, I should also consider that we're using WordPress backend. REST is native to WordPress, GraphQL would need WPGraphQL plugin."
|
|
135
|
+
|
|
136
|
+
Thought 5 (conclusion): "Recommendation: REST API. Reasons: 1) Native WordPress support, 2) Team expertise, 3) Simpler caching. The over-fetching concern can be mitigated with sparse fieldsets."
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Setup
|
|
140
|
+
|
|
141
|
+
No API key required. Install with:
|
|
142
|
+
```bash
|
|
143
|
+
bun run scripts/setup-mcp.ts
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Or manually:
|
|
147
|
+
```bash
|
|
148
|
+
claude mcp add --scope user sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking@latest
|
|
149
|
+
```
|