Skip to content

Repository files navigation

Cairn-Skill

An Agent Skill that writes development logs from real repository history, not from recollection.

English | 中文

About

A cairn is the stack of stones a hiker leaves to mark a path that has already been walked. This skill does the same job for a codebase: it records work that is done, in a form the next person can follow.

Ask an agent to "write a development log" without guidance and you usually get three problems:

  • Invention. Features that were never built, performance numbers that were never measured.
  • Range drift. No sense of which period to cover, so it repeats last quarter or skips what you finished yesterday.
  • Wrong register. Release notes stuffed with internal refactoring detail; an engineering journal written as marketing copy.

Cairn addresses each one: it anchors every statement to a source of truth, it infers the incremental range from the previous entry, and it separates three output modes explicitly.

The acceptance criterion is a single sentence: every statement in the log can be traced to git history, a diff, or file contents.

Cairn is a set of instructions, not a program. It has no dependencies, no virtual environment, and no bundled model. It uses two capabilities the host agent already has: running commands and reading and writing files.

Getting started

Trae, project scope

Place the skill folder so that SKILL.md sits at its root:

.trae/skills/cairn-skill/SKILL.md

Trae, global scope

~/.trae/skills/cairn-skill/SKILL.md

Trae, import a bundle

Trae also accepts a .zip or .skill file with SKILL.md at the root of the archive. Build one with the command in Packaging, then import it from the IDE.

The root SKILL.md starts with YAML frontmatter. Its non-empty name and description fields are what Trae uses to identify the skill and decide when to load it.

Claude Code and Kiro

The same folder works without modification. Only the location differs:

Host Path
Claude Code .claude/skills/cairn-skill/
Kiro .kiro/skills/cairn-skill/

After installing, refresh skill discovery in your host's settings, then ask for a development log in any git repository.

Packaging

Run this from inside the repository directory:

Compress-Archive -Path .\SKILL.md, .\references, .\LICENSE -DestinationPath .\cairn-skill.zip -Force

Rename the result to cairn-skill.skill if your host prefers that extension. The two formats are identical.

The bundle carries only what the skill needs at run time. README.md, CONTRIBUTING.md, DEVLOG.md, and .github/ are repository governance files: they add size and contribute nothing to execution. LICENSE stays, because a distributed artifact should carry its license.

Watch the archive root. Right-clicking the folder in Windows Explorer and choosing "Compress to ZIP file" wraps everything in an extra cairn-skill/ directory, so the archive contains cairn-skill/SKILL.md instead of SKILL.md, and the import fails. Use the command above, then unzip the result and confirm SKILL.md is at the top level.

Usage

Ask in plain language. Cairn picks a mode from your wording, writes the entry, and tells you which mode it used.

You say Cairn writes
写篇开发日志 An engineering journal entry, in Chinese
Write a release note for v1.2 Release notes, user-facing wording only
把这周的工作写成一篇能发社区的文章 A narrative post with the trade-offs left in
只记录 packages/core 的改动 An entry restricted to that subdirectory

A first run in a repository with three commits produces something like this, appended to the top of DEVLOG.md:

## 2026-08-29 · Engineering journal

**What changed**

- Added incremental range inference anchored on the commit hash in each entry's footnote,
  in `SKILL.md` (`a1b2c3d`)
- Filled in the "Fixed" section of the release notes template, in
  `references/templates.md` (`e4f5g6h`)

**Why**

Inferring the start point from a date meant two entries written on the same day overlapped.
A hash is precise; a date is not.

**Pitfalls**

`git log | sort -u` is unavailable on Windows PowerShell, so contributor counts come from
`git shortlog -sn` instead.

**Next**

- The narrative example in `references/templates.md` is still placeholder text

<sub>Based on commits `a1b2c3d..e4f5g6h` · branch `main`</sub>

The footnote is load-bearing. It records the exact commit range, so the next run knows where to resume without re-covering old ground.

Outside a git repository, Cairn says so, asks what you did, reads the relevant files as supporting evidence, and marks the entry Based on the user's account and current file state; no git record. The log keeps its tiers of reliability instead of quietly flattening them.

Model backends and running fully offline

Cairn makes no model calls and bundles no inference runtime. Everything it contains is instruction text for the host agent, so it is model-agnostic: point the host at a different backend and Cairn works unchanged.

That has a useful consequence. Point the host at a local runtime and the whole pipeline runs on-device, with no code changes.

Isvik is one such runtime. It runs locally and exposes OpenAI- and Anthropic-compatible endpoints:

Trae (host, with Cairn-Skill installed)
   |  OpenAI / Anthropic compatible HTTP request
   v
Isvik (local inference runtime, Nim + OpenVINO)
   |
   v
Local CPU / GPU / NPU

Set the host's model endpoint to Isvik's local address, and the entire chain — collecting history, reading diffs, writing the entry — stays on the machine.

To be precise about what this does and does not mean: Cairn does not integrate with Isvik, and does not require it. Any backend works. Isvik is one option that happens to make the whole thing offline.

Known limitations

New entries go to the top, so concurrent authors collide. This is deliberate. Splitting entries into one file each would remove the ability to read the whole log top to bottom, which is the point of keeping a log. For a team, have one person write the log before a release rather than everyone appending their own.

Range inference needs the footnote. Editing or removing the <sub> footnote from the newest entry costs Cairn its anchor, and it falls back to a less precise date comparison.

CHANGELOG.md is off limits. That file follows a separate strict convention and belongs to a release process. Cairn will not touch it.

Contributing

See CONTRIBUTING.md. This project follows the Contributor Covenant.

License

Apache License 2.0. See LICENSE.

Copyright 2026 AbyssGG

About

Fact-grounded development log skill for AI coding agents.

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors