work-chronicler
v0.7.1
Published
CLI and MCP server that turns your GitHub PRs and JIRA tickets into a searchable markdown work log for performance reviews and resumes.
Maintainers
Readme
work-chronicler
CLI and MCP server that turns your GitHub PRs and JIRA tickets into a searchable markdown work log for performance reviews and resumes.
Review season arrives and you have to reconstruct a year of work from memory.
work-chronicler pulls what you already wrote down (PR descriptions and ticket
history) into plain markdown files on your machine, then gives AI assistants
structured access to it.
How it works
Data flows one way: fetch from the sources, enrich locally, then read it with AI skills or the MCP server.
flowchart LR
accTitle: work-chronicler pipeline
accDescr: GitHub and JIRA are fetched into a local markdown work log, linked and analyzed, then read by AI skills and the MCP server to produce resume bullets and reviews.
GH[GitHub PRs] --> F[fetch]
JI[JIRA tickets] --> F
F --> WL[(Markdown work log)]
WL --> LA[link + analyze + filter]
LA --> WL
WL --> SK[AI skills]
WL --> MCP[MCP server]
SK --> OUT[Resume bullets, self-reviews, summaries]
MCP --> OUTEach PR becomes one file at
work-log/pull-requests/<org>/<repo>/<date>_<number>.md. This example (invented
data) shows a PR after link and analyze --tag-prs filled in jiraTickets
and impact:
---
title: "feat(billing): add usage-based invoice line items"
prNumber: 1482
repository: billing-service
org: acme
author: jdoe
state: merged
createdAt: 2026-03-04T17:22:10Z
mergedAt: 2026-03-06T15:41:02Z
closedAt: 2026-03-06T15:41:02Z
url: https://github.com/acme/billing-service/pull/1482
additions: 612
deletions: 148
changedFiles: 19
jiraTickets:
- BILL-311
labels:
- billing
impact: flagship
---
## Summary
Adds metered line items to monthly invoices so usage-plan customers see
per-feature charges. Replaces the flat overage fee.Quick start
Requires Node.js 22.22.1 or later (24 recommended), a GitHub personal access token and, optionally, a JIRA API token.
npm install -g work-chronicler
work-chronicler init # guided setup: profile, sources, repos, tokens
work-chronicler fetch all # fetch PRs and tickets, then link them
work-chronicler status # see what was fetched
work-chronicler analyze --all # tag impact, detect projects, build a timeline
work-chronicler skills install # add the AI skills to Claude Code, Cursor, Codex or GeminiThen, in your AI coding assistant, run a skill such as
/work-chronicler-write-self-review. Skills are assistant slash commands; they
do not run in a terminal.
Data lives in ~/.work-chronicler/profiles/<profile>/. Each profile has its own
config.yaml, .env (tokens, mode 600) and work-log/. Set
WORK_CHRONICLER_HOME to use another root.
What you can do
| Goal | Use |
| --- | --- |
| Pull PRs and tickets into markdown | fetch github, fetch jira, fetch all |
| Record the PR reviews you gave | fetch github --reviews or fetch all --reviews |
| Store records a skill gathered from another service | validate <dir>, then import <dir> |
| Import your own Slack messages as supplementary evidence | /work-chronicler-setup-slack, then /work-chronicler-import-slack (AI skills) |
| Choose the Slack channels an import skill may read | slack configure, slack channels add\|remove\|list, slack show |
| Name the Google account whose Docs an import skill may store | google-docs configure, google-docs show |
| Import the Google Docs you own as supplementary evidence | google-docs configure, then /work-chronicler-import-google-docs (AI skill; reads Drive with gog) |
| Connect PRs to the tickets they reference | link (run automatically by fetch all) |
| Classify PRs as minor, standard, major or flagship | analyze --tag-prs |
| Group related work into projects and a timeline | analyze --projects --timeline |
| Keep only the work that matters for a review | filter (for example --min-impact major --merged-only) |
| Draft resume bullets, self-reviews and summaries | AI skills (skills install) |
| Let an assistant query your history | mcp (stdio MCP server) |
| Keep work and personal history apart | profiles (profile list\|switch\|delete, global --profile) |
| Track direct reports as a manager | manager mode (init --mode manager, reports ...) |
The command reference lists every command and flag.
Scope
What exists today:
- Sources: GitHub pull requests you authored (by org and repo, or every repo in an org), optionally the reviews and inline review comments you gave on other people's PRs in those orgs (IC profiles), and JIRA Cloud tickets assigned to you (one or more instances and projects). No other sources are fetched.
- Imported records:
importchecks a batch of message or document records that a skill staged in a directory and stores it in the work log all or nothing. The CLI never contacts the service the records came from. Slack records are accepted only for an IC or report with Slack settings (slack ...), and only the subject's own messages in its configured channels. Google Docs records are accepted only for an IC or report with Google Docs settings (google-docs ...), and only Docs the configured account owns, modified inside the fetch range, as a bounded excerpt.status,filter, stats,link, the MCP server and the skills read them as supplementary evidence, apart from PRs and tickets; the timeline lists Google Docs apart, and project detection covers PRs and tickets only. - Local enrichment: PR-to-ticket linking, impact classification, project detection from shared ticket references, a week/month timeline, and filtered subsets. None of these call an AI model.
- IC and manager modes: an individual work log per profile, or per-report work logs plus team-level project and timeline rollups for people managers.
- MCP server: ten read-only query tools over the work log.
- AI skills: thirteen skills: six for IC profiles, three manager-only,
and four for any profile (peer reviews, setting up and importing Slack
messages, and importing Google Docs). The writing skills read the work log
and write documents to the profile's
outputs/directory; the Slack skills read Slack through the assistant's Slack connector, read-only, and store messages withimport; the Google Docs skill reads Drive withgog, read-only, and stores Docs withimport.
The CLI itself never calls an LLM; writing happens in your assistant through the skills or the MCP server.
Documentation
Start at the documentation index or
Getting started. The pages are also a
Fumadocs site in documentation/.
- Workflows: resumes and self-reviews, peer reviews, the PR reviews you gave, Slack and Google Docs imports, and manager review packets.
- Configuration: profiles,
config.yaml, tokens, environment variables and the workspace layout. - Command reference: every command and flag.
- MCP server: client setup and the available tools.
- AI skills: what each skill does and how skills find your data.
- Manager mode: tracking reports; Review packets and team analysis covers per-report and team analysis.
Development
pnpm install
pnpm build
pnpm testRun the CLI from source with pnpm cli <command>. See
CONTRIBUTING.md for checks, commit conventions and the
release process, and CHANGELOG.md for release history.
