Contract for the project decision journal (tradeoffs and lessons-learned logs). Use when recording a decision, tradeoff, or lesson, or building a consumer hook.
npx skills add https://github.com/athola/claude-night-market --skill decision-journal
what was chosen, what was rejected, what was sacrificed.
record the lesson.
attune:project-init).docs/adr/; reference its number from a journal entry instead of
duplicating it.
This is a convention and a helper rather than a hard runtime
dependency. Consumers degrade gracefully when leyline is absent
(see Fallback).
AI-assisted work tends to narrate tool output ("the agent built X") and lose
the human reasoning: the decision, the road not taken, and the honest rework
nobody mentions. Two append-only logs, co-located with the code, fix that:
docs/tradeoffs.md records decisions and the alternatives sacrificed.docs/lessons-learned.md records insights, failed approaches, and rework,framed blamelessly.
Both files live in docs/ (co-location is the strongest anti-staleness
lever). Each is a single append-only running log with a scannable
## Active index at the top and an ## Archive section at the bottom.
Status changes.
entry's status to superseded-by: <new-id>, and links both ways.
TR-001, LL-001) so links from PRs, commits, and codenever break.
Status vocabularies:
proposed -> accepted -> (superseded-by: TR-NNN | deprecated)open -> actioned -> closedWhen a workflow reaches a decision or lesson point:
what was given up, the failure and its root cause).
proposed; lessons start open.Do not auto-write without the confirm step. The point is to capture the
human reasoning, not to generate noise.
Run the helper from leyline:
python3 ${LEYLINE}/scripts/journal_append.py <tradeoffs|lessons> \
--project-root <repo-root> \
--title "<short title>" \
[--phase <phase>] [--status <status>] \
[--field key=value ...] \
[--json '<full field object>'] \
[--supersedes TR-NNN] \
[--dry-run]
The helper assigns the next ID, renders the template, inserts the entry above
the ## Archive marker, updates the active index, and (with --supersedes)
flips the prior entry's status and adds backlinks. It is idempotent: appending
an entry whose substantive fields already appear is a no-op.
title (required), context, drivers (list), options (list of
{name, pros, cons, chosen}), decision, ystatement,
consequences_positive, consequences_negative, phase, deciders,
links. Prefer --json for the list-valued fields. status and date
are auto-set (proposed / today) but can be overridden.
title (required), what_happened, what_went_well, what_didnt_work,
root_cause, action, category, owner, phase, links. status
and date are auto-set (open / today) but can be overridden.
The entry template ships inside each scaffolded file as an HTML-comment footer
(<!-- ENTRY TEMPLATE ... -->). When the helper is unavailable, a consumer (or
a human) copies that block into the section above ## Archive, assigns the
next sequential ID, fills it in, and adds an index row by hand. The fallback
template covers the same core sections as the canonical one so entries stay
consistent across the two paths.
Each workflow adds one block at its natural endpoint:
Record to the decision journal (draft + confirm):
drafting fields from this phase's context; show the draft; append on
confirm.
using the footer ENTRY TEMPLATE; assign the next sequential ID.
python3 ${LEYLINE}/scripts/journal_append.py tradeoffs \
--title "Compliance check" --field context="verify" --dry-run
Must print a rendered entry containing ## TR-001: and write nothing.
docs/tradeoffs.md and docs/lessons-learned.md exist with a## Active index and an ## Archive section.
TR-NNN/LL-NNN id and an index row.superseded-by: <id> andadds bidirectional links; the old entry is not deleted.
from the in-file ENTRY TEMPLATE.
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
Generates creative domain name ideas for your project and checks availability across multiple TLDs (.com, .io, .dev, .ai, etc.). Saves hours of brainstorming and manual checking.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Take athola/decision-journal from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.