| 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 โ ํน์ ๋ ์ง์ ๋ชจ๋ ์ปค๋ฐ
gitcli day
gitcli day 2025-10-10 --me --summary
gitcli day 2025-10-10 --me
gitcli day 20251010
gitcli day --years-ago 1 --me
gitcli day --days-ago 7 --me
gitcli day --repos ~/repos/gh --me
gitcli day --me --max 10
--summary ์ถ๋ ฅ (~500B, 96% ์ ๊ฐ):
{"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 โ ๋ฆฌํฌ ๋ชฉ๋ก๊ณผ ํต๊ณ
gitcli repos
gitcli repos --repos ~/repos/gh
log โ ํน์ ๋ฆฌํฌ ์ปค๋ฐ ๋ก๊ทธ
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
gitcli log nixos-config --author junghan
๋ฆฌํฌ ์ด๋ฆ์ gitcli repos๊ฐ ๋ด๋ ์ด๋ฆ์ด๋ค. ์๋ ์ด๋ฆ์ ์ฃผ๋ฉด repo not found๋ก ์ฃฝ๋๋ค.
timeline โ ๊ธฐ๊ฐ๋ณ ํ๋ ๊ฐ์
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๊ฐ ๋ธ๋ค.