document
Write the human-facing prose about a change — PR body · changelog entry · release note · postmortem — and put it in the right file.
Skill by awrshift
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/awrshift-document
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/document
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Grep,Glob
What's inside
- Skill name
document- Description
- Write the human-facing prose about a change — PR body · changelog entry · release note · postmortem — and put it in the right file. Use when the user says "write the PR", "PR description", "PR body", "changelog", "changelog entry", "release note", "release notes", "postmortem", "write up the incident", "напиши PR", "описание PR", "чейнджлог", "релиз-ноут", "постмортем". Every draft is built ONLY from `git diff` / `git log` output this skill runs itself — never from the session's memory of what it did, never from what it intended. Writes no code, no tests, no specs; it never edits an implementation file and never edits a spec.
- License
- MIT
- Allowed tools
- Read,, Grep,, Glob
- Instructions
- 139 lines in SKILL.md · view on GitHub
Files (5)
- SKILL.md
- changelog.md · templates/
- postmortem.md · templates/
- pr.md · templates/
- release-note.md · templates/
SKILL.md (first lines)
# /document — the human record of a change
You write what a human reads about a change: a PR body, a changelog entry, a release note, a
postmortem. One rule governs all four — **every sentence traces to a hunk or a commit you read
in this invocation.** What you remember building is not evidence; the diff is.
## Mode
Argument: `pr` · `changelog` · `release-note` · `postmortem`.
No argument → look at the repo first, then ask ONE question with a recommendation:
> `pr`, `changelog`, `release-note` or `postmortem`? Recommend **`pr`** — branch
> `<branch>` is `<n>` commits ahead of `<base>` and has no open PR.
How to pick the recommendation: uncommitted diff or a branch ahead of base → `pr` · a tag with
no file in `docs/releases/` → `release-note` · merged work missing from `CHANGELOG.md`'s
`Unreleased` → `changelog` · the user named an incident, outage or regression → `postmortem`.
Ask once, then proceed.
## Step 1 — Determine the range, then READ it
No drafting before these commands ran in this session.
| Situation | Range |
|---|---|
| uncommitted work | `HEAD` (plus `git diff --cached`; untracked files via `git status --porcelain`) |
| a branch to merge | `<base>..HEAD`, base = `main` if `git rev-parse --verify main` succeeds, else `master` |
| a release | tag range `<prev-tag>..<tag>` — list with `git tag --sort=-v:refname \| head -5` |
| an incident | the commits the incident touched plus the fix commit, by date or by path |
```bash
git diff --stat <range>
git diff <range>
git log --format='%h %ad %s' --date=short --no-merges <range>
git log --format='%h %s%n%b' --no-merges <range> # bodies carry the WHY, when an author wrote one
```
Big diff (`--stat` over ~2000 changed lines): read `--stat` first, then `git diff <range> -- <path>`
area by area. Never describe a file whose hunks you did not read. Quote from this output in the
draft — file paths, symbol names, commit shas — rather than paraphrasing it from a distance.
## Step 2 — Find the governing spec
If the changed paths belong to a project that has one: `projects/<name>/plans/*.md` — or the path
that project's `README.md` map names for plans/specs, **the map wins over the default**. Pick the
spec whose Slices name the touched files. Read its Goal, Acceptance and Non-goals; pull:
- the `AC-n` ids this change serves (match the AC text against real hunks, not against the slice title),
- any `Verified` cells already filled — those pointers are your "How verified" evidence,
- the Non-goals — they are the honest content of "Out of scope".
No spec, or no AC that matches → the AC section reads `no spec — n/a`. Do not invent an id, and
do not write or amend a spec: the integrator owns those files.
## Step 3 — Draft from the template
Copy the section order and the cues; the templates are cue sheets, not prose to polish.
| Mode | Template |
|---|---|
| `pr` | `templates/pr.md` |
| `changelog` | `templates/changelog.md` |
| `release-note` | `templates/release-note.md` |
| `postmortem` | `templates/postmortem.md` |
Resolve them from the plugin: `${CLAUDE_PLUGIN_ROOT}/skills/document/templates/<name>.md`.
Audience differs per mode and changes the vocabulary: a PR body is read by a reviewer who will
read the diff next (file paths, commit shas, gate output) · a changelog entry by a maintainer
scanning versions (one line, one pointer) · a release note by a user who never sees the code (no
file paths, no internal names) · a postmortem by whoever is on call next time (timeline, cause,
what to change).
## Step 4 — The honesty rules
These are the reason this skill exists. A pretty document that overstates the change is worse
than no document.
- **Every claim points to evidence** — a hunk (`path` + what changed, or `path:line`) or a commit
(`abc1234`). A bullet with no pointer is not finished.
- **Nothing the diff does not show.** No rationale the commit bodies, the spec or the user did not
state. Write `rationale: not stated` and move on.
- **No number without a source in the change.** "Faster", "improved performance", "more reliable",
"cleaner" are banned unless the diff itself carries the measurement — a benchmark file, a
recorded run, a value the spec's Value sources table names.
- **Unverified stays "not verified".** A suite you did not see run, a deploy you did not watch, a
browser walk nobody did. Name the command someone should run instead of implying it passed.
- **Failures go in the text.** A failing gate, a skipped test, a TODO the diff adds, an AC with no
evidence — the document records it. Omitting it to keep the PR clean is a defect.
- **Attribute what humans told you.** "Reported by the user: the page 500s after login" is
evidence; your reconstruction of what probably happened is not.
- **Deviations are content.** A spec deviation an executor registered belongs in the PR body's
Risks or Out of scope, not dropped.
## Step 5 — Write it where it belongs
| Mode | Destination |
|---|---|
| `pr` | print the body in chat. Write `.git/PR_BODY.md` only if the user asks for a file — then tell them `gh pr create --body-file .git/PR_BODY.md` |
| `changelog` | `CHANGELOG.md` at the repo root — insert under `## [Unreleased]`, in the right Added / Changed / Fixed / Removed subsection. Missing file → create it with the Keep a Changelog header from the template |
| `release-note` | `docs/releases/<version>.md` (`<version>` exactly as the tag reads, without a leading `v` if the existing files drop it) |
| `postmortem` | `docs/postmortems/YYYY-MM-DD-<slug>.md` |
**If the project's `README.md` map already names a home for that class, that row wins** — write
there, and say in the summary that the map, not the default, decided the path. Same for a repo
that already keeps release notes in `docs/CHANGELOG.md` or `RELEASES.md`: follow what exists.
Never create a second home for a class that already has one.
Edits into an existing file are **surgical**: insert your entry, leave neighbouring prose,
ordering and formatting untouched. Never reflow a file to make your insert look native.
## Step 6 — Completion summary
Four lines, this order; drop "Heads up" when there is genuinely nothing:
- **Headline** — what got documented, one line.
- **Next** — the single action for the user (open the PR, tag the release, land the action items).
- **Heads up** — what the diff forced into the document: a failing gate, an AC with no evidence, aFrom awrshift/agent-memory-kit, MIT.
More from awrshift/agent-memory-kit
- 0.658score
system-audit
awrshift
Periodic evidence-based self-audit of the whole agent system — the orchestrator, its docs/SSOTs, rules, memory, subagents, tools, infra and the work it claims…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
close-session
awrshift
End-of-session ritual — audit today's patterns against accumulated memory, propose promotions, refresh MEMORY.md, and write the session handoff.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
code-sync
awrshift
Reconcile the project's documents with what the code now shows, after a merge or at the end of a build: spec statuses (building → done only with a named gate…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
memory-audit
awrshift
Audit MEMORY.md against the memory discipline — oversized sections, settled multi-session patterns that belong in knowledge/concepts/, session-headed…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
second-opinion
awrshift
Cross-check the agent's own answer with independent reviewers before bringing it to the user.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
session-review
awrshift
End-of-session adversarial review loop.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
tour
awrshift
Interactive walkthrough of the Memory Kit system using the user's actual project files.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
qa-sweep
awrshift
Run a multi-lens agent QA sweep of the RUNNING product: spawn `qa` agents (one per lens — user-flow · edge-state · honesty · contract · ux-critique), collect…
SkillAFreshness: A★ 34Claude Code +9 - 0.649score
setup
awrshift
Adopt the Memory Kit in THIS repository — scaffold the memory layers, decide how the kit coexists with Claude Code's native auto memory, and install safe…
SkillAFreshness: A★ 34Claude Code +9
Signals
- Stars
- 34
- Forks
- 9
- Open issues
- 1
- Last commit (this folder)
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/awrshift/agent-memory-kit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from awrshift
- 0.658score
system-audit
awrshift
Periodic evidence-based self-audit of the whole agent system — the orchestrator, its docs/SSOTs, rules, memory, subagents, tools, infra and the work it claims…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
close-session
awrshift
End-of-session ritual — audit today's patterns against accumulated memory, propose promotions, refresh MEMORY.md, and write the session handoff.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
code-sync
awrshift
Reconcile the project's documents with what the code now shows, after a merge or at the end of a build: spec statuses (building → done only with a named gate…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
memory-audit
awrshift
Audit MEMORY.md against the memory discipline — oversized sections, settled multi-session patterns that belong in knowledge/concepts/, session-headed…
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
second-opinion
awrshift
Cross-check the agent's own answer with independent reviewers before bringing it to the user.
SkillAFreshness: A★ 34Claude Code +9 - 0.653score
session-review
awrshift
End-of-session adversarial review loop.
SkillAFreshness: A★ 34Claude Code +9
Cite this page
document skill. Agent Mart. https://agentmart.dev/skills/awrshift-document (last updated 2026-10-24)