{"_id":"@dooziesoft/doozctl","_rev":"6-4a2a48e654c29318c763a1ecd2e7a5c7","name":"@dooziesoft/doozctl","dist-tags":{"next":"1.0.0-rc.3","latest":"2.0.0"},"versions":{"1.0.0-rc.1":{"name":"@dooziesoft/doozctl","version":"1.0.0-rc.1","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"license":"MIT","_id":"@dooziesoft/doozctl@1.0.0-rc.1","maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"homepage":"https://ctl.dooziesoft.com","bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"bin":{"doozctl":"dist/index.js"},"dist":{"shasum":"14e45f47634cc17d2f4009457dd65e83c0a4bd9e","tarball":"https://registry.npmjs.org/@dooziesoft/doozctl/-/doozctl-1.0.0-rc.1.tgz","fileCount":5,"integrity":"sha512-iR4xLc8XbtAehhjRl9Z6r216ERvGl4afqWKAZ63+jnIbsw1/SS4beUHvdHAkBll4XriaN7VmFOxL3KvKGEY3OQ==","signatures":[{"sig":"MEYCIQCNH9Hi5kDItMbCwAK4h8KJRNZ2ZQneBdvAk5ES0Kd0AgIhAKzxh0haH2tjOl9q9uUYptGGmlNeZ+cunwg/UM724zVJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207629},"type":"module","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"gitHead":"3b87f5e92cc9aab787498ce92e7a9fe04d1fd282","scripts":{"dev":"tsx src/index.ts","lint":"eslint src","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm lint && pnpm test","start":"node dist/index.js","format":"prettier --write .","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:update":"vitest run -u","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"},"repository":{"url":"git+https://github.com/DoozieSoftware/doozctl.git","type":"git"},"_npmVersion":"10.9.8","description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","eslint":"^9.39.5","vitest":"^2.1.2","prettier":"^3.3.3","@eslint/js":"^9.39.5","typescript":"^5.6.2","@types/node":"^22.7.0","typescript-eslint":"^8.66.0","@vitest/coverage-v8":"^2"},"_npmOperationalInternal":{"tmp":"tmp/doozctl_1.0.0-rc.1_1786514547523_0.3859848679343305","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.2":{"name":"@dooziesoft/doozctl","version":"1.0.0-rc.2","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"license":"MIT","_id":"@dooziesoft/doozctl@1.0.0-rc.2","maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"homepage":"https://ctl.dooziesoft.com","bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"bin":{"doozctl":"dist/index.js"},"dist":{"shasum":"f12936258ca6102b26c74adde3f32b278ef04cfd","tarball":"https://registry.npmjs.org/@dooziesoft/doozctl/-/doozctl-1.0.0-rc.2.tgz","fileCount":5,"integrity":"sha512-/7kO7BmxouWOGIrfcMIOWoN7O8RpJLm8SS65rX1yXagYQGO+AiE92+GsQZD5f4vWuOmv0eVTvsIsguVKjtosyw==","signatures":[{"sig":"MEYCIQDJU8kBcJIcYI+jzdDg3gGzQCBwASidi2TyG0ukfp/QDgIhAJbJdQ1vm63b88eBt5j741KU3z5BRUvrKEDUeTjR5hds","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dooziesoft%2fdoozctl@1.0.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207629},"type":"module","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"gitHead":"1d5151ae011940e433b0aafaa0609234f9cd2478","scripts":{"dev":"tsx src/index.ts","lint":"eslint src","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm lint && pnpm test","start":"node dist/index.js","format":"prettier --write .","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:update":"vitest run -u","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8af6270-267f-4f6e-9207-a014575a7012"}},"deprecated":"Superseded by 1.0.0-rc.3 (this build shipped a stale baked '1.0.0-rc.1' version string).","repository":{"url":"git+https://github.com/DoozieSoftware/doozctl.git","type":"git"},"_npmVersion":"12.0.2","description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"commander":"^12.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","eslint":"^9.39.5","vitest":"^2.1.2","prettier":"^3.3.3","@eslint/js":"^9.39.5","typescript":"^5.6.2","@types/node":"^22.7.0","typescript-eslint":"^8.66.0","@vitest/coverage-v8":"^2"},"_npmOperationalInternal":{"tmp":"tmp/doozctl_1.0.0-rc.2_1786516203574_0.2598477892619262","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.3":{"name":"@dooziesoft/doozctl","version":"1.0.0-rc.3","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"license":"MIT","_id":"@dooziesoft/doozctl@1.0.0-rc.3","maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"homepage":"https://ctl.dooziesoft.com","bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"bin":{"doozctl":"dist/index.js"},"dist":{"shasum":"4610f1960b9f570d0694d2419f37c53d4bda6738","tarball":"https://registry.npmjs.org/@dooziesoft/doozctl/-/doozctl-1.0.0-rc.3.tgz","fileCount":5,"integrity":"sha512-1u13nbfLB8cLrY0NVZPd5ozizaVwHa3+57oWiY0EwvzkfLWcADt0U/T2tK/sWsmrTfX1M3f/sv36zlm/MTOX1w==","signatures":[{"sig":"MEQCIA/pXGH16465mUMKYAifAetDRdJMsYzdbXf5trCAg+e1AiB50M8kAEWxgIXXn/NkKy5+2v0ONirEoKZ4q8h5U01BGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dooziesoft%2fdoozctl@1.0.0-rc.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207673},"type":"module","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"gitHead":"948d780219a3b3ba89eb141054304660b2eca72c","scripts":{"dev":"tsx src/index.ts","lint":"eslint src","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm lint && pnpm test","start":"node dist/index.js","format":"prettier --write .","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:update":"vitest run -u","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8af6270-267f-4f6e-9207-a014575a7012"}},"repository":{"url":"git+https://github.com/DoozieSoftware/doozctl.git","type":"git"},"_npmVersion":"12.0.2","description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"commander":"^12.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","eslint":"^9.39.5","vitest":"^2.1.2","prettier":"^3.3.3","@eslint/js":"^9.39.5","typescript":"^5.6.2","@types/node":"^22.7.0","typescript-eslint":"^8.66.0","@vitest/coverage-v8":"^2"},"_npmOperationalInternal":{"tmp":"tmp/doozctl_1.0.0-rc.3_1786517643091_0.7696017631386594","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@dooziesoft/doozctl","version":"1.0.0","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"license":"MIT","_id":"@dooziesoft/doozctl@1.0.0","maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"homepage":"https://ctl.dooziesoft.com","bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"bin":{"doozctl":"dist/index.js"},"dist":{"shasum":"65d23798d9d7391c8616d58cf54bd3ff6fcc823a","tarball":"https://registry.npmjs.org/@dooziesoft/doozctl/-/doozctl-1.0.0.tgz","fileCount":5,"integrity":"sha512-HuTCjxgmc7TOYGCZVN02uoSGBzkVwyHk7kNQkQB8BvlrXnOnKldszY34uCzx1xK7vGvbJOLvsMhQm44YmOiOHA==","signatures":[{"sig":"MEUCIEYzPL73VL145XoUtOZZzp28Wzi3+DEWcK2uoFwix64yAiEAls0VobQNNR28q7jYx8sHhaJ2Q4+U+vaBTFyvxj4xunY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dooziesoft%2fdoozctl@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225027},"type":"module","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"gitHead":"887ad544c544deb7391610d767d67250b738d59a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src","test":"vitest run","build":"tsup","check":"pnpm typecheck && pnpm lint && pnpm test","start":"node dist/index.js","format":"prettier --write .","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:update":"vitest run -u","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8af6270-267f-4f6e-9207-a014575a7012"}},"repository":{"url":"git+https://github.com/DoozieSoftware/doozctl.git","type":"git"},"_npmVersion":"12.0.2","description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","eslint":"^9.39.5","vitest":"^2.1.2","prettier":"^3.3.3","@eslint/js":"^9.39.5","typescript":"^5.6.2","@types/node":"^22.7.0","typescript-eslint":"^8.66.0","@vitest/coverage-v8":"^2"},"_npmOperationalInternal":{"tmp":"tmp/doozctl_1.0.0_1786600378190_0.9911453697032375","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@dooziesoft/doozctl","version":"2.0.0","description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","type":"module","license":"MIT","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"homepage":"https://ctl.dooziesoft.com","repository":{"type":"git","url":"git+https://github.com/DoozieSoftware/doozctl.git"},"bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"engines":{"node":">=20"},"bin":{"doozctl":"dist/index.js"},"exports":{".":"./dist/index.js"},"scripts":{"build":"tsup","dev":"tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:update":"vitest run -u","test:coverage":"vitest run --coverage","lint":"eslint src","lint:fix":"eslint src --fix","format":"prettier --write .","format:check":"prettier --check .","check":"pnpm typecheck && pnpm lint && pnpm test"},"dependencies":{"commander":"^12.1.0"},"devDependencies":{"@eslint/js":"^9.39.5","@types/node":"^22.7.0","@vitest/coverage-v8":"^2","eslint":"^9.39.5","prettier":"^3.3.3","tsup":"^8.3.0","tsx":"^4.19.0","typescript":"^5.6.2","typescript-eslint":"^8.66.0","vitest":"^2.1.2"},"gitHead":"b0b41fca1c41416fd1d773bb81da88befeeea5e3","_id":"@dooziesoft/doozctl@2.0.0","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-6j6G2ki+8ulbn4cLrO+YoXd9xI7DblxsG4gAXMPFkXFeEUTdplD2rC0J3+5yEDTLaKky5h7lxGEWsJwHZZIEsA==","shasum":"da7a8ce6ee42275237e2f9e44d05a030894c17a6","tarball":"https://registry.npmjs.org/@dooziesoft/doozctl/-/doozctl-2.0.0.tgz","fileCount":5,"unpackedSize":335934,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dooziesoft%2fdoozctl@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDLbLaUExHLk/icUmx8v2o+ms1uSaWfpEKwhh202uZrEQIgI5XOJMco062UAY3UPPr2kP11Py567laPyzNsosO/0ts="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8af6270-267f-4f6e-9207-a014575a7012"}},"directories":{},"maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/doozctl_2.0.0_1788333058940_0.5370600392474056"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T06:02:27.357Z","modified":"2026-09-02T07:10:59.494Z","1.0.0-rc.1":"2026-08-12T06:02:27.656Z","1.0.0-rc.2":"2026-08-12T06:30:03.710Z","1.0.0-rc.3":"2026-08-12T06:54:03.289Z","1.0.0":"2026-08-13T05:52:58.379Z","2.0.0":"2026-09-02T07:10:59.109Z"},"bugs":{"url":"https://github.com/DoozieSoftware/doozctl/issues"},"license":"MIT","homepage":"https://ctl.dooziesoft.com","keywords":["ai","agents","cli","repository","standards","memory","codex","claude"],"repository":{"type":"git","url":"git+https://github.com/DoozieSoftware/doozctl.git"},"description":"A repository standards engine: turns repository knowledge into persistent, deterministic artifacts every AI assistant can share.","maintainers":[{"name":"dooz-ecosystem","email":"akshay@dooziesoft.com"}],"readme":"# DoozCTL\n\n[![Site](https://img.shields.io/badge/site-ctl.dooziesoft.com-4A5ABA)](https://ctl.dooziesoft.com)\n\nAI coding tools lose context.\n\nRepositories shouldn't.\n\nDoozCTL turns repository knowledge into persistent, deterministic artifacts that every AI assistant can share.\n\n## What it is\n\nA **Repository Standards Engine** — a lightweight, vendor-neutral CLI that installs and maintains AI repository standards.\n\n```text\nRepository\n    ↓\nAnalyze\n    ↓\nLoad Standards\n    ↓\nResolve Variables\n    ↓\nRender Artifacts\n    ↓\nMerge\n    ↓\nValidate\n    ↓\nPersist\n```\n\nIt is not an AGENTS.md generator. `AGENTS.md` is simply one artifact. The engine does not know that file exists — or any artifact name, AI vendor, language, or company convention. The engine's generation path treats every artifact as opaque data; all meaning lives in the external Standards Package.\n\n## The three products\n\nDoozCTL is really three things:\n\n### 1. DoozCTL — the engine\n\nOpen source. Responsible for analyze, render, merge, sync. Nothing else.\n\n### 2. Standards Packages — the domain\n\nVersioned, independent packages that define repository artifacts.\n\n```text\n@dooziesoft/standards\n@dooziesoft/standards-laravel\n@dooziesoft/standards-react\n```\n\nThe engine renders whatever the package declares. All domain-specific behavior lives here, never in the engine.\n\n### 3. Repository Memory — the `.ai` convention\n\n```text\n.ai/\n    current-context.md\n    repository-analysis.json\n    sessions/\n```\n\nPortable repository memory. Cursor, Claude, Codex, Gemini, OpenCode, and future tools consume the same memory. The repository becomes the long-term memory; AI coding assistants become interchangeable execution engines.\n\n## Quick start\n\nInstall and initialize the current directory against a local standards package:\n\n```sh\nnpm install -g @dooziesoft/doozctl\ndoozctl init . ./standards\n```\n\n`init` analyzes the repository, renders each init-lifecycle artifact the package declares (for example `AGENTS.md`), merges it into existing files without touching unmanaged content, and writes the engine state:\n\n```text\nRepository initialized: .\nGenerated artifacts:\n  - AGENTS.md\n\nEngine state:      .dooz/manifest.json\nRepository memory: .ai/repository-analysis.json\n```\n\nA Standards Package is just a directory containing a `package.json` manifest that declares artifacts. See [spec.md](https://github.com/DoozieSoftware/doozctl/blob/main/spec.md) for the contract. Ready-to-run packages live in [examples/](https://github.com/DoozieSoftware/doozctl/tree/main/examples).\n\nSee [FAQ.md](https://github.com/DoozieSoftware/doozctl/blob/main/FAQ.md) for common questions.\n\n## Commands\n\n```sh\ndoozctl init <repo> <package>                 # analyze, render, install artifacts\ndoozctl sync <repo> <package>                 # re-render managed artifacts, keep your edits\ndoozctl analyze [repo]                        # update repository analysis only\ndoozctl summarize <repo> <package> <session>  # append an immutable session summary\ndoozctl doctor <repo> <package>               # verify repository health\ndoozctl status [repo]                         # repository + control-plane view\ndoozctl plan [--method <method>] [--title <title>]  # create an engineering Plan under .dooz/plans/\ndoozctl verify [repo]                         # check the active Plan's required evidence\n```\n\n`plan` resolves `--method` against the workflows the repository has adopted\nunder `.dooz/workflows/adopted/` (from a Standards Package) or\n`.dooz/workflows/project/`; the default method is `standard`. Workflows are\noptional — `plan` succeeds even when the method is not yet adopted; `status`\nand `verify` surface the adoption problem and evidence degrades honestly (D-01).\nThe sample Standards Package ships the five initial methods in\n`standards/workflows/`.\n\n`verify` reads the adopted workflow's `## Required Evidence` checklist\n(WORKFLOW-SPEC) and reports whether the active Plan records that evidence —\nplan sections, git facts, and workflow-declared files such as\n`changelog: CHANGELOG.md`. It checks presence, never quality, and never runs\nanything.\n\nEvery command supports `--help` with usage and an example.\n\n## Exit codes\n\n| Code | Meaning                                                                       |\n| ---- | ----------------------------------------------------------------------------- |\n| `0`  | Success                                                                       |\n| `1`  | Error (missing state, malformed files, refused merges, doctor found problems) |\n| `2`  | Invalid arguments                                                             |\n\n## Design\n\n- Minimal. Deterministic. Offline. Text-based. Vendor neutral. Artifact driven.\n- Prefer preserving user-authored content over propagating generated content.\n- Brownfield first — the engine merges into existing repositories, never destroys them.\n- `overwrite` never replaces a file the engine did not create: first write of an `overwrite` artifact fails safely when a user-owned file already occupies the destination.\n- Storage is sandboxed against real paths: no read or write may escape the repository through symlinks.\n\nSee [ARCHITECTURE.md](https://github.com/DoozieSoftware/doozctl/blob/main/ARCHITECTURE.md) for the layered design and [spec.md](https://github.com/DoozieSoftware/doozctl/blob/main/spec.md) for the frozen specification.\n\n## Status\n\nAll eight workflows are implemented and tested (484 tests, 96.21% statements / 93.38% branches, built `94.97 KB`) — **`2.0.0` released 2026-09-02** (override: `M-01..M-12` 26/26, 4-repo dogfood `workpermit` gate `READY`):\n\n- ✅ init\n- ✅ sync\n- ✅ analyze\n- ✅ summarize\n- ✅ doctor\n- ✅ status (v2 control-plane view)\n- ✅ plan\n- ✅ verify\n\nSee [ROADMAP.md](https://github.com/DoozieSoftware/doozctl/blob/main/ROADMAP.md) for what shipped in `2.0.0-rc.1` + D-01 and what is next, and\n`docs/release/V2-CLOSE-OUT.md` for the `2.0.0` promotion gate.\n\n## v1.0 definition\n\n`npx doozctl init` creates a repository that can be worked on interchangeably by any AI assistant — Claude Code, Codex CLI, OpenCode, Gemini CLI, Cursor, and future tools — without losing project memory.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}