Make AI coding agents remember your project between sessions. project-butler helps Claude Code, Cursor, Codex, and similar AI coding assistants behave like long-term project teammates instead of starting from scratch every session.
$ npx -y skills add JamesShi96/project-butler --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
What's inside
Make AI coding agents remember your project between sessions.
project-butler helps Claude Code, Cursor, Codex, and similar AI coding assistants behave like long-term project teammates instead of starting from scratch every session.
For normal use, you only need four actions:
/project-butler Set up project memory
end session Save progress and next steps
continue Resume next time
status Check where the project stands
For projects that need stronger product, architecture, roadmap, research, or eval alignment, project-butler can also create a Project Profile during setup and offer profile-aware Normal Close / Full Close behavior.
Install as a Claude Code skill:
git clone https://github.com/JamesShi96/project-butler.git ~/.claude/skills/project-butler
Open any project and set up project memory:
/project-butler
Work normally. At the end of a work session:
end session
Next time, resume without re-explaining the project:
continue
That is enough for daily use. For Cursor, Codex, and other assistants, see Tool Compatibility.
The skill auto-checks for updates on every invocation. Once per day per
machine, it runs git fetch against its own repo and compares local
HEAD to origin/main. If behind, Claude Code asks you once β and at
most once every 24 hours:
project-butler is 3 commits behind upstream. Update now?
βΊ Update now β pull the latest version right here
βΊ Remind me later β ask again tomorrow
βΊ Stop reminding β turn the check off
Picking Update now runs a fast-forward-only git pull for you and
reports the result. If it fails (local changes, offline, SSH blocked),
you get the manual command plus an HTTPS fallback. Nothing is ever
pulled without you choosing it.
The prompt is worded in your project's CLAUDE.md Language: setting
(English / Chinese / bilingual), and stops appearing once you are up to
date β the cache is keyed on commit SHA, not just time.
Side effect on git status: after the auto-fetch, git status
inside the skill directory may show "behind origin/main by N commits".
This is expected and harmless β the skill never modifies the working
tree unless you pick "Update now".
Silencing: export PROJECT_BUTLER_NO_UPDATE_CHECK=1. Only the
literal value "1" silences β =0, =false, or empty does not
silence (counter-intuitive but intentional).
Note: the check runs as a skill instruction, so it is best-effort β it may occasionally not fire. Run the script manually any time you want a definitive answer.
Debugging a missing prompt: from an external shell only, run the
shared update-check script with
PROJECT_BUTLER_UPDATE_CHECK_DEBUG=1. Never enable debug inside
Claude Code β CC captures stderr into the LLM context and debug output
will leak into responses.
Cursor / Codex: these tools do not have Claude Code's skill lifecycle, so update checks are manual/on-demand:
bash "${PROJECT_BUTLER_SKILL_DIR:-$HOME/.claude/skills/project-butler}/scripts/check-update.sh"
Outside Claude Code there is no prompt β the script just prints a
VERSION_NOTICE: block with the update command when you are behind, and
nothing when you are current.
Reach limitation: if you installed project-butler before v1.7.0, you do not have this auto-check feature yet. Pull once manually:
cd ~/.claude/skills/project-butler && git pull
After that, future updates are announced automatically.
AI coding assistants are powerful in one session and forgetful across sessions. If any of these sound familiar, project-butler is for you:
project-butler turns a project folder into that source of truth, so the next AI session can pick up where the last one stopped.
All triggers are natural language. Use slash commands only for first-time setup.
| Command | Use it when |
|---|---|
/project-butler | Set up or upgrade project memory. |
end session / we're done | Save progress, refresh next steps, and record important changes. |
continue / continue from last time | Resume the previous session without re-explaining context. |
status / where are we | Get the current project state and the next best step. |
| Command | Use it when |
|---|---|
continue full context | Rebuild the full project trajectory after a long break or assistant switch. |
review claude / check the rules | Review candidate project rules before they become long-term rules. |
sync wiki / update overview | Force-refresh PROJECT.md. |
organize files | Clean up new files according to STRUCTURE.md. |
change language | Switch project management files between English, Chinese, and bilingual mode. |
normal close | Save the session and defer profile-impacting updates into the pending queue. |
full close | Align affected profile docs now with a bounded Scope Plan. |
profile setup / foundation repair | Create or repair the project profile and baseline reference docs after confirmation. |
Session recovery (continue / continue full context) is routed through project-butler internally. There is no separate /continue command to install.
Run /project-butler once. It maintains these plain Markdown files in your project:
project-root/
βββ CLAUDE.md <- Project rules / constitution
βββ PROJECT.md <- Current project wiki
βββ STRUCTURE.md <- File organization rules
βββ UPDATE_LOG.md <- Milestone-level changelog
βββ DOCS.md <- Document index and metadata
βββ session-handoff.md <- Cross-session handoff
βββ TODO.md <- Execution checklist
βββ docs/ <- Archived project documents
βββ log/ <- Session logs
βββ .claude/
βββ candidates.md <- Candidate rules for review
βββ project-profile.json <- Project profile config
βββ profile-pending.json <- Profile pending/debt queue
βββ .file-snapshot.json <- File organization snapshot
The core files are plain Markdown, so other tools can read them even when they do not run the skill natively.
What that means in practice:
Project Butler also keeps a small machine-readable profile so the assistant can understand which long-lived docs matter, which sections are protected, and which profile updates have been deferred.
| Tool | Status | How it works |
|---|---|---|
| Claude Code | Native skill | Install this repo under ~/.claude/skills/project-butler and run /project-butler. |
| Cursor | Project rules, best-effort | project-butler can generate .cursor/rules/project-system.mdc, which points Cursor at the same project memory files and mirrors the main triggers. |
| Codex | AGENTS.md, best-effort | project-butler can generate AGENTS.md, which points Codex at the same project memory files and mirrors the main triggers. |
| Other AI assistants | File-based | Any assistant that can read project files can use the project memory as shared context. |
See docs/compatibility.md for details and caveats.
project-butler uses a 7-component memory stack internally, organized by stability:
Stable rules
βββββββββββββββββββββββββββββββββββββββ
β CLAUDE.md / project rules β <- Human-reviewed principles
β β candidates collected by AI β
βββββββββββββββββββββββββββββββββββββββ
β distilled from work
Current state
βββββββββββββββββββββββββββββββββββββββ
β PROJECT.md β <- What the project is now
β STRUCTURE.md β <- Where files belong
β UPDATE_LOG.md β <- Milestone-level changes
β DOCS.md β <- Document index
β .claude/project-profile.json β <- Profile config
β .claude/profile-pending.json β <- Profile debt queue
βββββββββββββββββββββββββββββββββββββββ
β summarized from facts
Raw facts
ββββββββββββββββββββββββ βββββββββββββββββββββββββ
β log/ β β TODO.md β
β What happened β β What needs doing β
ββββββββββββββββββββββββ βββββββββββββββββββββββββ
β
session-handoff.md <- Where the next session should resume
Bottom feeds top. Top constrains bottom.
docs/.Project Profile System is internal profile-aware behavior for setup and close. Fresh setup stays conversational and can remain lightweight by creating only minimal confirmed docs.
During setup, project-butler asks what you are trying to do in natural language, infers the project shape, asks a few targeted follow-up questions, and proposes Required / Recommended / Optional reference docs. It does not force you to pick a fixed project type or expose Profile System as a setup switch.
During close, profile-aware projects can use:
| Mode | Behavior |
|---|---|
| Normal Close | Save the session and record profile-impacting changes in .claude/profile-pending.json. |
| Full Close | Read only affected profile docs, present a Scope Plan, and apply safe updates inside that boundary. |
Full Close confirms boundaries, not every small edit. It still requires explicit confirmation before changing protected sections, document policies, stable baselines, or whole-document rewrites.
project-butler supports three language modes:
| Mode | Content language | User file naming |
|---|---|---|
en | English | English naming (kebab-case) |
zh | Chinese | Chinese naming allowed |
bilingual | Chinese with English annotations | English preferred, Chinese acceptable |
You choose the mode during setup, and can later say change language.
During setup, project-butler asks which version style the project should use:
| Style | Example | Best for |
|---|---|---|
| Semantic | v0.1.0 | Engineering projects and libraries |
| Codename | Project Name 0.1 | Products, brands, and creative projects |
| Patch | Patch 1 | Games and iterative content releases |
| Date | 2026.06.1 | Research logs, operations, and document-heavy work |
end session uses this style when a significant update deserves an UPDATE_LOG.md entry.
If a project already has some management files, project-butler creates only the missing ones. It does not replace existing files; when a system section needs an update, it asks before making a small targeted patch. It also detects legacy .claude/memory/ layouts and suggests migration.
During upgrade, project-butler preserves existing files and offers to bring the project into the current profile-aware setup model. It infers profile state from existing project docs and asks for confirmation before writing profile files or changing existing document policies.
See docs/examples.md for a complete session flow:
continue / continue full context session recoveryAGENTS.mdscripts/check-update.sh so Claude Code can keep automatic Step -1 checks while Cursor/Codex can run manual checks on demand.AGENTS.md project-instruction template and update Cursor rules with manual update-check coverage.references/project-profile-system.md and route profile setup, Normal Close, Full Close, Foundation Repair, and profile-aware status through the main skill./project-butler, end session, continue, and status.continue reference workflows under references/ instead of nested SKILL.md files.Full update log: UPDATE_LOG.md | Releases: GitHub Releases
.gitignore
docs/
compatibility.md
examples.md
prd/
features/
multi-tool-compatibility.md
project-profile-system.md
version-freshness-check.md
main.md
profile-system-simulation-report.md
project-profiles-module-plan.md
test-reports/
adapter-coverage-matrix.md
LICENSE
log/
session-2026-06-04-project-profile-system-plan.md
session-2026-06-08-project-profile-system-prd.md
session-2026-06-10-project-profile-runtime-wiring.md
session-2026-06-11-profile-default-runtime.md
session-2026-07-10-interactive-update-prompt.md
README_zh.md
README.md
references/
continue-full-context.md
continue.md
document-archiving.md
file-reorganization.md
file-templates.md
language-adaptation.md
language-change.md
log-compaction.md
project-profile-system.md
update-check.md
update-log.md
upgrade-mode.md
scripts/
check-update.sh
session-handoff.md
SKILL.md
UPDATE_LOG.mdFAQ
project-butler is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes project-butler. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.