{"_id":"@arberqeriqi/agentloadout","name":"@arberqeriqi/agentloadout","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arberqeriqi/agentloadout","version":"0.1.0","description":"One source of truth, many adapters: a portable operator toolkit for AI coding agents across Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Zed, and Copilot.","license":"MIT","type":"commonjs","bin":{"agentloadout":"bin/agentloadout"},"engines":{"node":">=18"},"scripts":{"build:cli":"tsc -p tsconfig.json","build:dashboard":"vite build --config dashboard/vite.config.ts","build":"npm run build:cli && npm run build:dashboard","typecheck":"tsc -p tsconfig.json --noEmit","typecheck:dashboard":"tsc -p dashboard/tsconfig.json --noEmit","lint":"npm run typecheck && npm run typecheck:dashboard","test":"vitest run","prepublishOnly":"npm run build","agentloadout":"node bin/agentloadout"},"devDependencies":{"@types/node":"^20.11.0","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.1","autoprefixer":"^10.4.19","postcss":"^8.4.38","react":"^18.3.1","react-dom":"^18.3.1","tailwindcss":"^3.4.4","typescript":"^5.4.0","vite":"^5.3.1","vitest":"^1.6.0"},"_id":"@arberqeriqi/agentloadout@0.1.0","_nodeVersion":"22.14.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-vVEt2L8yZonuQvoyICTVMAJNP2WiVYhlUGqF8f+U1dcXGlXVwssA311UQcSypI5m4PgXQE2CZx8+3BoiAQq7JA==","shasum":"ee74e10d4ee8120dde7b9f6f47a143bcd2f01dce","tarball":"https://registry.npmjs.org/@arberqeriqi/agentloadout/-/agentloadout-0.1.0.tgz","fileCount":73,"unpackedSize":385575,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICVXu3WsrLaN04Wc1DMreUTMLJEGeitvuBcgVALpek0lAiEA+1GS7MMikV0FulLNv0aOz/4L8RZs03sQEoMkNhT9H8A="}]},"_npmUser":{"name":"arberqeriqi","email":"arberqeriqi2011@gmail.com"},"directories":{},"maintainers":[{"name":"arberqeriqi","email":"arberqeriqi2011@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentloadout_0.1.0_1781356012491_0.13542790425167928"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T13:06:52.322Z","0.1.0":"2026-06-13T13:06:52.626Z","modified":"2026-06-13T13:06:52.844Z"},"maintainers":[{"name":"arberqeriqi","email":"arberqeriqi2011@gmail.com"}],"description":"One source of truth, many adapters: a portable operator toolkit for AI coding agents across Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Zed, and Copilot.","license":"MIT","readme":"# agentloadout\n\n**One source of truth, many adapters.** agentloadout is a portable operator toolkit\nfor AI coding agents — reusable agent **profiles**, **skills**, **rules**, **hooks**,\n**memory**, and **MCP** configs that you author once in a tool-agnostic format and\ncompile into the native config of whatever tool you already use: Claude Code,\nCursor, OpenAI Codex CLI, OpenCode, Gemini CLI, Zed, or GitHub Copilot.\n\nYou don't hand-maintain seven copies of the same rule. You edit `core/` (or your\nrepo's `.agentloadout/overrides/`) and run `agentloadout sync`.\n\n## Why\n\n- **Profiles** are genuinely different operating modes (a *researcher* can't edit; a\n  *security-auditor* audits but never fixes), and they hand off to each other in a\n  coherent graph — see [docs/concepts.md](docs/concepts.md).\n- **Memory** is plain markdown in `.agentloadout/memory/` — no database, no cloud. Agents\n  read it at session start and append what they learn.\n- **Safe by default.** A fail-closed command guard blocks `rm -rf /`, force-pushes to\n  `main`, secret leaks, and `curl | sh` *before* they run — and degrades to git hooks\n  on tools without native hook support.\n\n## 60-second install\n\n```sh\n# in your repo:\nnpx agentloadout init --tool claude-code      # or --tool cursor --tool codex ...\nagentloadout doctor                               # verify the install\n```\n\nThat writes the tool's native config (e.g. `CLAUDE.md`, `.claude/`, `.mcp.json`),\nseeds `.agentloadout/memory/`, and installs the hooks. Re-run `agentloadout sync` any time\nyou change content; running it twice produces zero diff.\n\n## Commands\n\n| Command | Does |\n|---|---|\n| `agentloadout init [--tool <id>]... [--yes]` | Install adapters into the current repo |\n| `agentloadout sync` | Recompile core + overrides → tool configs (idempotent) |\n| `agentloadout doctor` | Verify install, hooks, tool versions |\n| `agentloadout profile list \\| show <name>` | Inspect agent profiles |\n| `agentloadout skill list \\| show <name>` | Inspect skills |\n| `agentloadout memory show \\| compact \\| new-session [topic]` | Memory helpers |\n| `agentloadout hooks test` | Dry-run the guard against dangerous commands |\n\n## Support matrix\n\nWhat each tool gets, per feature. Generated from the adapters themselves (a test\nfails if this table drifts from real behavior — run `agentloadout internal-matrix`).\n\n<!-- MATRIX:START (generated by `agentloadout internal-matrix`) -->\n\n| Tool | Profiles | Skills | Rules | Hooks | MCP | Memory |\n| --- | --- | --- | --- | --- | --- | --- |\n| **Claude Code** | Full | Full | Full | Full | Full | Full |\n| **Cursor** | Shim[^1] | Shim[^2] | Full | Shim[^3] | Full | Partial[^4] |\n| **OpenAI Codex CLI** | Shim[^5] | Shim[^6] | Full | Shim[^7] | Shim[^8] | Partial[^9] |\n| **OpenCode** | Full | Partial[^10] | Full | Shim[^11] | Full | Partial[^12] |\n| **Gemini CLI** | Shim[^13] | Shim[^14] | Full | Shim[^15] | Full | Partial[^16] |\n| **Zed** | Shim[^17] | Shim[^18] | Full | Shim[^19] | Full | Partial[^20] |\n| **GitHub Copilot** | Shim[^21] | Shim[^22] | Full | Shim[^23] | None[^24] | Partial[^25] |\n\n_Full = native · Partial = native but limited · Shim = emulated via another mechanism · None = not provided._\n\n[^1]: **cursor · profiles** — Cursor has no subagents; each profile is an Agent-Requested rule (.cursor/rules/profiles/<name>.mdc, alwaysApply:false) the model loads by description.\n[^2]: **cursor · skills** — Skills are Agent-Requested rules under .cursor/rules/skills/ (loaded on relevance).\n[^3]: **cursor · hooks** — No native hooks — installed as git pre-commit/pre-push hooks instead.\n[^4]: **cursor · memory** — No native memory; an always-apply rule instructs reading .agentloadout/memory/ at session start.\n[^5]: **codex · profiles** — Profiles are embedded as selectable operating-mode sections inside AGENTS.md (no subagent system).\n[^6]: **codex · skills** — Skills are embedded as on-demand procedure sections inside AGENTS.md.\n[^7]: **codex · hooks** — No native hooks — installed as git pre-commit/pre-push hooks instead.\n[^8]: **codex · mcp** — MCP is configured globally in ~/.codex/config.toml; agentloadout emits .agentloadout/mcp/codex.config.toml.snippet to merge.\n[^9]: **codex · memory** — No native memory; AGENTS.md instructs reading .agentloadout/memory/ at session start.\n[^10]: **opencode · skills** — OpenCode has no separate skill type; skills are embedded as on-demand sections in AGENTS.md.\n[^11]: **opencode · hooks** — No native lifecycle hooks — installed as git pre-commit/pre-push hooks instead.\n[^12]: **opencode · memory** — No native memory; AGENTS.md instructs reading .agentloadout/memory/ at session start.\n[^13]: **gemini · profiles** — Profiles are custom slash commands (.gemini/commands/profile/<name>.toml → /profile:<name>).\n[^14]: **gemini · skills** — Skills are custom slash commands (.gemini/commands/skill/<name>.toml → /skill:<name>).\n[^15]: **gemini · hooks** — No native hooks — installed as git pre-commit/pre-push hooks instead.\n[^16]: **gemini · memory** — No native memory; GEMINI.md instructs reading .agentloadout/memory/ at session start.\n[^17]: **zed · profiles** — Zed has no subagents; profiles are embedded as selectable operating-mode sections in .rules.\n[^18]: **zed · skills** — Skills are embedded as on-demand procedure sections in .rules.\n[^19]: **zed · hooks** — No native hooks — installed as git pre-commit/pre-push hooks instead.\n[^20]: **zed · memory** — No native memory; .rules instructs reading .agentloadout/memory/ at session start.\n[^21]: **copilot · profiles** — Profiles are reusable prompt files (.github/prompts/profile-<name>.prompt.md).\n[^22]: **copilot · skills** — Skills are reusable prompt files (.github/prompts/skill-<name>.prompt.md).\n[^23]: **copilot · hooks** — No native hooks — installed as git pre-commit/pre-push hooks instead.\n[^24]: **copilot · mcp** — Copilot MCP is configured in your IDE (e.g. VS Code), not via a committed repo file — nothing generated.\n[^25]: **copilot · memory** — No native memory; copilot-instructions.md instructs reading .agentloadout/memory/ at session start.\n\n<!-- MATRIX:END -->\n\n> Format verification: every adapter cites the official docs URL it was built\n> against in a header comment, with the last-known format noted. Cursor, Codex,\n> OpenCode, Gemini, Zed, and Copilot formats were verified against live docs in\n> June 2026. Nothing in this matrix is marked \"best-effort, unverified.\"\n\n## Concepts\n\n| Kind | Question | Loaded |\n|---|---|---|\n| **Rules** | How should the agent always behave? | Always on |\n| **Profiles** | What mode is it operating in now? | Per task |\n| **Skills** | How do I perform this procedure? | On demand |\n| **Hooks** | What runs automatically at an event? | Event-triggered |\n| **Memory** | What does this project already know? | Session start |\n\nSee [docs/concepts.md](docs/concepts.md) for the full model and the profile\nhand-off graph.\n\n## Dashboard\n\n`agentloadout dashboard` launches a local web UI (Vite + React) bound to **127.0.0.1\nonly** — no accounts, no telemetry, no external network calls. Five views: Overview,\nAgents & Skills, Memory (edit-in-place), Activity (hook event log), Settings\n(theme/font apply immediately). The bundle ships pre-built in the npm package, so it\nruns with no build step.\n\n<!-- SCREENSHOT: replace with a real capture of the Overview view -->\n![agentloadout dashboard — Overview](docs/images/dashboard-overview.png)\n> _Screenshot placeholder — drop a capture at `docs/images/dashboard-overview.png`._\n\n## Examples\n\nThree fully-installed example repos (configs committed), each with a `SCENARIO.md`\nwalking one realistic task through research → plan → implement → verify with memory\nupdates:\n\n- [`examples/nextjs-saas`](examples/nextjs-saas/SCENARIO.md) — add rate limiting to an API\n- [`examples/python-api`](examples/python-api/SCENARIO.md) — add API-key auth to a protected endpoint\n- [`examples/cli-tool`](examples/cli-tool/SCENARIO.md) — fix a bug with a repro test first\n\n## Documentation\n\n[Getting started](docs/getting-started.md) · [Concepts](docs/concepts.md) ·\n[Memory system](docs/memory-system.md) · [Security model](docs/security-model.md) ·\n[Per-tool guides](docs/per-tool/) · [Quick reference](docs/QUICK-REFERENCE.md)\n\n## Known limitations\n\n- **Memory MCP server** — the `.mcp.json` template references a `memory-server.js`\n  whose runtime is on the roadmap; the plain-text memory files work fully today, the\n  structured MCP access does not yet.\n- **`memory compact --api`** — direct Anthropic-key compaction is planned; the default\n  prompt-based compaction (no key needed) works now.\n- **Codex MCP** is `Shim` — Codex reads MCP only from the global `~/.codex/config.toml`,\n  so agentloadout emits a snippet to merge rather than writing outside your repo. `doctor`\n  reports whether it's been merged.\n- **Copilot MCP** is `None` — Copilot configures MCP at the IDE level, not via a\n  committed repo file.\n- **Secret scanner** is regex-based — it catches common formats and reduces risk; it is\n  not a guarantee. Pair it with review and CI.\n- **The guard blocks a known-dangerous command set** — it is not an OS sandbox and does\n  not contain a determined agent.\n\n## Status & contributing\n\n**Solo-maintained, best-effort.** Issues are open; PRs are welcome — see\n[CONTRIBUTING.md](CONTRIBUTING.md). All content is authored in `core/`; adapters\ncompile it — never hand-maintain per-tool copies.\n\n## License\n\n[MIT](LICENSE).\n","readmeFilename":"README.md","_rev":"1-5fc8dffff54d3e05827788a90945126d"}