{"_id":"@archangel-tools/agent-ctx","_rev":"12-ac5b6338e706366b59fd720a87a2831d","name":"@archangel-tools/agent-ctx","dist-tags":{"latest":"0.10.0"},"versions":{"0.2.0":{"name":"@archangel-tools/agent-ctx","version":"0.2.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.2.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"0e1905a53f91cbac3f4831a74df5191b5df11d9a","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.2.0.tgz","fileCount":63,"integrity":"sha512-bPIuA8gEkHUOa0wpIzEimP+/xT2nmJsuxWJmWA9DZ27R+ZBmiL56PhieQN4TLKfRk+5ZMHUXztzBGHiAWToGXA==","signatures":[{"sig":"MEYCIQDNESDbmgVoU1jIrTldGdkwQIlZRiFfrOBGgXMLxduY6wIhAL9mIxWYNU5G4fbw9KWqDVQbMwFqYUZBkItXhpbcr3VE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159245},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2500161430e3fef5855369310e28eed305b3235a","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"10.8.2","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.2.0_1785523305444_0.12386168717427148","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@archangel-tools/agent-ctx","version":"0.3.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.3.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"45c453ca206e31552a51144f4c3b5c125a6c1b7a","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.3.0.tgz","fileCount":67,"integrity":"sha512-S3Ej7KGp/7C4udggS+Jv2pH0XAKXbR9Z8ZOoQCrI7kg1FjPJelJ25492eVPwpbOJKin5JV5s82/tjuJY/xjPkw==","signatures":[{"sig":"MEUCIQCJxf+7VtTo1EvimUN2CXX1F63HJvfm/qfMbkUz3elNEQIgK7+HBbH/XmOnA3vMHUVOQtI2IUMFKiYWPG7OXBW8YTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182276},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dd990a2035a4d6ca1110b8a791d1bd0ed806e9e8","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"10.8.2","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.3.0_1786123173996_0.6143364575796761","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@archangel-tools/agent-ctx","version":"0.4.1","license":"MIT","_id":"@archangel-tools/agent-ctx@0.4.1","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"f56e3e56d4d41fcfee59fc3e020ba8382d0549dd","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.4.1.tgz","fileCount":87,"integrity":"sha512-Phe6A4zME/59WTm1+V195cxtFsbe1kGuKNr9vpDCzKv97fV9kgSzvngBei1uw4W4xi0H8NJNDtX738HVtAtuNQ==","signatures":[{"sig":"MEQCIGBuKBaen/D/nYLuVelVb4oQVh+BvWkTZJrhM3hjfMSUAiBEUsbn+Kx5PavICYNmmUBF8IUu0GRYMk8/EjdmIbc15A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250120},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"afbe200f80355f4cdda307b6de011527f270e867","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","typescript":"^5.5.0","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.4.1_1786284543293_0.026843137376608706","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@archangel-tools/agent-ctx","version":"0.5.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.5.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"97b7ce881dbc1e400e2582b44d3213907d98d025","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.5.0.tgz","fileCount":87,"integrity":"sha512-HB9QEviscQz1lyiaWC/8/McOkGJrTWHVscmqXXJ/fQ11Sfq79WHLiIvec9Nk0ZNjtuZHfbMcenmpK+v1DXPNfQ==","signatures":[{"sig":"MEYCIQCRdbRMFGC56RzYoOwn7Etdm8gO8p2TCLc4495+3WEEFgIhAOamKzEBfPwOJ/TAGgzYl5nPlaHEm7L5I84WkXlRBSlG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264704},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"237924946a39177aee15a89c8bd3a425cb0f4250","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","typescript":"^5.5.0","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.5.0_1786315397242_0.5520344992614692","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@archangel-tools/agent-ctx","version":"0.5.1","license":"MIT","_id":"@archangel-tools/agent-ctx@0.5.1","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"0b087b580035d373ab09bc5a56fc7226d08a0432","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.5.1.tgz","fileCount":87,"integrity":"sha512-wHvHT1+JkV4B9w1LC7scCST/AzXwaveKexZKJEHdGjFvsEjwKlHtnLX64ylFHWJFtEf0OCc2jds6tVvj++NK/A==","signatures":[{"sig":"MEUCIQD+5Kv384dJDKIZ5M8/jjm3S+Cwt66CMgdDkvLLskXKIAIgFKPFhH9EUcII6o/OGZBkT+53KGKhX2jO8Y4M5n/X62s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266132},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fe1e466a25fae5d6006c524a9bd668985aa830d0","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","typescript":"^5.5.0","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.5.1_1786315630979_0.536569880867309","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@archangel-tools/agent-ctx","version":"0.5.2","license":"MIT","_id":"@archangel-tools/agent-ctx@0.5.2","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"6745c715248543a750378a2e87a406de8671dbca","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.5.2.tgz","fileCount":87,"integrity":"sha512-GHorrdCfgh3QYqLXsJabV7x8v75ijnQXn8OlR/hMOz4oroKn4BppWb47hw7rutKO/mrpzdmz6Fl2uRRCo69rHg==","signatures":[{"sig":"MEUCIHIgM3UP2yUDMRfU6aeWr/Z+C4wFn+ICAgErIgqs0uKgAiEAoikjg96T09V45NXa/hK9iwDHfWn8vaLj/Gjz+tOfcUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278347},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"82a54ff7448ea1567fcdd99a9e1ba3e2559315f4","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"sdogik","email":"sergey.dogotar@gmail.com"},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","typescript":"^5.5.0","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.5.2_1786318687931_0.024725940472380525","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@archangel-tools/agent-ctx","version":"0.5.3","license":"MIT","_id":"@archangel-tools/agent-ctx@0.5.3","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"0fb5115e03244c0145ad31e36db8fb2d1d744cf4","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.5.3.tgz","fileCount":87,"integrity":"sha512-YjQ4VE6LRt2lCthYSJDPexh6MoQvwXSck9RjMS/1yMASUcH4U5YPujXOxjpjxo0JHRKGBFc2RlBn1qbI7/2YSg==","signatures":[{"sig":"MEUCIF83sN41e8IRzServtJSsK9sCmtSj1yAFK8WM99I7FP0AiEAlgNIg7IAVSs8kmsnVzgCAMPp4T844jnaqPVxYmHWi10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278347},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"045517aba4c840dd29bcdd7a59c0d8ac544d08aa","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","typescript":"^5.5.0","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.5.3_1786374304087_0.795738829617398","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@archangel-tools/agent-ctx","version":"0.6.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.6.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"ace887df9a023428ed83c54fff1b1ec220453112","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.6.0.tgz","fileCount":87,"integrity":"sha512-DTowGULDNlDycGOrjrUyzRdIsg0An1RZ54UOSrA7bL1uQj29sab6MTGC9t7tMOCD5t+lVvEzN6J97f79IbOYPg==","signatures":[{"sig":"MEUCIQDB0OKqQdgayyFoHIweWnpD4HIVQKb6GH/q8P87Bgi/agIgL5OW0cKn5BZ/euDRCc/HcK3X0+5WUdeyqwdmuX1qT2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279108},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1cde9def89521d96ae099b8366c1949f8a2d1b0d","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","tdd-guard":"^1.7.0","typescript":"^5.5.0","@types/node":"^24.13.3","tdd-guard-vitest":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.6.0_1786463243864_0.29027765599198574","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@archangel-tools/agent-ctx","version":"0.7.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.7.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"3e0e92da55d15d7592ce371d4b0ef39d47796a6f","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.7.0.tgz","fileCount":95,"integrity":"sha512-0V1vZTSPVXghuNhlH6lLZDMRYaSWseb8YKrBZOvAGlvMICpEiZ0cCDF1EFPSGcLBxDM3nA+Oqv5AqACeCyFqng==","signatures":[{"sig":"MEQCICeEi621LR4+LRZCe8GNLxw3xdhJme7zVLxnONXbHt3VAiBB/CPAHDxqx+7VZo2t0qEoWv9SPIAYpSlSPAgDawPvlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402716},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"aa37f9516a655b78cfb271eaf488e6365b231b8f","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","tdd-guard":"^1.7.0","typescript":"^5.5.0","@types/node":"^24.13.3","tdd-guard-vitest":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.7.0_1787639406868_0.7166274706629454","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@archangel-tools/agent-ctx","version":"0.8.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.8.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"9fdda47e79e4a5b69cad35883a69b3e9e4c79a2d","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.8.0.tgz","fileCount":99,"integrity":"sha512-teAVmisOgOEDXZYb7JAFOAiugsI95O8tHCRbpeUdnXyunYNFxeCPhSmIqxZGMc3b/bQK1eP211osdyYQBWTXfQ==","signatures":[{"sig":"MEYCIQCEAGHbnaJkCDGHQv7js4Pb2TJVGH8u8vN57Rm57z1VawIhALj00mRDX4PX3X1EsNYRZY6IX7EBToflKlnFJu5l1tvg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417150},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1d5b03d4e62b1499fe552f216da1c848b3f091f9","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","tdd-guard":"^1.7.0","typescript":"^5.5.0","@types/node":"^24.13.3","tdd-guard-vitest":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.8.0_1787703351870_0.853774436988201","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@archangel-tools/agent-ctx","version":"0.9.0","license":"MIT","_id":"@archangel-tools/agent-ctx@0.9.0","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"homepage":"https://github.com/archangel-tools/agent-ctx#readme","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"bin":{"agent-ctx":"bin/agent-ctx"},"dist":{"shasum":"96b8b3d8162557656afe2fb63ff44f8b94b6dee5","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.9.0.tgz","fileCount":99,"integrity":"sha512-Sn/pM4e8rH0Ikz/leaQvymYrDByzecCalqXVZbT46/lpFRpGHlZkBJoiM4BM1sHsxj9S6z1LJvK7fk3hvISymA==","signatures":[{"sig":"MEYCIQDUvLtSq1+/UnuC9rzQFeQDhY700MkiTG42WRB5VWYFJAIhAJm9OnW009Cn5KbkW3jOLHMlI9MBm69Bs0qwH5Pnk+S9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426207},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c7f6f4b34a93b71896056c610651b6fa399b8629","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"repository":{"url":"git+https://github.com/archangel-tools/agent-ctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^3.23.8","yaml":"^2.5.1","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","vitest":"^3.2.7","tdd-guard":"^1.7.0","typescript":"^5.5.0","@types/node":"^24.13.3","tdd-guard-vitest":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-ctx_0.9.0_1787736532750_0.07625601061697163","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@archangel-tools/agent-ctx","version":"0.10.0","description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/archangel-tools/agent-ctx.git"},"publishConfig":{"access":"public"},"engines":{"node":">=22.5.0"},"bin":{"agent-ctx":"bin/agent-ctx"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","dev":"tsx src/cli.ts","test":"vitest run","test:watch":"vitest","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"dependencies":{"commander":"^12.1.0","yaml":"^2.5.1","zod":"^3.23.8"},"devDependencies":{"@types/node":"^24.13.3","tdd-guard":"^1.7.0","tdd-guard-vitest":"^0.2.0","tsx":"^4.16.0","typescript":"^5.5.0","vitest":"^3.2.7"},"gitHead":"d4209ebfc8ff9cad7666fbe3e22ad0be7961cfcb","_id":"@archangel-tools/agent-ctx@0.10.0","bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"homepage":"https://github.com/archangel-tools/agent-ctx#readme","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-L2Dt9ilCtu7y7o+7c1hps6n3p46J0YebPR24nyQU0S4rhuRci6EzqLwMFQvTxWR0M6P9HxhpRsISo1geb2oAxQ==","shasum":"3a8a2825b4270349618efd1638c7134e47e4eba2","tarball":"https://registry.npmjs.org/@archangel-tools/agent-ctx/-/agent-ctx-0.10.0.tgz","fileCount":111,"unpackedSize":544441,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEoCJEG+L4r1Mt1SET3TBim9aDMGY7+2QCnf4VQvs+vHAiA2GlRpszXL1iYSqq3KOv6YeZsOFfMpoevihcoJTBaMBg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff20231f-995c-474b-ba73-08ddf4ce15ab"}},"directories":{},"maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-ctx_0.10.0_1788032907348_0.33292369852822"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T18:41:45.217Z","modified":"2026-08-29T19:48:27.822Z","0.2.0":"2026-07-31T18:41:45.630Z","0.3.0":"2026-08-07T17:19:34.172Z","0.4.1":"2026-08-09T14:09:03.453Z","0.5.0":"2026-08-09T22:43:17.385Z","0.5.1":"2026-08-09T22:47:11.141Z","0.5.2":"2026-08-09T23:38:08.080Z","0.5.3":"2026-08-10T15:05:04.260Z","0.6.0":"2026-08-11T15:47:23.999Z","0.7.0":"2026-08-25T06:30:07.024Z","0.8.0":"2026-08-26T00:15:52.050Z","0.9.0":"2026-08-26T09:28:52.918Z","0.10.0":"2026-08-29T19:48:27.513Z"},"bugs":{"url":"https://github.com/archangel-tools/agent-ctx/issues"},"license":"MIT","homepage":"https://github.com/archangel-tools/agent-ctx#readme","repository":{"type":"git","url":"git+https://github.com/archangel-tools/agent-ctx.git"},"description":"Engine-independent context compiler for coding agents. One neutral source (.agent/ + context repos) compiles to CLAUDE.md, GEMINI.md, and engine configs.","maintainers":[{"name":"sdogik","email":"sergey.dogotar@gmail.com"}],"readme":"# agent-ctx\n\n**An engine-independent context compiler for coding agents.** It takes a neutral\nsource — `.agent/` folders plus context repositories — and compiles it into\nengine-specific artifacts: `CLAUDE.md` for Claude Code, `GEMINI.md` for Gemini\nCLI. One source → many engines, no vendor lock-in.\n\nIt compiles, and does nothing else. Scaffolding a layer, advising on its\nstructure, and delivering skills into an organization all need judgement and a\nhuman at the boundary, so they are skills — not commands. What is left here is\nwhat must be deterministic, verifiable, and runnable with no model and no\nnetwork: the CI gate, the pre-commit rebuild, and the first `git clone` by\nsomeone who has never heard of this tool.\n\n`agent-ctx` knows nothing about any particular content backend. A content\nbackend (Notion, a wiki, anything) is just one of the MCP servers described in\nthe layers, which the tool renders into engine config. It compiles a **map**;\nthe live content is read by the agent at runtime through MCP, never compiled.\n\nSee [`CONTRACTS.md`](./CONTRACTS.md) for the full format contract — it is the\ncore document every component refers back to.\n\n## Install\n\n```bash\nnpm install -g @archangel-tools/agent-ctx\n# or, from a clone:\nnpm install && npm run build\n```\n\nRequires Node 22.5+ (the mirror uses `node:sqlite`). The published package is a\npinned dependency for consuming repos and CI — it is not vendored/copied into\neach repo.\n\n**Public on purpose.** The tool is MIT, holds no secrets, and knows nothing about\nany organization's content — it compiles whatever layers it is pointed at. A\nprivate registry would add an authentication step to every consumer (container,\nCI job, laptop) and buy nothing, because the thing worth protecting is the\nlayers, and those are protected by git access. Isolation between organizations\nis enforced there, not here.\n\nA version is published only by pushing a `v*` tag; the release workflow refuses\na tag that disagrees with `package.json`. `main` is not a release channel, so a\nconsumer pinning a version is pinning something that was deliberately cut.\n\n## The layer model\n\n`agent-ctx` composes the three layers that are properties of the **repository**:\n**org / solution / repo**.\n\n- **org** — `<org>/agent-context`. Holds `_schema.md` (the lens, sorts first),\n  `solutions/<name>/`, `skills/`, `mcp/`, and `research/` (a working zone, NOT a\n  layer).\n- **solution** — `<org>/solutions/<name>/`: operational material only\n  (conventions, skills, subagents) plus `notion-ref.md`. The durable unit of\n  value. The term is `solutions/`, never `projects/`.\n- **repo** — the workplace's own `.agent/`.\n\nThere is a fourth layer conceptually — **personal** — but `agent-ctx` does not\nbuild it. See [personal is outside the tool](#personal-is-outside-the-tool).\n\nIsolation between orgs is enforced by **git access**, not engine privacy.\n`agent-ctx` is open and holds no secrets. No access → the build **fails closed**.\n\n## Manifest\n\nA directory with `.agent/manifest.yaml` is a compilable workplace.\n\n```yaml\nextends:\n  - org: acme\n  - solution: billing        # → <org>/solutions/billing/\nsources:\n  org:acme:\n    repo: https://github.com/acme/agent-context.git\n    ref: v2026.06.1          # a pin = reproducibility\ncompose:\n  precedence: [repo, solution, org]\n  context: [repo, solution, org]   # optional — which layers contribute PROSE\n  skills:\n    exclude: [deliver-skill]       # optional — skills this place declines\ntargets: [claude, gemini]\ndecisions_cache: false             # optional — embed the org's Active decisions\n```\n\nOrg layers with a `sources` entry are cloned to a cache before composition (the\nref is resolved to a concrete SHA, recorded in the artifact header). A local\n`--registry` path is an **override** over org `sources` — iterate without\ncommitting; no clone happens.\n\n`compose.context`, `compose.skills.exclude` and `decisions_cache` are optional\nand each defaults to what a manifest written before it meant: every layer\ncontributes prose, every skill is installed, and no decisions are embedded. They\nare explained below — the first under\n[a place above other places](#a-place-above-other-places-bounds-its-prose), the\nsecond under [a place declines a skill it cannot use](#a-place-declines-a-skill-it-cannot-use),\nthe third under [memory splits by volatility](#memory-splits-by-volatility).\n\n## A place above other places bounds its prose\n\n`compose.context` names the layers whose context docs are composed. Omit it and\nthat is `compose.precedence` — all of them.\n\nNarrow it only for a place that is a **parent directory** of other places. Claude\nCode reads `CLAUDE.md` up the tree, so such a place lends its prose to every\nsession held beneath it, including another organization's. The constellation root\nis the case that produced the field: it sets `context: [repo]`, because inlining\nthe vendor's org layer there would hand a client's session the vendor's schema\nlens and the ids of a backend that session must never write to.\n\nCapabilities are deliberately unaffected — skills, subagents, MCP servers and\nhooks still come from every layer in `precedence`. They are read per project and\ndo not travel upward, so they leak nowhere, and a root that wants `log-activity`\nshould have `log-activity`. Where a place wants fewer skills than its layers\ncarry, the key for that is the next one.\n\n## A place declines a skill it cannot use\n\nA skill costs its name and description in the standing prefix of **every**\nrequest made in that place, whether or not it can ever fire there. A skill whose\nwork lands in another repository — a rollout across an organization's layer, a\ndelivery from a catalog shelf — cannot fire in a workplace at all, and still\nbills it. `compose.skills.exclude` lets the place decline it by name:\n\n```yaml\ncompose:\n  skills:\n    exclude: [deliver-skill, schema-generation]\n```\n\nExclude-only, and never an allow-list: a skill added upstream arrives everywhere\nuntil a place declines it deliberately. Nothing is deleted — the skill stays in\nthe layer and stays installed in every place that did not decline it, so\ndeclining is a statement about where a description is *paid for*, not about what\nthe organization can do. One line and a rebuild puts it back.\n\nTwo mistakes are reported rather than guessed at. An entry that matches **no\ninstalled skill** — the shape of a skill renamed upstream, where the place goes\non believing it declined something. And an entry declining a skill whose\ncompiled `.claude/skills/<name>/` directory something else this place composes\nnames: a hook command, an MCP server's command, a subagent's prompt, another\nskill's body, or a context doc. The build prunes that directory, so a hook whose\nscript is missing fails on every event and a document that named a file there\nsends its reader to open nothing.\n\nAn **allow-list is refused, not ignored**: `compose.skills.include` fails to\nload, by name, rather than parsing and doing nothing.\n\n## personal is outside the tool\n\nThe manifest is committed and identical for everyone. org and solution are\nproperties of the *repository*; personal is a property of the *person*. Naming\npersonal in a committed manifest breaks in three ways: a colleague can't build\n(no access to your private layer → fail-closed), your preferences leak into the\nwhole team's artifact, and CI — which has nobody's personal — can't build at all.\n\nSo `agent-ctx` doesn't know about personal at all. `personal` in `extends` or in\n`sources` is a **validation error** — the build fails rather than quietly\nproducing an artifact that only one person can reproduce.\n\nPersonal is handled by a different system, one layer below:\n\n- **your dotfiles** (chezmoi / stow / a dotfiles repo) own `~/.claude/CLAUDE.md`;\n- **the engine** applies it automatically, in every project, on top of the\n  project `CLAUDE.md` that `agent-ctx` generates.\n\nPersonal still wins on precedence — that's the engine's doing, not ours.\n`agent-ctx` compiles what the team shares; your dotfiles compile what is yours.\n\n## Commands\n\n```bash\n# Compile a place into the committed artifacts (repo + solution + org):\nagent-ctx build ./work --registry ./registry\n\n# CI gate — writes nothing, exits non-zero if the artifact is stale:\nagent-ctx build ./work --registry ./registry --check\n\n# Provenance & freshness:\nagent-ctx status ./work          # built SHA vs live source, plus unbuilt worktrees\nagent-ctx refresh ./work         # re-fetch sources, rebuild, show diff (no commit)\nagent-ctx cache clear            # drop the source cache\n\n# The read side (see below):\nagent-ctx mirror ./work          # pull the org's backend into a local sqlite cache\nagent-ctx recall ./work          # print what the artifact cannot know (fail-soft)\nagent-ctx audit ./work           # check the decision log's integrity over that cache\nagent-ctx build ./work --decisions-cache   # embed the decisions for this one build\n```\n\nFlags default from the environment: `AGENT_REGISTRY`, `AGENT_CACHE`,\n`AGENT_STATE`. The cache defaults to the OS cache directory, the mirror state\ndir to the XDG state directory (never a hardcoded `~`).\n\n`--decisions-cache` and `--state-dir` are accepted by `build` and `refresh`;\n`recall` takes `--org`, `--scope`, `--limit` and `--state-dir`, and derives the\norg and the scope from the place's manifest when they are not given. `audit`\ntakes `--org` and `--state-dir` and derives the org the same way.\n\n## The read side: mirror, recall and audit\n\nThe compile guarantees are unchanged — `mirror` and `recall` sit outside them.\n`mirror` is the ONLY command that speaks a backend API (Notion first, behind a\nnarrow adapter), driven by the org's own `## Pattern bindings` in `_schema.md`;\nit pulls the org's activity log, decisions and knowledge into one sqlite file\nper org under the state dir, outside every repository. The token comes from\n`NOTION_TOKEN` at call time and goes to HTTPS and nowhere else. `recall` reads\nthat cache and is **fail-soft**: any failure is a one-line HTML-comment\ndiagnostic and exit 0 — a missing cache must never block a session. The mirror\nis a dated cache; the backend always wins. See the read-side section of\n[`CONTRACTS.md`](./CONTRACTS.md).\n\n`audit` reads that same cache and does the opposite of fail-soft. It runs the\nfive decision-log integrity checks specified by the `decisions-consistency-check`\nskill — supersession pointing back in time, an Active record replaced by an\nolder one, one live answer per topic, chains that resolve, and projections that\nkeep their source — and prints the reach it actually got to before any finding,\nnaming every check it could not make in full. It classifies and never repairs:\neach finding carries the records, the remedy and who may perform it. Because an\naudit that cannot read its input and exits 0 has reported a clean log it never\nopened, a missing or unreadable mirror is exit **2** with a diagnostic, never a\nreport; findings are exit **1** and a sound log exit **0**.\n\nA sync pulls only what changed since the last one (with a margin, because the\nbackend reports edit times to the minute), so refreshing an unchanged backend\ncosts one empty page per database however large the history has grown.\nNothing is aged out — the whole history is kept. The one thing an incremental\npull cannot see is a DELETION, because the backend returns no tombstone for a\ntrashed row, so a full unfiltered pass runs on the first sync, on\n`agent-ctx mirror --full`, and automatically once a week.\n\n## Memory splits by volatility\n\nDecisions used to reach a session one way only: the `recall` hook printed all of\nthem, at every start, and every session paid for the lot again. They are the\nstable half of an org's memory — a decision recorded in June is the same text in\nAugust — and stable content billed per session is content in the wrong place.\n\nSo the artifact carries them. With `decisions_cache: true` in the manifest,\n`agent-ctx build` appends the org's in-scope Active decisions as a synthetic org\ncontext doc, dated by the mirror's own snapshot rather than by \"now\". It is a\nproperty of the **place**, not an argument of the command, on purpose: a block\nthat appears or disappears depending on who typed what makes two people building\nthe same source produce different bytes, and `--check` stops meaning anything.\nThe `--decisions-cache` flag still exists on `build` and `refresh` and ORs with\nthe field — it is for trying the block out before a manifest commits to it.\n\n`recall` then prints only the delta. It looks in the place's artifact for the\n`decisions-cache:` marker and shows the decisions dated on or after that\nsnapshot, plus recent activity. The date comparison is by day and deliberately\ngenerous: a decision recorded on the day of the build is reprinted rather than\nrisked, because printing one row twice is cheap and dropping one that landed\nafter the build is not. A place whose artifact carries no cache gets every\nActive decision from `recall`, exactly as before — the split degrades to the old\nbehaviour, never to silence. Measured on this repository, the recall block went\nfrom 5797 to 2059 bytes, with 28 of the 30 in-scope decisions moving into the\nartifact where a rebuild pays for them once.\n\nBoth halves are scoped the same way, from the manifest: the solution named in\n`extends` is the place's decision scope, so a rule governing a sibling tool stops\narriving. A scope matches its own decisions **plus** `general` and unscoped\nones: narrowing a view never hides what applies everywhere. `recall --scope`\nand `--org` override the derivation for a one-off look at somebody else's slice.\n\nThe price of the cache is that the mirror db becomes an input to the build. A\nrebuild after each `agent-ctx mirror` writes a fresh `as-of` line even when no\ndecision changed, and a machine with no mirror for the org builds the artifact\nwithout the block at all — a capability warning, an otherwise normal build, and\na `--check` that reports the committed artifact as stale. Rebuild a place with\n`decisions_cache: true` where its mirror lives.\n\n## A decision written down leaves both halves\n\n`EncodedIn` is an optional field on the decision-log role: it names the layer\nfile where that decision's rule is now stated as prose. When it is set, the\ndecision drops out of the artifact's cache **and** out of `recall` — the agent\nalready reads the rule in the layer, and saying it twice costs tokens and adds\nnothing.\n\nThat turns what is left into a backlog rather than a bill: the block's remaining\nlength is \"decided, but not yet written down\". The way to shorten it is to write\nthe rule into a layer doc and record where, not to trim the output.\n\n`EncodedIn` is not `Artifacts`/`Commits`. Those say the rule is\n**implemented** — some code obeys it. `EncodedIn` says the rule is **legible** —\nan agent reading the compiled context will find it stated. A decision can be\neither, both, or neither, and only the second one makes repeating it redundant.\n\nThe org's `## Pattern bindings` may alias the field like any other; in the mirror\nit is the `decisions.encoded_in` column. A mirror written by an older engine\ngains that column by an additive `ALTER` the next time `agent-ctx mirror` opens\nit — the mirror is a disposable cache, so that is the whole migration. Until then\n`recall` over the old db fails soft with its usual diagnostic, and a build asking\nfor the decisions cache fails on it; one `agent-ctx mirror` run settles both.\n\n## Skills may carry assets\n\nA skill is not always one file. A vendored third-party skill points its body at\nscripts and reference documents by relative path, and those paths only resolve\nif they sit next to the rendered skill. Put them in `skills/<name>/files/`:\n\n```text\nskills/docx/\n  skill.yaml\n  body.md\n  files/\n    scripts/validate.py\n    reference.md\n```\n\nThey are copied verbatim into `.claude/skills/<name>/`, read recursively and\nsorted for determinism, and pruned per file when the source drops them. Assets\nare TEXT: one that is not valid UTF-8 aborts the build rather than being written\nback mangled. Gemini has nowhere to put them — a command is a single prompt — so\nit emits a capability warning instead of dropping them silently (invariant 5).\n\nDelivering somebody else's skill into an organization — vendoring it at a pinned\nupstream commit, stamping provenance, updating it later without clobbering local\nedits — is not this tool's job. `skill.yaml` is passthrough, so provenance\nmarkers written by a delivering skill ride along inertly.\n\n## What is compiled\n\nOnly these, and only from a layer's **root** (invariant 1 — subfolders like\n`research/` never enter context):\n\n<!-- markdownlint-disable MD013 -->\n\n| Source                                 | Model      | Claude artifact                     | Gemini artifact                |\n| -------------------------------------- | ---------- | ----------------------------------- | ------------------------------ |\n| root `*.md` (minus generated names)    | contextDoc | `CLAUDE.md` (layered)               | `GEMINI.md` (layered)          |\n| `skills/<n>/skill.yaml` + `body.md`    | Skill      | `.claude/skills/<n>/SKILL.md`       | `.gemini/commands/<n>.toml`    |\n| `skills/<n>/files/**`                  | SkillFile  | `.claude/skills/<n>/**`             | — (capability warning)         |\n| `subagents/*.yaml`                  | Subagent   | `.claude/agents/<n>.md`             | `.gemini/settings.json` agents |\n| `mcp/*.yaml`                        | McpServer  | `.mcp.json`                         | `.gemini/settings.json` mcp    |\n| `hooks/*.yaml`                      | Hook       | `.claude/settings.json`             | — (capability warning)         |\n\n<!-- markdownlint-enable MD013 -->\n\nGemini has no lifecycle hooks, no disallowed-tools, and nowhere to put skill\nassets; those become **capability warnings**, never silent drops (invariant 5).\n\nA context artifact over **600 lines** of composed prose opens with a generated\n`## Contents` index of every `#` and `##` heading, each top-level entry naming\nthe source file and layer it came from. There is no manifest key: length is a\nproperty of the document, not a preference, and an index regenerated with the\ndocument is the one kind that cannot go stale. CONTRACTS.md states it in full.\n\n## Determinism & committed artifacts\n\nIdentical source → byte-for-byte identical artifact: no timestamps, sorted keys,\nand a `source-hash` (sha256, 12 chars) plus the resolved source SHAs in the\nheader. A repeat build is a no-op; `--check` is the CI \"build is clean\" gate.\nThe header also names the engine that wrote it, read from the package's own\n`package.json` so that a version nobody remembered to edit cannot make it lie.\nA place with `decisions_cache: true` has one input more than its layers — its\nmirror db; see [memory splits by volatility](#memory-splits-by-volatility).\n\nThe artifact contains repo + solution + org and nothing personal, so it is\nidentical for everyone and never ping-pongs between people.\n\nCommit the artifacts next to their source and wire the harness in\n[`templates/`](./templates):\n\n- `gitattributes.sample` → `.gitattributes` marks artifacts `linguist-generated`\n  (copy it in by hand; there is no `init` command, and CONTRACTS says why).\n- `pre-commit.sample` — soft guarantee: rebuild + `git add` in the same commit.\n- `ci-snippet.yaml` — hard guarantee: `build --check` fails on stale artifacts.\n\n## The six invariants\n\n1. **source/artifact separation** — artifacts are never read back as source; the\n   loader skips generated names and reads only a layer's root `*.md`.\n2. **fail-closed** — an unreachable source aborts the build with a clear error,\n   writing nothing.\n3. **determinism** — identical source → identical bytes, and identical TREES:\n   pruning is per file and recursive, so a removed asset leaves nothing behind.\n4. **multi-story** — any dir with a manifest compiles; an org repo can be both a\n   workplace and a source.\n5. **capability warnings** — anything an engine can't represent is surfaced, not\n   dropped.\n6. **auth delegation** — the tool never stores, reads, parses, passes, or logs\n   tokens; cloning is delegated to the system git and its credential helper.\n\n## Development\n\n```bash\nnpm install\nnpm test            # vitest — git is injected, no network\nnpm run typecheck\nnpm run build\nnpm run dev -- build ./work --registry ./registry\n```\n\nLibrary API is exported from the package root (`buildPlace`, `Resolver`,\n`composeLayers`, adapters, …) for embedding in other tooling. The read side is\nexported too: `activeDecisions`, `solutionNameOf`, `decisionsCacheDoc`,\n`DECISIONS_CACHE_MARKER`. One breaking change in 0.5.0 — the decision query is\nan options object, `activeDecisions(db, { scope, unencodedOnly })`, where 0.4\ntook a bare scope string, because scope is no longer the only filter.\n","readmeFilename":"README.md"}