{
  "markdown": "# agent-wiki\n\nA Claude Code plugin that standardizes the agent-maintained wiki pattern\n(Ingest / Query / Lint) across repos. Knowledge lives in a git-tracked\n`.claude/wiki/`; the generic tooling lives here and is versioned in the\nmarketplace, so all repos stay on one method with no drift.\n\n## What you get\n- `PROTOCOL.md` — the method (readable by any agent, CC or not).\n- `wiki_lint.py` — the only script: a generic structural linter (CI-able).\n- `CONFORMANCE.md` — the linter's behavior contract, for ports to other languages.\n- Skills + slash commands: `/wiki-init`, `/wiki-ingest`, `/wiki-query`,\n  `/wiki-lint`, `/wiki-migrate`, `/wiki-compact`, `/wiki-uninstall` (or just ask in\n  plain language).\n- A SessionStart hook that injects knowledge-routing rules every session.\n\n## Install — Claude Code (full experience: skills, slash commands, hook)\n1. Add the marketplace:\n   `/plugin marketplace add omnilertlabs/agent-wiki`\n2. Install the plugin:\n   `/plugin install agent-wiki@omnilert-plugins`\n3. `/reload-plugins` (or restart).\n\nA repo that has committed `.claude/settings.json` with\n`\"enabledPlugins\": { \"agent-wiki@omnilert-plugins\": true }` enables it automatically on\nclone. (`enabledPlugins` is an **object/record** mapping `name@marketplace` → `true`, not\nan array — the array form is rejected by current Claude Code / `/doctor`.)\n\nBoth `/plugin marketplace add` and the Gemini install below clone the repo over git. The\nrepo is public, so no special access is needed — an HTTPS clone works out of the box. Test:\n`git clone https://github.com/omnilertlabs/agent-wiki.git` should succeed.\n\n### Update an installed plugin (Claude Code)\nWith marketplace **auto-update enabled** (recommended — and on by default if you used the\ncommitted `.claude/settings.json` below), updating is two steps:\n\n```\n/plugin marketplace update omnilert-plugins   # refreshes the catalog AND upgrades installed plugins (auto-update)\n/reload-plugins                               # activate the new version in-session (no restart)\n```\n\nGotchas (these tripped us up, so they're worth stating):\n- **`/plugin install` does NOT upgrade an already-installed plugin** — it just reports\n  \"already installed\". There is no `/plugin update` command either.\n- `/reload-plugins` only re-activates **whatever version is currently installed**; it does\n  not pull a newer one. So if the install version didn't move, reload changes nothing.\n- **Without auto-update**, force an upgrade by uninstall + reinstall:\n  `/plugin uninstall agent-wiki@omnilert-plugins` then `/plugin install agent-wiki@omnilert-plugins`.\n- **Disabling the plugin does not silence the wiki on its own.** `wiki-init` appends a\n  `## Wiki` section to the repo's CLAUDE.md, and that file is version-controlled — it\n  stays put when the plugin goes away. Since 0.2.12 the appended snippet gates itself on\n  the plugin being active, so an agent ignores `.claude/wiki/` when it isn't. Repos that\n  adopted the plugin earlier keep the old unconditional wording until it is replaced —\n  `/wiki-uninstall` removes it, or copy the current text from\n  `templates/CLAUDE-snippet.md`; `wiki-init` appends and never rewrites.\n- **To remove the plugin from a repo**, run `/wiki-uninstall` (add `--dry-run` to preview).\n  It takes out the CLAUDE.md section and the `.claude/settings.json` entry, and keeps\n  `.claude/wiki/` unless you ask for it to be deleted.\n\nEnable auto-update once via `/plugin` → **Marketplaces** → `omnilert-plugins` → **Enable\nauto-update**, or commit it (see the settings snippet under \"Adopt in a repo\" / below):\n```json\n{\n  \"extraKnownMarketplaces\": {\n    \"omnilert-plugins\": {\n      \"source\": { \"source\": \"github\", \"repo\": \"omnilertlabs/agent-wiki\" },\n      \"autoUpdate\": true\n    }\n  }\n}\n```\n\n## Install — Gemini CLI\nClone the repo and link it (the most reliable path — `gemini extensions install` has a\nknown quirk pulling repos as source archives):\n\n```\ngit clone https://github.com/omnilertlabs/agent-wiki.git   # public HTTPS clone\ngemini extensions link ./agent-wiki                         # link the local clone as the extension\n```\nThen restart Gemini — it loads `GEMINI.md` (which imports `PROTOCOL.md`) as context. To\nupdate later, just `git pull` in that clone (no reinstall, since it's linked).\n\n(If your git is HTTPS-authed and you prefer a managed install:\n`gemini extensions install https://github.com/omnilertlabs/agent-wiki`.)\n\nGemini has **no slash commands or SessionStart hook** — you drive Ingest/Query/Lint by\nasking (e.g. \"follow the agent-wiki PROTOCOL to migrate this wiki, dry-run first\"), and\nrun the linter directly from your clone (or the linked extension dir):\n`python3 ./agent-wiki/scripts/wiki_lint.py --wiki .claude/wiki --repo .`\n\n## Install — other agents (Codex, etc.)\nNo marketplace step. Clone the repo, point your agent at `AGENTS.md` / `PROTOCOL.md`, and\nrun the linter directly:\n`python3 path/to/agent-wiki/scripts/wiki_lint.py --wiki .claude/wiki --repo .`\n\nThe wiki itself is just git-tracked files in each repo's `.claude/wiki/` — every tool and\nhuman sees it on clone, no install required. Only the tooling (skills/commands/hook)\ndiffers per agent.\n\n## Adopt in a repo\n- New repo: run `/wiki-init`.\n- Existing/drifted wiki: run `/wiki-migrate`.\n\nPreview before committing: append `--dry-run` to any mutating command\n(`/wiki-init`, `/wiki-migrate`, `/wiki-ingest`, `/wiki-compact`, `/wiki-uninstall`) to get a change plan — every file it\nwould create or modify — without writing or committing anything.\n\n## Recovering an overwritten settings.json (pre-v0.2.3)\nVersions before 0.2.3 could **overwrite** `.claude/settings.json` instead of merging — a\nrepo that already had one could lose its other keys. Only `settings.json` was affected;\npersonal `settings.local.json` was never touched. `settings.json` is git-tracked, so the\nold content is recoverable:\n\n1. See what the wiki-init/migrate commit changed:\n   `git log -p -- .claude/settings.json`\n   If it **removed** keys, those are recoverable. (If it only *added* the file, nothing was\n   lost — just fix the array→record form below.)\n2. Print the pre-overwrite version (`<commit>` = the wiki-init/migrate commit):\n   `git show <commit>^:.claude/settings.json`\n3. Rebuild a merged file — your recovered keys **plus** the agent-wiki entry, in record form:\n   ```json\n   { \"<your recovered keys>\": \"...\", \"enabledPlugins\": { \"agent-wiki@omnilert-plugins\": true } }\n   ```\n4. Update to ≥ 0.2.3 (`/plugin marketplace update omnilert-plugins` → `/reload-plugins`) so\n   it merges (never overwrites) going forward, then verify with `/doctor`.\n\nIf `settings.json` was untracked, git can't recover it — check your editor's local history;\nthe loss is bounded to that one file (`settings.local.json` is intact).\n\n## CI\nAdd one step:\n`python3 path/to/agent-wiki/scripts/wiki_lint.py --wiki .claude/wiki --repo . --strict`\n\n## Publishing a new version (maintainers)\nEdit the plugin, bump `version` in `.claude-plugin/plugin.json`,\n`.claude-plugin/marketplace.json`, and `gemini-extension.json`, add a CHANGELOG.md entry\n(lead with upgrade impact — new or changed lint failures), open a PR, and merge.\nConsumers then pick it up with the three commands in \"Update an installed plugin\" above\n(Gemini users just `git pull` their linked clone).\n\n## License\nMIT — see [LICENSE](LICENSE).\n",
  "bytes": 7328,
  "sha": "fa8801d68fd21b2eea4af4c55a2dbba136aa4bb2dfdd60387cbc13e535576e80",
  "repo_slug": "omnilertlabs/agent-wiki",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_omnilertlabs_agent_wiki_6749c929/readme"
}