Skip to content

sp-daewoon/chronicle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“œ chronicle

English Β· ν•œκ΅­μ–΄

A SKILL.md-based Agent Skills / Claude Code plugin that automates your project's documentation lifecycle β€” ADR automation, changelog automation, release notes, devlogs, and a project index β€” as six focused skills.

License: MIT Claude Code Plugin Node Zero deps

chronicle turns the documentation chores you keep forgetting β€” writing ADRs, updating the changelog, cutting releases, keeping a devlog, maintaining a project index and CLAUDE.md β€” into one-line workflows. Every workflow adapts to your project layout via a small optional config (with sensible auto-detection), and the deterministic parts run as zero-dependency Node scripts so they're fast and consistent.


Why chronicle?

Good projects rot at the edges: decisions get made but never written down, the changelog drifts from reality, releases ship with hand-typed notes, and the CLAUDE.md that agents rely on goes stale. These chores are individually trivial and collectively never done. chronicle makes each one a single command β€” and because the heavy lifting runs in deterministic scripts (not the model), the output is consistent every time and costs almost no tokens.

The documentation lifecycle

The six skills aren't isolated tools β€” they're stages of one loop. A decision becomes a changelog entry, which becomes release notes, which you record in a devlog, all surfaced through a single index, while CLAUDE.md keeps your agents oriented.

flowchart LR
    A["🧭 Decide<br/><b>adr</b>"] --> B["πŸ“ Record change<br/><b>changelog</b>"]
    B --> C["πŸš€ Ship<br/><b>release</b>"]
    C --> D["πŸ““ Log the session<br/><b>devlog</b>"]
    A -.-> E["πŸ—‚οΈ Navigate<br/><b>index</b>"]
    B -.-> E
    C -.-> E
    D -.-> E
    E --> F["πŸ€– Keep agents oriented<br/><b>claude-md</b>"]
    F -.->|next iteration| A

    classDef stage fill:#f3e8ff,stroke:#7c3aed,color:#1a1a1a;
    classDef hub fill:#e0f2fe,stroke:#0369a1,color:#1a1a1a;
    class A,B,C,D,F stage;
    class E hub;
Loading

Install

/plugin marketplace add sp-daewoon/chronicle
/plugin install chronicle@chronicle

Requires Node.js 18+ on your PATH. That's the only dependency.

Skills

Skill Slash command What it does
adr /chronicle:adr Create/transition Architecture Decision Records, auto-number, regenerate the index
changelog /chronicle:changelog Add Keep a Changelog entries; promote [Unreleased] into a version
release /chronicle:release Promote changelog, synthesize notes from CHANGELOG/ADRs/commits, tag, optionally publish via gh
devlog /chronicle:devlog Write a dated, self-contained HTML session log + index
index /chronicle:index Generate a single navigation hub linking ADRs, changelog, releases
claude-md /chronicle:claude-md Keep CLAUDE.md in sync with the codebase and lean

Usage

Record a decision:

/chronicle:adr Use PostgreSQL for the primary datastore

Log a change:

/chronicle:changelog Added dark mode toggle

Cut a release:

/chronicle:release 1.2.0

Each skill also works conversationally β€” just describe what you want ("write up today's devlog", "regenerate the project index").

How it works

Each skill is a thin set of instructions for Claude. When deterministic work is needed β€” parsing a changelog, numbering an ADR, rendering an index β€” the skill calls a small Node helper via ${CLAUDE_PLUGIN_ROOT}. The helpers read your config (or auto-detect it), operate on your project files, and write the result back. The model decides what to do; the scripts handle how, identically every time.

flowchart TD
    U([You]) -->|"/chronicle:&lt;skill&gt;"| S

    subgraph PLUGIN["chronicle plugin"]
        S["skills/*/SKILL.md<br/><i>(instructions for Claude)</i>"]
        S -->|"node CLAUDE_PLUGIN_ROOT/scripts"| H

        subgraph HELPERS["scripts/ Β· zero-dependency Node"]
            H["adr-index Β· changelog-parse<br/>release-notes Β· devlog-render<br/>index-render"]
            H --> L["lib/ Β· config Β· md Β· fsutil"]
        end
    end

    CFG[("chronicle.config.json<br/><i>or auto-detect</i>")] -.->|"paths & formats"| H
    H -->|"read / write"| OUT[["πŸ“ docs/adr Β· CHANGELOG.md<br/>docs/devlog Β· docs/INDEX.html"]]

    classDef box fill:#faf5ff,stroke:#7c3aed,color:#1a1a1a;
    classDef out fill:#ecfdf5,stroke:#059669,color:#1a1a1a;
    class S,H,L box;
    class OUT,CFG out;
Loading

claude-md is the one skill with no helper β€” keeping CLAUDE.md lean is a judgment task, so it's fully model-driven.

Configuration

chronicle works with zero configuration β€” it auto-detects common locations (docs/adr, CHANGELOG.md, docs/devlog). To customize, drop a chronicle.config.json in your project root:

{
  "adr":       { "dir": "docs/adr", "numberWidth": 4, "indexFile": "docs/adr/README.md" },
  "changelog": { "path": "CHANGELOG.md", "format": "keepachangelog" },
  "devlog":    { "dir": "docs/devlog", "sections": ["Summary", "Changes", "Decisions", "Next"] },
  "index":     { "output": "docs/INDEX.html", "sources": ["adr", "changelog", "releases"] },
  "release":   { "provider": "github", "tagPrefix": "v", "readmeTable": true }
}
Key Field Meaning
adr dir / numberWidth / indexFile Where ADRs live, zero-pad width for numbers, the index file to regenerate
changelog path / format Changelog location and format (Keep a Changelog)
devlog dir / sections Where session logs go and which sections each log has
index output / sources Output file (.md or .html by extension) and what to include
release provider / tagPrefix Release provider (github) and tag prefix

A starter template lives at templates/chronicle.config.json.

How it's built

  • Skills (skills/*/SKILL.md) are LLM instructions; deterministic work is delegated to Node helpers (scripts/*.mjs) called via ${CLAUDE_PLUGIN_ROOT}.
  • Helpers use only Node 18+ built-ins β€” no npm dependencies. The source comments are written in Korean for the maintainer; the code and all output are language-neutral.
  • The repo is also its own marketplace (.claude-plugin/marketplace.json).

Run the helper tests:

npm test

Contributing

chronicle is open source and built to get better with the community. Fork it, use it on your own projects, and if something's missing, rough, or broken, please open an issue or send a pull request β€” I genuinely hope this grows into something more useful through your contributions.

It's easy to hack on: each skill is independent, and the helpers are pure, unit-tested Node modules with zero dependencies, so changes are easy to reason about and review. Before opening a PR, please run:

npm test
claude plugin validate .

Ideas, bug reports, new workflows, better wording β€” all welcome.

License

MIT Β© sp-daewoon

About

πŸ“œ Never write changelogs or release notes by hand again β€” automate your entire docs lifecycle (ADR Β· changelog Β· release Β· devlog Β· index) with 6 zero-dependency Claude Code skills.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors