captain-log
Append to or read the captain's narrative log — decisions, friction, learning, milestones, observations, builds.
适合你,如果需要在开发或工作中记录决策与收获
npx oh-my-skill add the-agency-ai/the-agency/captain-logcurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- the-agency-ai/the-agency/captain-lognpx oh-my-skill verify the-agency-ai/the-agency/captain-log怎么用
商店整理自技能原文 · 版本 dd2430b · 表述以原文为准安装后,Claude 可以记录或阅读会话的叙事日志。日志涵盖决策、摩擦、学习、里程碑、观察、构建等类别,每天一个文件,追加只写。也可读取当天或指定日期日志,列出所有日志文件,或显示当天日志路径。
当你说“记录”并描述具体事件(如决策、摩擦等)时触发写操作;当你说“读取日志”、“读取某天日志”、“列出日志”或“日志路径”时触发读操作。
技能原文 SKILL.md
<!-- Flag #62/#63: allowed-tools removed. Inherits Bash(*) from .claude/settings.json. Restricting to specific subcommand patterns at the skill level silently blocks agents on permission prompts the agent cannot see — see dispatch #171 for the devex incident that surfaced this trap. -->
Captain's Log
The captain's log is the narrative thread of a session. Distinct from handoffs (authoritative current state), transcripts (full dialogue), and flags (ephemeral observation queue) — the log captures what we discovered, what we built, what we decided as a rolling daily record. Append-only. Mined later for friction patterns and continual improvement.
Why this exists
Sessions lose their "why" the moment context compacts or the agent ends. Handoffs carry state; transcripts carry dialogue; flags carry open items. None of them carry the narrative — the decisions made, the friction hit, the things built, the things learned — in a form that accumulates across sessions and can be mined for patterns.
The log fills that gap:
- A decision entry lets future sessions see not just what was decided but that it was decided (and when).
- A friction entry is a seed for the next toolification cycle — friction is the raw material for framework evolution.
- A build entry pairs the "what" (a tool, skill, or rule shipped) with the "why" — rescuing intent that would otherwise evaporate.
- A learning entry captures surprises about the codebase, methodology, or principal's preferences for later sessions.
- A milestone entry marks significant progress — phase complete, plan complete, release shipped.
The richer the log, the more useful the mining. Log proactively; don't batch.
Required reading
Before running, Read the files listed in required_reading: frontmatter.
agency/REFERENCE-AGENT-DISCIPLINE.md— Two Priorities + Over/Over-and-out. The log is a working-session practice; it sits inside the agent-discipline frame.
Usage
/captain-log <free text> # appended as observation (default) /captain-log -c <category> <text> # appended with category /captain-log --category <category> <text> # long form /captain-log read # read today's log /captain-log read YYYYMMDD # read a specific day /captain-log list # list all log files /captain-log path # print today's log file path
Categories: decision, friction, learning, milestone, observation (default), build.
Examples:
./agency/tools/captain-log "noticed agents kept cd-ing to main checkout" ./agency/tools/captain-log -c friction "permission prompt for chmod blocked agent boot" ./agency/tools/captain-log -c decision "QGRs go in workstream/quality-gate-reports/, not usr/" ./agency/tools/captain-log -c build "shipped /collaborate skill + tool + hookify warn" ./agency/tools/captain-log read ./agency/tools/captain-log read 20260406
Preconditions
- You are in a git repository with the agency tooling installed.
- Your principal sandbox exists at
usr/{principal}/captain/— the tool writes daily log files beneath it. - For a write, you know which category best fits the entry (default is
observationif unsure). - For a read (
read [YYYYMMDD]), the target day's file must exist — otherwise the tool reports "no log for that day."
The skill is append-only on writes and read-only on reads. Writes never rewrite earlier entries; running twice produces two entries.
Flow / Steps
Step 1: Decide write vs read
- If you just made a decision, hit friction, built something, learned something, reached a milestone, or want to capture a general observation — proceed as a write.
- If you want to review the narrative of the current day or a past day, or enumerate the corpus — proceed as a read (
read,read YYYYMMDD,list, orpath).
Step 2a: Write an entry
Invoke the tool with the entry text. Choose the category deliberately — the category is what makes the log mineable later:
./agency/tools/captain-log -c <category> "<entry text>"
- Use
-c observation(or omit-c) for general notes that don't fit another bucket. - Use
-c decisionwhen the entry is "we chose X over Y because Z" — future sessions read this to understand why the codebase looks the way it does. - Use
-c frictionwhen something got in the way — this is a toolification seed. - Use
-c learningwhen you learned something non-obvious — about the codebase, methodology, or principal preferences. - Use
-c milestonefor significant progress — phase complete, plan delivered, release shipped. - Use
-c buildwhen you shipped a tool, skill, hookify rule, or process change — pair "what" with "why."
The tool appends to today's file at usr/{principal}/captain/logs/captains-log-{YYYYMMDD}.md with an HH:MM:SS — category heading plus the entry body.
Step 2b: Read entries
read— read today's log.read YYYYMMDD— read a specific day's log.list— enumerate all log files.path— print today's log file path (for scripting or piping into another tool).
Step 3: Proceed with work
The log is a side-channel practice — it never blocks the work. Capture the entry, keep moving. The mining step happens later, at week-end or when friction patterns are being reviewed.
Failure modes
- Principal sandbox missing: tool errors with a path-not-found on
usr/{principal}/captain/logs/. Run/sandbox-initor create the directory. - Read for a day with no entries: tool reports "no log for that day" and exits non-zero. Confirm the date or use
listto see what exists. - Entry text contains shell metacharacters: quote the argument so the shell passes it intact. Unquoted entries with
&,|,;, or*will lose content. - Wrong category: log is append-only — there is no edit-in-place. File a new entry with a correction note, or leave it and move on (the mining step handles noise).
- Tool output suggests a bug: do not fix it here — report it via
/flagor/agency-issueperagency/REFERENCE-AGENT-DISCIPLINE.md.
What this does NOT do
- Does not replace handoffs. Handoffs carry authoritative pickup state; logs carry narrative. A fresh session reads the handoff first, the log for color.
- Does not replace transcripts. Transcripts capture the full dialogue of a conversation; the log is curated narrative, not verbatim.
- Does not replace flags. Flags are a queue for open items; log entries are closed observations about work that already happened.
- Does not commit the log. The tool writes files; commit them via
/coord-commitor the session-lifecycle skills like any other coord artifact. - Does not dispatch, QG, or push. All three are out of scope — this is a single-agent journaling practice.
- Does not mine the log. Mining (extracting friction patterns, building toolification seeds) is a separate, later step — the log is the raw material, not the analysis.
Status
active (v2 migrated from v1 in the sister-repo V1→V2 migration). Stable surface; the underlying tool at agency/tools/captain-log has the same CLI it did pre-migration.
Related
/handoff— authoritative session pickup state; reads first, log reads for color./flag— ephemeral observation queue; route to discussion, log if the observation is closed./transcript— full dialogue capture; log is curated narrative, not verbatim./dispatch— cross-agent coordination; log captures local narrative, dispatches carry cross-agent findings.agency/tools/captain-log— the underlying tool this skill invokes.
OFFENDERS WILL BE FED TO THE — CUTE — ATTACK KITTENS!