{"id":51401521,"url":"https://github.com/ekkx/google-aip-skills","last_synced_at":"2026-07-04T07:03:14.644Z","repository":{"id":359034800,"uuid":"1244188661","full_name":"ekkx/google-aip-skills","owner":"ekkx","description":"Every approved Google AIP (aip.dev) bundled for AI coding agents — Claude Code, Codex, Cursor — refreshed daily by CI.","archived":false,"fork":false,"pushed_at":"2026-05-20T05:51:08.000Z","size":281,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-20T07:58:11.004Z","etag":null,"topics":["agent-skills","api-improvement-proposals","claude-code","claude-code-plugin","claude-skills","codex","cursor","google-aip"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekkx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-20T03:31:11.000Z","updated_at":"2026-05-20T05:51:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ekkx/google-aip-skills","commit_stats":null,"previous_names":["ekkx/google-aip-skills"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ekkx/google-aip-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkx%2Fgoogle-aip-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkx%2Fgoogle-aip-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkx%2Fgoogle-aip-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkx%2Fgoogle-aip-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekkx","download_url":"https://codeload.github.com/ekkx/google-aip-skills/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkx%2Fgoogle-aip-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35112709,"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-04T02:00:05.987Z","response_time":113,"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":["agent-skills","api-improvement-proposals","claude-code","claude-code-plugin","claude-skills","codex","cursor","google-aip"],"created_at":"2026-07-04T07:03:12.512Z","updated_at":"2026-07-04T07:03:14.636Z","avatar_url":"https://github.com/ekkx.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# google-aip\n\n\u003e **The problem.** Ask an LLM to design a REST or gRPC API and it'll happily\n\u003e invent its own conventions — ignoring AIP-121's resource-oriented patterns,\n\u003e making up error shapes, skipping pagination tokens. The\n\u003e [Google AIP spec](https://google.aip.dev) is public, but it lives on an HTML\n\u003e site that agents can't reliably cite from, and the training cutoff already\n\u003e missed the latest revisions.\n\u003e\n\u003e **The fix.** Ship the full, current AIP text *into the agent's context* —\n\u003e offline, structured, always current.\n\nThe same markdown tree is exposed as three entry points so whichever agent\nyou happen to use can consult the actual upstream spec without a network\ncall:\n\n- **Claude Code plugin**\n- **Codex `AGENTS.md`**\n- **Cursor rule**\n\nOther agents (Cline, Continue, plain `@file` mentions, etc.) can read the same\nmarkdown directly. CI re-syncs daily from\n[`aip-dev/google.aip.dev`](https://github.com/aip-dev/google.aip.dev) so the\nbundle never lags the upstream spec.\n\n## Install\n\nThe same `references/` tree powers every agent. Each agent just gets its own\nentry point file.\n\n### Claude Code\n\nThis repository is both a [Claude Code marketplace](https://docs.claude.com/en/docs/claude-code/plugins)\nand the plugin it serves:\n\n```text\n/plugin marketplace add ekkx/google-aip-skills\n/plugin install google-aip@google-aip-skills\n```\n\nUpdates land automatically — the marketplace tracks this repository's default\nbranch, which is refreshed daily by CI from the upstream AIP spec.\n\n### Codex CLI (and any AGENTS.md-aware agent)\n\nAdd this repository to your project as a git submodule (or vendor it however\nyou prefer), then point `AGENTS.md` at the bundled one:\n\n```sh\ngit submodule add https://github.com/ekkx/google-aip-skills vendor/google-aip-skills\nln -s vendor/google-aip-skills/AGENTS.md AGENTS.md      # or copy it\n```\n\nCodex picks up `AGENTS.md` hierarchically — if you'd rather scope it to a\nsubdirectory, drop it there instead of the repo root.\n\n### Cursor\n\nSame submodule trick, symlinked into Cursor's rules directory:\n\n```sh\ngit submodule add https://github.com/ekkx/google-aip-skills vendor/google-aip-skills\nmkdir -p .cursor/rules\nln -s ../../vendor/google-aip-skills/.cursor/rules/google-aip.mdc .cursor/rules/google-aip.mdc\n```\n\nThe rule uses `alwaysApply: false` and a description, so Cursor only attaches\nit when the conversation actually involves API design.\n\n### Keeping the submodule up to date\n\nGit submodules are pinned to a specific commit, so the Codex / Cursor copies\ndo **not** follow upstream automatically. When you want the latest AIPs:\n\n```sh\n# Update only this submodule (don't touch your other submodules).\ngit submodule update --remote vendor/google-aip-skills\ngit add vendor/google-aip-skills\ngit commit -m \"chore: bump google-aip-skills\"\n```\n\nThe path argument is important — running `git submodule update --remote`\nwithout it would update every submodule in your repo. If you'd like this\nfully automated, point Renovate or Dependabot at the submodule.\n\n### Other agents (Cline, Continue, etc.)\n\nAnything that can read Markdown from your repository works. Point the agent at\n`vendor/google-aip-skills/skills/google-aip/SKILL.md` (or `AGENTS.md`) and let\nit follow the links from there.\n\n## What you get\n\nOnce installed, the `google-aip` skill auto-loads whenever Claude detects an\nAPI-design context (resource names, standard methods, pagination, errors, LRO,\nversioning, or a specific `AIP-NNN` reference).\n\nSkill contents:\n\n```\nskills/google-aip/\n├── SKILL.md           # trigger description + scope navigation\n├── SOURCE.md          # upstream commit SHA + import timestamp\n└── references/\n    ├── general/INDEX.md\n    ├── general/resource-design/0121.md\n    ├── general/resource-design/0122.md\n    ├── ...\n    ├── cloud/INDEX.md\n    ├── auth/INDEX.md\n    └── ...\n```\n\nEach AIP file is a verbatim copy from\n[`aip-dev/google.aip.dev`](https://github.com/aip-dev/google.aip.dev),\nincluding its YAML frontmatter (`id`, `state`, `created`, `placement`, …).\n\nOnly AIPs with `state: approved` are included — drafts are intentionally\nexcluded so Claude does not recommend unsettled guidance.\n\n## How freshness is guaranteed\n\n[`.github/workflows/sync.yml`](.github/workflows/sync.yml) runs daily, rebuilds\n`skills/google-aip/` from the upstream `master`, and commits the result iff\nanything changed. The upstream commit SHA used for each build is recorded in\n`skills/google-aip/SOURCE.md`, so every snapshot is traceable.\n\n## How AIPs are organized\n\nThe upstream repository defines **scopes** (`aip/general/`, `aip/cloud/`,\n`aip/auth/`, …) and, inside each scope, **categories** declared in\n`scope.yaml` (e.g. `resource-design`, `errors`, `design-patterns`).\n\nThe build mirrors that structure verbatim:\n\n- `references/\u003cscope\u003e/\u003ccategory\u003e/\u003cNNNN\u003e.md` — the AIP itself\n- `references/\u003cscope\u003e/INDEX.md` — generated table of contents for that scope\n- `SKILL.md` — top-level scope selector\n\nIf an AIP has no `placement.category` (some scopes have none declared), it\nfalls into an auto-created `misc` bucket so nothing is silently dropped.\n\n## Building locally\n\nRequirements: Go 1.24+ and `git`.\n\n```sh\n# Clone upstream, regenerate the skill in place.\ngo run ./cmd/build\n\n# Use an existing local checkout of google.aip.dev instead of cloning:\ngo run ./cmd/build -source /path/to/google.aip.dev\n\n# Custom output directory:\ngo run ./cmd/build -out /tmp/google-aip-skill\n```\n\nThe build is fully deterministic for a given upstream commit — re-running it\nwithout upstream changes produces an identical tree.\n\n## Repository layout\n\n```\ngoogle-aip-skills/\n├── .claude-plugin/\n│   ├── marketplace.json     # this repo is a marketplace\n│   └── plugin.json          # ... and also the plugin it ships\n├── skills/google-aip/       # the shared payload (SKILL.md + references/)\n├── AGENTS.md                # entry point for Codex / generic agents\n├── .cursor/rules/\n│   └── google-aip.mdc       # entry point for Cursor\n├── cmd/build/main.go        # the importer\n├── .github/workflows/sync.yml\n├── go.mod / go.sum\n└── README.md\n```\n\n## Licensing\n\nThe build tooling in this repository is MIT-licensed (see `LICENSE`). The AIP\ntexts under `skills/google-aip/references/` are copies from\n[`aip-dev/google.aip.dev`](https://github.com/aip-dev/google.aip.dev) and\nremain under that project's license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekkx%2Fgoogle-aip-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekkx%2Fgoogle-aip-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekkx%2Fgoogle-aip-skills/lists"}