| name | mcp-memory-first-development |
| description | Memory-First development workflow integrating Serena short-term project memory and Cipher long-term design knowledge for efficient LoRAIro development |
| allowed-tools | mcp__serena__list_memories, mcp__serena__read_memory, mcp__serena__write_memory, cipher_memory_search, cipher_store_reasoning_memory, cipher_extract_entities |
Memory-First Development Skill
このSkillは、Serena短期メモリとCipher長期メモリを統合した2重メモリ戦略による効率的な開発ワークフローを提供します。
使用タイミング
Claudeは以下の開発フェーズでこのSkillを自動的に使用すべきです:
- 実装前: 過去の類似実装パターンと現在のプロジェクト状況を確認
- 実装中: 進捗、判断、課題を継続的に記録
- 完了後: 実装知識と教訓を長期記憶として蓄積
2重メモリ戦略
Serena Memory(短期・プロジェクト固有)
用途: 現在の開発進捗と一時的な開発メモ
保存内容:
- 現在の実装状況と次のステップ
- 進行中の開発判断
- 一時的な課題と解決策
- デバッグ情報と検証結果
- リファクタリング計画
特性:
- 高速アクセス (0.3-0.5秒)
- 頻繁な更新: 実装中に何度も読み書き
- 一時的: タスク完了後はアーカイブまたは削除
- プロジェクト固有: LoRAIro専用の状況記録
Cipher Memory(長期・設計知識)
用途: 将来参照可能な設計パターン資産
保存内容:
- 設計アプローチと判断根拠
- アーキテクチャ設計の意図と背景
- パフォーマンス・保守性の評価
- 実装時の課題と解決策
- ベストプラクティスとアンチパターン
- 技術選定の基準と結果
特性:
- 永続的: プロジェクト全体で参照可能
- 検索可能: cipher_memory_searchで過去事例を発見
- 汎用的: 他プロジェクトでも参照可能な知見
- 構造化: タイトル、コンテキスト、判断、根拠、結果、教訓
Memory-First開発サイクル
Phase 1: 実装前の事前確認
目的: 過去の知見を活用し、重複作業を回避
1. プロジェクト状況確認 (Serena):
mcp__serena__list_memories()
→ 利用可能なメモリ一覧
mcp__serena__read_memory("current-project-status")
→ 現在のブランチ、最新の実装変更、次の優先事項
2. 過去の類似実装検索 (Cipher):
cipher_memory_search(query="実装対象のキーワード")
→ 過去の設計パターン、実装アプローチ、教訓
3. 設計要素抽出 (Cipher):
cipher_extract_entities(text="実装計画")
→ 重要な技術要素、アーキテクチャコンポーネント
結果: 既存知識を活用した効率的な実装開始
Phase 2: 実装中の継続記録
目的: 進捗と判断を可視化し、中断時の再開を容易に
実装中の定期的記録 (Serena):
mcp__serena__write_memory(
memory_name="active-development-tasks",
content='''
# 現在の実装状況 - YYYY-MM-DD
## 進行中タスク
- [現在作業中の内容]
## 完了した作業
✅ [完了項目1]
✅ [完了項目2]
## 次のステップ
1. [次に実装すること]
2. [その次の作業]
## 技術的判断
- [実装中に行った重要な判断]
理由: [なぜその判断をしたか]
## 課題・ブロッカー
- [現在の問題点]
- [解決策候補]
'''
)
更新頻度: 重要な判断後、作業区切り時、中断前
Phase 3: 完了後の知識蓄積
目的: 実装知識を永続化し、将来の開発資産に
完了時の長期記憶化 (Cipher):
cipher_store_reasoning_memory(
title="[実装内容の簡潔な要約]",
content='''
# 実装概要
[何を実装したか]
## 背景・動機
[なぜこの実装が必要だったか]
## 設計アプローチ
[どのような設計判断をしたか]
## 技術選定
[使用した技術とその選定理由]
## 実装詳細
[重要な実装パターン、コード構造]
## 結果・効果
[実装による改善、パフォーマンス向上、コード削減等]
## 課題と解決策
[実装中に直面した課題とその解決方法]
## 教訓・ベストプラクティス
[将来の実装で活用できる知見]
## アンチパターン
[避けるべき実装方法、失敗から学んだこと]
''',
tags=["実装分野", "技術タグ"],
context="LoRAIro [feature名] 実装"
)
実施タイミング: 機能完了時、リファクタリング完了時、重要な技術判断後
Memory命名規則
Serena Memory(短期)
- current-project-status: プロジェクト全体の状況
- active-development-tasks: 現在の開発タスクと進捗
- {feature}wip{YYYY_MM_DD}: 作業中の機能実装メモ
- debug_{issue}_{YYYY_MM_DD}: デバッグ情報と解決策
- archived_{name}: 完了タスクのアーカイブ
Cipher Memory(長期)
- Title形式: "LoRAIro [機能名] [実装内容] 設計/実装"
- 例: "LoRAIro Direct Widget Communication パターン採用"
- 例: "LoRAIro Repository Pattern データベース設計"
- 例: "LoRAIro QRunnable非同期処理実装"
実装例: 新機能開発の完全フロー
シナリオ: 新しいGUIウィジェット実装
=== Phase 1: 実装前 ===
1. 現在状況確認:
mcp__serena__list_memories()
mcp__serena__read_memory("current-project-status")
2. 過去の類似実装検索:
cipher_memory_search(query="widget implementation pattern signal slot")
3. 設計要素抽出:
cipher_extract_entities(text="新ウィジェット実装計画")
結果: 既存のWidget実装パターンを発見、重複実装を回避
=== Phase 2: 実装中 ===
実装開始時:
mcp__serena__write_memory(
"active-development-tasks",
"## 進行中: NewWidget実装
- Signal/Slot定義
- UI layout構築
- イベントハンドリング実装"
)
重要な判断時:
mcp__serena__write_memory(
"active-development-tasks",
"## 技術的判断
- Direct Widget Communication採用
理由: パフォーマンス向上、コード簡素化"
)
=== Phase 3: 完了後 ===
長期記憶化:
cipher_store_reasoning_memory(
title="LoRAIro NewWidget PySide6実装パターン",
content='''
# NewWidget実装
## 設計アプローチ
- Direct Signal/Slot接続
- PySide6 Designerによる UI定義
- 型安全なシグナル定義
## 実装パターン
```python
class NewWidget(QWidget):
data_changed = Signal(str) # 型安全なシグナル
def __init__(self):
super().__init__()
self._setup_ui()
self._connect_signals()
def _setup_ui(self):
# Qt Designer generated UI
pass
def _connect_signals(self):
# Signal/Slot接続
pass
教訓
- Qt Designerで効率的なUI構築
- 型ヒント付きSignal定義で安全性確保
- Direct Widget Communication で高速化 ''', tags=["gui", "pyside6", "widget-pattern"], context="LoRAIro GUI feature development" )
Serenaメモリ更新: mcp__serena__write_memory( "current-project-status", "✅ NewWidget実装完了 → 次: 単体テスト作成" )
## ベストプラクティス
### 効率的なMemory使用
1. **実装前は必ずMemory確認**: 過去の知見を活用
2. **実装中は定期的に記録**: 中断からの再開を容易に
3. **完了後は必ず長期記憶化**: 将来の開発資産として蓄積
### 記録のタイミング
- **Serena write**: 重要な判断後、作業区切り、中断前
- **Cipher store**: 機能完了時、リファクタリング完了時、重要な技術判断後
### 記録すべき内容
#### Serena(短期)
- 今何をしているか
- 次に何をするか
- どんな課題があるか
- どんな判断をしたか(一時的)
#### Cipher(長期)
- なぜその設計をしたか
- どのような技術選定をしたか
- どんな結果が得られたか
- 何を学んだか(教訓)
## LoRAIro固有のMemory戦略
### Serena Memoryの活用
- **current-project-status**: 毎日の開発開始時に確認
- **active-development-tasks**: 実装中は1-2時間ごとに更新
- **feature実装メモ**: 複数日にまたがる実装の継続記録
### Cipher Memoryの活用
- **アーキテクチャ判断**: Repository Pattern、Service Layer、Direct Widget Communication
- **技術選定**: SQLAlchemy、PySide6、pytest の選定根拠
- **パフォーマンス改善**: キャッシュ統一、非同期処理、最適化アプローチ
- **リファクタリング**: 大規模変更の意図、効果、教訓
### 検索キーワード
- **Cipher検索**: 具体的パターン名("repository pattern", "widget communication")
- **技術名 + 用途**: "sqlalchemy transaction", "pyside6 threading"
- **LoRAIro固有用語**: "direct widget communication", "memory-first development"
## Examples
詳細な使用例は [examples.md](./examples.md) を参照してください。
## Reference
Memory操作の完全なワークフローとパターンは [reference.md](./reference.md) を参照してください。