{"id":51460767,"url":"https://github.com/schubydoo/claustodian","last_synced_at":"2026-07-06T05:01:22.836Z","repository":{"id":369550891,"uuid":"1290323214","full_name":"schubydoo/claustodian","owner":"schubydoo","description":"Versioned, machine-readable dataset answering: does a given Claude Code CLI flag, env var, or command exist in version X? Sourced only from official public artifacts.","archived":false,"fork":false,"pushed_at":"2026-07-05T21:12:15.000Z","size":490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T22:12:36.069Z","etag":null,"topics":["changelog","claude-code","cli","dataset","developer-tools","json-schema","provenance","versioning"],"latest_commit_sha":null,"homepage":"https://schubydoo.github.io/claustodian/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schubydoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-05T20:39:51.000Z","updated_at":"2026-07-05T21:16:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/schubydoo/claustodian","commit_stats":null,"previous_names":["schubydoo/claustodian"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/schubydoo/claustodian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schubydoo%2Fclaustodian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schubydoo%2Fclaustodian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schubydoo%2Fclaustodian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schubydoo%2Fclaustodian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schubydoo","download_url":"https://codeload.github.com/schubydoo/claustodian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schubydoo%2Fclaustodian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35178403,"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-07-06T02:00:07.184Z","response_time":106,"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":["changelog","claude-code","cli","dataset","developer-tools","json-schema","provenance","versioning"],"created_at":"2026-07-06T05:01:22.184Z","updated_at":"2026-07-06T05:01:22.826Z","avatar_url":"https://github.com/schubydoo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo/logo-white.svg\" /\u003e\n    \u003cimg src=\"assets/logo/logo-full.svg\" alt=\"Claustodian\" width=\"320\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n# Claustodian\n\n[![Validate PR](https://github.com/schubydoo/claustodian/actions/workflows/validate-pr.yml/badge.svg)](https://github.com/schubydoo/claustodian/actions/workflows/validate-pr.yml)\n[![Security](https://github.com/schubydoo/claustodian/actions/workflows/security.yml/badge.svg)](https://github.com/schubydoo/claustodian/actions/workflows/security.yml)\n[![codecov](https://codecov.io/gh/schubydoo/claustodian/branch/main/graph/badge.svg)](https://codecov.io/gh/schubydoo/claustodian)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/schubydoo/claustodian/badge)](https://scorecard.dev/viewer/?uri=github.com/schubydoo/claustodian)\n[![Code: Apache-2.0](https://img.shields.io/badge/code-Apache--2.0-blue.svg)](LICENSE)\n[![Data: CC BY 4.0](https://img.shields.io/badge/data-CC--BY--4.0-blue.svg)](LICENSE-DATA)\n\nA static, versioned, machine-parseable record of every Claude Code CLI flag, environment variable, command, and config key — each tagged with the version it **first appeared** in (and, when known, when it was removed). Answer _\"does feature X exist in Claude Code version Y?\"_ by fetching a file, in any language, with no scraping.\n\n## Why\n\nClaude Code ships multiple releases a week and there's no machine-queryable record of when each part of its surface appeared or disappeared. Claustodian is that record: JSON as the single source of truth, published as static files (JSON + generated YAML + TOML) on GitHub Pages.\n\n## Quick start\n\nEvery version is a static file. To check whether a symbol exists in a version:\n\n```bash\n# What does the latest snapshot say about --safe-mode?\ncurl -s https://schubydoo.github.io/claustodian/data/latest.json \\\n  | jq '.symbols[] | select(.symbol == \"--safe-mode\") | {first_seen, removed_in, status}'\n\n# Is CLAUDE_CODE_SAFE_MODE present in 2.1.169?  (exit code: 0 = yes, 1 = no)\ncurl -s https://schubydoo.github.io/claustodian/data/versions/2.1.169.json \\\n  | jq -e '.symbols[] | select(.symbol == \"CLAUDE_CODE_SAFE_MODE\")' \u003e /dev/null \\\n  \u0026\u0026 echo \"available\" || echo \"not available\"\n```\n\nA symbol is available in version Y when `first_seen \u003c= Y` and (`removed_in` is null or `\u003e Y`).\n\n## Data layout\n\nStable, predictable URLs under `data/`:\n\n| Path                       | What                                              |\n| -------------------------- | ------------------------------------------------- |\n| `data/latest.json`         | Full symbol list as of the newest tracked version |\n| `data/versions/X.Y.Z.json` | Full symbol list as of version X.Y.Z              |\n| `data/index.json`          | All tracked versions + the latest                 |\n| `data/schema-version.json` | Version of this data format                       |\n\nEach file is also published as `.yaml` and `.toml` (generated in CI from the JSON; JSON is the source of truth). Each record follows [`schema/symbol.schema.json`](schema/symbol.schema.json) (JSON Schema draft 2020-12):\n\n```json\n{\n  \"symbol\": \"--safe-mode\",\n  \"type\": \"cli_flag\",\n  \"first_seen\": \"2.1.169\",\n  \"removed_in\": null,\n  \"status\": \"active\",\n  \"provenance\": \"changelog\",\n  \"confidence\": \"high\",\n  \"description\": \"Starts Claude Code with all customizations disabled, for troubleshooting.\",\n  \"source_url\": \"https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md\",\n  \"category\": \"startup\"\n}\n```\n\n## Important: what `first_seen` means\n\n`first_seen` is the **earliest version in which Claustodian observed a symbol — not a guarantee of the first version it truly existed in.** Changelog-sourced entries are bounded by when the changelog first mentioned the symbol; binary-sourced entries by the earliest release we extracted. Treat it as a lower bound on availability, not an absolute origin.\n\n## Provenance \u0026 trust\n\nEvery record carries a `provenance`:\n\n- **`changelog`** — extracted from the official `CHANGELOG.md`. Authoritative for existence.\n- **`docs`** — from the official Claude Code documentation pages (`code.claude.com/docs`). Supplies the authoritative description and, where a page states a `min-version`, an anchored `first_seen`.\n- **`binary`** — extracted from published release binaries (a later phase). Starts as `status: needs_review` until a human confirms it.\n\n`first_seen_estimated: true` flags records whose `first_seen` is an upper bound (an incidental changelog mention or a docs page with no `min-version`); those carry `confidence: medium` until the binary lane confirms them.\n\n**Claustodian uses only material Anthropic has publicly published and distributed** — the changelog, the official docs pages, and official release binaries. It does not use leaked or otherwise non-public material. See CONTRIBUTING.\n\n## Status\n\nv1.0 covers the **changelog lane**: the schema + validator, the changelog scraper, and Pages publishing. Undocumented-symbol coverage (binary extraction) and a self-extracted historical backlog are planned follow-ups.\n\n## Development\n\n```bash\nnpm ci\nnpm test          # unit tests\nnpm run validate  # validate all data/ files against the schema\nnpm run scrape -- --all   # (re)generate the full dataset from the changelog\n```\n\n## License\n\nDual-licensed:\n\n- **Code** (scripts, schema, config) — **Apache-2.0** (see `LICENSE`). Requires preserving attribution/notices; includes a patent grant.\n- **Data** (everything under `data/`) — **CC-BY-4.0** (see `LICENSE-DATA`). Use it however you like, including commercially — just credit Claustodian, e.g. _Data from Claustodian (https://github.com/schubydoo/claustodian), © 2026 Schuby, CC-BY-4.0._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschubydoo%2Fclaustodian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschubydoo%2Fclaustodian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschubydoo%2Fclaustodian/lists"}