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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.claude/CLAUDE.md +3 -0
  3. data/.claude/memory.sqlite3 +0 -0
  4. data/.claude/output-styles/memory-aware.md +21 -0
  5. data/.claude/rules/claude_memory.generated.md +21 -0
  6. data/.claude/settings.json +62 -0
  7. data/.claude/settings.local.json +21 -0
  8. data/.claude-plugin/marketplace.json +13 -0
  9. data/.claude-plugin/plugin.json +10 -0
  10. data/.mcp.json +11 -0
  11. data/CHANGELOG.md +36 -0
  12. data/CLAUDE.md +224 -0
  13. data/CODE_OF_CONDUCT.md +10 -0
  14. data/LICENSE.txt +21 -0
  15. data/README.md +212 -0
  16. data/Rakefile +10 -0
  17. data/commands/analyze.md +29 -0
  18. data/commands/recall.md +17 -0
  19. data/commands/remember.md +26 -0
  20. data/docs/demo.md +126 -0
  21. data/docs/organizational_memory_playbook.md +291 -0
  22. data/docs/plan.md +411 -0
  23. data/docs/plugin.md +202 -0
  24. data/docs/updated_plan.md +453 -0
  25. data/exe/claude-memory +8 -0
  26. data/hooks/hooks.json +59 -0
  27. data/lib/claude_memory/cli.rb +869 -0
  28. data/lib/claude_memory/distill/distiller.rb +11 -0
  29. data/lib/claude_memory/distill/extraction.rb +29 -0
  30. data/lib/claude_memory/distill/json_schema.md +78 -0
  31. data/lib/claude_memory/distill/null_distiller.rb +123 -0
  32. data/lib/claude_memory/hook/handler.rb +49 -0
  33. data/lib/claude_memory/index/lexical_fts.rb +58 -0
  34. data/lib/claude_memory/ingest/ingester.rb +46 -0
  35. data/lib/claude_memory/ingest/transcript_reader.rb +21 -0
  36. data/lib/claude_memory/mcp/server.rb +127 -0
  37. data/lib/claude_memory/mcp/tools.rb +409 -0
  38. data/lib/claude_memory/publish.rb +201 -0
  39. data/lib/claude_memory/recall.rb +360 -0
  40. data/lib/claude_memory/resolve/predicate_policy.rb +30 -0
  41. data/lib/claude_memory/resolve/resolver.rb +152 -0
  42. data/lib/claude_memory/store/sqlite_store.rb +340 -0
  43. data/lib/claude_memory/store/store_manager.rb +139 -0
  44. data/lib/claude_memory/sweep/sweeper.rb +80 -0
  45. data/lib/claude_memory/templates/hooks.example.json +74 -0
  46. data/lib/claude_memory/templates/output-styles/memory-aware.md +21 -0
  47. data/lib/claude_memory/version.rb +5 -0
  48. data/lib/claude_memory.rb +36 -0
  49. data/sig/claude_memory.rbs +4 -0
  50. data/skills/analyze/SKILL.md +126 -0
  51. data/skills/memory/SKILL.md +82 -0
  52. 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: []