geethob 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +12 -0
- package/.claude-plugin/plugin.json +12 -0
- package/CHANGELOG.md +20 -0
- package/assets/logo.svg +55 -0
- package/package.json +7 -3
- package/skills/narrate/SKILL.md +86 -0
- package/dist/geethob +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hemant1996",
|
|
3
|
+
"description": "Hemant Bangar's Claude Code plugins.",
|
|
4
|
+
"owner": { "name": "Hemant Bangar" },
|
|
5
|
+
"plugins": [
|
|
6
|
+
{
|
|
7
|
+
"name": "geethob",
|
|
8
|
+
"source": { "source": "url", "url": "https://github.com/hemant1996/geethob.git" },
|
|
9
|
+
"description": "Turn git history into prose narrative. CLI + skill, local-only, BYO API key."
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "geethob",
|
|
3
|
+
"description": "Turn git history into prose narrative. Use when the user asks 'what changed in this repo,' 'summarize these commits,' 'narrate the history of <feature>,' or 'what did <person> ship last week.' Local-only, BYO API key.",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Hemant Bangar"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/hemant1996/geethob",
|
|
9
|
+
"repository": "https://github.com/hemant1996/geethob",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["git", "github", "narrative", "changelog", "ai", "claude", "skill"]
|
|
12
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## v0.1.1
|
|
4
|
+
|
|
5
|
+
- Slim the npm package from ~70 MB to ~700 KB by excluding the compiled Bun binary (`dist/geethob`) from the published tarball. The binary still ships via GitHub Releases for the single-binary install path; npm users only need the JS bundle.
|
|
6
|
+
- Ship the Claude Code plugin manifest (`.claude-plugin/`) and the bundled skill (`skills/narrate/`) inside the npm package, so a global install also lights up the plugin path once Claude Code's HTTPS-source bug lands a fix.
|
|
7
|
+
- Include `assets/logo.svg` in the package so README rendering doesn't 404 if viewed from the npm tarball.
|
|
8
|
+
|
|
9
|
+
## v0.1.0
|
|
10
|
+
|
|
11
|
+
Initial release.
|
|
12
|
+
|
|
13
|
+
- `geethob story <scope>` — narrate the history of a local path or a public GitHub repo (`<owner>/<name>` form).
|
|
14
|
+
- `geethob digest --since 7d` — narrate recent activity for the current working tree, a single remote repo (`--repo`), or a GitHub user (`--author`, falls back to public events when no local repo applies).
|
|
15
|
+
- `geethob configure` — write `~/.config/geethob/config.toml` (mode 0600) with an Anthropic API key. Skipped automatically when `ANTHROPIC_API_KEY` is in the environment.
|
|
16
|
+
- Single-binary builds for macOS arm64, macOS x64, Linux x64 via `bun build --compile`.
|
|
17
|
+
- npm package (`bun add -g geethob` or `npm install -g geethob`) for Node ≥20.
|
|
18
|
+
- Claude Code skill via `skill/install.sh` and `skill/SKILL.md`.
|
|
19
|
+
- Hard cap of 200 commits per invocation (`--max-commits` to override), plus a token-budget pass that sheds oldest commits when the assembled prompt would exceed 150K tokens.
|
|
20
|
+
- Six documented exit codes (0 success, 1 usage, 2 no-git, 3 no-key, 4 model error, 5 GitHub auth/rate).
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256" role="img" aria-label="geethob logo: a smiling speech-bubble blob with a tiny git-graph inside">
|
|
2
|
+
<title>geethob</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="bodyGrad" x1="0" y1="0" x2="0" y2="1">
|
|
5
|
+
<stop offset="0%" stop-color="#FFB199"/>
|
|
6
|
+
<stop offset="100%" stop-color="#FF7A7A"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
</defs>
|
|
9
|
+
|
|
10
|
+
<!-- speech-bubble blob body -->
|
|
11
|
+
<path d="
|
|
12
|
+
M 56 36
|
|
13
|
+
C 100 16, 156 16, 200 36
|
|
14
|
+
C 232 56, 240 96, 232 132
|
|
15
|
+
C 224 172, 188 200, 144 204
|
|
16
|
+
L 132 232
|
|
17
|
+
L 116 204
|
|
18
|
+
C 72 200, 36 172, 28 132
|
|
19
|
+
C 20 96, 28 56, 56 36
|
|
20
|
+
Z"
|
|
21
|
+
fill="url(#bodyGrad)"
|
|
22
|
+
stroke="#3D2B3D"
|
|
23
|
+
stroke-width="6"
|
|
24
|
+
stroke-linejoin="round"/>
|
|
25
|
+
|
|
26
|
+
<!-- left eye (smiling, commit-node shaped) -->
|
|
27
|
+
<circle cx="96" cy="110" r="10" fill="#FFFAF5"/>
|
|
28
|
+
<circle cx="98" cy="112" r="5" fill="#3D2B3D"/>
|
|
29
|
+
|
|
30
|
+
<!-- right eye -->
|
|
31
|
+
<circle cx="160" cy="110" r="10" fill="#FFFAF5"/>
|
|
32
|
+
<circle cx="162" cy="112" r="5" fill="#3D2B3D"/>
|
|
33
|
+
|
|
34
|
+
<!-- cheek dots (subtle warmth) -->
|
|
35
|
+
<circle cx="70" cy="140" r="6" fill="#FF5A5A" opacity="0.35"/>
|
|
36
|
+
<circle cx="186" cy="140" r="6" fill="#FF5A5A" opacity="0.35"/>
|
|
37
|
+
|
|
38
|
+
<!-- happy smile -->
|
|
39
|
+
<path d="M 100 152 Q 128 174, 156 152"
|
|
40
|
+
fill="none"
|
|
41
|
+
stroke="#3D2B3D"
|
|
42
|
+
stroke-width="6"
|
|
43
|
+
stroke-linecap="round"/>
|
|
44
|
+
|
|
45
|
+
<!-- tiny git-graph above the head: three commit nodes connected by a curve -->
|
|
46
|
+
<path d="M 86 64 Q 128 44, 170 64"
|
|
47
|
+
fill="none"
|
|
48
|
+
stroke="#3D2B3D"
|
|
49
|
+
stroke-width="4"
|
|
50
|
+
stroke-linecap="round"
|
|
51
|
+
opacity="0.85"/>
|
|
52
|
+
<circle cx="86" cy="64" r="6" fill="#FFFAF5" stroke="#3D2B3D" stroke-width="3"/>
|
|
53
|
+
<circle cx="128" cy="50" r="6" fill="#FFFAF5" stroke="#3D2B3D" stroke-width="3"/>
|
|
54
|
+
<circle cx="170" cy="64" r="6" fill="#FFFAF5" stroke="#3D2B3D" stroke-width="3"/>
|
|
55
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "geethob",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Turn git history into prose narrative. Open-source CLI + AI-harness skill.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "src/cli.ts",
|
|
@@ -8,10 +8,14 @@
|
|
|
8
8
|
"geethob": "./dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist/",
|
|
11
|
+
"dist/cli.js",
|
|
12
12
|
"skill/",
|
|
13
|
+
"skills/",
|
|
14
|
+
".claude-plugin/",
|
|
15
|
+
"assets/logo.svg",
|
|
13
16
|
"README.md",
|
|
14
|
-
"LICENSE"
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"CHANGELOG.md"
|
|
15
19
|
],
|
|
16
20
|
"scripts": {
|
|
17
21
|
"dev": "bun run src/cli.ts",
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: narrate
|
|
3
|
+
description: Turn git history into prose narrative via the geethob CLI. Use when the user asks "what changed in this repo," "summarize these commits," "narrate the history of <feature>," "what did <person> ship last week," or any "tell me the story of …" question against a git repository or a GitHub user. Two modes — `story` (history of a repo/path) and `digest` (a developer's recent activity). Output is prose, not bullet lists.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# narrate (geethob)
|
|
7
|
+
|
|
8
|
+
You have access to the `geethob` CLI, which turns git history into prose narrative. Use it whenever the user asks for a story-grained summary of code changes, instead of reading individual commits or diffs yourself.
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
Invoke geethob for any of these:
|
|
13
|
+
|
|
14
|
+
- "What changed in `<repo or path>` lately?"
|
|
15
|
+
- "Summarize the last N commits / week / month."
|
|
16
|
+
- "Tell me the story of how `<feature>` was built."
|
|
17
|
+
- "What did `<author>` ship this week?"
|
|
18
|
+
- Before extending an existing feature — pull a narrative of its history first to ground your work.
|
|
19
|
+
|
|
20
|
+
Do **not** invoke geethob for:
|
|
21
|
+
|
|
22
|
+
- Reading a specific PR or diff line-by-line — use `gh pr view` / `git show` instead.
|
|
23
|
+
- File-level code questions ("what does this function do") — read the file directly.
|
|
24
|
+
- Anything outside a git repository.
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
The binary lives on the user's `$PATH` as `geethob`. Run it via shell tool.
|
|
29
|
+
|
|
30
|
+
### `geethob story <scope>`
|
|
31
|
+
|
|
32
|
+
Narrate the history of a path or repo.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Local repo, whole history (capped at 200 commits)
|
|
36
|
+
geethob story /path/to/repo
|
|
37
|
+
|
|
38
|
+
# Local repo, restricted to a subpath
|
|
39
|
+
geethob story /path/to/repo --path src/auth --since 30d
|
|
40
|
+
|
|
41
|
+
# Public GitHub repo
|
|
42
|
+
geethob story bun-sh/bun --max-commits 50
|
|
43
|
+
|
|
44
|
+
# Stream off (one-shot, useful if you're capturing output)
|
|
45
|
+
geethob story . --no-stream
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### `geethob digest`
|
|
49
|
+
|
|
50
|
+
Narrate a developer's recent work.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Current working tree, last 7 days
|
|
54
|
+
geethob digest --since 7d
|
|
55
|
+
|
|
56
|
+
# A single remote repo
|
|
57
|
+
geethob digest --repo facebook/react --since 14d
|
|
58
|
+
|
|
59
|
+
# A specific developer's public activity (when no local repo applies)
|
|
60
|
+
geethob digest --author tj --since 7d
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `geethob configure`
|
|
64
|
+
|
|
65
|
+
Writes `~/.config/geethob/config.toml` with an Anthropic API key. Skip if `ANTHROPIC_API_KEY` is already in the environment.
|
|
66
|
+
|
|
67
|
+
## Auth
|
|
68
|
+
|
|
69
|
+
- **Model API:** `ANTHROPIC_API_KEY` env var, or the stored config file.
|
|
70
|
+
- **GitHub (for remote scopes):** `gh auth status` session OR `GH_TOKEN` env var. Optional for `story` against a local clone.
|
|
71
|
+
|
|
72
|
+
## Exit codes
|
|
73
|
+
|
|
74
|
+
- 0 — Success (including empty commit range, which is not an error)
|
|
75
|
+
- 1 — Usage error
|
|
76
|
+
- 2 — Not a git repo or `git` missing
|
|
77
|
+
- 3 — Missing/invalid Anthropic key
|
|
78
|
+
- 4 — Model API error after one retry
|
|
79
|
+
- 5 — GitHub auth required, rate limited, or repo not found
|
|
80
|
+
|
|
81
|
+
## Notes for the agent
|
|
82
|
+
|
|
83
|
+
- Output is **prose**, not structured data. Don't post-process it into bullet lists.
|
|
84
|
+
- For long histories, geethob truncates to the most recent N commits and prints a warning. If the user needs older history, they should pass `--since <ref>` or raise `--max-commits`.
|
|
85
|
+
- geethob never sees the full diff — only commit messages + diffstats. This keeps narratives at the story grain. If the user needs line-level analysis, read the diff yourself.
|
|
86
|
+
- The `geethob` binary must already be on `$PATH`. If it's not, suggest the user install it via `npm install -g geethob` or the single-binary download from https://github.com/hemant1996/geethob/releases.
|
package/dist/geethob
DELETED
|
Binary file
|