{"_id":"@egistr/insight-loom","_rev":"2-7b795c35b60734625725992cf0e63e63","name":"@egistr/insight-loom","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@egistr/insight-loom","version":"0.1.0","keywords":["opencode","insight-loom","plugin","technical-blogging","evidence-drafting"],"license":"MIT","_id":"@egistr/insight-loom@0.1.0","maintainers":[{"name":"egistr","email":"egisatria2310@gmail.com"}],"homepage":"https://github.com/EgiStr/insight-loom#readme","bugs":{"url":"https://github.com/EgiStr/insight-loom/issues"},"bin":{"insight-loom":"dist/cli.js"},"dist":{"shasum":"6ccf19b4f020efc812367bc4e10e6d343ad66d41","tarball":"https://registry.npmjs.org/@egistr/insight-loom/-/insight-loom-0.1.0.tgz","fileCount":37,"integrity":"sha512-Sdr26MGi96OvjNMLWRXPXfShXOJEp4EoN+ZF8CfMFXX0Ukk8Zhp6viYqv//Eku4YYi4KjV/zRBj3wgUscat4XA==","signatures":[{"sig":"MEQCIG+JXGLEp+ovNR5qkK/h/IjwoBlGGzCxjDFVxYoglIZfAiBDSezF9eBrMpLVWSj3IMBcuiki423qdbuohJ5bAiyM7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65761},"main":"./dist/plugin.js","type":"module","types":"./dist/plugin.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/plugin.js","./cli":"./dist/cli.js","./plugin":"./dist/plugin.js"},"gitHead":"594aabda687907a97699c6b3691a1cf5caf822aa","scripts":{"test":"node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.json","format":"prettier --check src test *.json *.md docs skill","postbuild":"node -e \"const fs=require('fs');const p='./dist/cli.js';if(fs.existsSync(p)){try{fs.chmodSync(p,0o755)}catch{}}else{console.error('warning: dist/cli.js missing after build')}\"","preformat":"prettier --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"egistr","email":"egisatria2310@gmail.com"},"repository":{"url":"git+https://github.com/EgiStr/insight-loom.git","type":"git"},"_npmVersion":"10.9.7","description":"Safe, local-only evidence drafting plugin for OpenCode","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","prettier":"^3.0.0","typescript":"^5.0.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/insight-loom_0.1.0_1785818006569_0.2404546479798122","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@egistr/insight-loom","version":"0.1.1","description":"Safe, local-only evidence drafting plugin for OpenCode","type":"module","main":"./dist/plugin.js","bin":{"insight-loom":"dist/cli.js"},"exports":{".":"./dist/plugin.js","./plugin":"./dist/plugin.js","./cli":"./dist/cli.js"},"publishConfig":{"access":"public"},"homepage":"https://github.com/EgiStr/insight-loom#readme","repository":{"type":"git","url":"git+https://github.com/EgiStr/insight-loom.git"},"bugs":{"url":"https://github.com/EgiStr/insight-loom/issues"},"scripts":{"build":"tsc -p tsconfig.json","postbuild":"node -e \"const fs=require('fs');const p='./dist/cli.js';if(fs.existsSync(p)){try{fs.chmodSync(p,0o755)}catch{}}else{console.error('warning: dist/cli.js missing after build')}\"","typecheck":"tsc --noEmit","test":"node --import tsx --test test/*.test.ts","preformat":"prettier --write .","format":"prettier --check src test *.json *.md docs skill"},"devDependencies":{"@types/node":"^22.0.0","prettier":"^3.0.0","tsx":"^4.0.0","typescript":"^5.0.0"},"engines":{"node":">=20"},"keywords":["opencode","insight-loom","plugin","technical-blogging","evidence-drafting"],"license":"MIT","_id":"@egistr/insight-loom@0.1.1","gitHead":"594aabda687907a97699c6b3691a1cf5caf822aa","types":"./dist/plugin.d.ts","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-xQyKkDIDtnnDg449rdOyEELTGi1ZDQBdHvcGFuibF+9C0jYbluKteYJ4VIhuiSZOR03OJ4g2AEY5c/AUM65Dsw==","shasum":"561a9e780a81ed3a75d2a40b6330f51a31ea2c9f","tarball":"https://registry.npmjs.org/@egistr/insight-loom/-/insight-loom-0.1.1.tgz","fileCount":37,"unpackedSize":69297,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID11zK+JWoMHs2U8MCUq6G+B557qpI1rkY59EkvhubCOAiARDjXYurVfj7xDpEdjGS9ZJrB4rW+JzCPgh0ThK2FA4A=="}]},"_npmUser":{"name":"egistr","email":"egisatria2310@gmail.com"},"directories":{},"maintainers":[{"name":"egistr","email":"egisatria2310@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/insight-loom_0.1.1_1785825684372_0.28952713838798205"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T04:33:26.461Z","modified":"2026-08-04T06:41:24.684Z","0.1.0":"2026-08-04T04:33:26.713Z","0.1.1":"2026-08-04T06:41:24.518Z"},"bugs":{"url":"https://github.com/EgiStr/insight-loom/issues"},"license":"MIT","homepage":"https://github.com/EgiStr/insight-loom#readme","keywords":["opencode","insight-loom","plugin","technical-blogging","evidence-drafting"],"repository":{"type":"git","url":"git+https://github.com/EgiStr/insight-loom.git"},"description":"Safe, local-only evidence drafting plugin for OpenCode","maintainers":[{"name":"egistr","email":"egisatria2310@gmail.com"}],"readme":"# Insight Loom\n\n`@egistr/insight-loom` is a conservative OpenCode plugin that turns significant completed work into local Markdown drafts. It observes `session.idle` events and writes only to the active worktree's `docs/blog/` directory.\n\n## Features\n\n- Opt-in drafting from meaningful idle-session signals such as changed files, tests, and implementation summaries.\n- Local Markdown drafts, redacted evidence, and operation manifests under `docs/blog/`.\n- Bounded, normalized, deduplicated input handling with recursion protection.\n- Dry-run mode and a configurable minimum signal threshold.\n- No publishing, network requests, credential access, shell-command execution, or direct skill/command invocation.\n\n## Installation and registration\n\nInstall the scoped package in the OpenCode project where the plugin should run:\n\n```sh\nnpm install @egistr/insight-loom\n```\n\nRegister the package name in that project's `opencode.json`:\n\n```json\n{\n  \"plugin\": [\"@egistr/insight-loom\"]\n}\n```\n\nA safe CLI is included for setup and inspection. Use it to initialize a project or global config entry, check whether the plugin is configured, and remove only the exact `@egistr/insight-loom` entry:\n\n```sh\nnpx @egistr/insight-loom init\nnpx @egistr/insight-loom status\nnpx @egistr/insight-loom doctor\nnpx @egistr/insight-loom uninstall --yes\n```\n\nThe CLI defaults to the project-local `opencode.json`. Add `--global` to target `~/.config/opencode/opencode.json`, or `--path` for an explicit file. For a local checkout, you can also register the built plugin file directly:\n\n```json\n{\n  \"plugin\": [\"./node_modules/@egistr/insight-loom/dist/plugin.js\"]\n}\n```\n\n## Configuration and safety\n\nDrafting is disabled by default. Set `OPENCODE_TECH_BLOG_ENABLED=1` to enable it; use `0` to disable it explicitly. Set `OPENCODE_TECH_BLOG_DRY_RUN=1` for dry-run behavior. `OPENCODE_TECH_BLOG_MIN_SIGNALS` is optional and defaults to `2`.\n\nThe plugin does not read credentials, make network requests, publish content, execute shell commands, or invoke OpenCode skills or commands. It rejects paths outside the active worktree and writes with temp-file-plus-rename and exclusive deduplication fingerprints. Inputs are treated as untrusted: they are bounded, redacted, normalized, and checked for recursion markers before persistence. These safeguards do not replace review of generated drafts.\n\n## Output and lifecycle\n\nEach accepted operation produces one terminal result: `drafted`, `ledger-only`, `rejected`, `guarded-rejection`, `partial-failure`, or `failure`. Operation manifests under `docs/blog/.ledger/operations/` link redacted source records, derived artifacts, and review/publication metadata. Publication is intentionally outside this plugin and requires a separate, human-directed workflow.\n\nSee [the operational contract](docs/operational-contract.md) for the local layout, migration, rollback, compatibility, and exclusion details.\n\n## Development\n\nThe package requires Node.js 20 or newer. Run the following checks before submitting changes:\n\n```sh\nnpm run build\nnpm test\nnpm run typecheck\nnpm run format\nnpm pack --dry-run\n```\n\nSee `CONTRIBUTING.md` and `skill/technical-blogging/SKILL.md` for project guidance.\n\n## Importable entry points\n\n- Plugin entry: `@egistr/insight-loom`\n- Explicit subpath: `@egistr/insight-loom/plugin`\n","readmeFilename":"README.md"}