# git-metadata

A [Pi](https://pi.dev) extension that provides a `git_metadata` tool for querying git repository information — branch, remotes, commits, tags, status, contributors, and diff stats.

## Install

```bash
pi install npm:git-metadata
```

Or try it temporarily without installing:

```bash
pi -e npm:git-metadata
```

## Tool: `git_metadata`

### Actions

| Action | Description | Options |
|--------|-------------|---------|
| `summary` | Full repo overview — branch, tracking, ahead/behind, dirty/staged/untracked counts, last commit, remote URL | — |
| `branch` | Current branch with tracking info and ahead/behind counts | — |
| `remotes` | List configured remotes (name + URL) | — |
| `log` | Recent commits (hash, author, date, message) | `count` (default: 10) |
| `tags` | Recent tags sorted by creation date | `count` (default: 10) |
| `status` | Working tree status (modified, added, deleted, untracked) | — |
| `contributors` | Top contributors by commit count | `count` (default: 10) |
| `diff_stat` | Changed files with insertions/deletions vs a ref | `ref` (default: HEAD~1) |

### Examples

The LLM will use this tool automatically when you ask about your git repo. You can also be specific:

- *"What's the status of my repo?"* → triggers `summary`
- *"Show me the last 20 commits"* → triggers `log` with `count: 20`
- *"Who are the top contributors?"* → triggers `contributors`
- *"What changed since the last tag?"* → triggers `diff_stat` with `ref: <last-tag>`

### Custom TUI Rendering

All results have compact and expanded views. Toggle expanded view to see full details (commit lists, contributor bars, file-by-file diff stats).

## Development

Test locally:

```bash
cd git-metadata
pi -e ./extensions/git-metadata.ts
```

## License

MIT
