[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1731":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":15,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":47,"discoverSource":48},1731,"anywhere-agents","yzhao062\u002Fanywhere-agents","yzhao062","One config to rule all your AI agents: portable (every project, every session), effective (curated writing, routing, skills), and safer (destructive-command guard).","https:\u002F\u002Fanywhere-agents.readthedocs.io",null,"Python",180,19,1,3,0,2,9,6,50.3,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"agent-config","agent-skills","agents-md","ai-agents","ai-safety","claude-code","code-review","codex","dual-agent-review","git-safety","npm","opinionated","portable-config","pypi","safety-hooks","shared-configuration","skill-dispatch","skill-router","2026-06-12 04:00:11","\u003Ca id=\"readme-top\">\u003C\u002Fa>\n\n\u003Cdiv align=\"center\">\n\n**English · [中文](README.zh-CN.md)**\n\n# anywhere-agents\n\n**One config for every agent — Claude Code, Codex, and whatever comes next.**\n\nStart with effective defaults. Add **packs**, small bundles of rules, skills, or permissions, as you need them. One `AGENTS.md` drives every agent in every repo on every machine.\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fanywhere-agents?color=8b2635&label=PyPI)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fanywhere-agents\u002F)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fanywhere-agents?color=8b2635&label=npm)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fanywhere-agents)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Freadthedocs\u002Fanywhere-agents?color=8b2635&label=docs)](https:\u002F\u002Fanywhere-agents.readthedocs.io\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-8b2635.svg)](LICENSE)\n[![CI](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fanywhere-agents\u002Factions\u002Fworkflows\u002Fvalidate.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fanywhere-agents\u002Factions\u002Fworkflows\u002Fvalidate.yml)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fyzhao062\u002Fanywhere-agents?style=social&cacheSeconds=300)](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fanywhere-agents)\n\n[Install](#install) &nbsp;•&nbsp;\n[Why](#why-youd-use-this) &nbsp;•&nbsp;\n[How it works](#how-it-works) &nbsp;•&nbsp;\n[Pack CLI](#pack-management-cli) &nbsp;•&nbsp;\n[Docs](https:\u002F\u002Fanywhere-agents.readthedocs.io) &nbsp;•&nbsp;\n[Fork](#fork-and-customize)\n\n\u003C\u002Fdiv>\n\n![anywhere-agents: four config sources feed a composer that writes rules, skills, commands, hooks, and settings for Claude Code, Codex, and other agents.](docs\u002Fhero.png)\n\n> [!NOTE]\n> **Condensed from daily use.** The sanitized public release of the agent config I have run daily since early 2026 across research, paper writing, and dev work (PyOD 3, LaTeX, admin) on macOS, Windows, and Linux. Not a weekend project. Maintained by [Yue Zhao](https:\u002F\u002Fyzhao062.github.io) — USC CS faculty and author of [PyOD](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fpyod) (9.8k★ · 38M+ downloads · ~12k citations).\n\n## Why You'd Use This\n\nFour problems this fixes:\n\n**You use more than one agent.** Claude Code at work, Codex on personal projects, Cursor on the side. Without `anywhere-agents`, three configs to keep in sync. With it, one `AGENTS.md` drives all three.\n\n**You work across many repos.** Every new project repeats the same setup ritual: writing-style rules, permission policies, custom skills. Without `anywhere-agents`, you copy-paste between repos and watch them drift. With it, `bootstrap` pulls shared defaults and layers repo-local overrides on top.\n\n**You want a review loop before you push.** `anywhere-agents` ships `\u002Fimplement-review`, a skill that hands your staged diff to a second reviewer (Codex, GitHub Copilot, headless Claude Code, or whichever you configure), converges on feedback, and revises. Without it, you wire reviewer APIs per project. With it, the skill is present the first time you bootstrap.\n\n**You want your agents to follow writing conventions automatically.** The default `agent-style` rule pack bans ~45 AI-tell words and formatting patterns; a PreToolUse guard denies any `.md` \u002F `.tex` \u002F `.rst` write that contains one. Without `anywhere-agents`, the banned words land in your files. With it, the guard blocks the write.\n\n**As of v0.6.0:** Bare `anywhere-agents` is the canonical apply command — one verb that bootstraps, deploys, applies prompt-policy drift on mutable refs, and regenerates `CLAUDE.md`. Direct-URL pack fetch + auth chain + drift application all run in the same command. The [`agent-pack`](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack) reference repo is the **blueprint** for any pack you want to author: your own profile, paper workflow, team conventions, custom skills. The pattern is fork-and-replace. Fork ap, replace its three packs with your content, tag a release, then point `pack add` at your fork:\n\n```bash\nanywhere-agents pack add https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack --ref v0.1.0\n```\n\nThe auth chain handles private repos automatically: SSH agent → `gh` CLI → `GITHUB_TOKEN` → anonymous, in that order, with whatever you already have configured. `--ref` is optional (defaults to `main`); pin a tag for production.\n\n## How It Works\n\nA **pack** is a small bundle (a rule set, a skill, or a permission policy) that the composer deploys to wherever it needs to land: `AGENTS.md`, `.claude\u002Fskills\u002F`, `.claude\u002Fcommands\u002F`, `~\u002F.claude\u002Fhooks\u002F`, or `~\u002F.claude\u002Fsettings.json`.\n\n`bootstrap` installs shipped defaults (`agent-style`, `aa-core-skills`) and assembles project-active selections from `rule_packs:` in `agent-config.yaml`, `rule_packs:` in `agent-config.local.yaml`, and the `AGENT_CONFIG_PACKS` env var as a transient name list. Each entry is either a registered name (resolved against `bootstrap\u002Fpacks.yaml`) or a direct-URL form with a `source: {url, ref}` field. v0.5.0's 4-method auth chain fetches both public and private repos with whatever Git authentication you already have configured.\n\nAs of v0.6.0, the bundled-default policy table is `agent-style` (passive) → `auto` (silent refresh + stderr summary) and `aa-core-skills` (active) → `prompt` (apply-by-default + stderr summary). Third-party packs default to `prompt`. Bare `anywhere-agents` applies prompt-policy drift on mutable refs inline; the run prints one stderr summary line per affected pack (`applied 1 update for \u003Cpack> @ \u003Cref>: \u003Cold> -> \u003Cnew>`). Per-run skip is available via `ANYWHERE_AGENTS_UPDATE=skip` (v0.5.0 contract) or the `--no-apply-drift` CLI flag (the flag wins when both are set). Durable fail-closed: pin `update_policy: locked` in `agent-config.yaml`. The `anywhere-agents pack add | remove | list` CLI writes a user-level manifest at `$XDG_CONFIG_HOME\u002Fanywhere-agents\u002Fconfig.yaml`. As of v0.5.2, `pack add` is one-shot: it writes the entry, runs the composer, and deploys in a single command.\n\n`anywhere-agents` is the sync step. Re-run it on any machine or repo, and the same command reproduces the shipped defaults plus the project-level selections, applies any drift, and refreshes generated files.\n\n## What This Looks Like\n\n### Every Session Opens with a Status Banner\n\n![session-start banner: current + latest versions of Claude Code and Codex, auto-update state, active skills, PreToolUse + SessionStart hooks, and any drift the session check found](docs\u002Fsession-banner.png)\n\nCurrent and latest versions of Claude Code and Codex (arrows appear only when they differ); auto-update state; active skills (local + pack + shared); hooks (`guard.py` PreToolUse, `session_bootstrap.py` SessionStart); any drift flagged by the session check. If anything needs attention, the last line names it with a concrete action (for example, `⚠ actions\u002Fcheckout@v4 in .github\u002Fworkflows\u002Fvalidate.yml:17 — bump to v5`).\n\n### What Appears in Your Repo After Bootstrap\n\n```text\nyour-project\u002F\n├── AGENTS.md              # shared rules synced from upstream\n├── AGENTS.local.md        # your per-project overrides (optional)\n├── CLAUDE.md              # generated from AGENTS.md for Claude Code\n├── agents\u002Fcodex.md        # generated from AGENTS.md for Codex\n├── agent-config.yaml      # (optional) per-project pack selections\n├── .claude\u002F\n│   ├── commands\u002F          # slash-command pointers for shipped skills\n│   └── settings.json      # your project keys merged with shared\n├── .agent-config\u002F         # upstream cache (gitignored)\n└── skills\u002F                # (optional) repo-local skill overrides\n```\n\nBootstrap also drops `guard.py` and `session_bootstrap.py` into `~\u002F.claude\u002Fhooks\u002F`, `statusline.py` into `~\u002F.claude\u002Fstatusline.py` (Claude Max + Codex 5h \u002F weekly quota readout in the Claude Code status row), and merges shared keys into `~\u002F.claude\u002Fsettings.json`. Everything above comes from one `bootstrap` run; re-running it keeps these files in sync with upstream.\n\nAfter bootstrap, every Claude Code session shows your live Claude Max + Codex quota at the bottom of the terminal — no API key, no polling, no extra setup:\n\n```text\n🤖 Opus 4.7 · 5h 78% (3h 4m) · 7d 51% (15h 4m)  |  Codex 5h 89% (3h 25m) · 7d 90% (4d 23h)\n```\n\nThe Claude side reads from the statusLine stdin (Claude Code v2.1.80+ injects `rate_limits` for Pro\u002FMax subscribers). The Codex side tails the most recent `~\u002F.codex\u002Fsessions\u002FYYYY\u002FMM\u002FDD\u002Frollout-*.jsonl`. Windows that already reset are flagged `(stale)`; missing data renders as `—`.\n\n### One `AGENTS.md`, Rules for Every Agent\n\nShared rules plus agent-specific blocks in one file; the generator emits one file per agent.\n\n```mermaid\n%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#fdf5f6', 'primaryBorderColor': '#8b2635', 'primaryTextColor': '#1a1a1a', 'lineColor': '#8b2635'}}}%%\nflowchart LR\n    A[\"\u003Cb>AGENTS.md\u003C\u002Fb>\u003Cbr\u002F>shared rules\u003Cbr\u002F>+ &lt;!-- agent:claude --&gt;\u003Cbr\u002F>+ &lt;!-- agent:codex --&gt;\"] -->|shared + claude blocks| B[\"\u003Cb>CLAUDE.md\u003C\u002Fb>\u003Cbr\u002F>for Claude Code\"]\n    A -->|shared + codex blocks| C[\"\u003Cb>agents\u002Fcodex.md\u003C\u002Fb>\u003Cbr\u002F>for Codex\"]\n    A -.->|future: +1 tag| D([\"other agent\"])\n```\n\nAdd a new agent tomorrow and only the tag name changes. `scripts\u002Fgenerate_agent_configs.py` runs every bootstrap; the shared content stays in lock-step across agents because it lives in one source file.\n\n### Writing That Does Not Read Like an AI\n\nDefault AI output leans on a small set of filler words and em-dash rhythm. The `agent-style` rule pack is a ban list plus formatting rules; the PreToolUse guard enforces the ban at write-time on `.md` \u002F `.tex` \u002F `.rst` \u002F `.txt` files.\n\n\u003Ctable>\n\u003Ctr>\n\u003Cth align=\"left\">Without \u003Ccode>anywhere-agents\u003C\u002Fcode>\u003C\u002Fth>\n\u003Cth align=\"left\">With \u003Ccode>anywhere-agents\u003C\u002Fcode>\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n> We \u003Cmark>delve\u003C\u002Fmark> into a \u003Cmark>pivotal realm\u003C\u002Fmark> — a \u003Cmark>multifaceted endeavor\u003C\u002Fmark> that \u003Cmark>underscores\u003C\u002Fmark> a \u003Cmark>paramount facet\u003C\u002Fmark> of outlier detection, \u003Cmark>paving the way\u003C\u002Fmark> for \u003Cmark>groundbreaking\u003C\u002Fmark> advances that will \u003Cmark>reimagine\u003C\u002Fmark> the \u003Cmark>trailblazing\u003C\u002Fmark> work of our predecessors.\n\n\u003Cem>32 words. Twelve banned-word or close-variant hits. Em-dash as casual punctuation. Every clause adds filler.\u003C\u002Fem>\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n> We examine outlier detection along three dimensions: coverage, interpretability, and scale. Each matters; none alone is sufficient. Prior work has addressed one or two in isolation; this work integrates all three.\n\n\u003Cem>31 words. Zero banned words. Semicolons and colons instead of em-dashes. One idea per sentence.\u003C\u002Fem>\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\nThe guard denies the `Write` \u002F `Edit` tool call outright when the outgoing content contains a banned word. The agent sees the deny message with the hit list and revises before any file changes.\n\n### `git push` Is Never a Silent Action\n\n```text\n[guard.py] ⛔ STOP! HAMMER TIME!\n\n  command:   git push --force origin main\n  category:  destructive push\n\nThis is destructive. Are you sure? (y\u002FN)\n```\n\nThe guard covers `git push`, `git commit`, `git merge`, `git rebase`, `git reset --hard`, `gh pr merge`, `gh pr create`, and related destructive commands. Read-only operations (`status`, `diff`, `log`) pass silently, so the common workflow stays fast.\n\n## Install\n\n> [!TIP]\n> The simplest install is to tell your AI agent: _\"Install anywhere-agents in this project.\"_ It will pick the right command from PyPI or npm.\n\n**Recommended:**\n\n```bash\n# One-time per machine:\npipx install anywhere-agents     # or: uv tool install anywhere-agents\n\n# Per-project (run in any repo):\nanywhere-agents                          # bootstrap shared config + hooks + settings\nanywhere-agents pack add \u003Cpack-repo-url>  # add a pack (one-shot: fetch, install, deploy)\n```\n\n**Choosing an install path:**\n\n| Path | Best for |\n|------|----------|\n| `pipx install anywhere-agents` | **Daily use, full CLI** (bootstrap + pack mgmt) |\n| `pipx run anywhere-agents` | One-shot zero-install bootstrap (e.g. CI, trying it out) |\n| `npx anywhere-agents` | One-shot zero-install bootstrap, Node-native |\n| `npm install -g anywhere-agents` | Persistent bootstrap, Node-first machines |\n| Raw `curl` \u002F `Invoke-WebRequest` | No package manager available (see collapsed block below) |\n\nAll paths run `bootstrap`. For `pack add | remove | verify | list | update`, install the Python CLI via `pipx install anywhere-agents`. The npm package is bootstrap-only; if you need pack commands, install the Python CLI separately on the same machine.\n\n**Why `pipx` and not plain `pip install`?** `anywhere-agents` is a CLI tool with its own dependencies. Plain `pip install` either lands in the active venv (per-project, not per-machine) or hits PEP 668 \u002F `externally-managed-environment` errors on modern Ubuntu \u002F Debian \u002F Homebrew Python. `pipx` gives each CLI tool its own isolated venv and exposes the binary on PATH globally; it is clean to upgrade, clean to remove, and avoids dependency conflicts. It is the [PyPA-recommended approach](https:\u002F\u002Fpackaging.python.org\u002Fen\u002Flatest\u002Fguides\u002Finstalling-stand-alone-command-line-tools\u002F) for Python CLI applications.\n\n### How to Update\n\n**For Claude Code, updates are automatic.** `anywhere-agents` installs a SessionStart hook that runs bootstrap every time you open a Claude Code session, so the shared `AGENTS.md`, skills, and settings stay fresh with no typing.\n\n**For Codex or other agents** (no SessionStart hook support today), tell the agent in your first message of a session:\n\n> `read @AGENTS.md to run bootstrap, session checks, and task routing`\n\nThis triggers the agent to read the bootstrap block in `AGENTS.md` and execute it. Same effect as the hook, one verbal invocation per session.\n\n**To force a refresh mid-session** (for example, when the maintainer just pushed a fix you need right now):\n\n```bash\n# macOS \u002F Linux\nbash .agent-config\u002Fbootstrap.sh\n\n# Windows (PowerShell)\n& .\\.agent-config\\bootstrap.ps1\n```\n\n**To pin to a specific version**, fork the repo and check out a tag in your fork, then point consumers at your fork instead of the main branch.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Raw Shell (No Package Manager Required)\u003C\u002Fb>\u003C\u002Fsummary>\n\nmacOS \u002F Linux:\n\n```bash\nmkdir -p .agent-config\ncurl -sfL https:\u002F\u002Fraw.githubusercontent.com\u002Fyzhao062\u002Fanywhere-agents\u002Fmain\u002Fbootstrap\u002Fbootstrap.sh -o .agent-config\u002Fbootstrap.sh\nbash .agent-config\u002Fbootstrap.sh\n```\n\nWindows (PowerShell):\n\n```powershell\nNew-Item -ItemType Directory -Force -Path .agent-config | Out-Null\nInvoke-WebRequest -UseBasicParsing -Uri https:\u002F\u002Fraw.githubusercontent.com\u002Fyzhao062\u002Fanywhere-agents\u002Fmain\u002Fbootstrap\u002Fbootstrap.ps1 -OutFile .agent-config\u002Fbootstrap.ps1\n& .\\.agent-config\\bootstrap.ps1\n```\n\n\u003C\u002Fdetails>\n\nSource: [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fanywhere-agents\u002F) · [npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fanywhere-agents) · [bootstrap scripts](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fanywhere-agents\u002Ftree\u002Fmain\u002Fbootstrap)\n\n## Pack Management CLI\n\nInstall the `anywhere-agents` CLI (via `pipx install anywhere-agents`) to manage packs without editing per-project YAML.\n\n![anywhere-agents pack CLI demo: list (empty), add with --ref, list again, remove, list again](docs\u002Fpack-cli-demo.gif)\n\n```bash\nanywhere-agents                              # canonical apply: bootstrap + deploy + drift + generator\nanywhere-agents pack list\nanywhere-agents pack add https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack --ref v0.1.0\nanywhere-agents pack list --drift             # read-only audit against pack-lock.json\nanywhere-agents pack remove profile\nanywhere-agents uninstall --all               # clean everything from the current project\n```\n\n`pack add \u003Curl>` reads the remote `pack.yaml` and writes one user-level row per declared pack (e.g., `agent-pack` expands to `profile`, `paper-workflow`, `acad-skills`). `--ref` is optional and defaults to `main`; pin a tag for production. The CLI writes to `$XDG_CONFIG_HOME\u002Fanywhere-agents\u002Fconfig.yaml` (POSIX) or `%APPDATA%\\anywhere-agents\\config.yaml` (Windows).\n\n### Audit Pack Deployment\n\n`pack add` is one-shot in v0.5.2: it writes user-level config rows and runs the composer to deploy into the current project in a single command. Use `pack verify` to audit existing state without writing:\n\n```bash\nanywhere-agents pack verify              # read-only audit (user, project, lock)\n```\n\nTo reconcile drift, run bare `anywhere-agents` — the canonical apply path applies prompt-policy drift on mutable refs and prints one stderr summary line per affected pack. Per-run skip: `ANYWHERE_AGENTS_UPDATE=skip` env var or `--no-apply-drift` CLI flag.\n\n> **Legacy aliases (still supported through all v0.x).** The v0.5.x commands `anywhere-agents pack verify --fix [--yes]` and `anywhere-agents pack update [\u003Cname>]` continue to work and execute the canonical apply path; each prints a one-line stderr notice pointing at `anywhere-agents`. CI scripts that use these forms keep working without changes. Removal is allowed only at v1.0 with explicit CI-migration guidance.\n\n**Migrating from a project that bootstrapped from `agent-config`?** Run bare `anywhere-agents` (or `bash .agent-config\u002Fbootstrap.sh` directly). The CLI auto-detects the legacy `yzhao062\u002Fagent-config` upstream from `.agent-config\u002Fupstream` or the cached `.git\u002Fconfig`, deletes the legacy cache, and bootstraps from anywhere-agents. The detection lives in both the Python CLI and the raw shell scripts, so any entry path triggers the migration once.\n\nThen bring back the User Profile, paper workflow, and 3 academic skills (`bibref-filler`, `dual-pass-workflow`, `figure-prompt-builder`) that previously lived in `agent-config` by adding [`agent-pack`](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack):\n\n```bash\nanywhere-agents pack add https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack --ref v0.1.0\n```\n\nThis expands to three user-level rows (`profile`, `paper-workflow`, `acad-skills`) and deploys all three in a single command.\n\nFor projects that prefer to declare packs in `agent-config.yaml` instead of using `pack add`:\n\n```yaml\nrule_packs:\n  - name: profile\n    source: {url: https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack, ref: v0.1.0}\n  - name: paper-workflow\n    source: {url: https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack, ref: v0.1.0}\n  - name: acad-skills\n    source: {url: https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack, ref: v0.1.0}\n```\n\nBare `anywhere-agents` applies them and prints a stderr summary line per affected pack.\n\nFor the rule-pack composition contract that backs project-level `rule_packs:`, including cache, offline behavior, and failure modes, see [`docs\u002Frule-pack-composition.md`](docs\u002Frule-pack-composition.md).\n\n## What's Next\n\n`v0.5.0` shipped direct-URL pack fetch with the 4-method auth chain (SSH agent, `gh` CLI token, `GITHUB_TOKEN`, anonymous fallback), the trust-model shift to `prompt` as default `update_policy`, and the `pack update` + `pack list --drift` CLI commands. `v0.5.2` ships end-to-end pack management: `pack add` is one-shot install (writes user-level rows, runs composer, deploys), and the AC→AA migration is automatic. `v0.6.0` collapses the day-to-day update flow into a single verb: bare `anywhere-agents` is the canonical apply path; `pack verify --fix` and `pack update` survive as compatibility aliases through all v0.x; prompt-policy drift on mutable refs applies inline by default with stderr summary lines and per-run skip via `ANYWHERE_AGENTS_UPDATE=skip` or `--no-apply-drift`. `update_policy: auto` on active entries is rejected at parse with an actionable error. Shipped-status details live in the [changelog](CHANGELOG.md).\n\nThe [`agent-pack`](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack) reference repo is the canonical blueprint for any pack you author: profile, paper workflow conventions, team conventions, custom skills, anything you want to share across projects. The v2 manifest schema lives there in working form. Fork ap, replace its three packs (`profile`, `paper-workflow`, `acad-skills`) with your content, tag a release, then `anywhere-agents pack add https:\u002F\u002Fgithub.com\u002F\u003Cyou>\u002F\u003Cyour-pack> --ref \u003Ctag>`. As of v0.5.2 this is one-shot: the CLI writes user-level config rows and runs the composer to deploy in a single command.\n\n## Deeper Docs\n\nFull reference lives at **[anywhere-agents.readthedocs.io](https:\u002F\u002Fanywhere-agents.readthedocs.io)**:\n\n- Per-skill deep documentation (`implement-review`, `my-router`, `ci-mockup-figure`, `readme-polish`)\n- `AGENTS.md` section-by-section reference\n- Customization guide (fork, override, extend)\n- FAQ, troubleshooting, platform notes (Windows, macOS, Linux)\n\n## Fork and Customize\n\nWant to diverge — change writing defaults, add skills, swap the reviewer? Standard Git, no special tooling.\n\n1. **Fork** `yzhao062\u002Fanywhere-agents` to your GitHub account.\n2. **Edit:** `AGENTS.md`, `skills\u002F\u003Cyour-skill>\u002F`, `skills\u002Fmy-router\u002Freferences\u002Frouting-table.md`.\n3. **Point consumers at your fork.** Pass your upstream as the bootstrap argv on first install:\n\n    ```bash\n    # Bash (macOS \u002F Linux \u002F Git Bash)\n    curl -sfL https:\u002F\u002Fraw.githubusercontent.com\u002F\u003Cyour-user>\u002F\u003Cyour-repo>\u002Fmain\u002Fbootstrap\u002Fbootstrap.sh -o .agent-config\u002Fbootstrap.sh\n    bash .agent-config\u002Fbootstrap.sh \u003Cyour-user>\u002F\u003Cyour-repo>\n    ```\n\n    ```powershell\n    # PowerShell (Windows)\n    Invoke-WebRequest -UseBasicParsing -Uri https:\u002F\u002Fraw.githubusercontent.com\u002F\u003Cyour-user>\u002F\u003Cyour-repo>\u002Fmain\u002Fbootstrap\u002Fbootstrap.ps1 -OutFile .agent-config\u002Fbootstrap.ps1\n    & .\\.agent-config\\bootstrap.ps1 \u003Cyour-user>\u002F\u003Cyour-repo>\n    ```\n\n    Whichever value you pass (argv or `AGENT_CONFIG_UPSTREAM` env var) is persisted to `.agent-config\u002Fupstream` on that run, so later session-hook invocations pick it up automatically; you only pass it once per consumer project. Setting the env var on a later run updates the persisted value, so the env var can both seed and change the long-term upstream.\n\n4. **Pull upstream updates when you want them:**\n\n    ```bash\n    git remote add upstream https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fanywhere-agents.git\n    git fetch upstream\n    git merge upstream\u002Fmain   # resolve conflicts as usual\n    ```\n\nGit is the subscription engine. Cherry-pick what you want, skip what you do not.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>What Is Opinionated and Why\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Opinion | Why |\n|---------|-----|\n| **Safety-first by default** | `git commit` \u002F `push` always confirm. Destructive Git\u002FGitHub (ask) and compound-command shapes (deny) have no bypass; writing-style and banner gates have an `AGENT_CONFIG_GATES=off` escape hatch for false positives. |\n| **Dual-agent review is default** | Claude Code implements; Codex reviews. Either solo still works; the second opinion is where the value is. Includes an optional Phase 0 plan-review for complex work where the shape precedes the code. |\n| **Strong writing style** | ~45 banned words (enforced by PreToolUse hook on `.md` \u002F `.tex` \u002F `.rst` \u002F `.txt` writes), no em-dashes as casual punctuation, no bullet-conversion of prose, no summary sentence at the end of every paragraph. Sound like you, not a chatbot. |\n| **Session checks report, not fix** | Flags outdated Actions versions, wrong Codex config, model preferences — agents never silently change anything without telling you. |\n\nDisagree with any of this? Fork it and edit.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Repo Layout\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\nanywhere-agents\u002F\n├── AGENTS.md                      # central source: tagged rule file (curated defaults)\n├── CLAUDE.md                      # generated from AGENTS.md (Claude Code)\n├── agents\u002F\n│   └── codex.md                   # generated from AGENTS.md (Codex)\n├── bootstrap\u002F\n│   ├── bootstrap.sh               # idempotent sync for macOS\u002FLinux\n│   ├── bootstrap.ps1              # idempotent sync for Windows\n│   └── packs.yaml                 # v2 unified manifest: passive + active packs (agent-style, aa-core-skills)\n├── scripts\u002F\n│   ├── guard.py                   # PreToolUse hook: 4 gate families (dest-git\u002Fgh ask; compound cd \u002F writing-style \u002F banner deny)\n│   ├── generate_agent_configs.py  # tag-based generator (AGENTS.md -> CLAUDE.md + codex.md)\n│   ├── session_bootstrap.py       # SessionStart hook: runs bootstrap automatically\n│   ├── statusline.py              # statusLine renderer: Claude Max + Codex 5h \u002F weekly quota\n│   ├── compose_packs.py           # v2 composer: bundled packs, direct URLs, drift prompt, locks, state\n│   ├── compose_rule_packs.py      # legacy v0.3 rule-pack composer (kept for BC)\n│   ├── packs\u002F                     # pack modules: auth, config, source fetch, state, locks, transaction, handlers\n│   ├── pre-push-smoke.sh          # pre-push real-agent smoke (validates current checkout)\n│   └── remote-smoke.sh            # post-publish real-agent smoke (validates published install)\n├── skills\u002F\n│   ├── ci-mockup-figure\u002F          # HTML mockups + TikZ\u002Fskia-canvas for figures\n│   ├── implement-review\u002F          # dual-agent review loop with Phase 0 plan-review (signature skill)\n│   ├── my-router\u002F                 # context-aware skill dispatcher\n│   └── readme-polish\u002F             # audit + rewrite GitHub READMEs with modern patterns\n├── packages\u002F\n│   ├── pypi\u002F                      # anywhere-agents PyPI CLI (pipx run anywhere-agents)\n│   └── npm\u002F                       # anywhere-agents npm CLI (npx anywhere-agents)\n├── .claude\u002F\n│   ├── commands\u002F                  # pointer files so Claude Code discovers the skills\n│   └── settings.json              # project-level permissions\n├── user\u002F\n│   └── settings.json              # user-level permissions, PreToolUse + SessionStart hooks, CLAUDE_CODE_EFFORT_LEVEL=max\n├── docs\u002F                          # Read the Docs source + README hero assets\n├── tests\u002F                         # bootstrap \u002F guard \u002F generator \u002F session-bootstrap tests (Ubuntu + Windows + macOS CI, Python 3.9-3.13)\n├── .github\u002Fworkflows\u002F             # validate, real-agent-smoke, package-smoke CI\n├── .githooks\u002F\n│   └── pre-push                   # opt-in pre-push smoke (enable via `git config core.hooksPath .githooks`)\n├── CHANGELOG.md\n├── CONTRIBUTING.md\n├── RELEASING.md\n├── LICENSE\n├── mkdocs.yml                     # Read the Docs config\n└── .readthedocs.yaml\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Related Projects\u003C\u002Fb>\u003C\u002Fsummary>\n\n**Same family.** `anywhere-agents` ships alongside two companion public repos:\n\n- [`agent-style`](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-style): the writing-rule pack composed into every consumer's `AGENTS.md` by default. 21 rules (12 classic + 9 LLM-observed) with BAD -> GOOD examples per rule.\n- [`agent-pack`](https:\u002F\u002Fgithub.com\u002Fyzhao062\u002Fagent-pack): public reference example for third-party pack authors. Declares 3 packs (passive profile, passive paper-workflow, active academic skills) in the v2 manifest format. Fork as a starting point for your own pack repo.\n\n**Different approaches.** If you want a general-purpose multi-agent sync tool or a broader skill catalog, these take different routes:\n\n- [iannuttall\u002Fdotagents](https:\u002F\u002Fgithub.com\u002Fiannuttall\u002Fdotagents) — central location for hooks, commands, skills, AGENTS\u002FCLAUDE.md files\n- [microsoft\u002Fagentrc](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagentrc) — repo-ready-for-AI tooling\n- [agentfiles on PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fagentfiles\u002F) — CLI that syncs configurations across multiple agents\n\n`anywhere-agents` is intentionally narrower: a published, maintained, opinionated configuration, not a tool that manages configurations. Fork it if you like the setup; use one of the tools above if you want a universal manager.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>What This Is Not\u003C\u002Fb>\u003C\u002Fsummary>\n\n- Not a general-purpose framework or plugin host. The `anywhere-agents` CLI is narrow: it bootstraps a project (zero-install via `pipx run` \u002F `npx`) and manages user-level pack selections (`pack add | remove | list | uninstall`). Nothing more.\n- Not a universal multi-agent sync tool. Claude Code + Codex is the supported set. Other agents (Cursor, Aider, Gemini CLI) may work via the `AGENTS.md` convention but are not tested here.\n- Not a marketplace or registry. One curated configuration, two first-party packs (`agent-style`, `aa-core-skills`), one maintainer. Third-party packs from arbitrary GitHub URLs work via the v0.5.0 direct-URL flow.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Limitations and Caveats\u003C\u002Fb>\u003C\u002Fsummary>\n\n- Requires `git` everywhere. Requires Python (stdlib only) for settings merge; bootstrap continues without merge if Python is unavailable.\n- Guard hook deploys to `~\u002F.claude\u002Fhooks\u002Fguard.py` and modifies `~\u002F.claude\u002Fsettings.json`. To opt out of user-level modifications, remove the user-level section from `bootstrap\u002Fbootstrap.sh` \u002F `bootstrap\u002Fbootstrap.ps1` in your fork.\n- `AGENT_CONFIG_GATES=off` in the `env` block of `~\u002F.claude\u002Fsettings.json` disables only the writing-style and banner gates. Destructive Git\u002FGitHub and compound-command guards stay active.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Maintenance and Support\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **Maintained:** the author's daily-use workflow. Changes land when the author needs them.\n- **Not maintained:** feature requests that do not match the author's work. Users should fork.\n- **Best-effort:** bug reports, PRs for clear fixes, documentation improvements.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how to propose changes.\n\n\u003C\u002Fdetails>\n\n## License\n\nApache 2.0. See [LICENSE](LICENSE).\n\n\u003Cdiv align=\"center\">\n\n\u003Ca href=\"#readme-top\">↑ back to top\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n","anywhere-agents 是一个统一配置管理工具，旨在通过单一配置文件（AGENTS.md）来管理和优化多个AI代理的行为。其核心功能包括提供有效的默认设置、支持自定义规则和技能包的添加，以及内置的安全机制防止执行破坏性命令。技术上，它采用Python开发，并支持跨平台使用，适用于PyPI和npm包管理器。此项目特别适合那些需要在不同项目中频繁切换多种AI助手（如Claude Code, Codex等）的开发者或团队，也适合希望在代码提交前增加自动审查环节以确保遵循特定写作规范的场景。","2026-06-11 02:45:41","CREATED_QUERY"]