skillmind 0.1.0__tar.gz
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.
- skillmind-0.1.0/.gitignore +47 -0
- skillmind-0.1.0/CLAUDE.md +77 -0
- skillmind-0.1.0/LICENSE +21 -0
- skillmind-0.1.0/PKG-INFO +300 -0
- skillmind-0.1.0/README.md +228 -0
- skillmind-0.1.0/configs/default.yml +40 -0
- skillmind-0.1.0/generate_pdfs.py +222 -0
- skillmind-0.1.0/pyproject.toml +82 -0
- skillmind-0.1.0/src/skillmind/__init__.py +3 -0
- skillmind-0.1.0/src/skillmind/cli/__init__.py +1 -0
- skillmind-0.1.0/src/skillmind/cli/main.py +457 -0
- skillmind-0.1.0/src/skillmind/config.py +131 -0
- skillmind-0.1.0/src/skillmind/context.py +218 -0
- skillmind-0.1.0/src/skillmind/embeddings.py +126 -0
- skillmind-0.1.0/src/skillmind/listener.py +250 -0
- skillmind-0.1.0/src/skillmind/mcp/__init__.py +1 -0
- skillmind-0.1.0/src/skillmind/mcp/server.py +429 -0
- skillmind-0.1.0/src/skillmind/migration.py +201 -0
- skillmind-0.1.0/src/skillmind/models.py +112 -0
- skillmind-0.1.0/src/skillmind/sanitizer.py +233 -0
- skillmind-0.1.0/src/skillmind/setup.py +380 -0
- skillmind-0.1.0/src/skillmind/store/__init__.py +45 -0
- skillmind-0.1.0/src/skillmind/store/base.py +148 -0
- skillmind-0.1.0/src/skillmind/store/chroma_store.py +184 -0
- skillmind-0.1.0/src/skillmind/store/faiss_store.py +286 -0
- skillmind-0.1.0/src/skillmind/store/pinecone_store.py +204 -0
- skillmind-0.1.0/src/skillmind/store/qdrant_store.py +256 -0
- skillmind-0.1.0/src/skillmind/store/supabase_store.py +267 -0
- skillmind-0.1.0/src/skillmind/trainer.py +283 -0
- skillmind-0.1.0/src/skillmind/video/__init__.py +1 -0
- skillmind-0.1.0/src/skillmind/video/screen_recorder.py +207 -0
- skillmind-0.1.0/src/skillmind/video/video_learner.py +454 -0
- skillmind-0.1.0/src/skillmind/video/youtube_learner.py +459 -0
- skillmind-0.1.0/test_sanitizer_quick.py +22 -0
- skillmind-0.1.0/tests/__init__.py +0 -0
- skillmind-0.1.0/tests/conftest.py +146 -0
- skillmind-0.1.0/tests/test_context.py +87 -0
- skillmind-0.1.0/tests/test_listener.py +92 -0
- skillmind-0.1.0/tests/test_migration.py +126 -0
- skillmind-0.1.0/tests/test_models.py +121 -0
- skillmind-0.1.0/tests/test_stores.py +219 -0
- skillmind-0.1.0/tests/test_trainer.py +147 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
*.egg-info/
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
.eggs/
|
|
10
|
+
|
|
11
|
+
# Virtual environments
|
|
12
|
+
venv/
|
|
13
|
+
.venv/
|
|
14
|
+
env/
|
|
15
|
+
|
|
16
|
+
# IDE
|
|
17
|
+
.idea/
|
|
18
|
+
.vscode/
|
|
19
|
+
*.swp
|
|
20
|
+
*.swo
|
|
21
|
+
|
|
22
|
+
# Environment / secrets
|
|
23
|
+
.env
|
|
24
|
+
.env.local
|
|
25
|
+
.env.*.local
|
|
26
|
+
|
|
27
|
+
# Runtime data
|
|
28
|
+
.skillmind/
|
|
29
|
+
*.db
|
|
30
|
+
*.sqlite3
|
|
31
|
+
|
|
32
|
+
# Test / coverage
|
|
33
|
+
.pytest_cache/
|
|
34
|
+
.coverage
|
|
35
|
+
htmlcov/
|
|
36
|
+
.mypy_cache/
|
|
37
|
+
|
|
38
|
+
# OS
|
|
39
|
+
.DS_Store
|
|
40
|
+
Thumbs.db
|
|
41
|
+
desktop.ini
|
|
42
|
+
|
|
43
|
+
# Recordings (runtime)
|
|
44
|
+
recordings/
|
|
45
|
+
|
|
46
|
+
# Website (private, not in public repo)
|
|
47
|
+
website/
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# SkillMind
|
|
2
|
+
|
|
3
|
+
**Active Skill Listener & Trainer** — structured memory layer for AI coding assistants.
|
|
4
|
+
|
|
5
|
+
## What is this?
|
|
6
|
+
|
|
7
|
+
SkillMind replaces flat markdown memory files with a vector-database-backed memory system that:
|
|
8
|
+
- **Listens** to git events, file changes, and conversations
|
|
9
|
+
- **Trains** by auto-classifying, deduplicating, and consolidating knowledge
|
|
10
|
+
- **Surfaces** only relevant context per conversation (not everything)
|
|
11
|
+
|
|
12
|
+
## Architecture
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
src/skillmind/
|
|
16
|
+
├── models.py # Memory, QueryFilter, QueryResult (Pydantic)
|
|
17
|
+
├── config.py # SkillMindConfig (YAML-based)
|
|
18
|
+
├── embeddings.py # EmbeddingEngine (sentence-transformers | openai)
|
|
19
|
+
├── trainer.py # Auto-classify, dedup, merge, consolidate
|
|
20
|
+
├── listener.py # GitListener, FileListener, ConversationListener
|
|
21
|
+
├── context.py # ContextGenerator — dynamic context for Claude Code
|
|
22
|
+
├── migration.py # Import existing Claude Code markdown memories
|
|
23
|
+
├── store/
|
|
24
|
+
│ ├── base.py # Abstract MemoryStore interface
|
|
25
|
+
│ ├── chroma_store.py # ChromaDB backend (default)
|
|
26
|
+
│ ├── pinecone_store.py # Pinecone backend
|
|
27
|
+
│ ├── supabase_store.py # Supabase/pgvector backend
|
|
28
|
+
│ ├── qdrant_store.py # Qdrant backend
|
|
29
|
+
│ └── faiss_store.py # FAISS + JSON backend
|
|
30
|
+
├── mcp/
|
|
31
|
+
│ └── server.py # MCP server (10 tools for Claude Code)
|
|
32
|
+
└── cli/
|
|
33
|
+
└── main.py # CLI (click-based)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Key Commands
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install -e ".[chroma]" # Install with Chroma backend
|
|
40
|
+
skillmind init --backend chroma # Initialize
|
|
41
|
+
skillmind import # Import existing Claude Code memories
|
|
42
|
+
skillmind remember "content" # Store memory
|
|
43
|
+
skillmind recall "query" # Semantic search
|
|
44
|
+
skillmind list # List all
|
|
45
|
+
skillmind consolidate # Cleanup
|
|
46
|
+
skillmind serve # Start MCP server
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Store Backends
|
|
50
|
+
|
|
51
|
+
All 5 implement the same `MemoryStore` interface (add, query, get, update, delete, list_all, count, clear):
|
|
52
|
+
|
|
53
|
+
| Backend | Best for | Requires |
|
|
54
|
+
|---------|----------|----------|
|
|
55
|
+
| **chroma** | Solo dev, local, default | `pip install chromadb` |
|
|
56
|
+
| **faiss** | Offline, air-gapped, fastest | `pip install faiss-cpu` |
|
|
57
|
+
| **qdrant** | Self-hosted or cloud, great filtering | Qdrant server |
|
|
58
|
+
| **pinecone** | Multi-device cloud sync | API key |
|
|
59
|
+
| **supabase** | SQL + vectors, team sharing | Supabase project |
|
|
60
|
+
|
|
61
|
+
## MCP Server Tools
|
|
62
|
+
|
|
63
|
+
10 tools exposed via FastMCP: `remember`, `recall`, `forget`, `update_memory`, `context`, `consolidate`, `memory_stats`, `list_memories`, `import_markdown_memories`.
|
|
64
|
+
|
|
65
|
+
## Memory Types
|
|
66
|
+
|
|
67
|
+
- **user** — role, preferences, expertise
|
|
68
|
+
- **feedback** — corrections, confirmed approaches
|
|
69
|
+
- **project** — deadlines, client context, status (auto-expires 90d)
|
|
70
|
+
- **reference** — external URLs, dashboards, wikis
|
|
71
|
+
- **skill** — patterns, workflows, how-tos
|
|
72
|
+
|
|
73
|
+
## Testing
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pytest tests/ -v
|
|
77
|
+
```
|
skillmind-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Antonio Blago
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
skillmind-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skillmind
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Active Skill Listener & Trainer — structured memory layer for AI coding assistants
|
|
5
|
+
Project-URL: Homepage, https://skill-mind.com
|
|
6
|
+
Project-URL: Documentation, https://skill-mind.com/en/quickstart/
|
|
7
|
+
Project-URL: Repository, https://github.com/AntonioBlago/skillmind
|
|
8
|
+
Project-URL: Issues, https://github.com/AntonioBlago/skillmind/issues
|
|
9
|
+
Author-email: Antonio Blago <info@antonioblago.com>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: ai-assistant,chroma,claude-code,faiss,mcp,memory,pinecone,qdrant,screen-recording,semantic-search,skill-learning,supabase,vector-database,youtube
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Requires-Dist: click>=8.0
|
|
24
|
+
Requires-Dist: numpy>=1.24
|
|
25
|
+
Requires-Dist: pydantic>=2.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Requires-Dist: rich>=13.0
|
|
28
|
+
Requires-Dist: sentence-transformers>=2.2.0
|
|
29
|
+
Provides-Extra: all
|
|
30
|
+
Requires-Dist: chromadb>=0.4.0; extra == 'all'
|
|
31
|
+
Requires-Dist: faiss-cpu>=1.7; extra == 'all'
|
|
32
|
+
Requires-Dist: fastmcp>=0.1; extra == 'all'
|
|
33
|
+
Requires-Dist: mss>=9.0; extra == 'all'
|
|
34
|
+
Requires-Dist: opencv-python>=4.8; extra == 'all'
|
|
35
|
+
Requires-Dist: pillow>=10.0; extra == 'all'
|
|
36
|
+
Requires-Dist: pinecone-client>=3.0; extra == 'all'
|
|
37
|
+
Requires-Dist: pytesseract>=0.3.10; extra == 'all'
|
|
38
|
+
Requires-Dist: qdrant-client>=1.7; extra == 'all'
|
|
39
|
+
Requires-Dist: requests>=2.31.0; extra == 'all'
|
|
40
|
+
Requires-Dist: supabase>=2.0; extra == 'all'
|
|
41
|
+
Requires-Dist: vecs>=0.4; extra == 'all'
|
|
42
|
+
Requires-Dist: youtube-transcript-api>=1.0.0; extra == 'all'
|
|
43
|
+
Requires-Dist: yt-dlp>=2024.0.0; extra == 'all'
|
|
44
|
+
Provides-Extra: chroma
|
|
45
|
+
Requires-Dist: chromadb>=0.4.0; extra == 'chroma'
|
|
46
|
+
Provides-Extra: dev
|
|
47
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
|
|
48
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
49
|
+
Provides-Extra: faiss
|
|
50
|
+
Requires-Dist: faiss-cpu>=1.7; extra == 'faiss'
|
|
51
|
+
Provides-Extra: mcp
|
|
52
|
+
Requires-Dist: fastmcp>=0.1; extra == 'mcp'
|
|
53
|
+
Provides-Extra: pinecone
|
|
54
|
+
Requires-Dist: pinecone-client>=3.0; extra == 'pinecone'
|
|
55
|
+
Provides-Extra: qdrant
|
|
56
|
+
Requires-Dist: qdrant-client>=1.7; extra == 'qdrant'
|
|
57
|
+
Provides-Extra: supabase
|
|
58
|
+
Requires-Dist: supabase>=2.0; extra == 'supabase'
|
|
59
|
+
Requires-Dist: vecs>=0.4; extra == 'supabase'
|
|
60
|
+
Provides-Extra: video
|
|
61
|
+
Requires-Dist: mss>=9.0; extra == 'video'
|
|
62
|
+
Requires-Dist: opencv-python>=4.8; extra == 'video'
|
|
63
|
+
Requires-Dist: pillow>=10.0; extra == 'video'
|
|
64
|
+
Requires-Dist: pytesseract>=0.3.10; extra == 'video'
|
|
65
|
+
Provides-Extra: whisper
|
|
66
|
+
Requires-Dist: openai-whisper>=20230314; extra == 'whisper'
|
|
67
|
+
Provides-Extra: youtube
|
|
68
|
+
Requires-Dist: requests>=2.31.0; extra == 'youtube'
|
|
69
|
+
Requires-Dist: youtube-transcript-api>=1.0.0; extra == 'youtube'
|
|
70
|
+
Requires-Dist: yt-dlp>=2024.0.0; extra == 'youtube'
|
|
71
|
+
Description-Content-Type: text/markdown
|
|
72
|
+
|
|
73
|
+
<p align="center">
|
|
74
|
+
<img src="docs/assets/logo.png" alt="SkillMind" width="200"/>
|
|
75
|
+
</p>
|
|
76
|
+
|
|
77
|
+
# SkillMind
|
|
78
|
+
|
|
79
|
+
[](https://github.com/AntonioBlago/skillmind/releases)
|
|
80
|
+
[](https://opensource.org/licenses/MIT)
|
|
81
|
+
[](https://www.python.org/downloads/)
|
|
82
|
+
[](https://modelcontextprotocol.io)
|
|
83
|
+
[](https://skill-mind.com/)
|
|
84
|
+
|
|
85
|
+
**Active Skill Listener & Trainer** — the structured memory layer for AI coding assistants.
|
|
86
|
+
|
|
87
|
+
Replace flat markdown memory files with a vector-database-backed system that **listens**, **learns**, and **surfaces** only relevant context per conversation.
|
|
88
|
+
|
|
89
|
+
> 🌐 **[Visit skill-mind.com](https://skill-mind.com/)** — Documentation, setup guides, and live demos.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## The Problem
|
|
94
|
+
|
|
95
|
+
| Current state | SkillMind |
|
|
96
|
+
|---|---|
|
|
97
|
+
| 15+ flat markdown memory files | One vector DB with semantic search |
|
|
98
|
+
| Everything loaded into context | Only relevant memories surfaced |
|
|
99
|
+
| Manual save/forget | Auto-listen, auto-classify, auto-expire |
|
|
100
|
+
| No deduplication | Automatic dedup + consolidation |
|
|
101
|
+
| No protection | Sanitizer redacts API keys, PII before storing |
|
|
102
|
+
|
|
103
|
+
## Quick Start (3 Commands)
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 1. Install
|
|
107
|
+
pip install skillmind[pinecone]
|
|
108
|
+
|
|
109
|
+
# 2. Initialize
|
|
110
|
+
skillmind init --backend pinecone
|
|
111
|
+
|
|
112
|
+
# 3. Import your existing Claude Code memories
|
|
113
|
+
skillmind import ~/.claude/projects/*/memory/
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**That's it.** Your memories are now in a vector DB with semantic search.
|
|
117
|
+
|
|
118
|
+
## How It Works
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
┌────────────┐ ┌────────────┐ ┌─────────────────┐
|
|
122
|
+
│ LISTENER │───▶│ TRAINER │───▶│ VECTOR STORE │
|
|
123
|
+
│ │ │ │ │ │
|
|
124
|
+
│ • Git hooks │ │ • Classify │ │ • Chroma (local) │
|
|
125
|
+
│ • File watch│ │ • Sanitize │ │ • Pinecone │
|
|
126
|
+
│ • Convos │ │ • Dedup │ │ • Supabase │
|
|
127
|
+
│ • YouTube │ │ • Merge │ │ • Qdrant │
|
|
128
|
+
│ • Screen │ │ • Expire │ │ • FAISS │
|
|
129
|
+
└────────────┘ └────────────┘ └─────────────────┘
|
|
130
|
+
│
|
|
131
|
+
▼
|
|
132
|
+
┌─────────────────┐
|
|
133
|
+
│ CLAUDE CODE │
|
|
134
|
+
│ (MCP Server) │
|
|
135
|
+
│ 14 tools │
|
|
136
|
+
└─────────────────┘
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## 5 Vector Store Backends
|
|
140
|
+
|
|
141
|
+
| Backend | Best for | Requires |
|
|
142
|
+
|---------|----------|----------|
|
|
143
|
+
| **ChromaDB** | Solo dev, local, default | `pip install skillmind[chroma]` |
|
|
144
|
+
| **Pinecone** | Multi-device cloud sync | API key |
|
|
145
|
+
| **Supabase** | SQL + vectors, team sharing | Supabase project |
|
|
146
|
+
| **Qdrant** | Self-hosted or cloud, great filtering | Qdrant server |
|
|
147
|
+
| **FAISS** | Offline, air-gapped, fastest | `pip install skillmind[faiss]` |
|
|
148
|
+
|
|
149
|
+
All backends implement the same interface — switch anytime with zero data loss.
|
|
150
|
+
|
|
151
|
+
## 14 MCP Tools for Claude Code
|
|
152
|
+
|
|
153
|
+
Once installed, Claude Code gets these tools:
|
|
154
|
+
|
|
155
|
+
| Tool | What it does |
|
|
156
|
+
|---|---|
|
|
157
|
+
| `remember` | Store memory (auto-classified, sanitized, deduped) |
|
|
158
|
+
| `recall` | Semantic search across all memories |
|
|
159
|
+
| `forget` | Delete a memory |
|
|
160
|
+
| `update_memory` | Edit existing memory |
|
|
161
|
+
| `context` | Generate focused context for current file/topic |
|
|
162
|
+
| `consolidate` | Merge duplicates, expire stale, cleanup |
|
|
163
|
+
| `memory_stats` | Counts by type, backend info |
|
|
164
|
+
| `list_memories` | Filter by type/topic |
|
|
165
|
+
| `import_markdown_memories` | Bulk import from Claude Code markdown files |
|
|
166
|
+
| `learn_youtube` | Extract knowledge from YouTube video |
|
|
167
|
+
| `learn_youtube_channel` | Learn from channel's latest videos |
|
|
168
|
+
| `learn_video` | Learn from local video/screen recording |
|
|
169
|
+
| `record_screen` | Record screen to MP4 |
|
|
170
|
+
| `screenshot` | Capture screenshot |
|
|
171
|
+
|
|
172
|
+
### MCP Setup (Claude Code settings.json)
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"mcpServers": {
|
|
177
|
+
"skillmind": {
|
|
178
|
+
"command": "python",
|
|
179
|
+
"args": ["-m", "skillmind.mcp.server"],
|
|
180
|
+
"env": {
|
|
181
|
+
"PINECONE_API_KEY": "your-key",
|
|
182
|
+
"SKILLMIND_BACKEND": "pinecone"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Memory Types
|
|
190
|
+
|
|
191
|
+
| Type | What | Auto-expires |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| **user** | Role, preferences, expertise | No |
|
|
194
|
+
| **feedback** | Corrections, confirmed approaches | No |
|
|
195
|
+
| **project** | Deadlines, client context, status | 90 days |
|
|
196
|
+
| **reference** | External URLs, dashboards, wikis | No |
|
|
197
|
+
| **skill** | Patterns, workflows, how-tos | No |
|
|
198
|
+
|
|
199
|
+
## Learn From Video
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# YouTube
|
|
203
|
+
skillmind learn-youtube "https://youtube.com/watch?v=..."
|
|
204
|
+
|
|
205
|
+
# YouTube channel (latest 5 videos)
|
|
206
|
+
skillmind learn-youtube-channel "UCxxxxx" --limit 5
|
|
207
|
+
|
|
208
|
+
# Local video file
|
|
209
|
+
skillmind learn-video recording.mp4
|
|
210
|
+
|
|
211
|
+
# Screen recording
|
|
212
|
+
skillmind record-screen --duration 60 --fps 15
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Built-in Sanitizer
|
|
216
|
+
|
|
217
|
+
API keys, emails, phone numbers, IBANs, and PII are **automatically redacted** before storing:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
Input: "My Pinecone key is pcsk_2mrRyA_9BSbdn5i..."
|
|
221
|
+
Stored: "My Pinecone key is [REDACTED:PINECONE_KEY]"
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Configurable allowlists, custom patterns, and name anonymization.
|
|
225
|
+
|
|
226
|
+
## CLI Reference
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
skillmind init --backend chroma # Initialize with backend
|
|
230
|
+
skillmind remember "content" # Store a memory
|
|
231
|
+
skillmind recall "query" # Semantic search
|
|
232
|
+
skillmind list # List all memories
|
|
233
|
+
skillmind list --type feedback # Filter by type
|
|
234
|
+
skillmind forget <id> # Delete
|
|
235
|
+
skillmind import # Import Claude Code memories
|
|
236
|
+
skillmind consolidate # Cleanup & deduplicate
|
|
237
|
+
skillmind context # Generate context for current dir
|
|
238
|
+
skillmind stats # Show statistics
|
|
239
|
+
skillmind serve # Start MCP server
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Installation
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Core + one backend
|
|
246
|
+
pip install skillmind[chroma] # Local (default)
|
|
247
|
+
pip install skillmind[pinecone] # Cloud sync
|
|
248
|
+
pip install skillmind[supabase] # SQL + vectors
|
|
249
|
+
pip install skillmind[qdrant] # Self-hosted
|
|
250
|
+
pip install skillmind[faiss] # Offline
|
|
251
|
+
|
|
252
|
+
# Add-ons
|
|
253
|
+
pip install skillmind[youtube] # YouTube learning
|
|
254
|
+
pip install skillmind[video] # Screen recording + OCR
|
|
255
|
+
pip install skillmind[mcp] # MCP server for Claude Code
|
|
256
|
+
|
|
257
|
+
# Everything
|
|
258
|
+
pip install skillmind[all]
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Architecture
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
src/skillmind/
|
|
265
|
+
├── models.py # Memory, QueryFilter, QueryResult (Pydantic)
|
|
266
|
+
├── config.py # SkillMindConfig (YAML-based)
|
|
267
|
+
├── embeddings.py # EmbeddingEngine (sentence-transformers | OpenAI)
|
|
268
|
+
├── trainer.py # Auto-classify, dedup, merge, consolidate
|
|
269
|
+
├── sanitizer.py # Redact API keys, PII before storage
|
|
270
|
+
├── listener.py # GitListener, FileListener, ConversationListener
|
|
271
|
+
├── context.py # ContextGenerator — dynamic context injection
|
|
272
|
+
├── migration.py # Import existing Claude Code markdown memories
|
|
273
|
+
├── store/
|
|
274
|
+
│ ├── base.py # Abstract MemoryStore interface
|
|
275
|
+
│ ├── chroma_store.py # ChromaDB backend
|
|
276
|
+
│ ├── pinecone_store.py # Pinecone backend
|
|
277
|
+
│ ├── supabase_store.py # Supabase/pgvector backend
|
|
278
|
+
│ ├── qdrant_store.py # Qdrant backend
|
|
279
|
+
│ └── faiss_store.py # FAISS + JSON backend
|
|
280
|
+
├── video/
|
|
281
|
+
│ ├── youtube_learner.py # YouTube transcript extraction
|
|
282
|
+
│ ├── video_learner.py # Local video learning
|
|
283
|
+
│ └── screen_recorder.py # Screen capture
|
|
284
|
+
├── mcp/
|
|
285
|
+
│ └── server.py # FastMCP server (14 tools)
|
|
286
|
+
└── cli/
|
|
287
|
+
└── main.py # CLI (click-based)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Contributing
|
|
291
|
+
|
|
292
|
+
PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
293
|
+
|
|
294
|
+
## License
|
|
295
|
+
|
|
296
|
+
MIT — see [LICENSE](LICENSE).
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
Built by [Antonio Blago](https://antonioblago.de) | [skill-mind.com](https://skill-mind.com)
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/logo.png" alt="SkillMind" width="200"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# SkillMind
|
|
6
|
+
|
|
7
|
+
[](https://github.com/AntonioBlago/skillmind/releases)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](https://www.python.org/downloads/)
|
|
10
|
+
[](https://modelcontextprotocol.io)
|
|
11
|
+
[](https://skill-mind.com/)
|
|
12
|
+
|
|
13
|
+
**Active Skill Listener & Trainer** — the structured memory layer for AI coding assistants.
|
|
14
|
+
|
|
15
|
+
Replace flat markdown memory files with a vector-database-backed system that **listens**, **learns**, and **surfaces** only relevant context per conversation.
|
|
16
|
+
|
|
17
|
+
> 🌐 **[Visit skill-mind.com](https://skill-mind.com/)** — Documentation, setup guides, and live demos.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## The Problem
|
|
22
|
+
|
|
23
|
+
| Current state | SkillMind |
|
|
24
|
+
|---|---|
|
|
25
|
+
| 15+ flat markdown memory files | One vector DB with semantic search |
|
|
26
|
+
| Everything loaded into context | Only relevant memories surfaced |
|
|
27
|
+
| Manual save/forget | Auto-listen, auto-classify, auto-expire |
|
|
28
|
+
| No deduplication | Automatic dedup + consolidation |
|
|
29
|
+
| No protection | Sanitizer redacts API keys, PII before storing |
|
|
30
|
+
|
|
31
|
+
## Quick Start (3 Commands)
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# 1. Install
|
|
35
|
+
pip install skillmind[pinecone]
|
|
36
|
+
|
|
37
|
+
# 2. Initialize
|
|
38
|
+
skillmind init --backend pinecone
|
|
39
|
+
|
|
40
|
+
# 3. Import your existing Claude Code memories
|
|
41
|
+
skillmind import ~/.claude/projects/*/memory/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**That's it.** Your memories are now in a vector DB with semantic search.
|
|
45
|
+
|
|
46
|
+
## How It Works
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
┌────────────┐ ┌────────────┐ ┌─────────────────┐
|
|
50
|
+
│ LISTENER │───▶│ TRAINER │───▶│ VECTOR STORE │
|
|
51
|
+
│ │ │ │ │ │
|
|
52
|
+
│ • Git hooks │ │ • Classify │ │ • Chroma (local) │
|
|
53
|
+
│ • File watch│ │ • Sanitize │ │ • Pinecone │
|
|
54
|
+
│ • Convos │ │ • Dedup │ │ • Supabase │
|
|
55
|
+
│ • YouTube │ │ • Merge │ │ • Qdrant │
|
|
56
|
+
│ • Screen │ │ • Expire │ │ • FAISS │
|
|
57
|
+
└────────────┘ └────────────┘ └─────────────────┘
|
|
58
|
+
│
|
|
59
|
+
▼
|
|
60
|
+
┌─────────────────┐
|
|
61
|
+
│ CLAUDE CODE │
|
|
62
|
+
│ (MCP Server) │
|
|
63
|
+
│ 14 tools │
|
|
64
|
+
└─────────────────┘
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 5 Vector Store Backends
|
|
68
|
+
|
|
69
|
+
| Backend | Best for | Requires |
|
|
70
|
+
|---------|----------|----------|
|
|
71
|
+
| **ChromaDB** | Solo dev, local, default | `pip install skillmind[chroma]` |
|
|
72
|
+
| **Pinecone** | Multi-device cloud sync | API key |
|
|
73
|
+
| **Supabase** | SQL + vectors, team sharing | Supabase project |
|
|
74
|
+
| **Qdrant** | Self-hosted or cloud, great filtering | Qdrant server |
|
|
75
|
+
| **FAISS** | Offline, air-gapped, fastest | `pip install skillmind[faiss]` |
|
|
76
|
+
|
|
77
|
+
All backends implement the same interface — switch anytime with zero data loss.
|
|
78
|
+
|
|
79
|
+
## 14 MCP Tools for Claude Code
|
|
80
|
+
|
|
81
|
+
Once installed, Claude Code gets these tools:
|
|
82
|
+
|
|
83
|
+
| Tool | What it does |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `remember` | Store memory (auto-classified, sanitized, deduped) |
|
|
86
|
+
| `recall` | Semantic search across all memories |
|
|
87
|
+
| `forget` | Delete a memory |
|
|
88
|
+
| `update_memory` | Edit existing memory |
|
|
89
|
+
| `context` | Generate focused context for current file/topic |
|
|
90
|
+
| `consolidate` | Merge duplicates, expire stale, cleanup |
|
|
91
|
+
| `memory_stats` | Counts by type, backend info |
|
|
92
|
+
| `list_memories` | Filter by type/topic |
|
|
93
|
+
| `import_markdown_memories` | Bulk import from Claude Code markdown files |
|
|
94
|
+
| `learn_youtube` | Extract knowledge from YouTube video |
|
|
95
|
+
| `learn_youtube_channel` | Learn from channel's latest videos |
|
|
96
|
+
| `learn_video` | Learn from local video/screen recording |
|
|
97
|
+
| `record_screen` | Record screen to MP4 |
|
|
98
|
+
| `screenshot` | Capture screenshot |
|
|
99
|
+
|
|
100
|
+
### MCP Setup (Claude Code settings.json)
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"mcpServers": {
|
|
105
|
+
"skillmind": {
|
|
106
|
+
"command": "python",
|
|
107
|
+
"args": ["-m", "skillmind.mcp.server"],
|
|
108
|
+
"env": {
|
|
109
|
+
"PINECONE_API_KEY": "your-key",
|
|
110
|
+
"SKILLMIND_BACKEND": "pinecone"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Memory Types
|
|
118
|
+
|
|
119
|
+
| Type | What | Auto-expires |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| **user** | Role, preferences, expertise | No |
|
|
122
|
+
| **feedback** | Corrections, confirmed approaches | No |
|
|
123
|
+
| **project** | Deadlines, client context, status | 90 days |
|
|
124
|
+
| **reference** | External URLs, dashboards, wikis | No |
|
|
125
|
+
| **skill** | Patterns, workflows, how-tos | No |
|
|
126
|
+
|
|
127
|
+
## Learn From Video
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# YouTube
|
|
131
|
+
skillmind learn-youtube "https://youtube.com/watch?v=..."
|
|
132
|
+
|
|
133
|
+
# YouTube channel (latest 5 videos)
|
|
134
|
+
skillmind learn-youtube-channel "UCxxxxx" --limit 5
|
|
135
|
+
|
|
136
|
+
# Local video file
|
|
137
|
+
skillmind learn-video recording.mp4
|
|
138
|
+
|
|
139
|
+
# Screen recording
|
|
140
|
+
skillmind record-screen --duration 60 --fps 15
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Built-in Sanitizer
|
|
144
|
+
|
|
145
|
+
API keys, emails, phone numbers, IBANs, and PII are **automatically redacted** before storing:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Input: "My Pinecone key is pcsk_2mrRyA_9BSbdn5i..."
|
|
149
|
+
Stored: "My Pinecone key is [REDACTED:PINECONE_KEY]"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Configurable allowlists, custom patterns, and name anonymization.
|
|
153
|
+
|
|
154
|
+
## CLI Reference
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
skillmind init --backend chroma # Initialize with backend
|
|
158
|
+
skillmind remember "content" # Store a memory
|
|
159
|
+
skillmind recall "query" # Semantic search
|
|
160
|
+
skillmind list # List all memories
|
|
161
|
+
skillmind list --type feedback # Filter by type
|
|
162
|
+
skillmind forget <id> # Delete
|
|
163
|
+
skillmind import # Import Claude Code memories
|
|
164
|
+
skillmind consolidate # Cleanup & deduplicate
|
|
165
|
+
skillmind context # Generate context for current dir
|
|
166
|
+
skillmind stats # Show statistics
|
|
167
|
+
skillmind serve # Start MCP server
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Installation
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Core + one backend
|
|
174
|
+
pip install skillmind[chroma] # Local (default)
|
|
175
|
+
pip install skillmind[pinecone] # Cloud sync
|
|
176
|
+
pip install skillmind[supabase] # SQL + vectors
|
|
177
|
+
pip install skillmind[qdrant] # Self-hosted
|
|
178
|
+
pip install skillmind[faiss] # Offline
|
|
179
|
+
|
|
180
|
+
# Add-ons
|
|
181
|
+
pip install skillmind[youtube] # YouTube learning
|
|
182
|
+
pip install skillmind[video] # Screen recording + OCR
|
|
183
|
+
pip install skillmind[mcp] # MCP server for Claude Code
|
|
184
|
+
|
|
185
|
+
# Everything
|
|
186
|
+
pip install skillmind[all]
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Architecture
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
src/skillmind/
|
|
193
|
+
├── models.py # Memory, QueryFilter, QueryResult (Pydantic)
|
|
194
|
+
├── config.py # SkillMindConfig (YAML-based)
|
|
195
|
+
├── embeddings.py # EmbeddingEngine (sentence-transformers | OpenAI)
|
|
196
|
+
├── trainer.py # Auto-classify, dedup, merge, consolidate
|
|
197
|
+
├── sanitizer.py # Redact API keys, PII before storage
|
|
198
|
+
├── listener.py # GitListener, FileListener, ConversationListener
|
|
199
|
+
├── context.py # ContextGenerator — dynamic context injection
|
|
200
|
+
├── migration.py # Import existing Claude Code markdown memories
|
|
201
|
+
├── store/
|
|
202
|
+
│ ├── base.py # Abstract MemoryStore interface
|
|
203
|
+
│ ├── chroma_store.py # ChromaDB backend
|
|
204
|
+
│ ├── pinecone_store.py # Pinecone backend
|
|
205
|
+
│ ├── supabase_store.py # Supabase/pgvector backend
|
|
206
|
+
│ ├── qdrant_store.py # Qdrant backend
|
|
207
|
+
│ └── faiss_store.py # FAISS + JSON backend
|
|
208
|
+
├── video/
|
|
209
|
+
│ ├── youtube_learner.py # YouTube transcript extraction
|
|
210
|
+
│ ├── video_learner.py # Local video learning
|
|
211
|
+
│ └── screen_recorder.py # Screen capture
|
|
212
|
+
├── mcp/
|
|
213
|
+
│ └── server.py # FastMCP server (14 tools)
|
|
214
|
+
└── cli/
|
|
215
|
+
└── main.py # CLI (click-based)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Contributing
|
|
219
|
+
|
|
220
|
+
PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
221
|
+
|
|
222
|
+
## License
|
|
223
|
+
|
|
224
|
+
MIT — see [LICENSE](LICENSE).
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
Built by [Antonio Blago](https://antonioblago.de) | [skill-mind.com](https://skill-mind.com)
|