{"_id":"@acercyc/agent-resource-manager","_rev":"8-5f9f50af9bdd261eaace85c4670867c1","name":"@acercyc/agent-resource-manager","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@acercyc/agent-resource-manager","version":"0.1.0","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.1.0","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"561cbb86989fbfbee546957e099bbb843e2abc1e","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.1.0.tgz","fileCount":121,"integrity":"sha512-z16ryaEwgeYwkwgtRK5UURx1wBjjXFsHynEGzoMnP8/zMVMmhdWLodoIcS1+h7pR52nNJ3fYfwo82e6xkZUzJA==","signatures":[{"sig":"MEQCIGGIzOR55CS6oBaQvQTT/TEquR1toMnveMJ5QnN4yJMhAiBmQe9I2awcBr+BHBJz2LoUMbdGr6vgKk8UTlziiZNRTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161882},"type":"module","engines":{"node":">=20"},"gitHead":"d110536d0d2baaa9060229ac46ae136022e5f054","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.1.0_1786812034705_0.7313911651332754","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@acercyc/agent-resource-manager","version":"0.2.0","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.2.0","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"7494256d6e3f8009f813b5b097fd3dc082513b7b","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.2.0.tgz","fileCount":121,"integrity":"sha512-qB5cLO4fi2OgmBsdYyinq7iuaYAuAD7x+XUnolvS8697XLz/THxTZrOLqVLh2c8eayX8WdhTRn0+rL+HP1/H7w==","signatures":[{"sig":"MEYCIQDhq/G89iI8zL9zELF3hJ35g3H9fLHRiyJF1IfexhL37AIhANLJDT6FfdjQz5k5uCbRVZC4luDQB4PtWD5BDTeSSoj3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170361},"type":"module","engines":{"node":">=20"},"gitHead":"2c1fd9de4949bc9a18ebb9805ab0830ec23d1a2c","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.2.0_1786964612469_0.7830381852107844","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@acercyc/agent-resource-manager","version":"0.3.0","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.3.0","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"85837ec0c0e4669e6b90d6ba0326d460cdd4f14a","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.3.0.tgz","fileCount":121,"integrity":"sha512-5y7Pxokz+U0AwFHP7gUa69Ut3/fXsvavx90jAOG7XfAlrSz12zJZNJB2IbvWTXRM8b/Pm821IHUFLfk1P4jqtQ==","signatures":[{"sig":"MEYCIQCyk/uW4/NNEKjlthW3npzx2orbkPVJpqyHl7EEknGhwwIhALTZx/ITrTXStJ1WZlAf/j5ZWHnC+mwyK/8pVzQA3rCh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173252},"type":"module","engines":{"node":">=20"},"gitHead":"731d10511633e7868526dba6b8b1f2e5ef98c82e","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.3.0_1786966402072_0.8039140081400975","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@acercyc/agent-resource-manager","version":"0.4.0","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.4.0","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"2a891743472cc288d59d29c55a9a8a64764e564f","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.4.0.tgz","fileCount":125,"integrity":"sha512-KjMa+8VBOa39QKTHrSpBQFNf7GIW4eQsS2Tl7VQ+0b+OEJU8km6Cl8ZNoZmYVcS5UqQUGhr+ERplW0P/bWU7vg==","signatures":[{"sig":"MEUCIQC70X2cW8owh42NeVRPJa54WShla5d5wzkegWA7xmsIKwIgDBNO2cSXPzXT2VnhLjj4G9j2cxTlNAwbl7/Xw/5uLjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179048},"type":"module","engines":{"node":">=20"},"gitHead":"99cff0606f3481190ae882b24a39931bd02f9391","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.4.0_1786968311646_0.9474212643611315","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@acercyc/agent-resource-manager","version":"0.4.1","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.4.1","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"c061526c467b1e1ccaacfa770bf5fd314d54fba9","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.4.1.tgz","fileCount":125,"integrity":"sha512-cUQXu6fkVnmco0w1RalGlLSYjvW9qCd/VxceX8IvQRu52ycOnK81S9OMrmXXYRdQHzCllE9UU1hBjS+ndpqiHg==","signatures":[{"sig":"MEQCIHXUfk6lCYIbouYPYb8hUh1i9S1MLki17tKSfrVPaf3mAiBF0L/FMZ+wzNv2/Y2jS1UT+niqyML8/4hBrPEZM0niQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182001},"type":"module","engines":{"node":">=20"},"gitHead":"48165e0beec880ef11653ed2ca4383fa9f9b64f4","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.15.0","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.4.1_1787901660229_0.73571276563057","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@acercyc/agent-resource-manager","version":"0.4.2","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.4.2","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"99237ffe1ad7e8255ba99c2f63971ed78b46f5a5","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.4.2.tgz","fileCount":125,"integrity":"sha512-z3D2JZ2UPjD09AQTo55nicpKM+3lVYiU3LF9jdzaELsPe9l3kh72IttchIhPkmok1iXAgcSsCoH+67BopY1l6g==","signatures":[{"sig":"MEUCIFFPrRVObDMMuR+QgHNsLWTAiDNjz/AfcgXtUpAtcAReAiEA9uuHruJA8tVp8IgPypMYZRQ7wOKbOnNYz3rUH8157HA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188502},"type":"module","engines":{"node":">=20"},"gitHead":"1c614ccd52fb6dd3db290800a6d77bd55d906597","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless copy interface for AI agent resources (skills, agent configs, instructions)","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.4.2_1787907131546_0.7299761196057424","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@acercyc/agent-resource-manager","version":"0.5.0","keywords":["agent","skills","cli"],"license":"MIT","_id":"@acercyc/agent-resource-manager@0.5.0","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"homepage":"https://github.com/acercyc/agent-resource-manager#readme","bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"bin":{"agent-resource-manager":"dist/cli.js"},"dist":{"shasum":"e557e0b0267b6d8e89233c0a6310585a3784780b","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.5.0.tgz","fileCount":139,"integrity":"sha512-0w+Jx3pV4/quzKnVE5v6C0hS2nGhsyIAsre2GnNFUXLjsOjqbW93PtyUZ85a3y06Ult2COEE8Q0ykhtOuhNTXw==","signatures":[{"sig":"MEUCIB5DaRlfYedPaRRAxdltrTrM2TrygRJUt84bA4km3ah0AiEA0AkCiq77QMH3ESfjm48qhG5kCPJ496pEo2yPywuD/r0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277826},"type":"module","engines":{"node":">=20"},"gitHead":"acf909b420917e8f2dda5eaf8f1434b11055361d","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"repository":{"url":"git+https://github.com/acercyc/agent-resource-manager.git","type":"git"},"_npmVersion":"11.6.2","description":"Nearly stateless CLI to copy and sync AI agent resources, with categories and custom resource types","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.24.2","semver":"^7.7.1","commander":"^13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.0.8","typescript":"^5.8.2","@types/node":"^22.13.10","@types/semver":"^7.5.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-resource-manager_0.5.0_1788949452931_0.7298675661026219","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@acercyc/agent-resource-manager","version":"0.6.0","description":"Nearly stateless CLI to copy and sync AI agent resources, with categories and custom resource types","type":"module","bin":{"agent-resource-manager":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsx src/cli.ts","test":"vitest run","prepublishOnly":"npm run build"},"keywords":["agent","skills","cli"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/acercyc/agent-resource-manager.git"},"bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"homepage":"https://github.com/acercyc/agent-resource-manager#readme","publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"commander":"^13.1.0","semver":"^7.7.1","zod":"^3.24.2"},"devDependencies":{"@types/node":"^22.13.10","@types/semver":"^7.5.8","tsx":"^4.19.3","typescript":"^5.8.2","vitest":"^3.0.8"},"gitHead":"12ec8fca3b8955ab298ee451cc0a4fa54cdbb640","_id":"@acercyc/agent-resource-manager@0.6.0","_nodeVersion":"24.2.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-SJRB4+FYeuzXgxssRFelq+a5gV2vJa3s1RHgR2cUuC9oFd00OqzIUP0gnX77w1TISu40KC+ufNcVCQ5UKQgRWw==","shasum":"22584dfeeda8ef8af06d53356bba415538d4ceba","tarball":"https://registry.npmjs.org/@acercyc/agent-resource-manager/-/agent-resource-manager-0.6.0.tgz","fileCount":139,"unpackedSize":295192,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICxOylfHuU92MryeQymh36/wEEH0s2s+Tc0OnuhFAWsDAiA9s9xyCWOB0kT5yE0N6MyyLygEMkRyzXdR7NnP/Qg2aw=="}]},"_npmUser":{"name":"acercyc","email":"acercyc@gmail.com"},"directories":{},"maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-resource-manager_0.6.0_1788960687580_0.42827264214252314"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T16:40:34.584Z","modified":"2026-09-09T13:31:27.944Z","0.1.0":"2026-08-15T16:40:34.852Z","0.2.0":"2026-08-17T11:03:32.613Z","0.3.0":"2026-08-17T11:33:22.225Z","0.4.0":"2026-08-17T12:05:11.840Z","0.4.1":"2026-08-28T07:21:00.377Z","0.4.2":"2026-08-28T08:52:11.696Z","0.5.0":"2026-09-09T10:24:13.065Z","0.6.0":"2026-09-09T13:31:27.756Z"},"bugs":{"url":"https://github.com/acercyc/agent-resource-manager/issues"},"license":"MIT","homepage":"https://github.com/acercyc/agent-resource-manager#readme","keywords":["agent","skills","cli"],"repository":{"type":"git","url":"git+https://github.com/acercyc/agent-resource-manager.git"},"description":"Nearly stateless CLI to copy and sync AI agent resources, with categories and custom resource types","maintainers":[{"name":"acercyc","email":"acercyc@gmail.com"}],"readme":"# Agent Resource Manager\r\n\r\nA nearly stateless CLI that copies and syncs **skills**, **agent configurations**, **agent instructions**, and **custom resource types** between an **agent resource database** and folders a local coding agent already loads.\r\n\r\nThe manager remembers only which database to use. It does not track installs, dest directories, or versions on disk. Every copy names a dest with `--dir`. The local agent owns that folder after the copy.\r\n\r\n| Kind | What it is | Typical dest |\r\n| --- | --- | --- |\r\n| `skill` | Task-specific procedural knowledge (`SKILL.md`) | a skills directory |\r\n| `agent` | Product-native config for a named sub-agent (`.toml`, `.md`, …) | an agents directory |\r\n| `instruction` | Standing instructions for the current agent (`AGENTS.md`) | user- or project-level instruction dir |\r\n\r\nThese are the built-in resource types. Databases can add custom types and packages can carry free-form categories as described below.\r\n\r\nThis repository is the **manager software** (`@acercyc/agent-resource-manager`). Packages live in a separate **agent resource database** (GitHub repo or local folder). The two are never mixed.\r\n\r\nHow to use the CLI is this README. Package format, database layout, and copy rules: [docs/DESIGN.md](./docs/DESIGN.md). Implementation history: [docs/history.md](./docs/history.md).\r\n\r\n## Requirements\r\n\r\n- Node.js 20+\r\n- `git` on `PATH` when the database is a GitHub repository, or when a local database folder is a GitHub checkout that should commit/push on `publish`\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install -g @acercyc/agent-resource-manager\r\nagent-resource-manager --help\r\n```\r\n\r\nFrom this repository:\r\n\r\n```bash\r\nnpm install\r\nnpm run build\r\nnpx agent-resource-manager --help\r\n```\r\n\r\nDuring development:\r\n\r\n```bash\r\nnpx tsx src/cli.ts --help\r\n```\r\n\r\nOn PowerShell, pass CLI flags after `--` if you use `npm run dev`, or call `npx tsx src/cli.ts` directly so npm does not swallow `--dir`.\r\n\r\n## Quick start\r\n\r\n```bash\r\nagent-resource-manager init\r\nagent-resource-manager database set github:owner/agent-resources\r\n# or a local folder:\r\n# agent-resource-manager database set ./agent-resources\r\n\r\nagent-resource-manager list\r\nagent-resource-manager info skill:literature-review\r\n\r\nagent-resource-manager install skill:literature-review --dir ~/.codex/skills\r\nagent-resource-manager install agent:light-worker --dir ~/.codex/agents\r\nagent-resource-manager install instruction:user-canonical --dir ~/.agents\r\n```\r\n\r\nEdit the dest copy, then write it back. `publish` also **creates** the database package when dest is a folder with a valid `resource.json` and that name is not in the database yet:\r\n\r\n```bash\r\nagent-resource-manager publish skill:literature-review --dir ~/.codex/skills\r\nagent-resource-manager publish skill:topic-literature-review --dir ./package\r\n```\r\n\r\n`install` / `update` copy **database → dest**. `publish` copies **dest → database**. `unpublish` deletes the database package only; dest copies are left alone. `remove` deletes the dest copy only; it does not change the database. `remove` still works when the database package is already gone (orphan dest cleanup).\r\n\r\n## Concepts\r\n\r\n**Agent resource database.** Canonical packages. A GitHub repository or a local folder with the same layout. Set once with `database set`. Override per command with `--database`.\r\n\r\n**Dest folder.** Where Codex, Cursor, Claude, or another tool already loads files. Always passed as `--dir`. The manager never infers product paths.\r\n\r\n**Refs.** Always `kind:name` (`skill:literature-review`, `agent:codex/light-worker`). Bare names are rejected.\r\n\r\n**Nearly stateless.** `~/.agent-resource-manager/config.json` stores the database location. GitHub clones may be cached under `~/.agent-resource-manager/cache/` for performance. There is no install ledger. Override the home directory with `AGENT_RESOURCE_MANAGER_HOME`.\r\n\r\n## Hierarchical resource names\r\n\r\nRefs support generic namespaces: `agent:codex/light-worker`, `agent:claude-code/light-worker`, or `skill:research/literature-review`. Flat refs remain valid. No tool flag, format conversion, or automatic migration is involved. Namespaces are independent of categories and kind.\r\n\r\nThe full name is the database identity and manifest `name`, for example `\"name\": \"codex/light-worker\"`. Its package lives at `agents/codex/light-worker/resource.json`. Names can have multiple slash-separated segments; each starts with a lowercase letter or digit and contains only lowercase letters, digits, and hyphens. Empty segments, dots, backslashes, absolute paths, and Windows device names are rejected. Kind identifiers and custom type root directories remain single segments.\r\n\r\nLocal directory installs and complete authoring packages use the final segment (`--dir/light-worker/`, called `<leaf>` below). Their manifests retain the full name. File installs still use `deploy.filename` or the basename of `entry`: `light-worker.toml` installs directly under `--dir`. Supporting files retain their relative paths. Publish and sync locate complete packages by the leaf folder; publishing from inside that folder infers the full ref from its manifest.\r\n\r\n```bash\r\nagent-resource-manager info agent:codex/light-worker\r\nagent-resource-manager install agent:codex/light-worker --dir ./codex-agents\r\nagent-resource-manager publish agent:codex/light-worker --dir ./codex-agents\r\nagent-resource-manager unpublish agent:codex/light-worker\r\n```\r\n\r\nTo create that package, author `./codex-agents/light-worker/resource.json` with the full name, version, description, kind, native entry and deployment settings, plus the entry file. A lone profile file can update an existing entry-only package but cannot create one.\r\n\r\nListing discovers nested namespaces and stops at each resource.json. A package cannot also be a namespace: publishing over a namespace directory or inside a package is rejected. Database paths must match the entire manifest name; namespace/package symlinks are rejected.\r\n\r\nUse separate dest folders for variants with the same deployed filename or leaf folder. A directory whose resource.json identifies another package is protected from install/update/remove. Plain deployed files have no identity metadata, so normal overwrite/remove semantics apply. Orphan removal uses the leaf folder or common leaf filenames and cannot infer custom deployment filenames.\r\n\r\nEach namespaced package versions independently. Flat packages remain until explicitly migrated; publishing a namespaced package does not rename or delete its predecessor. Dependency/reference metadata can contain full names, but the manager does not resolve or install dependencies automatically.\r\n\r\n\r\n## Agent resource database\r\n\r\nGitHub vs local folder is transport only. The tree is the same:\r\n\r\n```text\r\n<database-root>/\r\n  skills/<name>/resource.json\r\n  agents/<name>/resource.json\r\n  instructions/<name>/resource.json\r\n  resource-types.json                 # optional custom type definitions\r\n  templates/<name>/resource.json       # example custom type directory\r\n```\r\n\r\nEvery package is a directory with `resource.json`. Skills usually deploy as a **directory**. Agent configs and instructions usually deploy as a **single file**, keeping the entry’s native filename (`light-worker.toml`, `AGENTS.md`).\r\n\r\nDatabase references:\r\n\r\n| Input | Transport |\r\n| --- | --- |\r\n| `./path`, `~/path`, absolute paths | local |\r\n| `github:owner/repo` | GitHub |\r\n| `owner/repo` | GitHub |\r\n| `https://github.com/owner/repo` | GitHub |\r\n\r\nPrivate GitHub databases use your existing git credentials. The CLI clones over HTTPS and does not store tokens. `gh auth login` (HTTPS) or Git Credential Manager is enough when `git clone` already works for that repo. A local checkout can be used as the database with no GitHub access.\r\n\r\nWhen the database is `github:owner/repo`, `publish` commits and pushes from a cache clone (only the package path is staged). When it is a **local folder that is a git checkout whose `origin` is GitHub**, `publish` writes files in place, then commits and pushes that package path in the working tree (no second cache clone). Other local folders only get a file write; commit and push yourself if needed. If push fails after a successful local commit, the commit is kept and the next cache sync will not wipe it.\r\n\r\nUse `database sync` to explicitly refresh the GitHub cache clone (`git fetch` + reset to `origin/HEAD`, unless the cache has unpushed commits). Local folder databases are already live — `database sync` reports that and does not pull. To copy a newer package into a dest folder, run `update <kind:name> --dir <path>` after syncing.\r\n\r\n## Categories and custom resource types\r\n\r\n**Categories organize packages.** Add an optional array of nonempty strings to any package's `resource.json`:\r\n\r\n```json\r\n\"categories\": [\"research\", \"academic-writing\"]\r\n```\r\n\r\nCategories require no registration and do not change package paths or refs. A package can belong to several categories. Names are case-sensitive, may contain spaces, and cannot have surrounding whitespace. Packages without categories remain valid. `info` displays categories; combine filters to narrow the database list:\r\n\r\n```bash\r\nagent-resource-manager list --category research\r\nagent-resource-manager list --kind skill --category research\r\n```\r\n\r\n**Resource types determine package layout and defaults.** Add `resource-types.json` at the database root to define new kinds:\r\n\r\n```json\r\n{\r\n  \"types\": {\r\n    \"template\": {\r\n      \"directory\": \"templates\",\r\n      \"defaultEntry\": \"REPORT.md\",\r\n      \"defaultDeployMode\": \"directory\"\r\n    },\r\n    \"prompt\": {\r\n      \"directory\": \"prompts\",\r\n      \"defaultDeployMode\": \"file\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n`skill`, `agent`, and `instruction` remain available without a catalog. The catalog adds types; it cannot redefine built-ins. Each type needs a unique, lowercase alphanumeric/hyphen directory name immediately under the database root. Nested, absolute, traversal, and reserved Windows device directory names are rejected. Kind identifiers also use lowercase alphanumeric characters and hyphens.\r\n\r\n`defaultEntry` is optional; without it, packages must specify `entry`. Entry defaults use a relative path with forward slashes. `defaultDeployMode` defaults to `directory`. Explicit package `entry` and `deploy` settings override type defaults. The catalog accepts only these declarative fields, with no scripts or executable extensions.\r\n\r\nFor example, `templates/report/resource.json` can contain:\r\n\r\n```json\r\n{\r\n  \"kind\": \"template\",\r\n  \"name\": \"report\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"Research report template\",\r\n  \"categories\": [\"research\"]\r\n}\r\n```\r\n\r\nPlace `REPORT.md` alongside it, then use the normal commands:\r\n\r\n```bash\r\nagent-resource-manager list --kind template\r\nagent-resource-manager install template:report --dir ./templates\r\nagent-resource-manager sync template:report --dir ./templates\r\nagent-resource-manager publish template:report --dir ./templates\r\n```\r\n\r\nAll resource commands support database-defined kinds. Unknown kinds are rejected against the selected database's catalog. Custom directory installs materialize resolved `entry` and `deploy` values in the local manifest so later catalog-default changes do not silently reinterpret that copy. File-mode installs retain the existing metadata-free behavior and sync limitations.\r\n\r\nThe catalog belongs to the database, including when it is cloned from GitHub. Commit and push catalog edits explicitly; package publish commits only the package directory. Changing a type's directory does not move existing packages. Keep mappings stable and migrate files explicitly if you change them. Dependencies and references retain their existing built-in fields; adding a type does not add dependency execution or resolution.\r\n\r\n## Commands\r\n\r\n| Command | Role |\r\n| --- | --- |\r\n| `init` | Create `~/.agent-resource-manager/config.json` |\r\n| `database get` | Show the configured database |\r\n| `database set <source>` | Set the database |\r\n| `database sync` | Refresh the GitHub database cache clone |\r\n| `list [--kind <kind>] [--category <category>]` | List packages, optionally filtered by type and category |\r\n| `info <kind:name>` | Show package metadata |\r\n| `install <kind:name> --dir <path>` | Copy database → dest (file mode: entry plus declared supporting files) |\r\n| `update <kind:name> --dir <path>` | Overwrite dest from the database (file mode: entry plus declared supporting files) |\r\n| `sync <kind:name> --dir <path>` | Compare versions and copy the newer package to the other side; conflicting contents stop the command |\r\n| `publish [<kind:name>] [--dir <path>]` | Copy dest → database (creates the package if it is new) |\r\n| `unpublish <kind:name>` | Delete database package |\r\n| `remove <kind:name> --dir <path>` | Delete dest copy |\r\n| `doctor` | Check config and database reachability |\r\n\r\n`publish` without a ref is allowed when the current working directory is a dest package that contains `resource.json`. A new database package always needs that dest directory and `resource.json`; a lone dest file (typical after file-deploy install) cannot create a package.\r\n\r\nFile-mode `install` and `update` copy the entry to `<--dir>/<basename(entry)>` (or `deploy.filename`) and copy declared supporting files to matching relative paths under `--dir`. They do not write `resource.json` into dest.\r\n\r\nFor an existing file-deployed package, publishing from a plain dest root is supported only when the package contains the entry file alone. If its manifest declares supporting files, the CLI refuses a partial publish rather than silently updating only the entry and leaving the database package inconsistent. Publish those resources from a complete package directory containing `resource.json` by passing its parent with `--dir`, or run `publish` inside the package directory.\r\n\r\n## Bidirectional package sync\r\n\r\n```bash\r\nagent-resource-manager sync skill:literature-review --dir ./skills\r\n```\r\n\r\n`sync` compares the semantic versions in the database and `--dir/<leaf>/resource.json`. A newer database version replaces the local package; a newer local version is published using the normal database commit/push rules. Bump the package version when making changes you want sync to propagate. Versions use the existing MAJOR.MINOR.PATCH format and numeric ordering; modification times are not used.\r\n\r\nEqual versions and matching contents do nothing. Equal version precedence with different contents or metadata is a conflict and exits with an error without copying either package. All files in complete package directories are compared, including undeclared files; manifest formatting and key order are ignored. Different deployment modes also cause a conflict. There is no history or common ancestor, so sync cannot detect independent edits on both sides when their versions differ: the higher version wins.\r\n\r\nBoth packages must exist. Missing local metadata or an absent database package requires an explicit `install` or `publish`. File-mode installs have no local version metadata: sync can report matching entry and supporting files as unchanged, but differing or missing files cause a conflict. To sync versions for a file-mode resource, use a complete authoring package at `--dir/<leaf>/` containing `resource.json`; sync replaces that complete package directory, preserving its file-mode manifest. It does not update a separate deployed entry alongside it.\r\n\r\nResolve conflicts by reviewing the copies and their versions, or explicitly choosing `update` (database wins) or `publish` (local wins, subject to its complete-package requirements). The bundled operator skill cannot be synced; refresh it with `install` or `update`.\r\n\r\nThis command is separate from `database sync`, which refreshes the database cache. Local database checkouts are read in place and are not pulled automatically.\r\n\r\n## Bundled operator skill\r\n\r\nThis npm package ships a **bundled operator skill** that teaches coding agents how to use this CLI. It is part of the manager software, **not** a package in the agent resource database. Source: [`skills/agent-resource-manager/SKILL.md`](./skills/agent-resource-manager/SKILL.md). Reserved ref: `skill:agent-resource-manager`.\r\n\r\nInstall (or refresh) into a skills dest from the npm package — never from the database:\r\n\r\n```bash\r\nagent-resource-manager install skill:agent-resource-manager --dir ~/.codex/skills\r\n# or any other skills dest:\r\n# agent-resource-manager install skill:agent-resource-manager --dir <skills-dest>\r\n```\r\n\r\n## Security\r\n\r\nDatabase content is untrusted. Install and publish do not run package scripts. Symlinks inside packages are rejected. Paths are confined to `--dir` on install and to the package directory on publish.\r\n\r\n## Development\r\n\r\n```bash\r\nnpm test\r\nnpm run build\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}