2.13.0-beta.20). Features may change before the next stable release.Switch to stable →Skills
Record chronological work history with ak:journal
Turn meaningful session events into a local technical journal without treating the entry as current authority or publishing it.
Use ak:journal after meaningful implementation, review, incident, or analysis
work when the project needs a chronological record of what happened and why.
The Skill drafts a concise entry, persists it through ak journal create, and
keeps the local file as the source of truth.
Choose ak:journal for work history
Use ak:journal when
- A session uncovered a root cause, important change, impact, or lesson worth preserving.
- Future contributors need a chronological record of decisions and next steps.
- You want concrete errors, paths, and outcomes captured after the work.
- A significant failure benefits from honest reflection or failure archaeology.
Choose another workflow when
- You need a current product decision, policy, specification, or marketing authority. Update its ADR or documentation owner.
- You need a fresh-session transfer that preserves conversation state. Use
ak:handoff. - You need a repository-derived report across branches, worktrees, plans, and
roadmaps. Use
ak:watzup. - You want to publish an entry. Publication is outside this Skill and requires a separate reviewed workflow.
Prepare a safe entry
Before starting:
- Complete Onboarding, install Marketing
Kit, and ensure the
akCLI is available. - Run from the intended project, or know its registered project name for
--project <registry-name>. - Gather only the high-signal events: root cause, changes, impacts, decisions, evidence, and next steps.
- Remove credentials, customer data, personal data, private URLs, and sensitive commercial details that do not belong in repository history.
- Identify the current ADR or documentation owner for any lasting decision that must also be updated.
Without --project, the CLI uses the registered project matching the current
directory when possible, then falls back to the current directory. Confirm the
resolved project before accepting the file path.
Invoke the Skill
| Runtime | Invocation | Availability boundary |
|---|---|---|
| Claude Code | /ak:journal [topic or reflection] | The Skill drafts the entry and calls the first-class ak journal CLI to persist it. |
| Cursor | /ak:journal [topic or reflection] | Slash invocation is user-verified for installed AgentKit Skills. CLI and filesystem access still depend on the environment. |
| Codex | $ak:journal [topic or reflection] | Codex discovers the Skill natively; persistence still requires the ak binary and write access to the resolved project. |
/ak:journal "Record why the launch-brief review stopped, the evidence checked, the wording removed, and the pending legal dependency. Exclude customer names and do not publish or commit"/ak:journal "Record why the launch-brief review stopped, the evidence checked, the wording removed, and the pending legal dependency. Exclude customer names and do not publish or commit"$ak:journal "Record why the launch-brief review stopped, the evidence checked, the wording removed, and the pending legal dependency. Exclude customer names and do not publish or commit"Read Runtime adapters for discovery and tooling differences. The persisted journal format is owned by the CLI rather than by a runtime-specific editor.
Understand the stages
- Gather important events. The Skill extracts the root cause, key changes, impacts, decisions, evidence, and next steps from the current session.
- Draft a title, summary, and body. It favors concrete errors, paths, and outcomes over a vague retrospective.
- Persist through the CLI. It passes the Markdown body on standard input so
the workflow does not depend on
$EDITOR. - Validate when needed. It can run
ak journal validateagainst the new slug or filename stem. - Keep publishing separate. It reports
AgentWiki publish skippedand retains the local file as the source of truth. - Offer read-only browsing. Existing entries can be inspected with
ak journal listandak journal show <slug>.
The canonical persistence shape is:
ak journal create "<title>" --summary "<one-line summary>" --stdin <<'EOF'
## What happened
...
## Decision
...
## Next steps
...
EOFUse --date YYYY-MM-DD to override the default UTC date, or
--project <registry-name> to target a registered project. Created files use
YYYY-MM-DD-<slug>.md; collisions receive -2, -3, and later suffixes rather
than overwriting an existing entry.
Keep history, authority, and publication separate
A journal is historical, not current authority
The CLI appends a notice that the entry is a historical work record. Move any lasting decision into the project’s current docs, specification, or ADR owner. Do not let a later reader infer current policy from an old journal alone.
ak journal createwrites one new file under<project>/plans/journals/. The CLI creates the directory when necessary and writes atomically through a temporary file.ak journal list,ak journal show, andak journal validateare read-only.- The entry may contain repository paths, errors, and decisions. Redact content that should not be retained, committed, indexed, or shared.
- AgentWiki publication is deferred. The Skill must report it as skipped rather than claiming a remote copy exists.
- The file write does not authorize Git staging, commit, push, publication, deployment, outreach, account mutation, provider access, or spend.
Verify the output
A complete run should provide:
- One new Markdown file under
<project>/plans/journals/with a safe, collision-free filename. - Frontmatter containing the title and date, plus the summary when supplied.
- A body that records what happened, the decision or lesson, and next steps.
- The standard notice that the entry is historical work, not durable authority.
- The created path and the result of
ak journal validatewhen validation was requested. - An explicit
AgentWiki publish skippedstatement.
You can inspect the entry without changing it:
ak journal validate <slug-or-filename-stem>
ak journal list
ak journal show <slug>Review the file and repository diff before deciding whether the history should be committed or shared.
Troubleshoot safely
| Symptom | Safe next step |
|---|---|
The runtime does not recognize ak:journal | Confirm Marketing target and scope, restart the runtime, then follow Runtime cannot find a Skill or Agent. |
| The CLI resolves the wrong project | Stop and rerun with the exact registered --project <registry-name> after confirming it. |
ak journal create rejects the date | Use exact YYYY-MM-DD; the default is today in UTC. |
| A filename already exists | Let the CLI allocate its collision suffix. Do not overwrite the older entry. |
| Validation fails | Keep the file local, fix the missing title or invalid date, then rerun validation. |
| The entry contains durable policy | Update the current docs or ADR owner and link the journal as historical context. |
| A publish step is proposed | Stop. Publication is deferred in this Skill and requires a separate authorized workflow. |
Continue with the Marketing Kit overview or Projects, artifacts, and checkpoints for broader persistence and ownership guidance.
Know the current limits
- The journal reflects the evidence visible in the current session; it does not independently reconstruct complete repository or provider history.
validatechecks the entry’s readable Markdown shape, title, date, and file extension. It does not prove factual accuracy or current authority.- The optional
journal-writerAgent can deepen failure reflection when the runtime supports it, but the entry still persists throughak journal create.
Preserve session state with ak:handoff
Create a concise, redacted handoff that lets a fresh agent continue without treating conversation memory as repository status.
Summarize repository work with ak:watzup
Scan local Git refs, worktrees, plans, and roadmaps to produce a short evidence-backed status report without changing the checkout.