claude_memory 0.1.0 → 0.2.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/.mind.mv2.aLCUZd +0 -0
  3. data/.claude/memory.sqlite3 +0 -0
  4. data/.claude/rules/claude_memory.generated.md +7 -1
  5. data/.claude/settings.json +0 -4
  6. data/.claude/settings.local.json +4 -1
  7. data/.claude-plugin/plugin.json +1 -1
  8. data/.claude.json +11 -0
  9. data/.ruby-version +1 -0
  10. data/CHANGELOG.md +62 -11
  11. data/CLAUDE.md +87 -24
  12. data/README.md +76 -159
  13. data/docs/EXAMPLES.md +436 -0
  14. data/docs/RELEASE_NOTES_v0.2.0.md +179 -0
  15. data/docs/RUBY_COMMUNITY_POST_v0.2.0.md +582 -0
  16. data/docs/SOCIAL_MEDIA_v0.2.0.md +420 -0
  17. data/docs/architecture.md +360 -0
  18. data/docs/expert_review.md +1718 -0
  19. data/docs/feature_adoption_plan.md +1241 -0
  20. data/docs/feature_adoption_plan_revised.md +2374 -0
  21. data/docs/improvements.md +1325 -0
  22. data/docs/quality_review.md +1544 -0
  23. data/docs/review_summary.md +480 -0
  24. data/lefthook.yml +10 -0
  25. data/lib/claude_memory/cli.rb +16 -844
  26. data/lib/claude_memory/commands/base_command.rb +95 -0
  27. data/lib/claude_memory/commands/changes_command.rb +39 -0
  28. data/lib/claude_memory/commands/conflicts_command.rb +37 -0
  29. data/lib/claude_memory/commands/db_init_command.rb +40 -0
  30. data/lib/claude_memory/commands/doctor_command.rb +147 -0
  31. data/lib/claude_memory/commands/explain_command.rb +65 -0
  32. data/lib/claude_memory/commands/help_command.rb +37 -0
  33. data/lib/claude_memory/commands/hook_command.rb +106 -0
  34. data/lib/claude_memory/commands/ingest_command.rb +47 -0
  35. data/lib/claude_memory/commands/init_command.rb +218 -0
  36. data/lib/claude_memory/commands/promote_command.rb +30 -0
  37. data/lib/claude_memory/commands/publish_command.rb +36 -0
  38. data/lib/claude_memory/commands/recall_command.rb +61 -0
  39. data/lib/claude_memory/commands/registry.rb +55 -0
  40. data/lib/claude_memory/commands/search_command.rb +43 -0
  41. data/lib/claude_memory/commands/serve_mcp_command.rb +16 -0
  42. data/lib/claude_memory/commands/sweep_command.rb +36 -0
  43. data/lib/claude_memory/commands/version_command.rb +13 -0
  44. data/lib/claude_memory/configuration.rb +38 -0
  45. data/lib/claude_memory/core/fact_id.rb +41 -0
  46. data/lib/claude_memory/core/null_explanation.rb +47 -0
  47. data/lib/claude_memory/core/null_fact.rb +30 -0
  48. data/lib/claude_memory/core/result.rb +143 -0
  49. data/lib/claude_memory/core/session_id.rb +37 -0
  50. data/lib/claude_memory/core/token_estimator.rb +33 -0
  51. data/lib/claude_memory/core/transcript_path.rb +37 -0
  52. data/lib/claude_memory/domain/conflict.rb +51 -0
  53. data/lib/claude_memory/domain/entity.rb +51 -0
  54. data/lib/claude_memory/domain/fact.rb +70 -0
  55. data/lib/claude_memory/domain/provenance.rb +48 -0
  56. data/lib/claude_memory/hook/exit_codes.rb +18 -0
  57. data/lib/claude_memory/hook/handler.rb +7 -2
  58. data/lib/claude_memory/index/index_query.rb +89 -0
  59. data/lib/claude_memory/index/index_query_logic.rb +41 -0
  60. data/lib/claude_memory/index/query_options.rb +67 -0
  61. data/lib/claude_memory/infrastructure/file_system.rb +29 -0
  62. data/lib/claude_memory/infrastructure/in_memory_file_system.rb +32 -0
  63. data/lib/claude_memory/ingest/content_sanitizer.rb +42 -0
  64. data/lib/claude_memory/ingest/ingester.rb +3 -0
  65. data/lib/claude_memory/ingest/privacy_tag.rb +48 -0
  66. data/lib/claude_memory/mcp/tools.rb +174 -1
  67. data/lib/claude_memory/publish.rb +29 -20
  68. data/lib/claude_memory/recall.rb +164 -16
  69. data/lib/claude_memory/resolve/resolver.rb +41 -37
  70. data/lib/claude_memory/shortcuts.rb +56 -0
  71. data/lib/claude_memory/store/store_manager.rb +35 -32
  72. data/lib/claude_memory/templates/hooks.example.json +0 -4
  73. data/lib/claude_memory/version.rb +1 -1
  74. data/lib/claude_memory.rb +59 -21
  75. metadata +55 -1
@@ -0,0 +1,582 @@
1
+ # Ruby Community Posts for ClaudeMemory v0.2.0
2
+
3
+ ## Ruby Weekly Submission
4
+
5
+ ### Email Template
6
+
7
+ **To:** editor@rubyweekly.com
8
+ **Subject:** [Submission] ClaudeMemory v0.2.0 - Long-term memory for Claude Code
9
+
10
+ ```
11
+ Hi Ruby Weekly team,
12
+
13
+ I'd like to submit ClaudeMemory v0.2.0 for consideration.
14
+
15
+ **Title:** ClaudeMemory v0.2.0 – Privacy-first long-term memory for Claude Code
16
+
17
+ **Short Description:**
18
+ A Ruby gem providing persistent memory for Claude Code. V0.2.0 adds privacy tags for sensitive data, progressive disclosure (10x token reduction), and semantic shortcuts. Built with Ruby 3.2+, Sequel, and SQLite. 583 test examples, zero external dependencies.
19
+
20
+ **Link:** https://github.com/codenamev/claude_memory
21
+
22
+ **Release Notes:** https://github.com/codenamev/claude_memory/blob/main/docs/RELEASE_NOTES_v0.2.0.md
23
+
24
+ **Why interesting for Ruby developers:**
25
+ - Clean Ruby architecture with DDD principles
26
+ - Sequel ORM usage patterns
27
+ - SQLite FTS5 for full-text search
28
+ - Value objects and null objects in Ruby
29
+ - 583 RSpec examples with 100% critical path coverage
30
+
31
+ Thanks for your consideration!
32
+
33
+ Valentino Stoll
34
+ https://github.com/codenamev
35
+ valentino@hanamirb.org
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Reddit r/ruby Post
41
+
42
+ ### Title
43
+ ```
44
+ [Release] ClaudeMemory v0.2.0 - Privacy-first long-term memory for Claude Code
45
+ ```
46
+
47
+ ### Post Body
48
+
49
+ ```markdown
50
+ Hi r/ruby!
51
+
52
+ I'm excited to share **ClaudeMemory v0.2.0**, a Ruby gem that gives Claude Code persistent memory across conversations.
53
+
54
+ ## What Problem Does It Solve?
55
+
56
+ Claude Code (and most AI coding assistants) forget everything after each session. You have to repeatedly explain your tech stack, preferences, and decisions. ClaudeMemory solves this by automatically extracting and storing durable facts.
57
+
58
+ ## Example Workflow
59
+
60
+ **Session 1:**
61
+ ```ruby
62
+ You: "I'm building a Rails 7 app with PostgreSQL, deploying to Heroku"
63
+ Claude: [helps with setup]
64
+ # Behind the scenes: facts stored automatically
65
+ ```
66
+
67
+ **Session 2 (weeks later):**
68
+ ```ruby
69
+ You: "Help me add a background job"
70
+ Claude: "Based on my memory, you're using Rails 7 with PostgreSQL..."
71
+ # Claude recalls context automatically
72
+ ```
73
+
74
+ ## What's New in v0.2.0
75
+
76
+ ### 🔒 Privacy Tag System
77
+
78
+ Exclude sensitive data from memory:
79
+
80
+ ```ruby
81
+ "API key is <private>sk-abc123</private>"
82
+ # Sanitized to: "API key is "
83
+ # The key is NEVER stored or indexed
84
+ ```
85
+
86
+ Implementation uses a comprehensive `ContentSanitizer` module with:
87
+ - Support for `<private>`, `<no-memory>`, `<secret>` tags
88
+ - ReDoS protection (100-tag limit)
89
+ - 100% test coverage for security-critical code
90
+ - Safe handling of malformed/nested tags
91
+
92
+ ### ⚡ Progressive Disclosure (10x Performance)
93
+
94
+ Two-phase query system reduces token usage:
95
+
96
+ ```ruby
97
+ # Phase 1: Lightweight index
98
+ recall_index(query: "database")
99
+ # Returns: ~50 tokens per fact (preview only)
100
+
101
+ # Phase 2: Full details on demand
102
+ recall_details(fact_id: 42)
103
+ # Returns: Complete provenance, quotes, relationships
104
+ ```
105
+
106
+ **Token savings:**
107
+ - Before: 2,500 tokens (5 facts × 500 tokens)
108
+ - After: 250 tokens (5 facts × 50 tokens)
109
+ - **10x reduction!**
110
+
111
+ ### 🎯 Semantic Shortcuts
112
+
113
+ Pre-configured queries for common use cases:
114
+
115
+ ```ruby
116
+ memory.decisions # Architectural decisions
117
+ memory.conventions # Coding standards
118
+ memory.architecture # Framework choices
119
+ ```
120
+
121
+ Implemented with a centralized `Shortcuts` query builder using predicate-based configuration.
122
+
123
+ ## Technical Details
124
+
125
+ ### Architecture
126
+
127
+ Clean Ruby architecture following Domain-Driven Design:
128
+
129
+ ```
130
+ Application Layer (CLI + Commands)
131
+
132
+ Core Domain Layer (Fact, Entity, Provenance, Conflict)
133
+
134
+ Business Logic Layer (Recall, Resolve, Distill)
135
+
136
+ Infrastructure Layer (SQLiteStore, FileSystem, Index)
137
+ ```
138
+
139
+ ### Tech Stack
140
+
141
+ - **Ruby:** 3.2+ with `frozen_string_literal: true`
142
+ - **Database:** SQLite3 (~> 2.0)
143
+ - **ORM:** Sequel (~> 5.0)
144
+ - **Testing:** RSpec with 583 examples
145
+ - **Linting:** Standard Ruby
146
+ - **FTS:** SQLite FTS5 (no vector embeddings needed)
147
+
148
+ ### Code Quality
149
+
150
+ - **Value Objects:** `SessionId`, `TranscriptPath`, `FactId`, `PrivacyTag`, `QueryOptions`
151
+ - **Null Objects:** `NullFact`, `NullExplanation`
152
+ - **Command Pattern:** 16 focused command classes (CLI is 41 lines)
153
+ - **Query Optimization:** N+1 elimination (2N+1 → 3 queries via batch loading)
154
+ - **Test Coverage:** 100% for `ContentSanitizer` and `TokenEstimator`
155
+
156
+ ## Installation
157
+
158
+ ```bash
159
+ gem install claude_memory
160
+ claude-memory init --global
161
+ claude-memory doctor
162
+ ```
163
+
164
+ Or add to Gemfile:
165
+
166
+ ```ruby
167
+ gem 'claude_memory'
168
+ ```
169
+
170
+ ## Integration with Claude Code
171
+
172
+ ClaudeMemory integrates via:
173
+
174
+ 1. **MCP Tools** - Memory operations exposed to Claude
175
+ 2. **Hooks** - Automatic ingestion on session stop
176
+ 3. **Skills** - `/memory` command for manual interaction
177
+
178
+ No API keys required! Uses Claude Code's own session for fact extraction.
179
+
180
+ ## Example Usage
181
+
182
+ ### CLI
183
+
184
+ ```bash
185
+ # Initialize
186
+ claude-memory init
187
+
188
+ # Ingest content
189
+ claude-memory ingest --source claude_code \
190
+ --session-id sess-123 \
191
+ --transcript-path ~/.claude/projects/myproject/latest.jsonl
192
+
193
+ # Recall facts
194
+ claude-memory recall "database"
195
+
196
+ # Explain with provenance
197
+ claude-memory explain 42
198
+
199
+ # Check health
200
+ claude-memory doctor
201
+ ```
202
+
203
+ ### MCP Tools (in Claude Code)
204
+
205
+ ```ruby
206
+ memory.recall(query: "database", scope: "project")
207
+ memory.store_extraction(facts: [...], entities: [...])
208
+ memory.promote(fact_id: 42) # Promote to global scope
209
+ memory.decisions # Semantic shortcut
210
+ ```
211
+
212
+ ## Code Examples
213
+
214
+ ### Privacy Sanitization
215
+
216
+ ```ruby
217
+ module ClaudeMemory
218
+ class ContentSanitizer
219
+ PRIVACY_TAGS = %w[private no-memory secret].freeze
220
+ MAX_TAGS = 100
221
+
222
+ def self.sanitize(content)
223
+ tag_count = 0
224
+ content.gsub(/<(#{PRIVACY_TAGS.join("|")})>.*?<\/\1>/mi) do
225
+ tag_count += 1
226
+ raise ReDoSError if tag_count > MAX_TAGS
227
+ ""
228
+ end
229
+ end
230
+ end
231
+ end
232
+ ```
233
+
234
+ ### Progressive Disclosure
235
+
236
+ ```ruby
237
+ module ClaudeMemory
238
+ class Recall
239
+ def recall_index(query:, limit: 10)
240
+ # Lightweight preview
241
+ facts = search_fts(query).limit(limit)
242
+ facts.map do |fact|
243
+ {
244
+ id: fact.id,
245
+ preview: "#{fact.subject} #{fact.predicate} #{fact.object}",
246
+ confidence: fact.confidence,
247
+ scope: fact.scope,
248
+ tokens: TokenEstimator.estimate_preview(fact) # ~50 tokens
249
+ }
250
+ end
251
+ end
252
+
253
+ def recall_details(fact_id:)
254
+ # Full details with provenance
255
+ fact = find_fact(fact_id)
256
+ {
257
+ **fact.to_h,
258
+ provenance: load_provenance(fact), # Batch query
259
+ relationships: load_relationships(fact), # Batch query
260
+ tokens: TokenEstimator.estimate_full(fact) # ~500 tokens
261
+ }
262
+ end
263
+ end
264
+ end
265
+ ```
266
+
267
+ ### Semantic Shortcuts
268
+
269
+ ```ruby
270
+ module ClaudeMemory
271
+ class Shortcuts
272
+ PREDICATES = {
273
+ decisions: %w[decision architectural_choice],
274
+ conventions: %w[convention coding_standard],
275
+ architecture: %w[uses_framework uses_database deployment_platform]
276
+ }.freeze
277
+
278
+ def self.build(shortcut)
279
+ predicates = PREDICATES[shortcut]
280
+ Recall.new.where(predicate: predicates)
281
+ end
282
+ end
283
+ end
284
+ ```
285
+
286
+ ## Testing
287
+
288
+ 583 RSpec examples covering:
289
+
290
+ - **Unit Tests:** Domain models, value objects, query builders
291
+ - **Integration Tests:** Full pipeline (ingest → distill → resolve → store)
292
+ - **Hook Tests:** All event types with exit code verification
293
+ - **Security Tests:** ReDoS protection, malformed tags
294
+ - **Performance Tests:** N+1 query elimination, batch loading
295
+
296
+ ```bash
297
+ bundle exec rspec
298
+ # 583 examples, 0 failures
299
+ ```
300
+
301
+ ## Performance Characteristics
302
+
303
+ - **Ingestion:** O(n) where n = transcript length
304
+ - **FTS Indexing:** O(n log n) via SQLite FTS5
305
+ - **Recall Queries:** O(log n) with FTS5 + batch loading
306
+ - **Memory Usage:** Minimal (SQLite memory-mapped I/O)
307
+ - **Disk Usage:** ~1-5MB per project (typical)
308
+
309
+ ## Why SQLite and Not Vector Embeddings?
310
+
311
+ 1. **Zero Dependencies** - No external services or API keys
312
+ 2. **FTS5 Is Fast** - Full-text search is sufficient for fact recall
313
+ 3. **Simpler Model** - Exact match > approximate semantic similarity for facts
314
+ 4. **Local First** - Everything stored locally, no network calls
315
+ 5. **Proven Tech** - SQLite is battle-tested and embedded everywhere
316
+
317
+ Future versions may add optional vector search for semantic similarity, but FTS5 covers 95% of use cases.
318
+
319
+ ## Roadmap
320
+
321
+ ### v0.3.0 (Planned)
322
+ - Optional vector embeddings for semantic search
323
+ - Multi-project memory sharing
324
+ - Memory export/import utilities
325
+ - Web dashboard for visualization
326
+
327
+ ### Long-term
328
+ - Team collaboration features
329
+ - Memory analytics and insights
330
+ - Plugin marketplace integration
331
+
332
+ ## Contributing
333
+
334
+ Contributions welcome! The codebase uses:
335
+
336
+ - **SOLID principles** throughout
337
+ - **Domain-Driven Design** with rich models
338
+ - **Dependency injection** for testability
339
+ - **Standard Ruby** for linting
340
+
341
+ See [CLAUDE.md](https://github.com/codenamev/claude_memory/blob/main/CLAUDE.md) for development setup and architecture docs.
342
+
343
+ ## Links
344
+
345
+ - **GitHub:** https://github.com/codenamev/claude_memory
346
+ - **RubyGems:** https://rubygems.org/gems/claude_memory
347
+ - **Examples:** https://github.com/codenamev/claude_memory/blob/main/docs/EXAMPLES.md
348
+ - **Architecture:** https://github.com/codenamev/claude_memory/blob/main/docs/architecture.md
349
+ - **Changelog:** https://github.com/codenamev/claude_memory/blob/main/CHANGELOG.md
350
+
351
+ ## Questions?
352
+
353
+ Happy to answer questions about:
354
+ - Implementation details
355
+ - Architecture decisions (why DDD, why Sequel, etc.)
356
+ - Performance optimizations
357
+ - Security considerations
358
+ - Claude Code integration
359
+
360
+ Feel free to ask here or open a GitHub discussion!
361
+
362
+ ---
363
+
364
+ **Built with ❤️ by [Valentino Stoll](https://github.com/codenamev)**
365
+ ```
366
+
367
+ ---
368
+
369
+ ## Ruby Flow Post
370
+
371
+ ### Title
372
+ ```
373
+ ClaudeMemory v0.2.0: Privacy-First Memory System for Claude Code
374
+ ```
375
+
376
+ ### Body
377
+
378
+ ```markdown
379
+ Just released ClaudeMemory v0.2.0! 🚀
380
+
381
+ A Ruby gem providing long-term memory for Claude Code with privacy tags, progressive disclosure, and semantic shortcuts.
382
+
383
+ **Tech Stack:**
384
+ - Ruby 3.2+
385
+ - Sequel ORM
386
+ - SQLite3 + FTS5
387
+ - RSpec (583 examples)
388
+ - Standard Ruby linting
389
+
390
+ **New in v0.2.0:**
391
+ 🔒 Privacy tags: `<private>secret</private>` never stored
392
+ ⚡ 10x token reduction with progressive disclosure
393
+ 🎯 Semantic shortcuts (decisions, conventions, architecture)
394
+ ✅ 100% coverage for security-critical modules
395
+
396
+ **Architecture Highlights:**
397
+ - Domain-Driven Design with value objects
398
+ - N+1 query elimination (2N+1 → 3 queries)
399
+ - Command Pattern (CLI: 41 lines → 16 command classes)
400
+ - Null Object Pattern for clean code
401
+
402
+ ```bash
403
+ gem install claude_memory
404
+ claude-memory init --global
405
+ ```
406
+
407
+ GitHub: https://github.com/codenamev/claude_memory
408
+
409
+ Ask me anything about the implementation!
410
+ ```
411
+
412
+ ---
413
+
414
+ ## Ruby Rogues Podcast Pitch (Optional)
415
+
416
+ ### Email Template
417
+
418
+ **To:** rubyrogues@devchat.tv
419
+ **Subject:** Podcast Topic Idea: Building AI Memory Systems with Ruby
420
+
421
+ ```
422
+ Hi Ruby Rogues team,
423
+
424
+ I'd love to discuss a potential podcast topic: building production-ready AI memory systems using Ruby.
425
+
426
+ I recently released ClaudeMemory v0.2.0, a Ruby gem that provides persistent memory for Claude Code. The project showcases several interesting Ruby patterns:
427
+
428
+ **Technical Topics:**
429
+ - Domain-Driven Design in Ruby (value objects, domain models)
430
+ - SQLite FTS5 for full-text search (no vector embeddings needed)
431
+ - Sequel ORM patterns and query optimization
432
+ - Security considerations (ReDoS protection, content sanitization)
433
+ - Testing strategy (583 examples, 100% critical path coverage)
434
+ - Command Pattern for CLI design (881 → 41 lines)
435
+
436
+ **Broader Themes:**
437
+ - Building AI tools with Ruby (why Ruby is great for this)
438
+ - Privacy-first design in AI systems
439
+ - Token economics and performance optimization
440
+ - Local-first software architecture
441
+ - Integration patterns (MCP, hooks, skills)
442
+
443
+ **Project Stats:**
444
+ - Ruby 3.2+, Sequel, SQLite3
445
+ - 583 RSpec examples
446
+ - Zero external dependencies
447
+ - GitHub: https://github.com/codenamev/claude_memory
448
+
449
+ Would this be a good fit for an upcoming episode? Happy to discuss the technical details and lessons learned from building this system.
450
+
451
+ Thanks for your consideration!
452
+
453
+ Valentino Stoll
454
+ valentino@hanamirb.org
455
+ https://github.com/codenamev
456
+ ```
457
+
458
+ ---
459
+
460
+ ## Ruby Together Announcement (Optional)
461
+
462
+ ### Template
463
+
464
+ ```markdown
465
+ # ClaudeMemory: A Ruby Gem for AI Memory
466
+
467
+ The Ruby community has a new tool for working with AI coding assistants: ClaudeMemory v0.2.0.
468
+
469
+ ## What It Does
470
+
471
+ ClaudeMemory provides persistent memory for Claude Code, automatically extracting and storing facts about your projects, preferences, and decisions. Built entirely in Ruby with SQLite.
472
+
473
+ ## Why It Matters for Ruby
474
+
475
+ 1. **Showcases Ruby's Strengths:** Domain-Driven Design, clean OOP, expressive DSLs
476
+ 2. **Zero Dependencies:** Pure Ruby with SQLite (no external services)
477
+ 3. **Production Ready:** 583 test examples, 100% critical path coverage
478
+ 4. **Open Source:** MIT licensed, contributions welcome
479
+
480
+ ## Technical Highlights
481
+
482
+ - Sequel ORM for database access
483
+ - SQLite FTS5 for full-text search
484
+ - Value objects and null objects
485
+ - Command Pattern for CLI
486
+ - Progressive disclosure for performance
487
+
488
+ ## Links
489
+
490
+ - GitHub: https://github.com/codenamev/claude_memory
491
+ - RubyGems: https://rubygems.org/gems/claude_memory
492
+ - Architecture Docs: https://github.com/codenamev/claude_memory/blob/main/docs/architecture.md
493
+
494
+ Built by Valentino Stoll ([@codenamev](https://github.com/codenamev))
495
+ ```
496
+
497
+ ---
498
+
499
+ ## Usage Recommendations
500
+
501
+ ### Timing
502
+ 1. **Ruby Weekly:** Submit immediately after GitHub release
503
+ 2. **Reddit r/ruby:** Post 1-2 days after release
504
+ 3. **Ruby Flow:** Cross-post same day as Reddit
505
+ 4. **Ruby Rogues:** Reach out 1-2 weeks after release (after gathering feedback)
506
+ 5. **Ruby Together:** Optional announcement if project gains traction
507
+
508
+ ### Engagement Tips
509
+ 1. **Be Active:** Respond to comments and questions within 24 hours
510
+ 2. **Show Code:** Include implementation details when asked
511
+ 3. **Be Humble:** Acknowledge limitations and areas for improvement
512
+ 4. **Credit Others:** Mention Ruby gems and tools that inspired you
513
+ 5. **Link Generously:** Point to docs, examples, and architecture details
514
+
515
+ ### Follow-up Ideas
516
+ 1. **Blog Post:** "Building a Privacy-First AI Memory System with Ruby"
517
+ 2. **Conference Talk:** Submit to RubyConf or regional Ruby conferences
518
+ 3. **Screencast:** Record a 10-minute demo for YouTube
519
+ 4. **Podcast:** Reach out to Ruby on Rails Podcast or Bike Shed
520
+ 5. **Tutorial:** Write a step-by-step guide for Ruby developers
521
+
522
+ ---
523
+
524
+ ## Community Engagement Script
525
+
526
+ When people ask questions, use this framework:
527
+
528
+ ### For Architecture Questions
529
+ ```
530
+ Great question! ClaudeMemory uses [concept] because [reason].
531
+
532
+ The specific implementation is in [file]:
533
+ [code snippet]
534
+
535
+ More details in the architecture doc: [link]
536
+ ```
537
+
538
+ ### For Performance Questions
539
+ ```
540
+ Performance was a key focus for v0.2.0. Here's what we did:
541
+
542
+ 1. [Optimization 1] - [Result]
543
+ 2. [Optimization 2] - [Result]
544
+
545
+ Benchmarks show [metric].
546
+
547
+ Implementation details: [link]
548
+ ```
549
+
550
+ ### For Comparison Questions
551
+ ```
552
+ Good question! Here's how ClaudeMemory compares to [alternative]:
553
+
554
+ ClaudeMemory:
555
+ - Pro: [advantages]
556
+ - Con: [tradeoffs]
557
+
558
+ [Alternative]:
559
+ - Pro: [advantages]
560
+ - Con: [tradeoffs]
561
+
562
+ The right choice depends on [use case].
563
+ ```
564
+
565
+ ### For Contributing Questions
566
+ ```
567
+ Thanks for your interest in contributing!
568
+
569
+ The best places to start:
570
+ 1. [Easy issue or area]
571
+ 2. [Medium complexity area]
572
+
573
+ Development setup:
574
+ ```bash
575
+ git clone https://github.com/codenamev/claude_memory
576
+ cd claude_memory
577
+ bin/setup
578
+ bundle exec rspec
579
+ ```
580
+
581
+ See CLAUDE.md for architecture details: [link]
582
+ ```