プロジェクトの状態を追跡するスキル。コンテキストの永続化と復元を支援。
A Claude Code skill that establishes a structured institutional knowledge system for your projects. Track bugs with solutions, architectural decisions (ADRs), key project facts, and work history in a consistent, maintainable format.
# Install via skilz (recommended)
skilz install SpillwaveSolutions_project-memory/project-memory
# Then use in any project
cd your-project
# In Claude Code, type: /project-memory
When invoked in a project, this skill:
Creates a memory infrastructure in docs/project_notes/ with four files:
bugs.md - Bug log with solutions and prevention notesdecisions.md - Architectural Decision Records (ADRs)key_facts.md - Project configuration, credentials, ports, URLsissues.md - Work log with ticket IDs and descriptionsConfigures CLAUDE.md and AGENTS.md to make Claude Code (and other AI tools) memory-aware:
Provides templates and examples for maintaining institutional knowledge in a way that looks like standard engineering documentation (not AI artifacts).
There are four installation options depending on your needs.
The recommended way to install this skill across different AI coding agents is using the skilz universal installer. This skill supports the Agent Skill Standard, which means it works with 14+ coding agents including Claude Code, OpenAI Codex, Cursor, and Gemini.
pip install skilz
You can use either -g or --git with HTTPS or SSH URLs:
# HTTPS URL
skilz install -g https://github.com/SpillwaveSolutions/project-memory
# SSH URL
skilz install --git git@github.com:SpillwaveSolutions/project-memory.git
Install to user home (available in all projects):
skilz install -g https://github.com/SpillwaveSolutions/project-memory
Install to current project only:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --project
Install for OpenCode:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --agent opencode
Project-level install:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --project --agent opencode
Project-level install for Gemini:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --agent gemini
Install for OpenAI Codex:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --agent codex
Project-level install:
skilz install -g https://github.com/SpillwaveSolutions/project-memory --project --agent codex
# Claude to user home dir ~/.claude/skills
skilz install SpillwaveSolutions_project-memory/project-memory
# Claude skill in project folder ./claude/skills
skilz install SpillwaveSolutions_project-memory/project-memory --project
# OpenCode install to user home dir ~/.config/opencode/skills
skilz install SpillwaveSolutions_project-memory/project-memory --agent opencode
# OpenCode project level
skilz install SpillwaveSolutions_project-memory/project-memory --agent opencode --project
# OpenAI Codex install to user home dir ~/.codex/skills
skilz install SpillwaveSolutions_project-memory/project-memory --agent codex
# OpenAI Codex project level ./.codex/skills
skilz install SpillwaveSolutions_project-memory/project-memory --agent codex --project
# Gemini CLI (project level) -- only works with project level
skilz install SpillwaveSolutions_project-memory/project-memory --agent gemini
See skill Listing for installation details for 14+ different coding agents.
Skilz supports 14+ coding agents including Windsurf, Qwen Code, Aidr, and more. For the full list of supported platforms, visit:
SkillzWave - Largest Agentic Marketplace for AI Agent Skills | SpillWave - Leaders in AI Agent Development
Install once in your Claude Code home directory to make the skill available across all projects:
# Create the skills directory if it doesn't exist
mkdir -p ~/.claude/skills
# Clone or copy the skill to your skills directory
cp -r project-memory ~/.claude/skills/
# Verify installation
ls ~/.claude/skills/project-memory
When to use: You want this skill available for all your projects without reinstalling.
Install in a specific project's .claude/skills/ directory:
# Navigate to your project
cd /path/to/your/project
# Create local skills directory
mkdir -p .claude/skills
# Clone or copy the skill
cp -r /path/to/project-memory .claude/skills/
# Verify installation
ls .claude/skills/project-memory
When to use: You only want this skill available for a specific project.
Install above a workspace directory to share across multiple related projects:
# Navigate to your workspace directory (parent of multiple projects)
cd ~/workspace
# Create shared skills directory
mkdir -p .claude/skills
# Clone or copy the skill
cp -r /path/to/project-memory .claude/skills/
# Verify installation
ls .claude/skills/project-memory
When to use: You have multiple projects in a workspace and want to share the skill without global installation.
Example structure:
~/workspace/
├── .claude/
│ └── skills/
│ └── project-memory/ # Shared across all projects below
├── project-a/
├── project-b/
└── project-c/
/project-memory
docs/project_notes/ directoryCLAUDE.md with memory protocolsAGENTS.md if it existsOnce set up, Claude Code will automatically:
You can also explicitly request updates:
Add this CORS fix to our bug log
Document the decision to use FastAPI in decisions.md
Update key_facts.md with the new database connection string
Log this completed ticket in issues.md
your-project/
├── docs/
│ └── project_notes/
│ ├── bugs.md # Bug log with solutions
│ ├── decisions.md # Architectural Decision Records
│ ├── key_facts.md # Project configuration
│ └── issues.md # Work log
├── CLAUDE.md # Updated with memory protocols
└── AGENTS.md # Updated with memory protocols (if exists)
### 2025-01-15 - Docker Architecture Mismatch
- **Issue**: Container failing to start with "exec format error"
- **Root Cause**: Built on ARM64 Mac but deploying to AMD64 Cloud Run
- **Solution**: Added `--platform linux/amd64` to docker build
- **Prevention**: Always specify platform in Dockerfile
### ADR-001: Use Workload Identity Federation (2025-01-10)
**Context:**
- Need secure authentication from GitHub Actions to GCP
**Decision:**
- Use Workload Identity Federation instead of service account keys
**Alternatives Considered:**
- Service account JSON keys → Rejected: security risk
**Consequences:**
- ✅ More secure (no long-lived credentials)
- ❌ Slightly more complex initial setup
⚠️ SECURITY WARNING: Never store passwords, API keys, or credentials in key_facts.md. Only store non-sensitive reference information like hostnames, ports, client names, project IDs, and account names. Store secrets in .env (excluded via .gitignore), password managers, or secrets management systems.
### Database Configuration
**AlloyDB Cluster:**
- Cluster Name: `prod-cluster`
- Private IP: `10.0.0.5`
- Port: `5432`
- Database Name: `contacts`
**Connection:**
- Use AlloyDB Auth Proxy for local development
- Proxy command: `./alloydb-auth-proxy "projects/..."`
- Credentials: Stored in `.env` file (not in git)
### 2025-01-15 - PROJ-123: Implement Contact API
- **Status**: Completed
- **Description**: Created FastAPI endpoints for contact CRUD
- **URL**: https://jira.company.com/browse/PROJ-123
- **Notes**: Added unit tests, coverage at 85%
After installation, verify the skill is available:
/ to see available skillsproject-memory in the listOr check manually:
# For global installation
ls ~/.claude/skills/project-memory/SKILL.md
# For project-specific installation
ls .claude/skills/project-memory/SKILL.md
# For workspace installation
ls ../.claude/skills/project-memory/SKILL.md # From inside a project
The key_facts.md file is designed to store non-sensitive project reference information only. This file is typically committed to version control and should NEVER contain:
❌ NEVER store in key_facts.md or any git-tracked file:
✅ SAFE to store in key_facts.md:
✅ WHERE to store sensitive credentials:
.env files - Excluded via .gitignore, used for local development✅ VERIFICATION steps before committing:
git status to see what will be committed.env, credentials.json, and other sensitive files are in .gitignoregit add . blindly - review each file being stagedgit diff --cached to review staged changes before committinggit-secrets or gitleaks to prevent credential leaksImportant: Even in private repositories, never commit clear-text passwords or authentication keys. Private repos can become public, be forked, or accessed by unauthorized users.
Once set up, Claude Code will:
decisions.md before proposing architectural changesbugs.md for known solutions to errorskey_facts.md for project configurationissues.mdAll memory files follow these principles:
The memory system works across different AI coding tools:
Without project memory:
With project memory:
The Scenario:
pulumi refresh --yes resolves the state inconsistencyWithout Project Memory:
With Project Memory:
Claude Code: Searching bugs.md for "state drift"...
Found: BUG-018 - Pulumi State Drift Error
Known solution: pulumi refresh --yes
Applying fix... Done in 2 minutes.
Reference: See ADR-016 for why this works.
Result:
Knowledge Compound Interest: Every bug solved and documented makes future work exponentially faster.
The Scenario:
Without Project Memory:
User: "Add a bar chart to the dashboard"
Claude Code: "I'll add Chart.js for the bar chart visualization."
[Adds Chart.js to package.json - now we have D3.js AND Chart.js]
Result: Bundle size +85KB, inconsistent chart styling, duplicate dependencies
With Project Memory:
User: "Add a bar chart to the dashboard"
Claude Code: Checking decisions.md for visualization decisions...
Found: ADR-012 - Use D3.js for all charts
Claude Code: "I'll implement the bar chart using D3.js to maintain consistency with ADR-012."
[Uses existing D3.js dependency]
Result: No new dependencies, consistent styling, smaller bundle
Result:
Key Insight: Remembering past decisions prevents architectural drift and keeps the codebase cohesive.
The Reality of Long-Running Projects:
Many developers (and AI code assistants) encounter the same bugs months apart and completely forget the solution:
Month 1:
Error: CORS policy blocked request from localhost:3000
[2 hours of debugging]
Solution: Add proxy configuration to package.json
Month 6:
Error: CORS policy blocked request from localhost:3000
Developer: "This looks familiar... how did we fix this?"
[Searches old commits, checks Stack Overflow again]
[1 hour to re-discover the proxy config solution]
With Project Memory:
Error: CORS policy blocked request from localhost:3000
Claude Code: Searching bugs.md for "CORS"...
Found: BUG-003 - CORS Blocked in Local Development
Solution: proxy config in package.json
Applied in 5 minutes.
The Code Agent Memory Problem:
AI code assistants don't remember previous sessions. Without documentation:
With project memory, the code agent becomes progressively smarter:
This is knowledge compound interest - your project gets easier to maintain over time, not harder.
project-memory/
├── SKILL.md # Main skill instructions for Claude
├── CLAUDE.md # This repository's Claude guidance
├── README.md # This file
└── references/ # Templates for memory files
├── bugs_template.md
├── decisions_template.md
├── key_facts_template.md
└── issues_template.md
Looks like standard engineering docs - Using docs/project_notes/ instead of memory/ makes it appear as normal engineering organization, not AI-specific tooling.
Prefer simplicity - Bullet lists over tables, concise over exhaustive, manual cleanup over automation.
Document what matters - Focus on recurring bugs, important decisions, and frequently-needed facts.
Enable collaboration - Works across AI tools, readable by humans, version-controllable with git.
cd ~/projects/my-new-app
claude code
In Claude Code:
/project-memory
Claude will create the memory infrastructure and configure CLAUDE.md.
I just fixed a bug where the database connection pool was exhausted.
Add it to bugs.md with the solution.
I'm thinking about using SQLAlchemy for migrations.
Check if we already have a decision about this.
Claude will search decisions.md and apply existing choices.
Update key_facts.md with the new staging environment URL:
https://staging-api.company.com
Memory files are manually maintained:
This skill complements other Claude Code skills:
Check installation location:
# Global installation
ls ~/.claude/skills/project-memory/SKILL.md
# Project-specific installation
ls .claude/skills/project-memory/SKILL.md
Ensure SKILL.md exists:
The skill must have a SKILL.md file with proper frontmatter:
---
name: project-memory
description: Set up and maintain a structured project memory system...
---
Verify you're in a project directory:
The skill creates files in the current working directory's docs/project_notes/ folder.
Check permissions: Ensure you have write permissions in the project directory.
Verify CLAUDE.md was updated:
grep "Project Memory System" CLAUDE.md
The "Project Memory System" section should be present with complete protocols.
To improve this skill:
references/ directorySKILL.md with new capabilitiesCLAUDE.md with workflow changesThis skill is part of the Claude Code skills ecosystem and follows standard usage guidelines for Claude Code extensions.
For issues or questions:
SKILL.md for detailed skill instructionsCLAUDE.md for repository-specific guidanceトピック