Skip to content
Back to skills

Chronicle

ASecurity

Have the AI draft or update a standalone Markdown doc — a feature write-up, design doc, or a section of README/ROADMAP — grounded in the real diff, code, commit history, or PR/issue text. Use when the user says chronicle, asks to write documentation, draft a design doc, or update a named doc file such as README or ROADMAP.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsrailsgitdocumentation

Works with

  • mcp

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add karloows/orchraft --skill chronicle --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Chronicle?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Chronicle
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/karloows-chronicle/badge)](https://www.skillsdirectory.com/skills/karloows-chronicle)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: chronicle
description: Have the AI draft or update a standalone Markdown doc — a feature write-up, design doc, or a section of README/ROADMAP — grounded in the real diff, code, commit history, or PR/issue text. Use when the user says chronicle, asks to write documentation, draft a design doc, or update a named doc file such as README or ROADMAP.
---

# Chronicle Workflow

Use this skill when the user asks the AI to write or update a standalone
Markdown document — anything that isn't an in-code comment or docstring.

## Contents

- [At A Glance](#at-a-glance)
- [What This Is Not](#what-this-is-not)
- [Trigger Rules](#trigger-rules)
- [Requirements](#requirements)
- [Prerequisites](#prerequisites)
- [Targets](#targets)
- [Default Path](#default-path)
- [Guardrails](#guardrails)
- [Stop Conditions](#stop-conditions)
- [Handoff](#handoff)
- [Response Examples](#response-examples)

## At A Glance

1. Read `context/policies/docs-policy.md` for the shape rules.
2. Figure out the [target](#targets): a diff/PR/feature to document, an
   existing doc file to update, or a new one to create.
3. Ground every claim in something readable — code, commit history, or
   PR/issue text. Never invent intent, history, or rationale that isn't
   recoverable from a real source.
4. Draft or update the doc content directly in the file.
5. Report what changed, file and section. Never commit, push, or open/update
   a PR — that's `ship`'s job.

## What This Is Not

- Not `ship`: it never stages, commits, or pushes. Run `ship` afterward to
  land the doc changes.
- Not `lore`: `lore` writes in-code comments and docstrings; `chronicle`
  writes standalone Markdown documents — README, ROADMAP, design docs,
  feature write-ups — and never touches a source file's comments.
- Not `yap`: `yap` explains in chat, read-only, and produces no file. This
  skill produces or updates an actual document.
- Not permission to invent rationale, history, or intent the repo doesn't
  actually show. If the "why" behind a change isn't recoverable from code,
  commit history, or PR/issue text, say so and ask instead of narrating a
  plausible-sounding reason.

## Trigger Rules

- Run when the user explicitly asks to chronicle, write documentation, draft
  a design doc or feature write-up, or update a doc file (README, ROADMAP,
  or any other standalone Markdown doc).
- If both the target doc and the thing it should document are ambiguous, ask
  which before writing anything.

## Requirements

- A diff, file, or new-file target needs nothing beyond local git and file
  access.
- A PR or issue target additionally needs a GitHub MCP connector configured
  for this session (read access is enough — this skill never posts to
  GitHub), or `gh` installed and authenticated as a fallback. Without
  either, stop and tell the user the PR/issue target isn't reachable and ask
  whether to use the local diff or a named file instead.

## Prerequisites

- Read `context/policies/docs-policy.md`. Use the target repo's copy when it
  exists; otherwise use the bundled copy at
  `${CLAUDE_PLUGIN_ROOT}/context/policies/docs-policy.md`.
- Check `git status --short` and the relevant diff to know what actually
  changed before drafting anything grounded in it.
- Read the target document's existing structure and tone (or the closest
  comparable doc in the repo, when creating a new file) before writing —
  match it instead of imposing a different convention.
- Read `context/personality.md` (target repo copy, else bundled) to confirm
  whether the target file/section is one where the orc voice actually
  applies — most document *content* stays plain and technical; the voice is
  reserved for the specific surfaces that file lists (e.g. a README
  introduction), not for design docs or ROADMAP entries.

## Targets

- **Diff, PR, or named feature/change** — ground the doc content in what
  actually changed: `git diff`/`git diff --staged` plus untracked files, or
  a PR's diff fetched through the GitHub MCP connector (falling back to
  `gh`).
- **Existing file or section** — update a named doc file or one section of
  it, matching its current structure and tone.
- **New file** — create a doc that doesn't exist yet (e.g. a first
  `CONTRIBUTING.md`), grounded in the same real sources as any other
  target. Never fill a new doc with placeholder filler ("add details here")
  where a real source doesn't yet cover something — say what's missing
  instead.

## Default Path

1. Determine the target and read `context/policies/docs-policy.md`.
2. Identify what the doc needs to say, grounded in the diff, code, commit
   history, or PR/issue text — not assumption or house style guessing.
3. Match the existing document's structure and tone, or the plain,
   technical default from `context/policies/docs-policy.md` when creating a
   new file with no comparable precedent in the repo.
4. Draft or update the content directly in the file.
5. Report the changes as a file/section list.

## Guardrails

- Never commit, push, stage, or touch a PR/issue as part of this skill.
- Never touch in-code comments or docstrings — that's `lore`'s job, not
  this one's.
- Never invent rationale, history, features, or claims not grounded in a
  real, readable source.
- Don't pad a doc with generic filler that carries no real information;
  every sentence should say something specific about this repo.

## Stop Conditions

- Stop and ask if there's no identifiable target and no current work to
  infer one from.
- Stop only when the requested content depends entirely on a "why" that
  isn't recoverable from any real source, leaving nothing factual to write.
  When only part of the content needs that rationale, don't stop — document
  the observable behavior that is grounded, and mark the specific gap
  inline (per `context/policies/docs-policy.md`) instead of guessing or
  blocking the rest.
- Stop if the user asked for a PR/issue-grounded target and neither the
  GitHub MCP connector nor `gh` is available — ask whether to use the diff
  or a named file instead of silently switching targets.

## Handoff

- Unless the user asked for plain output, open with a fresh one-line phrase
  in the orc voice, speaking as the Chronicler from `context/personality.md`
  (the target repo's copy when it exists, otherwise
  `${CLAUDE_PLUGIN_ROOT}/context/personality.md`). If they did, open with
  the plain result instead. This orc-voice line is the skill's own success
  message, not part of the drafted document's content.
- List the files/sections touched and a one-line summary of what changed.
- Remind the user that `ship` is the next step if they want these changes
  committed.
- If blocked, drop the orc voice and state the blocker plainly.

## Response Examples

Opening lines are samples of the orc voice; write a fresh one each time.

Doc drafted:

```text
📚 Hrrm. The feature's story is bound into the chronicle now. ✨

`docs/offline-cache.md`: new design doc, grounded in PR #58's diff and its
linked issue.
Run `ship` to carry this into a commit.
```

Doc updated:

```text
📚 The scrolls now read true. README's Install section matches what's
actually shipped.
```

Blocked, no target:

```text
❓ Chief, what should the chronicle cover, and where does it belong —
README, ROADMAP, or a new doc?
```

Doc drafted with a gap marked inline, not blocked:

```text
📚 Hrrm. The retry logic's bound into the chronicle, with one gap marked. ✨

`docs/retry-policy.md`: documented the retry behavior; the 3-attempt limit
is left as an open question since nothing in the diff, history, or the
linked issue explains why 3 specifically.
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.