Agentic Skill  β€’  MIT  β€’  No server  β€’  No API key
✦  MEMORY THAT SURVIVES A NEW CHAT  ✦

Never lose project
context again.

Chat history is not memory.

Project Memory keeps context in markdown files inside your project, so a new chat or a different agent can continue exactly where the last one stopped. Rich, visual, and built for real projects β€” not a blank page.

✦ For everyone✦ Claude Code✦ Cursor✦ Codex✦ Copilot✦ Gemini CLI
🧠 PROJECT MEMORYπŸ“ 5 FILES⚑ START β†’ UPDATE β†’ REVIEW β†’ CONTINUEπŸ”’ NO SECRETS♻️ ARCHIVE, NEVER DELETE🌍 FOR EVERYONE🧠 PROJECT MEMORYπŸ“ 5 FILES⚑ START β†’ UPDATE β†’ REVIEW β†’ CONTINUEπŸ”’ NO SECRETS♻️ ARCHIVE, NEVER DELETE🌍 FOR EVERYONE
πŸ˜΅β€πŸ’«

The problem

New chat = blank memory. You repeat decisions, re-explain the stack, and re-discover blockers every single time.

πŸ“

The fix

Five small markdown files in your project become the source of truth. The agent reads them first, every session.

πŸš€

The result

Session 2 knows what Session 1 decided. No repetition. No lost context. Just continue.

πŸ•ΈοΈ One hub, five files β€” how memory connects

PROJECTMEMORY AGENTS.md DECISIONS.md TODO.md CHANGELOG.md + archive /

⚑ The loop that never forgets

1 START 2 UPDATE 3 REVIEW 4 CONTINUE

One rule to remember: if it is important for the next session, write it in a file now β€” not in chat only.

βœ“ Works anywhere

Markdown only. No server, no database, no vendor lock-in. Git-friendly, team-friendly.

βœ“ Safe by design

No secrets in memory files. The check script reports file and line only, never the value.

βœ“ Never deletes

Old entries move to archive/, grouped by month. Nothing is silently erased.

Install β€” pick one

1

Clone the repo

git clone https://github.com/mymyanmarland/project-memory-skill cd project-memory-skill
2

Install into one project

This copies the skill into both .agents/skills/ and .claude/skills/, so any agent finds it.

./install.sh --project /path/to/my-project

Windows: .\install.ps1 -Project C:\path\to\my-project

3

Or install globally β€” once for all projects

./install.sh --global

Then restart your agent, or start a new session.

Manual copy β€” no script needed

Copy the whole folder skills/project-memory/ to <project>/.agents/skills/project-memory/ for Cursor, Codex, Gemini and Copilot, or to <project>/.claude/skills/project-memory/ for Claude Code. For all projects, use your home folder instead of the project folder.

Team: commit the skill folder into the project repo. The team only pulls. Each project still gets its own memory files β€” never copy another project's memory files.

Usage Guide β€” what you do, what the agent does

1

First time in a project

Say: β€œUse the project-memory skill, start this project.” The agent creates the 5 memory files from templates. You tell it the purpose, stack and current status. It writes them down.

python3 <skill-folder>/scripts/pm_init.py --project .
2

Every session β€” start

The agent reads the memory files first, before other work. Or it runs the status script and reads the summary. You do not repeat yourself.

Press the button to see a sample pm_status output…
3

During work β€” update at once

After an important, verified action, the agent updates the matching file immediately. Not at the end. Not in chat only.

  • Stack, scope or architecture changes β†’ PROJECT_MEMORY.md
  • A decision β†’ DECISIONS.md
  • A task starts, finishes or blocks β†’ TODO.md
  • A feature or fix finishes β†’ CHANGELOG.md
4

Session end β€” review, then summarise

The agent runs the check, archives if needed, and gives you a short summary: Completed, Changed, Decisions, Remaining, Next step, Memory files updated.

python3 <skill-folder>/scripts/pm_check.py /path/to/my-project python3 <skill-folder>/scripts/pm_archive.py /path/to/my-project
If the agent does not load the skill automatically, say: β€œUse the project-memory skill” or β€œRead the memory files first, then continue this project.” The skill description is written to trigger on starting, continuing, or handing over a project.

Files & Scripts

my-project/ β”œβ”€β”€ AGENTS.md ← short pointer to this skill + safety rules β”œβ”€β”€ PROJECT_MEMORY.md ← purpose, status, stack, architecture, blockers β”œβ”€β”€ DECISIONS.md ← decisions + why, newest first β”œβ”€β”€ TODO.md ← current tasks: todo / in progress / blocked / done β”œβ”€β”€ CHANGELOG.md ← completed changes, newest first └── archive/ ← old log entries, grouped by month, never deleted
ScriptWhat it doesExample
pm_init.pyCreates the 5 files from templates. Skips existing files.pm_init.py --project .
pm_status.pyPrints purpose, blockers, in-progress work, latest decision & change.pm_status.py /path/to/my-project
pm_check.pyChecks files exist, sizes, secret patterns. Exit 0 = pass, 1 = issues.pm_check.py /path/to/my-project
pm_archive.pyKeeps newest 20 log entries, moves older ones to archive/YYYY-MM.md.pm_archive.py /path/to/my-project

πŸ”’ Safety

Never write secrets, passwords, API keys or tokens in memory files. Write where a value is stored, never the value itself.

πŸ“ Size rules

Summary at the top of PROJECT_MEMORY: max 10 lines. Logs over 200 lines: run archive.

πŸ”„ Update & uninstall

Update: replace the skill folder only. Memory files stay untouched. Uninstall: delete the skill folder. Memory files stay unless you delete them too.

Example β€” My Shop, two sessions

😢 Before β€” Session 1 only

β€œWhat stack did we choose? Why? What was left?” β€” repeat, guess, restart.

✨ After β€” Session 2

Open the folder, read 4 files, continue. Decisions have reasons. Tasks have status. Changes have a log.

🎯 The win

No repetition. No lost context. The agent asks only about open items β€” like hosting, still undecided.

1

Session 1 β€” a new chat, a new project

Login is done. The user chooses SQLite for v1 to keep setup simple. The agent writes it down at once, with reason and alternatives, so it is not a mystery later.

## 2026-11-03 - Use SQLite for v1 - Decision: Use SQLite for v1, not PostgreSQL. - Reason: Single-file, no server to run. - Alternatives: PostgreSQL (more setup, not needed yet). - Consequences: Migration to PostgreSQL is a v2 task.
2

Session 2 β€” a different chat, same folder

No chat history. The agent reads the files and knows: purpose, SQLite decision and why, product list in progress, hosting still undecided. It does not ask about the database again. It asks only about the open item β€” hosting β€” and continues with the product list.

βœ“ That is the whole point: the second session continues from files, not from memory of the first chat.