CLI tools to extract your completed work — Linear tickets and merged GitHub pull requests — within a configurable date range. Outputs to console table, JSON, and CSV.
Built with Go (standard library only, zero external dependencies).
| Package | Description | API |
|---|---|---|
linear/ |
Completed Linear issues assigned to you | Linear GraphQL |
pull_requests/ |
Merged GitHub PRs authored by you | GitHub GraphQL |
- Go 1.21+
- A Linear API key (for the Linear extractor)
- A GitHub personal access token (for the PR extractor)
- Clone the repo and create a
.envfile at the root:
export LINEAR_API_KEY='lin_api_...'
export GITHUB_TOKEN='ghp_...'- Source it before running:
source .env# Run the Linear extractor (default)
make run
# Run the GitHub PR extractor
make run PKG=pull_requests
# Build all packages
make build-all
# Build and run a specific package
make build-run PKG=linear| Command | Description |
|---|---|
make run PKG=<name> |
Run a package directly (default: linear) |
make build PKG=<name> |
Build binary to bin/<name> |
make build-run PKG=<name> |
Build then execute |
make build-all |
Build all packages |
make clean |
Remove bin/, JSON, and CSV output files |
make fmt |
Format all Go code |
make deps |
Tidy go modules |
make help |
Show available commands |
Each extractor produces:
- Console — formatted table with summary statistics
- JSON — full structured data (
*_completed_tickets.json/*_merged.json) - CSV — tabular export (
*_completed_tickets.csv/*_merged.csv)
- Date range — hardcoded constants at the top of each extractor's source file
- Output filenames — set in
main()of each extractor