[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11470":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},11470,"git-ai","git-ai-project\u002Fgit-ai","git-ai-project","A Git extension for tracking the AI-generated code in your repos",null,"https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai","Rust",2048,198,10,87,0,17,56,218,51,28.9,false,"main",[25,26,27],"ai","coding-agents","ai-blame","2026-06-12 02:02:31","# git-ai   \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FXJStYvkb5U\">\u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-join-5865F2?logo=discord&logoColor=white\" \u002F>\u003C\u002Fa>        \n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fraw\u002Fmain\u002Fassets\u002Fdocs\u002Fgit-ai.png\" align=\"right\"\n     alt=\"Git AI Logo\" width=\"200\" height=\"200\">\n\nGit AI is an open source git extension that tracks AI-generated code in your repositories.\n\nOnce installed, it automatically links every AI-written line to the agent, model, and transcripts that generated it — so you never lose the intent, requirements, and architecture decisions behind your code.\n\n**AI attribution on every commit:**\n\n`git commit`\n```\n[hooks-doctor 0afe44b2] wsl compat check\n 2 files changed, 81 insertions(+), 3 deletions(-)\nyou  ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ai\n     6%             mixed   2%             92%\n```\n\n**AI Blame shows the model, agent, and session behind every line:**\n\n`git-ai blame \u002Fsrc\u002Flog_fmt\u002Fauthorship_log.rs`\n```bash\n\ncb832b7 (Aidan Cunniffe      2025-12-13 08:16:29 -0500  133) pub fn execute_diff(\ncb832b7 (Aidan Cunniffe      2025-12-13 08:16:29 -0500  134)     repo: &Repository,\ncb832b7 (Aidan Cunniffe      2025-12-13 08:16:29 -0500  135)     spec: DiffSpec,\ncb832b7 (Aidan Cunniffe      2025-12-13 08:16:29 -0500  136)     format: DiffFormat,\ncb832b7 (Aidan Cunniffe      2025-12-13 08:16:29 -0500  137) ) -> Result\u003CString, GitAiError> {\nfe2c4c8 (claude [session_id] 2025-12-02 19:25:13 -0500  138)     \u002F\u002F Resolve commits to get from\u002Fto SHAs\nfe2c4c8 (claude [session_id] 2025-12-02 19:25:13 -0500  139)     let (from_commit, to_commit) = match spec {\nfe2c4c8 (claude [session_id] 2025-12-02 19:25:13 -0500  140)         DiffSpec::TwoCommit(start, end) => {\nfe2c4c8 (claude [session_id] 2025-12-02 19:25:13 -0500  141)             \u002F\u002F Resolve both commits\nfe2c4c8 (claude [session_id] 2025-12-02 19:25:13 -0500  142)             let from = resolve_commit(repo, &start)?;...\n```\n\n\n### Supported Agents\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\" width=\"20%\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fclaude_code.png\" alt=\"Claude Code\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"20%\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fcodex-black.png\" alt=\"Codex\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"20%\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fcursor.png\" alt=\"Cursor\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"20%\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fcopilot.png\" alt=\"GitHub Copilot\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"20%\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fopencode.png\" alt=\"OpenCode\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fpi.png\" alt=\"Pi\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fwindsurf.png\" alt=\"Windsurf\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fdroid.png\" alt=\"Droid\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Famp.png\" alt=\"Amp\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fgemini.png\" alt=\"Gemini\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fcontinue.png\" alt=\"Continue\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Fjunie_white.png\" alt=\"Junie\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Frovodev.png\" alt=\"Rovo Dev\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"assets\u002Fdocs\u002Fagents\u002Fgray\u002Ffirebender.png\" alt=\"Firebender\" width=\"160\" \u002F>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fcli\u002Fadd-your-agent\">+ Add an Agent\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n## Install\n\n**Mac, Linux, Windows (WSL)**\n\n```bash\ncurl -sSL https:\u002F\u002Fusegitai.com\u002Finstall.sh | bash\n```\n\n**Windows (non-WSL)**\n\nNon-WSL Windows support is currently experimental and under active development. We would love to hear your feedback while we work to get non-WSL Windows support production-ready.\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -Command \"irm https:\u002F\u002Fusegitai.com\u002Finstall.ps1 | iex\"\n```\n\nThat's it — **no per-repo setup required.** Prompt and commit as normal. Git AI tracks attribution automatically.\n\n### Our Choices\n- **No workflow changes** — Just prompt and commit. Git AI tracks AI code accurately without cluttering your git history.\n- **\"Detecting\" AI code is an anti-pattern** — Git AI does not guess whether a hunk is AI-generated. Supported agents report exactly which lines they wrote, giving you the most accurate attribution possible.\n- **Local-first** — Works 100% offline, no login required.\n- **Git native and open standard** — Git AI built the [open standard](https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fblob\u002Fmain\u002Fspecs\u002Fgit_ai_standard_v3.0.0.md) for tracking AI-generated code with Git Notes.\n- **Secure Prompt Storage** — Git AI links each line of AI-code to the prompt that generated it. Since v1.0.0 Agent Sessions are stored outside of Git and can optionally be synced to your team's [cloud](https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fplatform\u002Foverview) or [self-hosted](https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fplatform\u002Fself-hosting) prompt store -- keeping repos lean, enabling fine-grained access control, and preventing PII or secrets from leaking into Git.\n\n\n\u003Ctable style=\"table-layout:fixed; width:100%\">\n\u003Ctr>\n\u003Cth align=\"center\" width=\"50%\">Solo\u003C\u002Fth>\n\u003Cth align=\"center\" width=\"50%\">For Teams\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fblob\u002Fmain\u002Fassets\u002Fdocs\u002Fsolo-player.svg\" alt=\"Solo — everything stays on your machine\" width=\"400\">\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fblob\u002Fmain\u002Fassets\u002Fdocs\u002Ffor-teams.svg\" alt=\"For teams — shared context across your team\" width=\"400\">\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n- AI Authorship stored in Git Notes, with pointers to transcripts stored in local SQLite\n- Transcripts only stored locally, on computer\n- Measure AI authorship across commits with `git-ai stats`\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n- AI Authorship stored in Git Notes\n- Pointers to cloud or self-hosted transcript store with built-in access control, secret redaction, and PII filtering\n- Agents and engineers can read transcripts and summaries for any block of AI-generated code\n- Advanced cross-agent dashboards to measure AI adoption, code durability, and compare agents across your team \n\n**[Click here to get early access](https:\u002F\u002Fcalendly.com\u002Fd\u002Fcxjh-z79-ktm\u002Fmeeting-with-git-ai-authors)**\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n\n## Attribution Stats\n\nLine-level AI-attribution let you track AI-code through the full SDLC. Track how much AI code gets accepted, committed, through code review, and into production — to identify which tools and practices work best.\n\n```bash\ngit-ai stats --json\ngit ai stats \u003Cstart_sha>..\u003Cend_sha> --json\n```\n\nCalculates % AI-code, AI-lines generated vs committed, accepted rates, human overrides broken down by tool and model. Learn more: [Stats command reference docs](https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fcli\u002Freference#stats). \n\n\n\u003Cdetails>\n\u003Csummary>Example JSON output\u003C\u002Fsummary>\n\n```json\n{\n  \"human_additions\": 28,\n  \"ai_additions\": 76,\n  \"ai_accepted\": 47,\n  \"git_diff_deleted_lines\": 34,\n  \"git_diff_added_lines\": 104,\n  \"tool_model_breakdown\": {\n    \"claude_code\u002Fclaude-sonnet-4-5-20250929\": {\n      \"ai_additions\": 76,\n      \"ai_accepted\": 47\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n## AI Blame\n\nGit AI blame is a drop-in replacement for `git blame` that shows AI attribution for each line. It supports [all standard `git blame` flags](https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-blame).\n\n```bash\ngit-ai blame \u002Fsrc\u002Flog_fmt\u002Fauthorship_log.rs\n```\n\n```bash\ncb832b7 (Aidan Cunniffe 2025-12-13 08:16:29 -0500  133) pub fn execute_diff(\ncb832b7 (Aidan Cunniffe 2025-12-13 08:16:29 -0500  134)     repo: &Repository,\ncb832b7 (Aidan Cunniffe 2025-12-13 08:16:29 -0500  135)     spec: DiffSpec,\ncb832b7 (Aidan Cunniffe 2025-12-13 08:16:29 -0500  136)     format: DiffFormat,\ncb832b7 (Aidan Cunniffe 2025-12-13 08:16:29 -0500  137) ) -> Result\u003CString, GitAiError> {\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  138)     \u002F\u002F Resolve commits to get from\u002Fto SHAs\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  139)     let (from_commit, to_commit) = match spec {\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  140)         DiffSpec::TwoCommit(start, end) => {\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  141)             \u002F\u002F Resolve both commits\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  142)             let from = resolve_commit(repo, &start)?;\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  143)             let to = resolve_commit(repo, &end)?;\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  144)             (from, to)\nfe2c4c8 (claude         2025-12-02 19:25:13 -0500  145)         }\n```\n\nThere are community plugins that display AI-attribution in popular IDEs, color-coded by agent session. Hover over a line to see the raw prompt or summary.\n\n\u003Ctable style=\"table-layout:fixed; width:100%\">\n\u003Ctr>\n\u003Cth width=\"35%\">Supported Editors\u003C\u002Fth>\n\u003Cth width=\"65%\">\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n- [VS Code](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=git-ai.git-ai-vscode)\n- [Cursor](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=git-ai.git-ai-vscode)\n- [Windsurf](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=git-ai.git-ai-vscode)\n- [Antigravity](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=git-ai.git-ai-vscode)\n- [Emacs magit](https:\u002F\u002Fgithub.com\u002Fjwiegley\u002Fmagit-ai)\n- *Built support for another editor? [Open a PR](https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fpulls)*\n\n\u003C\u002Ftd>\n\u003Ctd>\n\u003Cimg width=\"100%\" alt=\"Git AI VS Code extension showing color-coded AI blame in the gutter\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F94e332e7-5d96-4e5c-8757-63ac0e2f88e0\" \u002F>\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n## Understand Why with the `\u002Fask` Skill\n\nSee something you don't understand? The `\u002Fask` skill lets you talk to the agent that wrote the code about its instructions, decisions, and the intent of the engineer who assigned the task. Git AI adds the `\u002Fask` skill to `~\u002F.agents\u002Fskills\u002F` at install time so you can talk to it from any agent. \n\n```\n\u002Fask Why didn't we use the SDK here?\n```\n\nAgents with access to the original intent and source code understand the \"why.\" Agents that can only read the code can tell you what it does, but not why:\n\n| Reading Code + Transcript (`\u002Fask`) | Only Reading Code (not using Git AI) |\n|---|---|\n| When Aidan was building telemetry, he instructed the agent not to block the exit of our CLI flushing telemetry. Instead of using the Sentry SDK directly, we came up with a pattern that writes events locally first via `append_envelope()`, then flushes them in the background via a detached subprocess. This keeps the hot path fast and ships telemetry async after the fact. | `src\u002Fcommands\u002Fflush_logs.rs` is a 5-line wrapper that delegates to `src\u002Fobservability\u002Fflush.rs` (~700 lines). The `commands\u002F` layer handles CLI dispatch; `observability\u002F` handles Sentry, PostHog, metrics upload, and log processing. Parallel modules like `flush_cas`, `flush_logs`, `flush_metrics_db` follow the same thin-dispatch pattern. |\n\n\n\u003Cdetails>\n\u003Csummary>Make Your Agents Smarter\u003C\u002Fsummary>\n\nAgents make fewer mistakes and produce more maintainable code when they understand the requirements and decisions behind the code they build on. The best way to provide this context is to give agents the same `\u002Fask` tool you use yourself. Tell your agents to use `\u002Fask` in plan mode:\n\n`Claude|AGENTS.md`\n```markdown\n- In plan mode, always use the \u002Fask skill to read the code and the original transcript that generated it. Understanding intent will help you write a better plan.\n```\n\n\u003C\u002Fdetails>\n\n\n### How Git AI works\n1. **`Edit|Write|Bash` Hooks** get triggered as Agents make changes to a repository\n2. **Hooks call `git-ai checkpoint`** to link each line of AI-Code to the model, Agent and prompt that generated it.\n3. **Post Commit** a Git Note with AI-attributions in it is attached to the commit\n4. **On `merge --squash`, `rebase`, `cherry-pick`, `stash`, `pop`, `commit --amend`, etc** AI-attributions are automatically moved \n\n#### Example Note\n`refs\u002Fnotes\u002Fai\u002Fcommit_sha`\n```\nhooks\u002Fpost_clone_hook.rs\n  prompt_id_123 6-8\n  prompt_id_456 16,21,25\nmain.rs\n  prompt_id_123 12-199,215,311\n---\n...Prompt metadata including agent, model, and a link to the full session transcript\n```\n\nFor more information [review Git AI's open standard for attributing AI-code with Git Notes](https:\u002F\u002Fgithub.com\u002Fgit-ai-project\u002Fgit-ai\u002Fblob\u002Fmain\u002Fspecs\u002Fgit_ai_standard_v3.0.0.md).\n\n## Resources\n\n- [Config Options](https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fcli\u002Fconfiguration)\n- [CLI Reference](https:\u002F\u002Fusegitai.com\u002Fdocs\u002Fcli\u002Freference)\n- [How to measure the impact of coding agents](https:\u002F\u002Fusegitai.com\u002Fhow-to-measure-ai-code) \n\n\n## For Teams\n\n[Git AI For Teams](https:\u002F\u002Fusegitai.com\u002Fenterprise) aggregates attribution data at the PR, contributor, team repository, and organization level:\n\n- **Full lifecycle tracking** — See how much AI code is accepted, committed, rewritten in review, and deployed — and whether it causes alerts or incidents once shipped.  \n- **Team and contributor stats** — Identify who uses background agents effectively and what high-leverage teams do differently.  \n- **Agent readiness** — Measure the impact of skills, rules, MCPs, test harnesses, and `AGENTS.md` changes across repos and task types.  \n\n### Deployment Options\n\nGit AI is designed to run wherever your engineering organization operates:\n\n- **Self-hosted (recommended for enterprises)** — Deploy Git AI within your own infrastructure (AWS, VPC, on-prem). Full control over data, access, and integrations. Ideal for organizations with strict security, compliance, or data residency requirements.\n- **Git AI Cloud** — Fully managed hosting by Git AI. Faster setup, no infrastructure overhead, and automatic updates — best for teams that want to get started quickly.\n\nBoth options support the same attribution model, dashboards, and integrations — choose based on your security and operational preferences.\n\n**[Get early access](https:\u002F\u002Fcalendly.com\u002Fd\u002Fcxjh-z79-ktm\u002Fmeeting-with-git-ai-authors)**\n\n![new-graphic-dashboards](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F1e2aec73-4e96-4531-ab5f-fe4deef2bbab)\n\n## License\nApache 2.0\n","git-ai 是一个开源的 Git 扩展工具，用于跟踪代码仓库中由 AI 生成的代码。它能够自动将每一行 AI 编写的代码与生成该代码的代理、模型及对话记录关联起来，从而确保不会丢失代码背后的意图、需求和架构决策。其核心功能包括在每次提交时显示 AI 代码贡献比例，并通过 `git-ai blame` 命令展示每行代码背后的模型、代理及会话信息。该项目采用 Rust 语言开发，支持多种流行的 AI 编码助手，如 Claude Code、GitHub Copilot 等。适用于希望清晰追踪并管理 AI 辅助编写代码的软件开发团队和个人开发者。",2,"2026-06-11 03:31:57","trending"]