{"id":49233798,"url":"https://github.com/netwrix/claude-org-stats","last_synced_at":"2026-04-24T13:33:33.957Z","repository":{"id":337480304,"uuid":"1153626250","full_name":"netwrix/claude-org-stats","owner":"netwrix","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-09T22:32:52.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-09T22:33:42.224Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/netwrix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-09T14:14:15.000Z","updated_at":"2026-02-09T22:32:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/netwrix/claude-org-stats","commit_stats":null,"previous_names":["jtviolet/claude-org-stats"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/netwrix/claude-org-stats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netwrix%2Fclaude-org-stats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netwrix%2Fclaude-org-stats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netwrix%2Fclaude-org-stats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netwrix%2Fclaude-org-stats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netwrix","download_url":"https://codeload.github.com/netwrix/claude-org-stats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netwrix%2Fclaude-org-stats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32225813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-04-24T13:33:33.300Z","updated_at":"2026-04-24T13:33:33.943Z","avatar_url":"https://github.com/netwrix.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Org Stats\n\nA GitHub Action that scans repositories in your GitHub organization (or profile) and generates visual ASCII bar charts showing Claude Code adoption statistics. Great for organizations that are looking to drive Claude Code adoption and want a first-line visibility into where it is being used. Inspired by [waka-readme](https://github.com/athul/waka-readme).\n\n## Example Output\n\n```\n📊 Claude Code Adoption (100 repos scanned)\n\nHas CLAUDE.md          25 repos   ██████░░░░░░░░░░░░░░░░░░░  25.00 %\nHas .claude/ Dir       18 repos   ████░░░░░░░░░░░░░░░░░░░░░  18.00 %\nHas Skills              8 repos   ██░░░░░░░░░░░░░░░░░░░░░░░   8.00 %\nHas Agents              5 repos   █░░░░░░░░░░░░░░░░░░░░░░░░   5.00 %\nHas Hooks               4 repos   █░░░░░░░░░░░░░░░░░░░░░░░░   4.00 %\nHas GitHub Actions      6 repos   █░░░░░░░░░░░░░░░░░░░░░░░░   6.00 %\n\n⚡ Top Skills (of 8 repos)\nreview                  5 repos\ncommit                  3 repos\ndeploy                  2 repos\n\n🕵️ Top Agents (of 5 repos)\ncode-reviewer           3 repos\ntest-writer             2 repos\n\n🪝 Top Hooks (of 4 repos)\nPreToolUse              3 repos\nPostToolUse             2 repos\n\n🤖 Top GitHub Actions (of 6 repos)\nclaude-code-action      5 repos\nclaude-code (ref)       3 repos\n```\n\n\u003cdetails\u003e\n\u003csummary\u003ePer-repo breakdown\u003c/summary\u003e\n\n| Repo | CLAUDE.md | .claude/ | MCP | Skills | Actions | Hooks | Agents | Memory |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| api-service | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |  |\n| frontend-app | ✅ | ✅ |  | ✅ |  |  |  |  |\n| infra-tools | ✅ |  |  |  | ✅ |  |  |  |\n\n\u003c/details\u003e\n\n## Setup\n\n### 1. Add section markers to your README\n\nAdd these comments wherever you want the stats to appear:\n\n```markdown\n\u003c!--START_SECTION:claude-stats--\u003e\n\u003c!--END_SECTION:claude-stats--\u003e\n```\n\n### 2. Create a workflow\n\nCreate `.github/workflows/claude-stats.yml`:\n\n```yaml\nname: Claude Code Stats\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"  # Daily at midnight\n  workflow_dispatch:       # Manual trigger\n\njobs:\n  update-stats:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: netwrix/claude-org-stats@main\n        with:\n          GH_TOKEN: ${{ secrets.ORG_READ_TOKEN }}\n          ORG_NAME: your-org\n          REPOSITORY: ${{ github.repository }}\n          SHOW_SECTIONS: \"adoption,mcp,skills,actions,hooks,agents,details\"\n```\n\n### 3. Create a GitHub token\n\nCreate a [Personal Access Token](https://github.com/settings/tokens) (classic) with `repo` and `read:org` scopes, or a fine-grained token with read access to organization repos. Add it as a repository secret named `ORG_READ_TOKEN`.\n\n## What It Detects\n\nFor each repository in the organization:\n\n| Feature | What's scanned |\n|---------|---------------|\n| **CLAUDE.md** | `CLAUDE.md` files at root or nested in directories |\n| **.claude/ directory** | Presence of `.claude/` configuration directory |\n| **MCP servers** | Server names from `.mcp.json` and `.claude/settings.json` |\n| **Skills** | Files in `.claude/commands/` and `.claude/skills/` directories |\n| **Claude GitHub Actions** | References to Claude actions in `.github/workflows/*.yml` |\n| **Hooks** | Hook definitions in `.claude/settings.json` |\n| **Agents** | Agent files in `.claude/agents/` directory |\n| **Memory** | `MEMORY.md` files |\n\n## Configuration\n\n| Input | Default | Description |\n|-------|---------|-------------|\n| `GH_TOKEN` | *required* | GitHub token with org:read scope |\n| `ORG_NAME` | *required* | GitHub organization to scan |\n| `REPOSITORY` | `\"\"` | Repository to update (owner/repo format) |\n| `SHOW_SECTIONS` | `adoption,skills,agents,hooks,actions` | Sections to render (see below) |\n| `BLOCKS` | `░█` | Bar chart characters |\n| `BAR_LENGTH` | `25` | Bar width in characters |\n| `BAR_SECTIONS` | `adoption,skills,agents,hooks,actions` | Sections that show progress bars (others show counts only) |\n| `MAX_ITEMS` | `10` | Max items in ranked lists |\n| `EXCLUDE_ARCHIVED` | `true` | Skip archived repos |\n| `EXCLUDE_FORKS` | `true` | Skip forked repos |\n| `EXCLUDE_REPOS` | `\"\"` | Comma-separated repo names to skip |\n| `SECTION_NAME` | `claude-stats` | Comment marker name |\n| `TARGET_PATH` | `README.md` | File to update |\n| `TARGET_BRANCH` | `\"\"` | Branch to commit to (default: repo default) |\n| `COMMIT_MESSAGE` | `Update Claude Code adoption stats` | Commit message |\n\n### Custom Bar Styles\n\n```yaml\n# Default\nBLOCKS: \"░█\"\n\n# Gradient\nBLOCKS: \"░▒▓█\"\n\n# Braille\nBLOCKS: \"⣀⣄⣤⣦⣶⣷⣿\"\n```\n\n## Local Testing\n\n```bash\npip install -e \".[dev]\"\n\n# Run tests\npython -m pytest tests/ -v\n\n# Run against a real org\nexport INPUT_GH_TOKEN=\"ghp_...\"\nexport INPUT_ORG_NAME=\"your-org\"\nexport INPUT_REPOSITORY=\"your-org/your-repo\"\npython -m src.main\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetwrix%2Fclaude-org-stats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetwrix%2Fclaude-org-stats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetwrix%2Fclaude-org-stats/lists"}