{"id":50341450,"url":"https://github.com/leynier/agents-md-sync","last_synced_at":"2026-05-29T17:30:36.485Z","repository":{"id":357973818,"uuid":"1239340320","full_name":"leynier/agents-md-sync","owner":"leynier","description":"CLI to centralize AI agent instructions in one AGENTS.md and sync them across Codex, Claude, Gemini, Copilot, Amp, and OpenCode.","archived":false,"fork":false,"pushed_at":"2026-05-15T04:43:00.000Z","size":411,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T05:31:41.414Z","etag":null,"topics":["agent-instructions","agents-md","ai-agents","claude-code","cli","codex","copilot","developer-tools","gemini-cli","opencode","python","typer","uv"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/agents-md-sync","language":"Python","has_issues":false,"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/leynier.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-05-15T02:07:36.000Z","updated_at":"2026-05-15T04:43:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/leynier/agents-md-sync","commit_stats":null,"previous_names":["leynier/agents-md"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/leynier/agents-md-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynier%2Fagents-md-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynier%2Fagents-md-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynier%2Fagents-md-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynier%2Fagents-md-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leynier","download_url":"https://codeload.github.com/leynier/agents-md-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynier%2Fagents-md-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33664259,"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-05-29T02:00:06.066Z","response_time":107,"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-instructions","agents-md","ai-agents","claude-code","cli","codex","copilot","developer-tools","gemini-cli","opencode","python","typer","uv"],"created_at":"2026-05-29T17:30:34.980Z","updated_at":"2026-05-29T17:30:36.477Z","avatar_url":"https://github.com/leynier.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![agents-md-sync banner](assets/banner.jpg)\n\n`agents-md-sync` centralizes global AI agent instructions in one canonical `AGENTS.md`\nfile and installs symlinks or copies to the paths expected by common agent CLIs.\n\n## Supported agents\n\n| Agent | Target path |\n|---|---|\n| Amp | `~/.config/AGENTS.md` |\n| Codex CLI | `~/.codex/AGENTS.md` |\n| OpenCode | `~/.config/opencode/AGENTS.md` |\n| Gemini CLI | `~/.gemini/GEMINI.md` |\n| GitHub Copilot CLI | `~/.copilot/copilot-instructions.md` |\n| Claude Code | `~/.claude/CLAUDE.md` |\n\n## Install\n\n```sh\nuvx agents-md-sync --help\n```\n\nFor local development:\n\n```sh\nuv sync\nuv run agents-md-sync --help\n```\n\n## Quickstart\n\nCreate the canonical source from a specific file:\n\n```sh\nuvx agents-md-sync init --from ./my-instructions.md --yes\n```\n\nOr let `agents-md-sync init` scan existing agent instruction files and ask which one\nto use as the base:\n\n```sh\nuvx agents-md-sync init\n```\n\nInstall the configured source to every enabled target:\n\n```sh\nuvx agents-md-sync install --yes\n```\n\nUse copies instead of symlinks:\n\n```sh\nuvx agents-md-sync install --mode copy --yes\n```\n\nShow current target state:\n\n```sh\nuvx agents-md-sync status\n```\n\n## Git-backed source\n\nYou can keep your canonical `AGENTS.md` in a Git repository. During `init`, pass\na repo URL directly:\n\n```sh\nuvx agents-md-sync init --repo git@github.com:user/agent-config.git --dest ~/.agent-config --yes\n```\n\nOr select one of your GitHub repositories interactively:\n\n```sh\nuvx agents-md-sync init --select-repo --yes\n```\n\nThe interactive selector uses `gh repo list` and requires the GitHub CLI (`gh`)\nto be installed and authenticated. If `gh` is unavailable or cannot list repos,\n`agents-md-sync` falls back to asking for the repo URL manually.\n\nWhen a repo is configured, `agents-md-sync init` clones it into `--dest` (default:\n`~/.agent-config`) or runs `git pull --ff-only` if the destination already\nexists. If the repo does not contain `AGENTS.md`, `agents-md-sync` writes the initial\nsource file there. The config is updated with:\n\n```toml\n[source]\npath = \"~/.agent-config/AGENTS.md\"\n\n[repo]\nurl = \"git@github.com:user/agent-config.git\"\ndest = \"~/.agent-config\"\n```\n\nAfter editing the configured source:\n\n```sh\nuvx agents-md-sync edit\nuvx agents-md-sync push -m \"update team agent instructions\"\n```\n\n`agents-md-sync push` commits and pushes changes to the configured repo. It only\ntracks `AGENTS.md`, runs `git pull --rebase --autostash` first, and prints\n`No changes to push` when there is nothing to publish. Use `--dry-run` to see\nthe commands without changing the repo.\n\n`agents-md-sync sync` remains pull-only. Use it to clone or update a repository\ncontaining `AGENTS.md`, save it in config, and reinstall targets:\n\n```sh\nuvx agents-md-sync sync --repo git@github.com:user/agent-config.git --dest ~/.agent-config --yes\n```\n\nAfter the first sync, this is enough:\n\n```sh\nuvx agents-md-sync sync --yes\n```\n\nRecommended Git-backed workflow:\n\n```sh\nuvx agents-md-sync init --select-repo\nuvx agents-md-sync edit\nuvx agents-md-sync push\nuvx agents-md-sync sync --yes\n```\n\n## Configuration\n\nBy default, config is stored at `~/.config/agents-md-sync/config.toml`:\n\n```toml\n[source]\npath = \"~/.config/AGENTS.md\"\n\n[[targets]]\nname = \"my-agent\"\npath = \"~/.my-agent/instructions.md\"\nenabled = true\n```\n\nAd-hoc targets are also supported:\n\n```sh\nuvx agents-md-sync install --extra-target my-agent=~/.my-agent/instructions.md --only my-agent --yes\n```\n\n## Development\n\nThis project uses `uv`, `ruff`, `ty`, `pytest`, and `pytest-cov`.\n\n```sh\nuv sync\nuv run ruff check .\nuv run ruff format --check .\nuv run ty check\nuv run pytest\n```\n\n`uv run pytest` enforces 100% coverage for `agents_md_sync`.\n\nNo pre-commit setup is required.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleynier%2Fagents-md-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleynier%2Fagents-md-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleynier%2Fagents-md-sync/lists"}