- name
- gitcli
- description
- Local git timeline CLI. Query commit history across 50+ repositories. Use when user asks about coding activity, what they worked on, commit history, project timeline, or 'what did I do on [date]'.
# gitcli v0.4.0 โ Local Git Timeline CLI
Query commit history across all local git repositories (~/repos/gh, ~/repos/work).
Binary is bundled in the skill directory. Invoke via `{baseDir}/gitcli`.
All output is JSON.
## The time axis (v0.4.0)
gitcli computes in **KST since 2026-07-14**, following the time contract in
`~/repos/gh/junghan0611/timeline/README.md` โ the same contract `collect.py` implements,
so the two answer a day identically (verified: equal full-sha sets).
- A commit belongs to the day of its **author** timestamp in Seoul. A commit written at
20:00 UTC belongs to the *next* Seoul day.
- Every instant on the wire is RFC3339 with `+09:00` (`ts`, `first_commit`, `last_commit`).
- Windows snap to midnight KST and are half-open on instants โ a day is never sliced.
- Each commit carries the **full `sha`** (joins the timeline) plus a short `hash` (for humans).
- Walks `--all --no-merges`, deduped by sha across clones.
- Symlinked repos are followed (`~/repos/gh/org` โ `~/sync/org` was invisible before v0.4.0).
- Unreadable repos are reported in `rejects`, never silently read as "no commits".
## When to Use
- "์ด์ ๋ญ ์ฝ๋ฉํ์ง?" โ `gitcli day --days-ago 1 --me --summary`
- "pi-mono ์ต๊ทผ ์ปค๋ฐ" โ `gitcli log pi-mono --days 7`
- "์ด๋ฒ ๋ฌ ํ๋๋" โ `gitcli timeline --month 2026-02 --me`
- "๋ฆฌํฌ ๋ช ๊ฐ์ผ?" โ `gitcli repos`
- ํน์ ๋ ์ง ํ๋ โ `gitcli day 2025-10-10 --me --summary`
- "ํ์ฌ ์์
์ ๋ฆฌ" โ `gitcli timeline --month 2026-02 --me --repos ~/repos/work`
- "์ฐ๋ดํ์ ์๋ฃ" โ `gitcli timeline --days 90 --me --repos ~/repos/work`
## Commands
### day โ ํน์ ๋ ์ง์ ๋ชจ๋ ์ปค๋ฐ
```bash
gitcli day # ์ค๋
gitcli day 2025-10-10 --me --summary # ๊ฐ์ (ํ ํฐ ์ ์ฝ, ๊ธฐ๋ณธ ์ถ์ฒ)
gitcli day 2025-10-10 --me # ์์ธ (์ปค๋ฐ ๋ฉ์์ง/diff ํต๊ณ ํฌํจ)
gitcli day 20251010 # Denote ID ํธํ
gitcli day --years-ago 1 --me # 1๋
์ ์ค๋
gitcli day --days-ago 7 --me # 7์ผ ์
gitcli day --repos ~/repos/gh --me # ํน์ ๋๋ ํ ๋ฆฌ๋ง
gitcli day --me --max 10 # ์์ธ ๋ชจ๋์์ ์ต๊ทผ 10์ปค๋ฐ๋ง
```
**`--summary` ์ถ๋ ฅ** (~500B, 96% ์ ๊ฐ):
```json
{"date":"2026-02-22","total_commits":45,"repos_summary":[{"name":"denotecli","commits":16},{"name":"pi-skills","commits":4}],"summary":{"active_repos":6,"first_commit":"2026-02-22T16:39:07+09:00","last_commit":"2026-02-22T20:18:44+09:00","active_hours":3.65}}
```
**๊ธฐ๋ณธ ์ถ๋ ฅ** (~13KB): ์ปค๋ฐ๋ณ hash, sha, ts, time, message, files_changed, insertions, deletions ํฌํจ.
`--max N`์ผ๋ก ์๋ฅด๋ฉด `summary.dropped`์ **๋ฒ๋ฆฐ ์ปค๋ฐ ์**๊ฐ ์ค๋ฆฐ๋ค (์ํ๊ฐ N์ด ์๋๋ค).
### repos โ ๋ฆฌํฌ ๋ชฉ๋ก๊ณผ ํต๊ณ
```bash
gitcli repos # ๊ธฐ๋ณธ (~/repos/gh + ~/repos/work)
gitcli repos --repos ~/repos/gh # ๊ฐ์ธ๋ง
```
### log โ ํน์ ๋ฆฌํฌ ์ปค๋ฐ ๋ก๊ทธ
```bash
gitcli log agent-config --days 7
gitcli log agent-config --from 2025-10-01 --to 2025-10-31
gitcli log nixos-config --from v2026.5.30-beta.1 # OpenClaw-style tag date accepted
gitcli log nixos-config --author junghan
```
๋ฆฌํฌ ์ด๋ฆ์ `gitcli repos`๊ฐ ๋ด๋ ์ด๋ฆ์ด๋ค. ์๋ ์ด๋ฆ์ ์ฃผ๋ฉด `repo not found`๋ก ์ฃฝ๋๋ค.
### timeline โ ๊ธฐ๊ฐ๋ณ ํ๋ ๊ฐ์
```bash
gitcli timeline --days 30 --me
gitcli timeline --month 2025-10 --me
```
Output: period, total_commits, active_days, daily[].{date, commits, repos[], hours}
`--me` works here as of v0.4.0. Before that the flag was documented but never read, so
`timeline --me` silently counted everyone's commits.
## Important Notes
- **`--me --summary` ๊ธฐ๋ณธ ์ฌ์ฉ**: ํ ํฐ ์ ์ฝ + ํฌํฌ/AI ์ปค๋ฐ ํํฐ๋ง
- **`--tz`**: v0.4.0๋ถํฐ no-op. KST๊ฐ ๊ณ์ฝ์ด์ ๊ธฐ๋ณธ์ด๋ฏ๋ก ๋๊ฒจ๋ ๋ฌดํดํ์ง๋ง ํ์ ์๋ค.
- **๊ธฐ๋ณธ ๊ฒฝ๋ก**: `~/repos/gh,~/repos/work` (๋ ๋ค ์ค์บ)
- **๊ฒฝ๋ก ๋ถ๋ฆฌ**: ๊ฐ์ธ(`--repos ~/repos/gh`), ํ์ฌ(`--repos ~/repos/work`)
- **repos๋ ํญ์ `[]`**: ์ปค๋ฐ ์๋ ๋ ๋ null ์๋ ๋น ๋ฐฐ์ด ๋ฐํ
- **authors ์์ผ๋ฉด ๊ฒฝ๊ณ **: `~/.config/gitcli/authors` ๋ฏธ์กด์ฌ ์ stderr ๊ฒฝ๊ณ ์ถ๋ ฅ
## Author Config (~/.config/gitcli/authors)
```
# ํ ์ค์ ํ๋, ๋์๋ฌธ์ ๋ฌด๊ด ๋ถ๋ถ ์ผ์น
junghan # ๊ฐ์ธ: junghan, junghan0611, Jung Han, junghanacs
jhkim2 # ํ์ฌ: Junghan Kim <jhkim2@goqual.com>
```
## Repo Groups
| ๊ฒฝ๋ก | ์ฑ๊ฒฉ | ๋ฆฌํฌ ์ | ๊ธฐ๊ฐ |
|------|------|---------|------|
| `~/repos/gh` | ๊ฐ์ธ GitHub | ~57 | 2011~ |
| `~/repos/work` | ํ์ฌ GitHub | ~25 | 2025~ |
๋ฆฌํฌ ์๋ ์์ผ๋ก ๊ด๋ฆฌํ๋ ๋ก๋ ์ซ์๋ค. ์ด์์๋ ๊ฐ์ `gitcli repos`๊ฐ ๋ธ๋ค.
View on GitHub