{"_id":"@auron-labs/opencode-impeccable","_rev":"4-26e1601accf72103b39f97e154c17552","name":"@auron-labs/opencode-impeccable","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.0":{"name":"@auron-labs/opencode-impeccable","version":"0.2.0","keywords":["opencode","impeccable","design","frontend","ux","plugin"],"license":"MIT","_id":"@auron-labs/opencode-impeccable@0.2.0","maintainers":[{"name":"aflorey","email":"aaron@buckhamduffy.com"}],"homepage":"https://github.com/auron-labs/opencode-plugins/tree/main/packages/opencode-impeccable","bugs":{"url":"https://github.com/auron-labs/opencode-plugins/issues"},"dist":{"shasum":"632881f001e9762c3ac33c870441585381fc07eb","tarball":"https://registry.npmjs.org/@auron-labs/opencode-impeccable/-/opencode-impeccable-0.2.0.tgz","fileCount":56,"integrity":"sha512-wc1sqGQxhx8TgLquODoYznCu2Ht08NIeZOnDyEKhZWsFcXAcGnh8u3w08l38ROZpEegoBuF26l7BWNGLWhaFPA==","signatures":[{"sig":"MEUCIQDfST+RnsW7DjHuNQlY2wVp26KA6UAsLCbc3sis5+ekUAIgINqWlyjEn9TUGrfaai8+z7PNk8irVUNpRGlifpxIf+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"8f0a8e0f35f375db1cec52d4c0c57044eb9ebf25","scripts":{"sync":"node scripts/sync-impeccable-upstream.mjs","test":"bun run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","sync:check":"node scripts/sync-impeccable-upstream.mjs check","prepublishOnly":"bun run build"},"_npmUser":{"name":"aflorey","email":"aaron@buckhamduffy.com"},"repository":{"url":"git+https://github.com/auron-labs/opencode-plugins.git","type":"git","directory":"packages/opencode-impeccable"},"_npmVersion":"10.9.8","description":"OpenCode plugin that wires Impeccable's design skill routing, detector rules, and post-edit hook into typed tools and commands.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"@opencode-ai/plugin":"^1.17.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.23","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/opencode-impeccable_0.2.0_1785804687162_0.25117936491194537","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@auron-labs/opencode-impeccable","version":"0.3.0","keywords":["opencode","impeccable","design","frontend","ux","plugin"],"license":"MIT","_id":"@auron-labs/opencode-impeccable@0.3.0","maintainers":[{"name":"aflorey","email":"aaron@buckhamduffy.com"}],"homepage":"https://github.com/auron-labs/opencode-plugins/tree/main/packages/opencode-impeccable","bugs":{"url":"https://github.com/auron-labs/opencode-plugins/issues"},"dist":{"shasum":"bfffa0a8a96612ff89d73daf3bf1b6a7bb7e1434","tarball":"https://registry.npmjs.org/@auron-labs/opencode-impeccable/-/opencode-impeccable-0.3.0.tgz","fileCount":163,"integrity":"sha512-UqDl/PM4l6mRSuD4oihr14FFZt/a2Mm7XZzuF7U72IGOKzMjvEAa1qCpWvfkYmKEJ44fqZC9OrktQuE3JnIJ5g==","signatures":[{"sig":"MEUCIFYBX525iRrIMnmp70PrOgSBCZbE9XLZrZOGJQ7LxrSXAiEAhotwbVpHuL8ZsnE9V8iTOapo+2jDXDjXAcA/wVdon3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3194625},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"72e4a14abfced8bb9a670d26fc63c5736b82b890","scripts":{"sync":"node scripts/sync-impeccable-upstream.mjs","test":"bun run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","sync:check":"node scripts/sync-impeccable-upstream.mjs check","prepublishOnly":"bun run build"},"_npmUser":{"name":"aflorey","email":"aaron@buckhamduffy.com"},"repository":{"url":"git+https://github.com/auron-labs/opencode-plugins.git","type":"git","directory":"packages/opencode-impeccable"},"_npmVersion":"10.9.8","description":"Self-contained OpenCode port of Impeccable with editing commands, typed workflow tools, and a post-edit design detector.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"fflate":"^0.8.3","marked":"^18.0.5","css-tree":"^3.2.1","domutils":"^4.0.2","css-select":"^7.0.0","htmlparser2":"^12.0.0","@opencode-ai/plugin":"^1.17.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.23","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.1"},"optionalDependencies":{"puppeteer":"^25.1.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-impeccable_0.3.0_1785817292116_0.08804961339958761","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@auron-labs/opencode-impeccable","version":"0.4.0","keywords":["opencode","impeccable","design","frontend","ux","plugin"],"license":"MIT","_id":"@auron-labs/opencode-impeccable@0.4.0","maintainers":[{"name":"aflorey","email":"aaron@buckhamduffy.com"}],"homepage":"https://github.com/auron-labs/opencode-plugins/tree/main/packages/opencode-impeccable","bugs":{"url":"https://github.com/auron-labs/opencode-plugins/issues"},"dist":{"shasum":"bb5df7752ccf09b315650a4fbe8ebbb083632498","tarball":"https://registry.npmjs.org/@auron-labs/opencode-impeccable/-/opencode-impeccable-0.4.0.tgz","fileCount":168,"integrity":"sha512-Z7HM++iCqvwJQW4udKYwKvStssJVX4jxJLL5ZBSaWq+aEP3VgdskKVyBvTp5yyKR+M4eZyxDgNu1MUDfNSsBhg==","signatures":[{"sig":"MEYCIQCbGayLvbfdReQxMIMwOmqRzjV87k7CtLTYTBstC7wEVAIhAI9GuPDEcF53EONYcSSX34LB4tKEBqEOlEAJMiBYjHCn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3444369},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"2254603546e555628faaea927fdc073389f55b31","scripts":{"sync":"node scripts/sync-impeccable-upstream.mjs","test":"bun run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","check:pack":"node scripts/check-package-contents.mjs","sync:check":"node scripts/sync-impeccable-upstream.mjs check","prepublishOnly":"bun run build"},"_npmUser":{"name":"aflorey","email":"aaron@buckhamduffy.com"},"repository":{"url":"git+https://github.com/auron-labs/opencode-plugins.git","type":"git","directory":"packages/opencode-impeccable"},"_npmVersion":"10.9.8","description":"Self-contained OpenCode port of Impeccable with editing commands, typed workflow tools, and a post-edit design detector.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"fflate":"^0.8.3","marked":"^18.0.5","css-tree":"^3.2.1","domutils":"^4.0.2","css-select":"^7.0.0","htmlparser2":"^12.0.0","@opencode-ai/plugin":"^1.17.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.2.23","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.1"},"optionalDependencies":{"puppeteer":"^25.1.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-impeccable_0.4.0_1786792270083_0.24728282451651884","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@auron-labs/opencode-impeccable","version":"0.5.0","description":"Self-contained OpenCode port of Impeccable with editing commands, typed workflow tools, and a post-edit design detector.","license":"MIT","type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","test":"bun run build && node --test test/*.test.mjs","sync":"node scripts/sync-impeccable-upstream.mjs","sync:check":"node scripts/sync-impeccable-upstream.mjs check","check:pack":"node scripts/check-package-contents.mjs","prepublishOnly":"bun run build"},"packageManager":"bun@1.2.23","publishConfig":{"access":"public"},"engines":{"node":">=22.18.0"},"dependencies":{"@opencode-ai/plugin":"^1.17.15","css-select":"^7.0.0","css-tree":"^3.2.1","domutils":"^4.0.2","fflate":"^0.8.3","htmlparser2":"^12.0.0","marked":"^18.0.5"},"optionalDependencies":{"puppeteer":"^25.1.0"},"devDependencies":{"@types/node":"^26.1.1","typescript":"^7.0.2"},"keywords":["opencode","impeccable","design","frontend","ux","plugin"],"repository":{"type":"git","url":"git+https://github.com/auron-labs/opencode-plugins.git","directory":"packages/opencode-impeccable"},"bugs":{"url":"https://github.com/auron-labs/opencode-plugins/issues"},"homepage":"https://github.com/auron-labs/opencode-plugins/tree/main/packages/opencode-impeccable","_id":"@auron-labs/opencode-impeccable@0.5.0","gitHead":"787c10bc5c49ed08166e232990438b3f35c7bb79","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-XKYaYk1XpeUTdBBBAAXn6/zWntVdDzHbTMw8sps1lPzQNqKeMywl+FF55yS4CW9fy0JB6bKDsWleYXcBbnRUZw==","shasum":"0a40b9dfbdd3f02d02009c83bb58be3e1121729f","tarball":"https://registry.npmjs.org/@auron-labs/opencode-impeccable/-/opencode-impeccable-0.5.0.tgz","fileCount":168,"unpackedSize":3460861,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDDTOQ8Fcf05hlDxVAMGnfQjFRt/saZrAGDopF0KCGzrgIhAJfKlh8hwTsITj4f7cm1SBqY4eq7YFrQTJda+Xx5UAIp"}]},"_npmUser":{"name":"aflorey","email":"aaron@buckhamduffy.com"},"directories":{},"maintainers":[{"name":"aflorey","email":"aaron@buckhamduffy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-impeccable_0.5.0_1787090412415_0.5417503849170697"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T00:51:26.953Z","modified":"2026-08-18T22:00:12.802Z","0.2.0":"2026-08-04T00:51:27.323Z","0.3.0":"2026-08-04T04:21:32.338Z","0.4.0":"2026-08-15T11:11:10.295Z","0.5.0":"2026-08-18T22:00:12.626Z"},"bugs":{"url":"https://github.com/auron-labs/opencode-plugins/issues"},"license":"MIT","homepage":"https://github.com/auron-labs/opencode-plugins/tree/main/packages/opencode-impeccable","keywords":["opencode","impeccable","design","frontend","ux","plugin"],"repository":{"type":"git","url":"git+https://github.com/auron-labs/opencode-plugins.git","directory":"packages/opencode-impeccable"},"description":"Self-contained OpenCode port of Impeccable with editing commands, typed workflow tools, and a post-edit design detector.","maintainers":[{"name":"aflorey","email":"aaron@buckhamduffy.com"}],"readme":"# @auron-labs/opencode-impeccable\n\nA self-contained OpenCode port of [pbakaus/impeccable](https://github.com/pbakaus/impeccable). It provides the `/impeccable` menu, 23 implementation commands, typed workflow tools, and automatic design checks after edits.\n\nThe plugin vendors a version-locked upstream snapshot. It does not install or invoke a separate `impeccable` executable, and its hidden primary implementation agent inherits the user's OpenCode permissions instead of forcing read-only access.\n\n## Install\n\n```bash\nopencode plugin @auron-labs/opencode-impeccable [--global]\n```\n\nAdd the plugin to OpenCode's configuration if your installation does not do so automatically:\n\n```json\n{\n  \"plugin\": [\"@auron-labs/opencode-impeccable\"]\n}\n```\n\nRestart OpenCode after changing plugin configuration.\n\n## Requirements\n\n- OpenCode with plugin support.\n- Node.js 22.18 or newer, matching the locked upstream runtime. The bundled JavaScript is launched directly by the plugin.\n\nNo standalone Impeccable CLI installation is required.\n\n## Commands\n\n`/impeccable` opens the context-aware router. The plugin also registers these implementation commands:\n\n```text\n/impeccable-craft       /impeccable-shape       /impeccable-init\n/impeccable-document    /impeccable-extract     /impeccable-critique\n/impeccable-audit       /impeccable-polish      /impeccable-bolder\n/impeccable-quieter     /impeccable-distill     /impeccable-harden\n/impeccable-onboard     /impeccable-animate     /impeccable-colorize\n/impeccable-typeset     /impeccable-layout      /impeccable-delight\n/impeccable-overdrive   /impeccable-clarify     /impeccable-adapt\n/impeccable-optimize    /impeccable-live\n```\n\nEach command runs through a hidden, capable primary Impeccable agent. Four upstream specialist agents—asset production, finish review, design-system documentation, and live copy-edit application—are also registered as subagents for the playbooks that require independent handoffs. These agents use the permissions already configured by the user; the plugin does not force a read-only policy or inspect global OpenCode configuration to second-guess those permissions.\n\n## Native tools\n\nThe plugin exposes 29 typed tools so upstream playbooks never need `npx impeccable` or raw `node .../scripts` commands. They cover:\n\n- reference and project context loading;\n- detection, doctor, CSP, and ignore workflows;\n- safe project-local command pinning;\n- hook status, configuration, and suppressions;\n- concept seeds, critique storage, surface briefs, image prompts, and image generation;\n- the complete live-design server, polling, resume, completion, insertion, and wrapping workflow.\n\nInstall, update, and version-check tools are intentionally absent. Updating the OpenCode plugin updates its coherent runtime snapshot.\n\nFilesystem-bearing `impeccable_*` arguments are confined to the active worktree: absolute paths, `../` traversal, and symlink escapes outside it are rejected before any bundled script runs. Detector and critique-storage targets also accept `http:`/`https:` URLs where documented. For intentional operations on external paths, use OpenCode's own permission-aware file tools instead.\n\n## Post-edit detector\n\nAfter `write`, `edit`, `multiedit`, `patch`, or `apply_patch`, the plugin passes every touched project file to the bundled upstream hook. The full detector pass runs against supported UI targets and appends its feedback directly to the current tool output as a `<system-reminder>`.\n\nThe hook is fail-open: runtime failures never turn a successful edit into a failed edit, and the user receives at most one warning per session until the session becomes idle. Upstream `.impeccable/config.json` and `.impeccable/config.local.json` settings—including `hook.enabled`, quiet mode, and ignore rules—remain authoritative. Use the `impeccable_hooks_*` and `impeccable_ignores` tools to manage them.\n\n## Options\n\nThe plugin normally needs no options. A custom Node executable can be supplied when necessary:\n\n```json\n{\n  \"plugin\": [\n    [\"@auron-labs/opencode-impeccable\", {\n      \"nodePath\": \"/absolute/path/to/node\"\n    }]\n  ]\n}\n```\n\n`IMPECCABLE_NODE` is also honored when `nodePath` is not set.\n\n## Upstream snapshot\n\n[`upstream-lock.json`](./upstream-lock.json) records the exact Impeccable commit and skill version used by the package. The snapshot includes the upstream skill source, references, runtime scripts, CLI engine modules, and Apache license under `references/` and `vendor/impeccable/`.\n\nFrom this package directory:\n\n```bash\nbun run sync        # update all managed files and the lock to upstream main\nbun run sync:check  # compare all managed files with the immutable locked commit\n```\n\nSync refuses truncated GitHub trees, downloads the snapshot as one coherent unit, and removes stale managed files.\n\n## License\n\nThe plugin source is MIT licensed. Vendored Impeccable files retain the upstream Apache License 2.0 in `vendor/impeccable/LICENSE`.\n","readmeFilename":"README.md"}