Turn project work into reusable knowledge.
$ npx -y skills add iBlinkQ/project-cairn --agent claude-code
Turn project work into reusable knowledge.
Open the interactive guide to learn more about the Skill
Project Cairn is an agent skill. During normal project work, it helps the agent keep validated pitfall lessons, key decisions, exploration findings, and sparks of insight inside the project. When something is genuinely reusable elsewhere, the agent can prepare it for a long-term knowledge base after you confirm it.

The files have distinct jobs:
AGENTS.md holds the rules the agent reads whenever it enters the project.cairn/LOG.md records what happened, with short summaries and pointers.cairn/ROADMAP.md keeps the overall goal, plan, and current progress.cairn/<topic>.md holds the current conclusion for one subject.cairn/Cited.md points to external knowledge that actually shaped the project, without copying its body.A cairn is a trail marker built by earlier travelers. The name captures the goal: let the next project see where the previous one found a safe route.
Project Cairn is useful when you run several AI-collaboration projects, switch between skill-compatible agents such as Claude Code and Codex, or need project knowledge to survive beyond one person's memory.
Claude Code, user-level installation:
git clone https://github.com/iBlinkQ/project-cairn.git ~/.claude/skills/project-cairn
Codex, user-level direct skill path:
git clone https://github.com/iBlinkQ/project-cairn.git ~/.agents/skills/project-cairn
WorkBuddy, import the local skill package:
See the official WorkBuddy skill guide for the installation interface.
The skill holds the method, and the project's AGENTS.md carries the rules the agent keeps every turn. WorkBuddy loads that file when you open the project folder in a WorkBuddy Project for code development. For other tasks, add one line to the Project's Instructions: "Read AGENTS.md at the project root and follow it as project rules." If the project already has a CODEBUDDY.md, WorkBuddy reads that file instead of AGENTS.md, so init adds an @AGENTS.md import line to it.
For another skill-compatible agent, clone the repository into the directory where that agent loads skills. SKILL.md should sit directly at the root of project-cairn/, not inside another nested folder.
Prerequisites are git, plus bash for scripts/*.sh. The shell scripts have been verified on macOS and Linux; Windows users need WSL or Git Bash. Python scripts require Python 3; notion-graduate-batch.py additionally requires PyYAML. There is no package-manager release yet.
AGENTS.md to maintain progress and current conclusions. There is no separate recording service to run.cairn/Cited.md only when a result actually influences the work.Project Cairn separates two lifecycles instead of putting every kind of information into one ever-growing file.
| Side | What it keeps | Typical home | When it is read |
|---|---|---|---|
| Project side | Rules, progress, current conclusions, and local cases | root AGENTS.md and cairn/ | while entering and advancing the project |
| Knowledge-base side | Distilled knowledge that can be reused across projects | Obsidian, Notion, or Lark / Feishu wiki | when new work needs an earlier lesson |
The project side keeps local facts and conclusions current. Once a lesson proves useful beyond that project, human-confirmed graduation distills it into the knowledge-base side. Each side remains authoritative for its own scope.
Take the messaging-bot problem:
LOG.md.Cited.md records a pointer rather than a duplicate.The interactive overview expands this journey into T0 through T8, including roadmap maintenance, audit, and re-graduation: explore the full flow.
Project Cairn does not stamp out a directory full of empty templates. Beyond the core initialization files, documents appear only when a real signal calls for them.
| File | Responsibility |
|---|---|
AGENTS.md | Rules and navigation |
.cairn/config.yaml | Machine-readable configuration |
cairn/LOG.md | Reverse-chronological history |
cairn/ROADMAP.md | Overall goal, plan, and current progress |
cairn/<topic>.md | Current truth for one topic |
cairn/Reference/ | External source material owned by the project |
cairn/Cited.md | Pointers to knowledge that influenced the work |
Schemas, configurations, and contracts consumed directly by code stay in the code tree. Cairn keeps the knowledge around them: why they look this way, what alternatives were tested, and what went wrong during implementation.
Topic notes use Markdown and YAML frontmatter with at least a type field, following the minimal convention of Google's Open Knowledge Format. Project Cairn does not claim to implement the complete OKF bundle. New project topics use project_topic; newly graduated notes use project_insight. Initialization does not ask for a type. Existing note types remain valid and are preserved unless a separate migration is confirmed. See frontmatter.
Graduated notes carry provenance through graduated_from, contributors, graduated_by, and authoring_mode, so readers can trace a conclusion back to the people, project, and source material that produced it.
AGENTS.md carries the rules.Graduation writes from the project side to the knowledge-base side. Reuse works by searching first, then leaving a pointer in Cited.md when a note is actually used. It is explicit consumption, not background synchronization between two stores.
Project Cairn has verified graduation paths for:
INDEX.md, and native WikiLinks.Every provider follows the behavioral contract in references/provider-interface.md while keeping its platform's native link and index model. Provider-specific execution paths live under references/graduation/. Before any write, the matching read-only preflight can check installation, authentication, and access:
scripts/obsidian-preflight.sh
scripts/notion-preflight.sh
scripts/lark-preflight.sh
Project Cairn complements adjacent tools instead of replacing them:
| Tool or approach | Main job | Relationship to Cairn |
|---|---|---|
| LLM Wiki | Organize source material you have read into a wiki | LLM Wiki focuses on source knowledge; Cairn focuses on knowledge learned through project work |
| Open Knowledge Format | Make knowledge files exchangeable by people and machines | OKF concerns format; Cairn concerns formation, maintenance, graduation, and reuse |
| Agent memory | Preserve an agent's preferences and working context | Memory supports agent continuity; Cairn supports project-knowledge continuity |
| superpowers | Make delivery more reliable through specs, plans, tests, and review | superpowers manages the process; Cairn keeps the stable conclusions learned from it |
An agent remembering something is not the same as a project learning it.
| Reference | Use it for |
|---|---|
references/init.md | Initializing or retrofitting Project Cairn |
references/maintenance.md | Maintaining LOG.md, ROADMAP.md, and topic notes |
references/graduation.md | Judging, distilling, and writing reusable knowledge |
references/graduation/ | One execution path per provider (Lark wiki, Notion, Obsidian) |
references/provider-interface.md | The behavioral contract for provider adapters |
references/consume.md | Searching, using, and citing external knowledge |
references/audit.md | Finding drift, contradictions, and missing records |
references/upgrade.md | Checking and upgrading an initialized project |
references/frontmatter.md | Fields for project notes and knowledge-base notes |
references/branch-closure.md | Salvaging knowledge before an exploration branch closes |
references/zh-glossary.md | Fixed terminology for Chinese project documentation |
Issues and pull requests are welcome. Project Cairn is documentation-first, so most contributions belong in SKILL.md, references/*.md, assets/templates/*, or scripts/. If a change affects behavior, explain the reason and impact in the pull request.
project-cairn is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Agent Memory category. Install it with the command on its page. It includes project-cairn. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it