{"id":50832110,"url":"https://github.com/ccf/primer","last_synced_at":"2026-06-14T00:05:35.342Z","repository":{"id":342272458,"uuid":"1156481894","full_name":"ccf/primer","owner":"ccf","description":"Open-source agent harness intelligence platform — learns what is and isn't working across Claude Code, Codex CLI, Gemini CLI, and Cursor and guides engineer development.","archived":false,"fork":false,"pushed_at":"2026-06-06T20:33:07.000Z","size":5420,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T21:10:22.697Z","etag":null,"topics":["ai","ai-agents","ai-coding-tools","analytics-engineering","claude-code","developer-analytics","devex","engineering-intelligence","engineering-productivity"],"latest_commit_sha":null,"homepage":"http://useprimer.dev/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-12T17:42:29.000Z","updated_at":"2026-05-12T00:45:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ccf/primer","commit_stats":null,"previous_names":["ccf/primer"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ccf/primer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccf%2Fprimer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccf%2Fprimer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccf%2Fprimer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccf%2Fprimer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccf","download_url":"https://codeload.github.com/ccf/primer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccf%2Fprimer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34304636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","ai-coding-tools","analytics-engineering","claude-code","developer-analytics","devex","engineering-intelligence","engineering-productivity"],"created_at":"2026-06-14T00:05:34.434Z","updated_at":"2026-06-14T00:05:35.334Z","avatar_url":"https://github.com/ccf.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://useprimer.dev\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"brand/logo-wordmark-light.svg\"\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"brand/logo-wordmark.svg\"\u003e\n      \u003cimg src=\"brand/logo-wordmark.svg\" alt=\"Primer\" width=\"280\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eSee which agent harness patterns actually work.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://useprimer.dev\"\u003e\u003cb\u003e🌐 Website\u003c/b\u003e\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://demo.useprimer.dev\"\u003e\u003cb\u003e🎮 Live Demo\u003c/b\u003e\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://useprimer.dev/docs/installation/\"\u003eGet Started\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://useprimer.dev/docs/\"\u003eDocs\u003c/a\u003e \u0026middot;\n  \u003ca href=\"ROADMAP.md\"\u003eRoadmap\u003c/a\u003e \u0026middot;\n  \u003ca href=\"CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ccf/primer/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/ccf/primer/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/coverage-92%25-brightgreen.svg\" alt=\"Coverage: 92%\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/python-3.12+-blue.svg\" alt=\"Python 3.12+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License: MIT\"\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/dashboard-dark.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/images/dashboard-light.png\"\u003e\n    \u003cimg src=\"docs/images/dashboard-light.png\" alt=\"Primer — org-level activity, outcomes, alerts, and deep-dive insights\" width=\"100%\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n---\n\nYour team adopted AI coding tools. Now you need to know what to standardize.\n\nPrimer is an open-source agent harness intelligence platform for engineering teams. It captures\nsession data from [Claude Code](https://docs.anthropic.com/en/docs/claude-code),\n[Codex CLI](https://github.com/openai/codex),\n[Gemini CLI](https://github.com/google-gemini/gemini-cli), and Cursor, then measures how your\nagent harness — tool design, context management, caching, orchestration, and permission\nboundaries — determines outcome quality. It turns that telemetry into harness effectiveness\nscores, quality attribution, cost proof, exemplar sessions, coaching, and experiments.\nSelf-hosted. Privacy-first. Your data never leaves your network.\n\n## Questions Primer Answers\n\n### For engineering leadership\n\n- **Is our AI investment paying off?** — Cost per successful outcome, ROI ratio, time saved vs. dollars spent\n- **Which teams have figured it out and which are struggling?** — Team-level adoption, success rates, and leverage scores with cross-team comparison\n- **What systemic issues tank AI effectiveness across the org?** — Friction impact scoring: not just \"errors happen\" but \"this error type costs us 40% lower success rates\"\n- **Are we spending efficiently?** — Per-engineer plan modeling (API vs. Pro vs. Max), cache hit optimization, budget burn-rate tracking\n\n### For team leads\n\n- **Who needs help and what specific help?** — Personalized tips, skill gaps, tool diversity analysis, and peer benchmarking\n- **How fast are new hires ramping up?** — Cohort analysis comparing onboarding curves against team baselines\n- **Are AI-assisted PRs actually better?** — Side-by-side comparison: merge time, review comments, merge rate for Claude vs. non-Claude PRs\n- **Where should I invest in training?** — Tool proficiency scoring (novice → expert) per engineer, per tool category\n\n### For individual engineers\n\n- **How am I trending?** — Weekly trajectory with success rate, cost, and session patterns\n- **What keeps tripping me up?** — Personal friction breakdown: permission blocks, context limits, tool errors\n- **Am I using the right tools?** — Config optimization suggestions based on team benchmarks and entropy-based diversity scoring\n- **What should I try next?** — Learning paths generated from high-performer patterns in your org\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/engineer-profile-dark.png\" alt=\"Engineer profile with trajectory, friction analysis, and AI-generated insights\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n## What Makes This Different\n\n**Harness intelligence, not just usage tracking.** Primer measures how your agent harness\nconfiguration — tool design, caching strategy, orchestration depth, context management, and\npermission boundaries — determines outcome quality. It links harness patterns to merge rates,\nreview quality, cost, and reusable assets so you can decide which configurations to standardize.\n\n**Friction analysis, not just error counting.** Primer doesn't just count failures. It classifies\n*why* sessions fail, what engineers tried next, and which recoveries actually worked. You learn\nthat `permission_denied` errors cause lower success rates, not just that they happened sometimes.\n\n**Customization and orchestration intelligence.** Primer captures MCPs, skills, commands,\nsubagents, delegation patterns, and agent-team modes so you can see which explicit agent stacks\ndifferentiate high performers and which ones create friction.\n\n**Individual intelligence, not just org dashboards.** Every engineer gets a trajectory view,\nstrengths profile, friction breakdown, AI-generated narrative, model coach, and learning paths.\nThe MCP sidecar now brings session-start coaching, live signals, in-session nudges, stats,\nfriction reports, recaps, and manager review packs into the session without forcing context\nswitching.\n\n**Cost optimization, not just cost tracking.** Primer models whether each engineer should be on API billing, Pro ($20/mo), or Max ($100/mo) based on actual usage. It measures cache hit rates per engineer and surfaces how much money is being left on the table. Budget burn-rate alerts catch overruns before they happen.\n\n**Experiments, not just recommendations.** Primer turns recommendations into interventions and\nstructured experiments so you can measure whether a rollout, training change, or playbook\nactually improved outcomes.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/finops-dark.png\" alt=\"FinOps — cost tracking, cache analytics, subscription modeling, and budget management\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n## Capabilities\n\n| Area | What You Get |\n|------|-------------|\n| **Organization Overview** | Session volume, success rates, health scores, activity heatmaps, outcome distribution, anomaly alerts |\n| **FinOps \u0026 Cost Management** | Per-model spend, cache savings analysis, API vs. subscription modeling, 30-day linear regression forecasting, budget burn-rate tracking |\n| **Engineer Profiles** | Weekly trajectory sparklines, strengths/friction breakdown, peer benchmarking, AI-generated narrative insights |\n| **AI Maturity** | Leverage scores (tool mastery, orchestration depth, efficiency), Effectiveness scores (success rate, cost efficiency), model diversity, agent team detection, project AI-readiness |\n| **Friction Intelligence** | Categorized friction types with impact scoring, bottleneck detection, root cause patterns, cluster analysis |\n| **Quality \u0026 Code Impact** | PR merge rates, workflow-based quality attribution, post-merge outcomes, Claude-assisted vs. non-Claude comparison, code volume per session, review comment analysis |\n| **AI Synthesis** | LLM-generated narrative reports at org, team, and engineer scope — turns metrics into stories |\n| **Conversational Explorer** | Natural language queries over your data via SSE-streamed tool-use chat |\n| **Session Browser** | Full-text search, outcome/model/type filters, transcript viewer, message-level detail |\n| **MCP Sidecar** | Session-start coaching, live signals, in-session nudges, personal recaps, manager review packs, and mid-session stats |\n| **Multi-Agent Support** | Claude Code, Codex CLI, Gemini CLI, and Cursor sessions in one platform |\n| **GitHub Integration** | OAuth SSO, PR sync, commit correlation, repository AI-readiness scoring |\n\n## Quickstart\n\n\u003e **🎮 Want to see it first?** [demo.useprimer.dev](https://demo.useprimer.dev) is a live, read-only instance with sample data from a fictional 25-engineer org. No signup required.\n\n**One-liner install:**\n\n```bash\ncurl -fsSL https://useprimer.dev/install.sh | sh\n```\n\n**Or install manually:**\n\n```bash\npip install useprimer            # Install (Python module is `primer`)\nprimer init                      # Initialize database and config\nprimer server start              # Start API + dashboard\nprimer hook install              # Register the SessionEnd hook\n```\n\n**Docker:**\n\n```bash\ncp .env.docker.example .env \u0026\u0026 make up\n```\n\nSee the [Installation guide](https://useprimer.dev/docs/installation/) for full setup, GitHub integration, and production configuration.\n\n## How It Works\n\n```\nAI agents + local capture ──POST──┐\nGitHub App / webhooks ────────────┼──▶ Primer API ◀──MCP Sidecar\n                                  │         │\n                                  │         ▼\n                                  └── PostgreSQL / SQLite\n                                            │\n                                            ▼\n                                     React Dashboard\n```\n\n1. **Capture Layer** — Hooks, sync, and import flows discover sessions across Claude Code, Codex\n   CLI, Gemini CLI, and Cursor. Derived evidence includes facets, execution evidence, change\n   shape, recovery paths, and workflow profiles.\n2. **REST API** — FastAPI service with routers covering analytics, alerting, FinOps, quality,\n   maturity, interventions, explorer, and admin workflows. Role-based access is enforced across\n   the platform.\n3. **Dashboard** — React frontend with organization, project, growth, quality, and individual\n   views. Date-range filtering, CSV/PDF export, and role-based navigation are built in.\n4. **MCP Sidecar** — Engineers query their own data during sessions for stats, friction,\n   recommendations, and coaching.\n\n## Documentation\n\n| | Guide | Description |\n|-|-------|-------------|\n| **Getting Started** | [Installation](https://useprimer.dev/docs/installation/) | Install, configure, first insights |\n| | [Configuration](https://useprimer.dev/docs/configuration/) | Environment variables and options |\n| | [CLI Reference](https://useprimer.dev/docs/cli/) | All `primer` commands |\n| **Architecture** | [Server \u0026 API](https://useprimer.dev/docs/server/) | System design, data model, auth, endpoints |\n| | [Hook System](https://useprimer.dev/docs/hooks/) | Multi-agent extractor registry |\n| | [MCP Sidecar](https://useprimer.dev/docs/mcp/) | Mid-session stats, friction reports, recommendations |\n| **Guides** | [GitHub Integration](https://useprimer.dev/docs/github/) | OAuth login, GitHub App for PR sync |\n| | [FinOps \u0026 Cost Management](https://useprimer.dev/docs/finops/) | Cache analytics, cost modeling, forecasting, budgets |\n| | [Alert Thresholds](https://useprimer.dev/docs/alerts/) | Anomaly detection and Slack notifications |\n| | [Deployment](https://useprimer.dev/docs/deployment/) | Docker Compose, Helm, PostgreSQL, scaling |\n\n## About the Name\n\nNamed after the Young Lady's Illustrated Primer in Neal Stephenson's *The Diamond Age* — an adaptive, AI-driven book that observes its reader, understands context, and transforms complexity into personalized guidance. Primer brings that same principle to engineering organizations: observe how your team uses AI, understand the patterns, and guide each engineer toward mastery.\n\n## Contributing\n\nWe welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n- [Open issues](https://github.com/ccf/primer/issues) — bugs and feature requests\n- [Roadmap](ROADMAP.md) — what's planned and complete\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccf%2Fprimer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccf%2Fprimer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccf%2Fprimer/lists"}