claude_memory 0.1.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.
- checksums.yaml +7 -0
- data/.claude/CLAUDE.md +3 -0
- data/.claude/memory.sqlite3 +0 -0
- data/.claude/output-styles/memory-aware.md +21 -0
- data/.claude/rules/claude_memory.generated.md +21 -0
- data/.claude/settings.json +62 -0
- data/.claude/settings.local.json +21 -0
- data/.claude-plugin/marketplace.json +13 -0
- data/.claude-plugin/plugin.json +10 -0
- data/.mcp.json +11 -0
- data/CHANGELOG.md +36 -0
- data/CLAUDE.md +224 -0
- data/CODE_OF_CONDUCT.md +10 -0
- data/LICENSE.txt +21 -0
- data/README.md +212 -0
- data/Rakefile +10 -0
- data/commands/analyze.md +29 -0
- data/commands/recall.md +17 -0
- data/commands/remember.md +26 -0
- data/docs/demo.md +126 -0
- data/docs/organizational_memory_playbook.md +291 -0
- data/docs/plan.md +411 -0
- data/docs/plugin.md +202 -0
- data/docs/updated_plan.md +453 -0
- data/exe/claude-memory +8 -0
- data/hooks/hooks.json +59 -0
- data/lib/claude_memory/cli.rb +869 -0
- data/lib/claude_memory/distill/distiller.rb +11 -0
- data/lib/claude_memory/distill/extraction.rb +29 -0
- data/lib/claude_memory/distill/json_schema.md +78 -0
- data/lib/claude_memory/distill/null_distiller.rb +123 -0
- data/lib/claude_memory/hook/handler.rb +49 -0
- data/lib/claude_memory/index/lexical_fts.rb +58 -0
- data/lib/claude_memory/ingest/ingester.rb +46 -0
- data/lib/claude_memory/ingest/transcript_reader.rb +21 -0
- data/lib/claude_memory/mcp/server.rb +127 -0
- data/lib/claude_memory/mcp/tools.rb +409 -0
- data/lib/claude_memory/publish.rb +201 -0
- data/lib/claude_memory/recall.rb +360 -0
- data/lib/claude_memory/resolve/predicate_policy.rb +30 -0
- data/lib/claude_memory/resolve/resolver.rb +152 -0
- data/lib/claude_memory/store/sqlite_store.rb +340 -0
- data/lib/claude_memory/store/store_manager.rb +139 -0
- data/lib/claude_memory/sweep/sweeper.rb +80 -0
- data/lib/claude_memory/templates/hooks.example.json +74 -0
- data/lib/claude_memory/templates/output-styles/memory-aware.md +21 -0
- data/lib/claude_memory/version.rb +5 -0
- data/lib/claude_memory.rb +36 -0
- data/sig/claude_memory.rbs +4 -0
- data/skills/analyze/SKILL.md +126 -0
- data/skills/memory/SKILL.md +82 -0
- metadata +123 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-analysis
|
|
3
|
+
description: Knowledge about analyzing projects for tech stack, frameworks, tools, and conventions. Use when asked to understand or learn about a project's structure.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Analyze Project Skill
|
|
8
|
+
|
|
9
|
+
Analyze the current project and store facts about it in long-term memory.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. **Read key project files** to understand the tech stack
|
|
14
|
+
2. **Extract facts** about languages, frameworks, tools, conventions
|
|
15
|
+
3. **Store facts** using `memory.store_extraction`
|
|
16
|
+
|
|
17
|
+
## Files to Read
|
|
18
|
+
|
|
19
|
+
Read these files (if they exist) to understand the project:
|
|
20
|
+
|
|
21
|
+
### Package/Dependency Files
|
|
22
|
+
- `Gemfile` - Ruby dependencies (Rails, RSpec, etc.)
|
|
23
|
+
- `package.json` - JavaScript/TypeScript dependencies
|
|
24
|
+
- `pyproject.toml` or `requirements.txt` - Python dependencies
|
|
25
|
+
- `Cargo.toml` - Rust dependencies
|
|
26
|
+
- `go.mod` - Go dependencies
|
|
27
|
+
- `pom.xml` or `build.gradle` - Java dependencies
|
|
28
|
+
|
|
29
|
+
### Configuration Files
|
|
30
|
+
- `README.md` - Project overview and setup instructions
|
|
31
|
+
- `tsconfig.json` - TypeScript configuration
|
|
32
|
+
- `.eslintrc*` or `eslint.config.*` - ESLint configuration
|
|
33
|
+
- `.prettierrc*` - Prettier configuration
|
|
34
|
+
- `.rubocop.yml` or `.standard.yml` - Ruby linting
|
|
35
|
+
- `Dockerfile` - Container configuration
|
|
36
|
+
- `.github/workflows/*.yml` - CI/CD configuration
|
|
37
|
+
|
|
38
|
+
### Convention Files
|
|
39
|
+
- `.editorconfig` - Editor configuration
|
|
40
|
+
- `CLAUDE.md` or `AGENTS.md` - AI assistant instructions
|
|
41
|
+
|
|
42
|
+
## What to Extract
|
|
43
|
+
|
|
44
|
+
Look for and store facts about:
|
|
45
|
+
|
|
46
|
+
| Category | Predicate | Examples |
|
|
47
|
+
|----------|-----------|----------|
|
|
48
|
+
| Languages | `uses_language` | Ruby, TypeScript, Python, Go, Rust |
|
|
49
|
+
| Frameworks | `uses_framework` | Rails, React, Next.js, Django, FastAPI |
|
|
50
|
+
| Tools | `uses_tool` | RSpec, Jest, ESLint, Prettier, Docker |
|
|
51
|
+
| Databases | `uses_database` | PostgreSQL, MySQL, Redis, MongoDB |
|
|
52
|
+
| Package Manager | `uses_package_manager` | Bundler, npm, pnpm, Poetry, Cargo |
|
|
53
|
+
| CI/CD | `uses_ci` | GitHub Actions, CircleCI, GitLab CI |
|
|
54
|
+
| Conventions | `has_convention` | EditorConfig, 2-space indentation |
|
|
55
|
+
|
|
56
|
+
## Example Analysis
|
|
57
|
+
|
|
58
|
+
After reading `Gemfile`:
|
|
59
|
+
```ruby
|
|
60
|
+
source 'https://rubygems.org'
|
|
61
|
+
gem 'rails', '~> 7.0'
|
|
62
|
+
gem 'pg'
|
|
63
|
+
gem 'rspec-rails', group: :test
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Store these facts:
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"entities": [
|
|
70
|
+
{"type": "language", "name": "Ruby"},
|
|
71
|
+
{"type": "framework", "name": "Rails"},
|
|
72
|
+
{"type": "database", "name": "PostgreSQL"},
|
|
73
|
+
{"type": "tool", "name": "RSpec"}
|
|
74
|
+
],
|
|
75
|
+
"facts": [
|
|
76
|
+
{
|
|
77
|
+
"subject": "repo",
|
|
78
|
+
"predicate": "uses_language",
|
|
79
|
+
"object": "Ruby",
|
|
80
|
+
"quote": "Gemfile present",
|
|
81
|
+
"strength": "stated"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"subject": "repo",
|
|
85
|
+
"predicate": "uses_framework",
|
|
86
|
+
"object": "Rails",
|
|
87
|
+
"quote": "gem 'rails', '~> 7.0'",
|
|
88
|
+
"strength": "stated"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"subject": "repo",
|
|
92
|
+
"predicate": "uses_database",
|
|
93
|
+
"object": "PostgreSQL",
|
|
94
|
+
"quote": "gem 'pg'",
|
|
95
|
+
"strength": "stated"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"subject": "repo",
|
|
99
|
+
"predicate": "uses_tool",
|
|
100
|
+
"object": "RSpec",
|
|
101
|
+
"quote": "gem 'rspec-rails'",
|
|
102
|
+
"strength": "stated"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"subject": "repo",
|
|
106
|
+
"predicate": "uses_package_manager",
|
|
107
|
+
"object": "Bundler",
|
|
108
|
+
"quote": "Gemfile present",
|
|
109
|
+
"strength": "stated"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Best Practices
|
|
116
|
+
|
|
117
|
+
1. **Check what exists first**: Use `memory.recall` with broad query like "uses" to see existing facts
|
|
118
|
+
2. **Don't duplicate**: Skip facts that are already stored
|
|
119
|
+
3. **Include quotes**: Reference the specific line or file where you found the information
|
|
120
|
+
4. **Use `stated` strength**: For explicit declarations in config files
|
|
121
|
+
5. **Be selective**: Only store durable, useful facts—not every dependency
|
|
122
|
+
|
|
123
|
+
## Scope
|
|
124
|
+
|
|
125
|
+
- Use `scope_hint: "project"` for project-specific facts (default)
|
|
126
|
+
- Use `scope_hint: "global"` for user preferences found in global config files
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory
|
|
3
|
+
description: Store and recall long-term memory. Use when persisting facts learned during conversations or recalling stored knowledge about projects and preferences.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Memory Skill
|
|
7
|
+
|
|
8
|
+
You have access to a long-term memory system. Use it to remember important facts across sessions.
|
|
9
|
+
|
|
10
|
+
## When to Store Facts
|
|
11
|
+
|
|
12
|
+
After completing a task or learning something important about the project, store durable facts using `memory.store_extraction`. Look for:
|
|
13
|
+
|
|
14
|
+
- **Tech stack**: databases, frameworks, languages, platforms
|
|
15
|
+
- **Conventions**: coding standards, naming patterns, preferences
|
|
16
|
+
- **Decisions**: architectural choices, design decisions
|
|
17
|
+
- **Preferences**: user preferences that should persist
|
|
18
|
+
|
|
19
|
+
## How to Store Facts
|
|
20
|
+
|
|
21
|
+
Call the `memory.store_extraction` MCP tool with:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"entities": [
|
|
26
|
+
{"type": "database", "name": "postgresql"}
|
|
27
|
+
],
|
|
28
|
+
"facts": [
|
|
29
|
+
{
|
|
30
|
+
"subject": "repo",
|
|
31
|
+
"predicate": "uses_database",
|
|
32
|
+
"object": "postgresql",
|
|
33
|
+
"quote": "We use PostgreSQL for persistence",
|
|
34
|
+
"strength": "stated",
|
|
35
|
+
"scope_hint": "project"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Predicates
|
|
42
|
+
|
|
43
|
+
| Predicate | Use for | Example |
|
|
44
|
+
|-----------|---------|---------|
|
|
45
|
+
| `uses_database` | Database choice | postgresql, redis |
|
|
46
|
+
| `uses_framework` | Framework | rails, react, nextjs |
|
|
47
|
+
| `deployment_platform` | Where deployed | vercel, aws, heroku |
|
|
48
|
+
| `convention` | Coding standard | "4-space indentation" |
|
|
49
|
+
| `decision` | Architectural choice | "Use microservices" |
|
|
50
|
+
| `auth_method` | Auth approach | "JWT tokens" |
|
|
51
|
+
|
|
52
|
+
### Scope
|
|
53
|
+
|
|
54
|
+
- `project`: Only this project (default)
|
|
55
|
+
- `global`: All projects (user preferences)
|
|
56
|
+
|
|
57
|
+
Use `global` when user says "always", "in all projects", or "my preference".
|
|
58
|
+
|
|
59
|
+
## How to Recall Facts
|
|
60
|
+
|
|
61
|
+
Use `memory.recall` to search for relevant facts:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{"query": "database", "limit": 10}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Available Tools
|
|
68
|
+
|
|
69
|
+
- `memory.recall` - Search facts by query
|
|
70
|
+
- `memory.store_extraction` - Store new facts
|
|
71
|
+
- `memory.explain` - Get fact details with provenance
|
|
72
|
+
- `memory.promote` - Promote project fact to global
|
|
73
|
+
- `memory.status` - Check database health
|
|
74
|
+
- `memory.changes` - Recent updates
|
|
75
|
+
- `memory.conflicts` - Open contradictions
|
|
76
|
+
|
|
77
|
+
## Best Practices
|
|
78
|
+
|
|
79
|
+
1. **Be selective**: Only store durable facts that will be useful later
|
|
80
|
+
2. **Include quotes**: Add the source text for provenance
|
|
81
|
+
3. **Set scope correctly**: Project-specific vs global preferences
|
|
82
|
+
4. **Check before storing**: Use `memory.recall` to avoid duplicates
|
metadata
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: claude_memory
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Valentino Stoll
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: sequel
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '5.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '5.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: sqlite3
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.0'
|
|
40
|
+
description: Turn-key Ruby gem providing Claude Code with instant, high-quality, long-term,
|
|
41
|
+
self-managed memory using Claude Code Hooks + MCP + Output Style.
|
|
42
|
+
email:
|
|
43
|
+
- v@codenamev.com
|
|
44
|
+
executables:
|
|
45
|
+
- claude-memory
|
|
46
|
+
extensions: []
|
|
47
|
+
extra_rdoc_files: []
|
|
48
|
+
files:
|
|
49
|
+
- ".claude-plugin/marketplace.json"
|
|
50
|
+
- ".claude-plugin/plugin.json"
|
|
51
|
+
- ".claude/CLAUDE.md"
|
|
52
|
+
- ".claude/memory.sqlite3"
|
|
53
|
+
- ".claude/output-styles/memory-aware.md"
|
|
54
|
+
- ".claude/rules/claude_memory.generated.md"
|
|
55
|
+
- ".claude/settings.json"
|
|
56
|
+
- ".claude/settings.local.json"
|
|
57
|
+
- ".mcp.json"
|
|
58
|
+
- CHANGELOG.md
|
|
59
|
+
- CLAUDE.md
|
|
60
|
+
- CODE_OF_CONDUCT.md
|
|
61
|
+
- LICENSE.txt
|
|
62
|
+
- README.md
|
|
63
|
+
- Rakefile
|
|
64
|
+
- commands/analyze.md
|
|
65
|
+
- commands/recall.md
|
|
66
|
+
- commands/remember.md
|
|
67
|
+
- docs/demo.md
|
|
68
|
+
- docs/organizational_memory_playbook.md
|
|
69
|
+
- docs/plan.md
|
|
70
|
+
- docs/plugin.md
|
|
71
|
+
- docs/updated_plan.md
|
|
72
|
+
- exe/claude-memory
|
|
73
|
+
- hooks/hooks.json
|
|
74
|
+
- lib/claude_memory.rb
|
|
75
|
+
- lib/claude_memory/cli.rb
|
|
76
|
+
- lib/claude_memory/distill/distiller.rb
|
|
77
|
+
- lib/claude_memory/distill/extraction.rb
|
|
78
|
+
- lib/claude_memory/distill/json_schema.md
|
|
79
|
+
- lib/claude_memory/distill/null_distiller.rb
|
|
80
|
+
- lib/claude_memory/hook/handler.rb
|
|
81
|
+
- lib/claude_memory/index/lexical_fts.rb
|
|
82
|
+
- lib/claude_memory/ingest/ingester.rb
|
|
83
|
+
- lib/claude_memory/ingest/transcript_reader.rb
|
|
84
|
+
- lib/claude_memory/mcp/server.rb
|
|
85
|
+
- lib/claude_memory/mcp/tools.rb
|
|
86
|
+
- lib/claude_memory/publish.rb
|
|
87
|
+
- lib/claude_memory/recall.rb
|
|
88
|
+
- lib/claude_memory/resolve/predicate_policy.rb
|
|
89
|
+
- lib/claude_memory/resolve/resolver.rb
|
|
90
|
+
- lib/claude_memory/store/sqlite_store.rb
|
|
91
|
+
- lib/claude_memory/store/store_manager.rb
|
|
92
|
+
- lib/claude_memory/sweep/sweeper.rb
|
|
93
|
+
- lib/claude_memory/templates/hooks.example.json
|
|
94
|
+
- lib/claude_memory/templates/output-styles/memory-aware.md
|
|
95
|
+
- lib/claude_memory/version.rb
|
|
96
|
+
- sig/claude_memory.rbs
|
|
97
|
+
- skills/analyze/SKILL.md
|
|
98
|
+
- skills/memory/SKILL.md
|
|
99
|
+
homepage: https://github.com/codenamev/claude_memory
|
|
100
|
+
licenses:
|
|
101
|
+
- MIT
|
|
102
|
+
metadata:
|
|
103
|
+
homepage_uri: https://github.com/codenamev/claude_memory
|
|
104
|
+
source_code_uri: https://github.com/codenamev/claude_memory
|
|
105
|
+
changelog_uri: https://github.com/codenamev/claude_memory/blob/main/CHANGELOG.md
|
|
106
|
+
rdoc_options: []
|
|
107
|
+
require_paths:
|
|
108
|
+
- lib
|
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: 3.2.0
|
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - ">="
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '0'
|
|
119
|
+
requirements: []
|
|
120
|
+
rubygems_version: 4.0.4
|
|
121
|
+
specification_version: 4
|
|
122
|
+
summary: Long-term, self-managed memory for Claude Code
|
|
123
|
+
test_files: []
|