{"_id":"1000skills","_rev":"16-f996fb1c65f12dbaf36d612005ffc472","name":"1000skills","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.0":{"name":"1000skills","version":"0.1.0","license":"MIT","_id":"1000skills@0.1.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"1000skills":"dist/cli.js"},"dist":{"shasum":"89773a160369a1a3d8b69e2b254e5147205b2aeb","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.1.0.tgz","fileCount":29,"integrity":"sha512-nPDq6QAEs9lcJRvIM4tgCvlcqehQD4gCKC0m2K1l7uaXkconURyUcR1OQDTscBoObOqRSaaFocAUm22IMBTfnQ==","signatures":[{"sig":"MEUCIDmam9NNJDFZV3bzmAFk/ylxPiigHYFVNE+whsxDg9EZAiEAj7cKSIq/Yd23rCf/npS/WlE/Ex+22wdmpBmEsDFQvl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":666378},"type":"module","_from":"file:/var/folders/1f/_hl93bqd2vz5pbsfx3x7s9_w0000gn/T/1000skills-pack-SJESxE/1000skills-0.1.0.tgz","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json"},"scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run","build":"npm run config-sources:generate && npm run schemas:generate && tsdown","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/** --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","typecheck":"npm run test:types","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","package:publish":"node --experimental-strip-types ./scripts/release-preflight.ts && npm run verify && node ./scripts/verify-packed-consumers.mjs --publish","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"_resolved":"/var/folders/1f/_hl93bqd2vz5pbsfx3x7s9_w0000gn/T/1000skills-pack-SJESxE/1000skills-0.1.0.tgz","_integrity":"sha512-nPDq6QAEs9lcJRvIM4tgCvlcqehQD4gCKC0m2K1l7uaXkconURyUcR1OQDTscBoObOqRSaaFocAUm22IMBTfnQ==","repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"11.12.1","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","jscpd":"5.0.12","tsdown":"0.22.9","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@arethetypeswrong/core":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.1.0_1784829357776_0.29163093687985087","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"1000skills","version":"0.1.1","license":"MIT","_id":"1000skills@0.1.1","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"1000skills":"dist/cli.js"},"dist":{"shasum":"eb9777dbccd3284330a1cbf4f133df863ca30fac","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.1.1.tgz","fileCount":30,"integrity":"sha512-skboNF424W8ri54SMxSgXFlaFHArJe2NGOJq5dAGzxvY+I7ViScBoGaOTy5hgBrdm6acSJFIRH3gM2WkPvRrjA==","signatures":[{"sig":"MEQCIHZg8+EtCAwrsRwA65iMqWwKtaKnNu6isq39cDcgT4hDAiAJ6WGBmPIfSE+ymaA7Aid6YZHlTO3RYbQ/D6IL2MSvfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657339},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json"},"gitHead":"74d60063341737f8c17e8c98a552435877d9d371","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run","build":"npm run config-sources:generate && npm run schemas:generate && tsdown","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/** --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","typecheck":"npm run test:types","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"11.12.1","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","jscpd":"5.0.12","tsdown":"0.22.9","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@arethetypeswrong/core":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.1.1_1784975503091_0.2640805085320914","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"1000skills","version":"0.2.0","license":"MIT","_id":"1000skills@0.2.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"1000skills":"dist/cli.js"},"dist":{"shasum":"54bd9b6092eb8228e7bcda5151b2f5d515de3e08","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.2.0.tgz","fileCount":163,"integrity":"sha512-WEegKurLzWdzYdNZVQpVOBeSSdDVqqHXAzS+CTo6eCjQ35kYQPmIt0gHnqqgZp2WE+DQKSgcwoB5P3AUscFQYA==","signatures":[{"sig":"MEQCIBhTiHvIoVlogUN4g1XYYaPs0astW//0TUjBmGoNActNAiBOO4LAOfvjh23IR3SRTHpYBjcQWiMC6rvc6bo14xfC6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729594},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json"},"gitHead":"e7b8b000a9612f035362daf77158b8d8f3d1073b","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.2.0_1785312441479_0.5800266261796445","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"1000skills","version":"0.3.0","license":"MIT","_id":"1000skills@0.3.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"3df96601e6129f18f919ee7f0f8306d231593ee0","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.3.0.tgz","fileCount":209,"integrity":"sha512-+/SRd+PaveyaJVxmzV3rj69boqYxFn4PizE9XjiLDM8icmIdtFJuz8XfrO8FbHnW0ePXBmPu/vlaF7GJlpcFbg==","signatures":[{"sig":"MEUCIHk7LeZKoGD8CBLARx7RUPUahOFwVZOxTNGYXwZOYzxkAiEA3XS+9SKKXioy/7CX/PaJnafqrilGd6bqTMuzYrG0ybU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":985718},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"42569f78392c4461093178e5cb91ebf4b35e5115","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.3.0_1785450263424_0.5555886460308406","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"1000skills","version":"0.3.1","license":"MIT","_id":"1000skills@0.3.1","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"ae84b84ca7887a366b0d29f9873ac91a121467a0","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.3.1.tgz","fileCount":209,"integrity":"sha512-C3uBZ4lcxB/5zaq5H4xq/2+K6jexUwxRW6HOM7Q61gg4OPlKShKcAdb821bzsy7xy7d3tK62fcfLeDKw6/L1Tw==","signatures":[{"sig":"MEQCIByjaTE8GvWYc4l/VVN4CI/tacfCoy9U2BNslxm2f1WEAiBcsbqH3n8bOrYNyJMfnHY1unbmTskRCpQTXCmPpN0S8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":988262},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"d36e147e87bdf4973bc68c83b0e101b0e08d6a63","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.3.1_1785478373482_0.25276112787105354","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"1000skills","version":"0.4.0","license":"MIT","_id":"1000skills@0.4.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"97c6c877b5a9fafa2c3072a5700e92e8337d3e88","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.4.0.tgz","fileCount":213,"integrity":"sha512-bbjOC3lyqpTHmD9yAAXCHGkT/Q1MN6E6fSF1kVC2LTwTmq+zedWbRp8txnUNKtk2pc22q4yd/01D7Uih+h2sow==","signatures":[{"sig":"MEUCIHSfl5Y1Fj/b2/AiepNLLOMFSpaOTzbQ8CyFIvkgbaUPAiEAtRbTbA2amrZvI28astZY/p7rOAUw3PHWpE7+5fGTcu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1029849},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"26e96cbc0f73e17d779c9ac46cee564260d33c43","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.4.0_1785532911960_0.059509956379239615","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"1000skills","version":"0.4.1","license":"MIT","_id":"1000skills@0.4.1","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"d2b6d93005b796be4c6a53f13f8e3202a96c9f51","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.4.1.tgz","fileCount":213,"integrity":"sha512-U9gOikEEjW2jJYkt4ZFmkLbk6vxS+g1Ym/SdIJfH9EEX1SbGORsXZrPHpQw5tTgDl327RZfPbHiJHW6b4YO+lA==","signatures":[{"sig":"MEUCIDNbf4wabpclD36L415P+Ktuei32ZG9dFaY4JOV7oOMEAiEArBNO0K8KFlQaEjTHNrH9ngj9lzrdQJclNx+XwZdlvGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1032135},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"716bb21832ffa80cd0abc4f5e1e3dfb35d4d24e2","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.4.1_1785536621001_0.5175923741295563","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"1000skills","version":"0.5.0","license":"MIT","_id":"1000skills@0.5.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"75ec77d0695ffed4363ab8cf04b039377f21631d","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.5.0.tgz","fileCount":243,"integrity":"sha512-5pv2wNJtcdfw5ZVtFF6rLqN3M1XNCUJulsNGfad+/7IlxP2Sygyuf0T1vnRuuLXFb6S5lxSPh8peJ/5mwFZyUQ==","signatures":[{"sig":"MEUCIQCTP78iX36ElYJAAZ/zzBd/x5S2YongG9y86J4C7ZTDDwIgLJKY5491x6518ldUx/dpjVl0WdwZ0wgX2c41UiRyzME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1394593},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"92f937318f48a147ac8f17cca6dc215ec1f52371","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.5.0_1785658137471_0.4774346056474674","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"1000skills","version":"0.5.1","license":"MIT","_id":"1000skills@0.5.1","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"72a7382fb8c7aa36663f9c1194f6b677d07fe606","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.5.1.tgz","fileCount":246,"integrity":"sha512-EDco5P8NY0s6RYzNwPw6Rndcmzk66Uk1nol4EnB5h8Qj9u01AvJjJBMNe6mHWLx/k5k/Xf5qw+XztDpzLIAQMw==","signatures":[{"sig":"MEUCIQCPYXuY3JyUCi2qdHtV6QSMMb8OA0bUns/gPKfKHOE5PAIgF3rWuN77Pxl3RjKqmp5az9u/F98iUSopbSBeCEtPJqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1416245},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"9aed7727b4bb307d36ea6a9b2ba17c27678520d8","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.5.1_1785710118495_0.5218537872131443","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"1000skills","version":"0.5.2","license":"MIT","_id":"1000skills@0.5.2","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"0fb1242a13df82972716f92d9ef53cc11d9789cd","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.5.2.tgz","fileCount":246,"integrity":"sha512-V7WqqN/Rrz+G/uYrsfpgtQYotQncgGV1IuBH/RkQxQtMauv02WWmNmmfo8jEJTsci2a4MX9rI1vlUgX+CEAS0w==","signatures":[{"sig":"MEQCIEVgJqF194iFAtioC3t54FGYa6i8XyHYC8pYyu6wVqPtAiAI/5ltl5H41kNKAlV3UuN3uOSn+eAKBORN4EeF9QINBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1419850},"type":"module","_from":"file:/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.5.2.tgz","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"_resolved":"/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.5.2.tgz","_integrity":"sha512-V7WqqN/Rrz+G/uYrsfpgtQYotQncgGV1IuBH/RkQxQtMauv02WWmNmmfo8jEJTsci2a4MX9rI1vlUgX+CEAS0w==","repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.5.2_1785739949354_0.01966817563262424","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"1000skills","version":"0.6.0","license":"MIT","_id":"1000skills@0.6.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"238d9ff385657bf72dac54cad6fa797f24ae8646","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.6.0.tgz","fileCount":258,"integrity":"sha512-3ytOpRXj8DYW1wFu9H1viXYXcc7TwGub3znv7J5C7cubWhEj1cuYNfDmDkStHKCkkkIxlNjprHadaEZlKuCk7Q==","signatures":[{"sig":"MEUCIQDAdbfnKmjJQgvQzQMSE9F7s+QvTjPZsJ3CDmnNQFt9SQIgaUPFkfj7JG6MoB8fGdEoQrn9uHZ7vmpi8ckWp0w4ZcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1524984},"type":"module","_from":"file:/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.6.0.tgz","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"_resolved":"/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.6.0.tgz","_integrity":"sha512-3ytOpRXj8DYW1wFu9H1viXYXcc7TwGub3znv7J5C7cubWhEj1cuYNfDmDkStHKCkkkIxlNjprHadaEZlKuCk7Q==","repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.6.0_1785789562542_0.8716726007518567","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"1000skills","version":"0.7.0","license":"MIT","_id":"1000skills@0.7.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"498f9ff6a376ae691a58002f675f931819f4d77c","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.7.0.tgz","fileCount":258,"integrity":"sha512-uAje+pcve2osUF892bgS8z43LD2VLjOut6CZQ2zaUDbVttSM7HdqSUrslGw6psALjC5LzaEUwZabCJuxm+Xzzw==","signatures":[{"sig":"MEYCIQCO77lYQlEHvaUWeSdzwY/tbMM/tOidYYgg1BG7GY5mWgIhAKbJYGQSAg6Qa4zYCXmCOyJeLjDF7JCj5rrSWz5l5KeA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1541568},"type":"module","_from":"file:/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.7.0.tgz","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"_resolved":"/Users/max.tarsis/projects/gh/1000skills/packages/1000skills/temp/release-candidate/1000skills-0.7.0.tgz","_integrity":"sha512-uAje+pcve2osUF892bgS8z43LD2VLjOut6CZQ2zaUDbVttSM7HdqSUrslGw6psALjC5LzaEUwZabCJuxm+Xzzw==","repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.7.0_1785798801975_0.6882619596021111","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"1000skills","version":"0.8.0","license":"MIT","_id":"1000skills@0.8.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"bd2e7b4cf077a93ebc9fa2e351342afc203bd211","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.8.0.tgz","fileCount":264,"integrity":"sha512-dQLzGX4lAD9qjdhbjedoNERETg7+n4rd1xx7gTt5RCiUTArOlrXyeKkZsp14ZkB51Dgra2yFSt+3J3H7eD8K4A==","signatures":[{"sig":"MEQCIEeRSs/yoQEaTrlTvIcNy1kcbRZoKUVwMWvyjYmpRTAJAiBniFC+U/5UT1912EL5IT1g8e6uLmkrB/4lWDkgJPMj5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1544764},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"bd836e131780d5c6a4e55734b4f8cd0ad25aae24","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/published-release-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs ../../scripts/validate-release-attestations.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","release:verify":"node ./scripts/verify-published-release.mjs","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","release:materialize":"node ./scripts/materialize-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.8.0_1785877273581_0.564465600010081","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"1000skills","version":"0.9.0","license":"MIT","_id":"1000skills@0.9.0","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"d5d99709cedec1fd3d655e49331a341d53208e33","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.9.0.tgz","fileCount":270,"integrity":"sha512-p9j6UkFe45p8tbfXGfg4XAmF9lY1DMBNxB4gcZANexHq/lObiaCc/lLADygQFsrBm6IHR4ON/VEDtS31Zg2t1A==","signatures":[{"sig":"MEUCIQCh5Zu0dpzvDYWphaUVKEGYpmjTbW0AFHoVYxcUGegnGAIgGGx0pup0sLMEzmUbEiBzxu3ZEpYnNVCaZdlicVc/77o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1575330},"type":"module","_from":"file:/private/tmp/1000skills-release/1000skills/0.9.0/81b1860c4472f62747da948a2ef96d60/1000skills-0.9.0.tgz","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/published-release-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs ../../scripts/validate-release-attestations.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","release:verify":"node ./scripts/verify-published-release.mjs","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","release:materialize":"node ./scripts/materialize-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"_resolved":"/private/tmp/1000skills-release/1000skills/0.9.0/81b1860c4472f62747da948a2ef96d60/1000skills-0.9.0.tgz","_integrity":"sha512-p9j6UkFe45p8tbfXGfg4XAmF9lY1DMBNxB4gcZANexHq/lObiaCc/lLADygQFsrBm6IHR4ON/VEDtS31Zg2t1A==","repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.9.0_1785931676886_0.8275849676779967","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"1000skills","version":"0.9.1","license":"MIT","_id":"1000skills@0.9.1","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"homepage":"https://github.com/kioviensis/1000skills#readme","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"bin":{"goal-loop":"dist/goal-loop/cli.js","1000skills":"dist/cli.js"},"dist":{"shasum":"27253108d4b0d06ee86e88f01db8a35b555385d3","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.9.1.tgz","fileCount":270,"integrity":"sha512-MrTY92aU5Om6wIcR2d6TltJ5lTKJxVDF0h3pXcsi35JxYqQtQP3TVhI+AKqe40l26chodjj3fQ1Fb0DxSaux8Q==","signatures":[{"sig":"MEQCIGglx8A2CsNFttnHi3EyOjn32D5bLb8UxX+8SB4+QWH0AiB3z6WcO3XNC3eN5s4os2qlef7pyfQvAKaIhB135/r0Kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1575497},"type":"module","engines":{"node":">=22.12"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./package.json":"./package.json","./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json"},"gitHead":"89471379cbfe0f2d6b36676227bc530b1bc10bf4","scripts":{"knip":"knip --config knip.json --treat-config-hints-as-errors","lint":"tsc --noEmit","test":"npm run config-sources:check && vitest run && npm run test:scripts","build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","analyze":"npm run knip && npm run jscpd","prepack":"npm run verify","api:check":"node --test ./scripts/api-check.test.mjs","typecheck":"npm run test:types","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","test:types":"tsc --noEmit --pretty false","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","package:lint":"node ./scripts/run-package-lint.mjs","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/published-release-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs ../../scripts/validate-release-attestations.test.mjs","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","release:verify":"node ./scripts/verify-published-release.mjs","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","release:materialize":"node ./scripts/materialize-release-candidate.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","config-sources:generate":"node ./scripts/generate-config-sources.mjs"},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"prettier":{"semi":true,"useTabs":false,"tabWidth":2,"endOfLine":"lf","printWidth":100,"arrowParens":"always","singleQuote":false,"trailingComma":"all","bracketSpacing":true},"repository":{"url":"git+https://github.com/kioviensis/1000skills.git","type":"git","directory":"packages/1000skills"},"_npmVersion":"10.9.4","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","amaro":"1.1.11","typebox":"1.3.6","picomatch":"4.0.5","oxc-parser":"0.140.0","typescript-compiler":"npm:typescript@6.0.3","mdast-util-from-markdown":"2.0.3"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"knip":"6.27.0","pnpm":"10.34.5","yarn":"1.22.22","jscpd":"5.0.12","vitest":"4.1.10","publint":"0.3.21","prettier":"3.9.5","typescript":"7.0.2","@types/node":"22.20.1","@types/picomatch":"4.0.3","@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11"},"_npmOperationalInternal":{"tmp":"tmp/1000skills_0.9.1_1786223052668_0.4050798108798692","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"1000skills","version":"0.10.0","description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","license":"MIT","type":"module","bin":{"1000skills":"dist/cli.js","goal-loop":"dist/goal-loop/cli.js"},"exports":{"./harness":{"types":"./dist/harness/index.d.ts","import":"./dist/harness/index.js"},"./harness/client":{"types":"./dist/harness/client.d.ts","import":"./dist/harness/client.js"},"./goal-loop":{"types":"./dist/goal-loop/index.d.ts","import":"./dist/goal-loop/index.js"},"./pi-extension":{"types":"./dist/pi-extension/index.d.ts","import":"./dist/pi-extension/index.js"},"./schema/harness.json":"./schemas/harness.schema.json","./schema/harness-evals.json":"./schemas/harness-evals.schema.json","./schema/command-envelope.json":"./schemas/command-envelope.schema.json","./schema/trace-event.json":"./schemas/trace-event.schema.json","./schema/goal-loop-manifest.json":"./schemas/goal-loop-manifest.schema.json","./package.json":"./package.json"},"scripts":{"build":"npm run config-sources:generate && npm run schemas:generate && node ./scripts/build.mjs","config-sources:generate":"node ./scripts/generate-config-sources.mjs","config-sources:check":"node ./scripts/generate-config-sources.mjs --check","schemas:generate":"node --experimental-strip-types ./scripts/generate-schemas.ts","schemas:check":"node --experimental-strip-types ./scripts/generate-schemas.ts --check","typecheck":"npm run test:types","test":"npm run config-sources:check && vitest run && npm run test:scripts","test:scripts":"node --test ./scripts/release-candidate-lib.test.mjs ./scripts/published-release-lib.test.mjs ./scripts/script-process.test.mjs ../../scripts/sdk-changeset-policy.test.mjs ../../scripts/validate-release-attestations.test.mjs","test:types":"tsc --noEmit --pretty false","knip":"knip --config knip.json --treat-config-hints-as-errors","jscpd":"jscpd src scripts test --min-lines 8 --min-tokens 60 --threshold 2 --ignore **/test/helpers/**,**/test/fixtures/**/*.json --reporters console,threshold --no-tips","format":"prettier --write \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","format:check":"prettier --check \"{src,test,scripts}/**/*.{ts,mjs}\" \"schemas/**/*.json\" \"*.json\" \"*.config.ts\"","analyze":"npm run knip && npm run jscpd","api:update":"api-extractor run --local --config api-extractor.harness.json && api-extractor run --local --config api-extractor.client.json && node ./scripts/normalize-api-reports.mjs","api:check":"node --test ./scripts/api-check.test.mjs","package:lint":"node ./scripts/run-package-lint.mjs","package:consumers":"node ./scripts/verify-packed-consumers.mjs","release:candidate":"node ./scripts/verify-release-candidate.mjs","release:materialize":"node ./scripts/materialize-release-candidate.mjs","release:verify":"node ./scripts/verify-published-release.mjs","lint":"tsc --noEmit","verify":"npm run config-sources:check && npm run schemas:check && npm run format:check && npm run typecheck && npm run test && npm run build && npm run analyze && npm run api:check","prepublishOnly":"npm whoami || (echo 'npm not authenticated — run npm login first' && exit 1)","prepack":"npm run verify"},"engines":{"node":">=22.12"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/kioviensis/1000skills.git","directory":"packages/1000skills"},"dependencies":{"ajv":"8.20.0","amaro":"1.1.11","mdast-util-from-markdown":"2.0.3","oxc-parser":"0.140.0","picomatch":"4.0.5","typescript-compiler":"npm:typescript@6.0.3","typebox":"1.3.6","yaml":"2.9.0"},"devDependencies":{"@arethetypeswrong/cli":"0.18.5","@microsoft/api-extractor":"7.58.11","@types/node":"22.20.1","@types/picomatch":"4.0.3","jscpd":"5.0.12","knip":"6.27.0","prettier":"3.9.5","pnpm":"10.34.5","publint":"0.3.21","typescript":"7.0.2","vitest":"4.1.10","yarn":"1.22.22"},"prettier":{"printWidth":100,"tabWidth":2,"useTabs":false,"semi":true,"singleQuote":false,"trailingComma":"all","bracketSpacing":true,"arrowParens":"always","endOfLine":"lf"},"_id":"1000skills@0.10.0","gitHead":"606d1a174be3609248dad45a0333fbb7ec88bb79","bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"homepage":"https://github.com/kioviensis/1000skills#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-DRnZhFPG4dDBrimOzwJkDw0GRP68RrzyFaAylxexo1+EmyqAvC3gDg+775P+x8DPUo4I+i8LoMa1qm8HNxLUNw==","shasum":"b8ca21668125407cca6b7b36c96d280f82ca7e58","tarball":"https://registry.npmjs.org/1000skills/-/1000skills-0.10.0.tgz","fileCount":324,"unpackedSize":1623633,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCLXu7p6HLP4e+aaJs5e5NXYjgCoYO3re7T2G4O8nKhtAIhAKiZfM4rq6yB1LCA/zVkJSvsawdFTdcYSatmrS8yMGfo"}]},"_npmUser":{"name":"retarsis","email":"tarsis.maksym@gmail.com"},"directories":{},"maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/1000skills_0.10.0_1786297088399_0.31722704705562976"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T17:55:57.595Z","modified":"2026-08-09T17:38:08.747Z","0.1.0":"2026-07-23T17:55:57.970Z","0.1.1":"2026-07-25T10:31:43.339Z","0.2.0":"2026-07-29T08:07:21.654Z","0.3.0":"2026-07-30T22:24:23.618Z","0.3.1":"2026-07-31T06:12:53.649Z","0.4.0":"2026-07-31T21:21:52.126Z","0.4.1":"2026-07-31T22:23:41.175Z","0.5.0":"2026-08-02T08:08:57.644Z","0.5.1":"2026-08-02T22:35:18.667Z","0.5.2":"2026-08-03T06:52:29.493Z","0.6.0":"2026-08-03T20:39:22.717Z","0.7.0":"2026-08-03T23:13:22.151Z","0.8.0":"2026-08-04T21:01:13.796Z","0.9.0":"2026-08-05T12:07:57.024Z","0.9.1":"2026-08-08T21:04:12.844Z","0.10.0":"2026-08-09T17:38:08.572Z"},"bugs":{"url":"https://github.com/kioviensis/1000skills/issues"},"license":"MIT","homepage":"https://github.com/kioviensis/1000skills#readme","repository":{"type":"git","url":"git+https://github.com/kioviensis/1000skills.git","directory":"packages/1000skills"},"description":"Typed authoring SDK and deterministic runtime for repository agent harnesses","maintainers":[{"name":"retarsis","email":"tarsis.maksym@gmail.com"}],"readme":"<p align=\"center\"> <img src=\"./assets/readme/sdk-hero.svg\" width=\"100%\" alt=\"1000skills compiles typed harness policy into deterministic harness-v5 and eval-v5 JSON for routing, checks, and explicit traces\"> </p>\n\n# Repository policy that agents can execute\n\n`1000skills` is a typed authoring SDK and deterministic JSON runtime for repository agent harnesses.\n\nAuthors describe routes, required context, file-class checks, overlays, and evaluations in a closed TypeScript module graph; runtime commands consume generated harness-v5 and eval-v5 JSON and never execute that source graph.\n\nIt ships as one ESM-only npm package for Node 22.12 and later.\n\n## Install\n\n```bash\nnpm install --save-exact 1000skills\nnpm exec -- 1000skills harness init\n```\n\nThe equivalent pnpm commands are `pnpm add --save-exact 1000skills` and `pnpm exec 1000skills harness init`. With Yarn, use `yarn add --exact 1000skills` and `yarn 1000skills harness init`.\n\n`init` never overwrites starter files. When `package.json` exists, it wires missing harness package scripts from the public command catalog, including route, sync, diagnose, trace, complete check, and changed-file checks.\nIt also replaces script values that invoke the retired `.agents/router/` implementation or exactly match a legacy command declared by the catalog, such as `1000skills harness changed` without forwarded file arguments. Other existing script values are preserved.\n\n## Run A Bounded Goal\n\nThe package also installs `goal-loop`, a bounded foreground supervisor for agent work. A strict JSON manifest locks the objective, workspace, adapter, acceptance commands, and resource limits before the first attempt.\n\n```bash\ngoal-loop run --spec ./goal.json\ngoal-loop status <goal-id>\ngoal-loop doctor\n```\n\nAgent output is only a candidate. `goal-loop` records append-only lifecycle events and reports `succeeded` only after locked acceptance commands pass.\n\nForeground mode owns and terminates the complete process tree on timeout or interruption.\n\nBackground, resume, external-stop, and human-answer controls are not exposed. They remain gated on verified private-worker ownership, restart reconciliation, panic-stop, and at-most-one-process tests.\n\nThe manifest schema is published as `1000skills/schema/goal-loop-manifest.json`, and programmatic types are exported from `1000skills/goal-loop`.\n\n## The contract\n\n```text\nharness.config.ts + .agents/harness/*.ts\n              │\n       check · snapshot · compile twice\n              ▼\n .agents/harness.json + .agents/harness.evals.json\n              │\n route · check · changed · inspect · diagnose · explicit trace\n```\n\nCompilation validates the closed source graph, strict types, ownership, membership, discovery, filesystem references, context budgets, collisions, and eval expectations. Matching fingerprints bind the generated pair; artifacts contain no timestamps, absolute paths, environment data, or secrets.\n\n| Contract             | Current value |\n| -------------------- | ------------: |\n| Harness schema       |            v5 |\n| Eval schema          |            v5 |\n| JSON output envelope |            v5 |\n| Trace protocol       |            v2 |\n\n`package.json` is the source of truth for the package version.\n\n## Keep the control plane small\n\n`harness.config.ts` composes repository policy; it is not a second architecture document or a source-file inventory.\n\n- Routes are mutually exclusive primary work surfaces with meaningfully different context.\n- Overlays add concerns that can coexist with a primary route, such as testing, review, security, motion, or routing audit.\n- File classes map changed paths to verification. Start with one baseline and add only source-backed exceptions.\n- Guides and skills own durable knowledge. The config points to them instead of repeating them.\n\nReview the shape when a harness grows beyond roughly a dozen primary routes, repeats effective route context, uses dense trigger lists, or defines routes with no context delta. `harness check` and `harness diagnose` report these as complexity warnings.\n\nFile-class counts have no complexity threshold because repository verification taxonomies vary legitimately.\n\n## Author a harness\n\nKeep the root entrypoint small and put human-owned authoring modules under `.agents/harness/`:\n\n```typescript\n// harness.config.ts\nimport { defineHarness } from \"1000skills/harness\";\nimport { author } from \"./.agents/harness/author.ts\";\n\nexport default defineHarness(author);\n```\n\n```typescript\n// .agents/harness/author.ts\nimport type {\n  HarnessAuthoringContext,\n  HarnessAuthoringResult,\n  HarnessOwner,\n} from \"1000skills/harness\";\n\nconst ids = {\n  bugFix: \"bug-fix\",\n  fallback: \"fallback\",\n} as const satisfies Record<string, string>;\n\nexport function author<Owner extends HarnessOwner>(\n  h: HarnessAuthoringContext<Owner>,\n): HarnessAuthoringResult<Owner> {\n  const policy = h.context.file(\"AGENTS.md\", \"Repository policy\");\n  const testing = h.reference.guide({\n    id: \"testing\",\n    path: \".agents/guides/testing.md\",\n  });\n  const fixBug = h.reference.skill({\n    id: \"fix-bug\",\n    path: \".agents/skills/fix-bug/SKILL.md\",\n  });\n  const typecheck = h.command.packageScript({ id: \"typecheck\", script: \"typecheck\" });\n  const bugFix = h.route.define({\n    id: ids.bugFix,\n    priority: 80,\n    skill: fixBug,\n    triggers: {\n      keywords: [\"bug\", \"failing\", \"regression\"],\n      intents: [\"fix\", \"repair\"],\n      paths: [\"src/**\"],\n    },\n    mandatory: [\n      h.context.include(fixBug, \"Use the repair workflow\"),\n      h.context.include(testing, \"Add regression coverage\"),\n    ],\n  });\n  const fallback = h.route.fallback({ id: ids.fallback });\n  const source = h.fileClass.define({\n    id: \"typescript\",\n    patterns: [\"src/**/*.ts\", \"src/**/*.tsx\"],\n    recommendations: h.command.recommend({\n      command: typecheck,\n      reason: \"TypeScript changes require type checking\",\n    }),\n  });\n  const bugEvals = h.eval.routeCases({\n    route: bugFix,\n    skill: fixBug,\n    mandatory: [policy, fixBug, testing],\n    cases: [\n      {\n        id: \"bug-fix-render\",\n        prompt: \"Fix the failing render test in src/Button.test.tsx\",\n      },\n    ],\n  });\n  const fallbackEval = h.eval.case({\n    id: \"fallback-general\",\n    prompt: \"Explain the repository\",\n    expect: {\n      route: fallback,\n      mandatory: [policy],\n    },\n  });\n\n  return {\n    core: { mandatory: [policy] },\n    routes: [bugFix, fallback],\n    fallback,\n    fileClasses: [source],\n    evals: [...bugEvals, fallbackEval],\n    packageManager: \"npm\",\n  };\n}\n```\n\nThe public authoring surface centers on `defineHarness`, opaque `HarnessDefinition`, owner-generic `HarnessAuthoringContext`, and `HarnessAuthoringResult`.\n\n`HarnessHandle` supports owner-preserving generic utilities; named handle, input, and scalar/batch case contracts remain public so declaration consumers never depend on hidden types.\nTyped handles catch kind mistakes in TypeScript; compilation catches ownership, membership, discovery, filesystem, section, link, collision, budget, and eval errors. Normalized runtime models remain private.\n\nExplicit reference inputs may declare `authority: { files: [\"path\", ...] }`. This applies to `h.reference.guide`, `h.reference.skill`, `h.reference.helper`, and `h.reference.adapter`. Authority files are securely resolved repository-relative inputs whose fingerprints are stored with that reference.\nThey are not loaded as routed context, and no diagnostic judges whether either file's prose is correct.\n\nChanging authority bytes, registering or removing authority tracking, or changing its source set requires semantic review. Normal write-mode sync refuses to replace recorded fingerprints until the reviewer runs `1000skills harness sync --accept-authority`.\nUnchanged authority continues through ordinary sync, while initial authority registration also uses the explicit acceptance path.\n\nThe compact authoring families are `h.reference.guides`, `h.context.namedSections`, `h.command.packageScripts`, `h.command.recommend`, `h.sourceSet.define`, `h.sourceSet.harnessInputs`, `h.eval.routeCaseMap`, and `h.eval.changedCaseMap`.\n`recommend` accepts one `{ command, reason }` object or a readonly array of those objects and always returns a fresh mutable handle array, including for empty input.\n\n`h.sourceSet.define({ id, patterns })` returns an owner-branded reusable static pattern handle.\nRoute and overlay `triggers.paths`, fallback-only `intentionalPaths`, and file-class `patterns` accept it beside literal strings, flatten it at authoring time in first-occurrence order, and emit only literal patterns; source-set identity does not enter generated artifacts.\nPrimary route inputs reject `intentionalPaths`; every generated fallback route contains its canonical string array, including `[]`. Static sets require a safe unique ID and at least one nonblank string pattern.\nThey cannot contain another source-set handle, and a private scoped set must be exported and imported before another scope can use it.\n\n`h.route.overlayGroup({ id, mandatory?, variants })` keeps one conceptual concern within the overlay complexity budget while giving each source-backed trigger family its own mandatory context.\nVariant record keys become stable flat overlay IDs in `<group>.<variant>` form; the returned `variants` map and `overlays` array contain ordinary owner-branded overlay handles.\nGroup-common context is prepended to each variant, matching variants compose additively, and runtime output, eval expectations, coverage, inspect, and trace use the flat IDs without a second selection mechanism.\n\n```typescript\nconst externalFetch = h.route.overlayGroup({\n  id: \"external-fetch\",\n  mandatory: [externalFetchSecurity],\n  variants: {\n    \"media-proxy\": {\n      triggers: { paths: [mediaProxySources] },\n      mandatory: [mediaProxyApi],\n    },\n    pinterest: {\n      triggers: { paths: [pinterestSources] },\n      mandatory: [pinterestContract, providerSecrets],\n    },\n  },\n});\n\nreturn {\n  overlays: [...externalFetch.overlays],\n  // ...\n};\n```\n\nHarness-v5 stores optional strict group identity on each flat variant so complexity checks count conceptual groups while retaining per-variant coverage and trace recall. Ordinary overlays remain unchanged.\nOne-variant groups, groups above six variants, more than 32 flat overlays, duplicate effective context, and variants with no context delta fail or warn through the normal complexity gate.\n\n```typescript\nconst applicationSources = h.sourceSet.define({\n  id: \"application-sources\",\n  patterns: [\"app/**\", \"src/**\", \"lib/**\"],\n});\n\nconst implementation = h.route.define({\n  id: \"implementation\",\n  triggers: { paths: [applicationSources, \"packages/**\"] },\n});\n\nconst source = h.fileClass.define({\n  id: \"source\",\n  patterns: [applicationSources, \"tests/**\"],\n  recommendations: [],\n});\n\nconst fallback = h.route.fallback({\n  id: \"fallback\",\n  intentionalPaths: [applicationSources, \"README.md\"],\n});\n```\n\n`h.sourceSet.harnessInputs(options?)` is a separate dynamic handle accepted only beside literal file-class patterns. The compiler expands it to harness-v5 string patterns.\nIts closure comes from the prepared config graph, referenced knowledge, explicit required files, the fixed artifact pair, configured generated surfaces, and selected human-owned root adapters. Runtime traces are excluded unless `runtime-evidence` is explicitly included.\nReferenced knowledge includes each reference file and its declared authority files. Authority bytes also participate in the discovery fingerprint even when the routed reference itself is unchanged.\n`include` selects facets and `exclude` removes facets, so references can remain under a different file-class gate.\n\n```typescript\nconst harnessInputs = h.fileClass.define({\n  id: \"harness-inputs\",\n  patterns: [h.sourceSet.harnessInputs({ exclude: [\"references\"] }), \"docs/harness-policy.md\"],\n  recommendations: h.command.recommend({\n    command: checkHarness,\n    reason: \"Harness inputs must leave generated surfaces fresh\",\n  }),\n});\n```\n\nSplit modules can contribute definitions without making the root re-list every handle. `h.scope(id, scoped => ({ exports, routes, overlays, evals, fileClasses, subagents }))` requires explicit exports and contributions. Grouped variants contribute and export their ordinary overlay handles.\n`h.compose({ core, fallback, scopes, ... })` flattens them. A dependent scope calls `scoped.imports(otherScope.exports)` before using public handles. Omitted scopes, private imports, uncontributed definitions or exports, duplicate contributions, and foreign owners fail closed.\nExisting configs may continue returning `HarnessAuthoringResult` directly.\n\n```typescript\nconst routing = h.scope(\"routing\", (scoped) => {\n  const fallback = scoped.route.fallback({ id: \"fallback\" });\n  return { exports: { fallback }, routes: [fallback] };\n});\n\nconst evals = h.scope(\"evals\", (scoped) => {\n  const publicRouting = scoped.imports(routing.exports);\n  const fallback = scoped.eval.case({\n    id: \"fallback-general\",\n    prompt: \"Explain the repository\",\n    expect: { route: publicRouting.fallback },\n  });\n  return { exports: {}, evals: [fallback] };\n});\n\nreturn h.compose({\n  core: { mandatory: [] },\n  fallback: routing.exports.fallback,\n  scopes: [routing, evals],\n});\n```\n\nRegistry keys are local aliases, eval-map keys are explicit eval IDs, and reasons and artifact IDs remain explicit. Scalar and batch declarations with the same decoded meaning may have different config fingerprints because fingerprints include the exact checked source graph.\n\nRoute evals make context promotion intent explicit. When a selected overlay supplies route-conditional context as mandatory, authoring fails with `eval.promotions_required` unless `expect.promotions` names the promoted context in the exact composed order.\nA supplied list that differs from the composed result fails with `eval.promotions_mismatch`; when there are no promotions, omission or an empty list is valid.\n\n```typescript\nconst testing = h.context.file(\"docs/testing.md\", \"Use test policy\");\nconst implementation = h.route.define({\n  id: \"implementation\",\n  triggers: { intents: [\"implement\"] },\n  conditional: [testing],\n});\nconst verify = h.route.overlay({\n  id: \"verify\",\n  triggers: { keywords: [\"verify\"] },\n  mandatory: [testing],\n});\nconst implementationEval = h.eval.case({\n  id: \"implementation-verify\",\n  prompt: \"Implement and verify the change\",\n  expect: { route: implementation, overlays: [verify], promotions: [testing] },\n});\n```\n\nThe authoring API and runtime client deliberately use separate entry points. `1000skills/harness` stays dependency-light and hermetic because it is the only module a harness config may import.\n\n`1000skills/harness/client` is for programs that consume versioned CLI envelopes and therefore includes runtime schema validation. Keeping that boundary prevents authoring configs from loading the runtime validator while allowing both interfaces to evolve within the same package.\n\nThe config graph is closed and bounded to 8 import levels, 32 files including the root, and 512 KiB of source. Static imports may target only `1000skills/harness` or explicit relative `.ts` files whose logical and real paths remain under `.agents/harness/`.\n\nAliases, other bare packages, JavaScript, JSON, extensionless imports, dynamic imports, cycles, duplicate realpaths, symlink escapes, and oversized graphs are rejected.\n\nSync typechecks every source module before execution with SDK-pinned TypeScript 6.0.3 and hardcoded strict options. It does not load repository tsconfig files, plugins, path aliases, ambient project declarations, or suppression directives.\n\n`as const` and `satisfies` are supported; explicit `any`, unsafe assertions, non-null assertions, and TypeScript suppression/reference directives are rejected.\n\nThe parent process securely reads, validates, typechecks, and transpiles one bounded source snapshot. Two fresh sanitized VM children receive those exact immutable bytes over stdin; they never reread target config files.\n\n`harness.config.ts` and the exact imported `.agents/harness/*.ts` graph are human-owned source. `.agents/harness.json`, `.agents/harness.evals.json`, and configured generated adapter surfaces are generated. Root adapter entrypoints such as `AGENTS.md` and `CLAUDE.md` remain human-owned.\nSource-set closure diagnostics retain this ownership distinction even though artifacts contain only literal paths.\n\nUse `h.eval.routeCases` when several prompts share one route expectation and `h.eval.changedCases` when several paths share one command set. Route array/map cases inherit shared `overlays` and `promotions`; an explicit per-case array, including `[]`, deterministically replaces the shared value.\n`h.command.packageScript` verifies that a declared script exists in the selected manifest while still emitting fixed argv. `h.command.define`, `h.command.packageScript`, and package-script registry entries accept same-owner command handles in `subsumes`.\nDirect targets are deduplicated deterministically and emitted as artifact-only command IDs. A selected command suppresses a direct or transitive target only when that target is also selected; the relation never expands a recommendation set.\n\n## Commands\n\n```bash\n1000skills harness init\n1000skills harness sync\n1000skills harness sync --check\n1000skills harness sync --diff\n1000skills harness sync --repair\n1000skills harness sync --accept-authority\n1000skills harness check\n1000skills harness check --baseline origin/main\n1000skills harness check --exhaustive\n1000skills harness route \"Fix the failing selector\" --explain\n1000skills harness changed -- src/button.ts\n1000skills harness changed --require-classification -- src/button.ts\n1000skills harness changed --from origin/main\n1000skills harness changed --from origin/main --to HEAD\n1000skills harness inspect --prompt \"Fix the failing selector\"\n1000skills harness inspect --file src/button.ts\n1000skills harness inspect --id bug-fix\n1000skills harness inspect --target claude\n1000skills harness suggest-evals\n1000skills harness trace start --session repair-1 --route bug-fix\n1000skills harness trace record --session repair-1 --path AGENTS.md\n1000skills harness trace finish --session repair-1\n1000skills harness diagnose\n```\n\nAdd `--json` to any command for output-envelope version 5. Current trace writers use protocol version 2. The CLI allows stdout and stderr to drain before the process exits, including JSON envelopes larger than the platform pipe buffer.\n\nRuntime, check, diff, diagnose, and baseline commands load only harness-v5 `.agents/harness.json` and eval-v5 `.agents/harness.evals.json`, never execute TypeScript, and fail with `artifact.schema_version_unsupported` for unsupported schema versions.\n\nThey fail closed on malformed, incomplete, unowned, or mismatched artifacts. Sync owns atomic paired generation and interrupted-transaction recovery.\n\nFor ordinary drift, edit `harness.config.ts` or human-owned knowledge and run normal `sync`.\n\nAuthority drift is intentionally different from ordinary generated drift. `check` and `diagnose` emit `authority.review_required` with the affected reference and authority path. Normal sync refuses to reset the recorded fingerprint.\nAfter semantic review, `sync --accept-authority` accepts the current secure authority files in write mode. The flag is invalid with `--check` or `--diff`.\n\nWhen Claude is a tool target, sync also tracks its managed `UserPromptSubmit` activation in `.claude/settings.json`. Check and diff modes report a missing or changed managed hook without writing. Normal sync repairs only that managed entry and preserves unrelated settings and hooks.\nThe generated hook selects the first configured Node candidate satisfying the package's `>=22.12` engine range. The generated hook routes with `--format hook` but never adds `--trace`.\nStart traces through explicit `trace start`/`record`/`finish` commands, or explicitly pass `--format hook --trace` when a caller owns the complete trace lifecycle.\n\nManaged surface writes use a fixed recovery record plus deterministic sibling stage and recovery paths.\n\nA later write sync restores or finishes an interrupted per-file mutation before compilation, including interrupted `.claude/settings.json` merges; check and diff modes fail with `generated.recovery_required` instead of changing recovery state.\n\nCustom and `h.subagent.readOnly` adapters are generated for Claude (`.claude/agents/*.md`), OpenCode (`.opencode/agents/*.md`), Cursor (`.cursor/agents/*.md`), Codex (`.codex/agents/*.toml`), and Pi.\nPi keeps definitions in `.agents/harness.json` and generates only `.pi/extensions/1000skills/index.ts`; it does not duplicate definitions under `.pi/agents`.\nRead-only agents use each target's native restriction: a Claude tool allowlist, OpenCode edit and bash denials, Cursor `readonly: true`, Codex `sandbox_mode = \"read-only\"`, or Pi's `read`, `grep`, `find`, and `ls` tool allowlist.\nCustom agents omit restriction claims where a target cannot map arbitrary tool names.\n\nPrompt routing uses a Claude `UserPromptSubmit` hook, a Cursor always-applied rule, and the canonical `AGENTS.md` instruction consumed natively by OpenCode, Codex, and Pi.\nWith `bridgeSkills: true`, sync creates Claude skill bridges for both explicit `h.reference.skill` entries and skills resolved through `h.discover.skills`; Cursor, OpenCode, Codex, and Pi use native `.agents/skills` discovery without duplicate links.\n\n### Adding a supported agent\n\nSupported agents use one closed, compile-time registry.\nAdd the target ID and artifact policy in `src/contracts/tool-targets.ts`, add one `HarnessAdapter` module under `src/compiler/agent-adapters/`, and register it in `src/compiler/agent-adapters/registry.ts`.\nIf `goal-loop` can launch the agent, add one goal-loop adapter module and register it in `src/goal-loop/adapters/registry.ts`.\n\nDo not add target checks to schema, CLI, source-set, diagnostics, or generated-surface code.\nThese consumers derive target IDs, instruction inputs, managed directories, generated prefixes, delivery capabilities, and executable settings from the registries.\nAdd the target to the cross-tool fixture and registry conformance tests, then regenerate schemas and API reports.\n\nUse `sync --repair` only after diagnosis confirms that generated artifacts are malformed; it stages and validates a complete replacement pair before touching either fixed target. Do not use repair instead of correcting typed source.\n\nThe top-level `packageManager` result field defaults to `npm` and accepts `npm`, `pnpm`, or `yarn`. It controls generated package-aware adapter commands and is the default for `h.command.packageScript`; a package-script declaration may override it for a different manifest.\nPackage scripts compile to `npm run <script>`, `pnpm run <script>`, or `yarn <script>` argv.\n\nGenerated Cursor routing rules use the exact local-binary wrappers below, and diagnostics parse the same forms rather than accepting lookalikes:\n\n| Package manager | Generated route command                         |\n| --------------- | ----------------------------------------------- |\n| npm             | `npm exec -- 1000skills harness route \"<task>\"` |\n| pnpm            | `pnpm exec 1000skills harness route \"<task>\"`   |\n| Yarn            | `yarn 1000skills harness route \"<task>\"`        |\n\nChanged-file recommendations return structured argv and never execute commands. Results always include `unmatchedFiles` and a deterministic effective `plan` that lists each retained command once with its contributing file classes, files, reasons, cwd, and argv.\nRaw groups remain explanatory, while retained commands inherit provenance from selected commands they transitively suppress. Artifact-only `subsumes` metadata is not included in output-v5 changed command objects.\n`--require-classification` returns exit 5 with `changed.files_unclassified` while preserving the complete evidence payload. Use `inspect --file <path>` for one-path classification and plan explanations; `changed` does not overload the file separator with an explain mode.\nA matched file class remains an explicit output group even when it intentionally recommends no commands, so metadata-only classes can return `commands: []` and `reasons: []`.\nInitialized `check:changed` package scripts end in `--`, allowing `npm run check:changed -- path` and equivalent package-manager invocations to forward file paths naturally.\n\nRoute prompt path signals accept repository-relative, `./`, `<repo-root>`, POSIX absolute, and Windows absolute forms. CLI routing passes the actual repository root so contained absolute paths become relative trigger candidates; paths outside that root remain absolute and are not falsely stripped.\nPath extraction recognizes Next.js dynamic (`[id]`), catch-all (`[...slug]`), optional catch-all (`[[...slug]]`), and route-group (`(marketing)`) segments.\nIt also recognizes the case-sensitive conventional root files `Dockerfile`, `LICENSE`, `Makefile`, and `Procfile`, while ordinary parenthesized or lowercase prose is not treated as a path. Candidates matching a declared route or overlay path trigger remain path-only.\nUnmatched slash-separated candidates contribute normalized segment words back to keyword and pattern matching, so prose such as `privacy/logging/provider` is not discarded.\n\n`inspect` accepts exactly one of `--prompt`, `--file`, `--id`, or `--target`. Prompt inspection reports the selected route and competitors, exact selected-overlay signals, context suppliers, deduplication, conditional-to-mandatory promotions, and per-overlay net deltas.\nFile inspection reports normalization, every raw matching class and recommendation, reasons, and the collapsed effective command plan. Definition inspection reports derivable relations and eval coverage; command definitions include direct `subsumes` and `subsumed-by` edges.\nTarget inspection reads the generated repository artifact, reports whether adapter metadata is available, and distinguishes native restrictions created by `h.subagent.readOnly` from custom-agent prose and tool policy.\nArtifacts generated before adapter metadata was added report configuration and restriction evidence as unknown; custom agents are never reported as natively read-only.\n\nCoverage checks are built from actual routing and changed-file classification results. A recommendation is covered when an eval retains that command or a selected command that transitively subsumes it; changed eval expectations compare effective recommendation IDs in historical recommendation order.\n\nNormal `check` and `sync` require behavioral evidence for every route, overlay, file class, fallback, recommendation, and declared trigger kind. They do not require one eval per synonym or literal file pattern.\n`check --exhaustive` adds every actionable `diagnose` finding to the quality gate, promotes diagnostic warnings to errors, and exits 5 when any remain.\n\n`diagnose` and `suggest-evals` retain exhaustive per-signal and per-pattern evidence for audits without treating every alias as an ordinary quality-gate warning.\n\nOverlay coverage requires global positive and negative evidence; the SDK does not invent obligations for every undeclared route-overlay cross-product.\nThe shared graph records eval IDs per route and overlay signal, confusion edges, observed overlay-route evidence, file-class patterns and intersections, and recommendation coverage.\nWhen secure inventory matches uncovered file-class patterns, `suggest-evals` groups paths with the same effective command plan. It emits the exact recommendation union across every matching class.\n\nSignal suggestions exercise the exact uncovered keyword, intent, or path; when no concrete evidence can exercise the gap, the result returns a blocker instead of substituting another owner signal or fabricating a path.\nUnsupported route and overlay patterns fail with the owner, offending pattern, and exact bounded-subset constraint rather than a generic regular-expression error.\nDiagnostic details summarize large evidence lists as deterministic samples with `total` and `omitted` counts, preserving owner, signal, and aggregate issue evidence without returning unbounded inventory arrays.\n\n`diagnose --json` returns required actionable `issues`, required non-actionable `observations`, `clean`, and bounded metrics without changing its exit-zero evidence behavior.\n`clean` is true exactly when actionable issues are empty; observations remain visible audit evidence and never act as warnings.\n`metrics.trackedFiles` reports whether Git tracked-file evidence was available and the tracked, classified, unclassified, synthetic-fallback, intentional-fallback, and unexplained-fallback counts. `syntheticFallback` always equals `intentionalFallback + unexplainedFallback`.\n`metrics.routeEvalMandatoryContext.words` and `.units` report `count`, nearest-rank `p50`, nearest-rank `p95`, and `max` across route-eval mandatory context.\nDirect files are securely read and counted; `unmeasured` reports route evals whose direct-file words were unavailable instead of adding zero-valued word samples.\n\nTracked-file diagnostics use actionable `diagnose.tracked_file_unclassified` issues. Intentional fallback matches produce observational `diagnose.tracked_file_fallback` evidence; fallback wins outside `intentionalPaths` produce actionable `diagnose.tracked_file_fallback_unexplained` issues.\nExplicitly eval-declared promotions, same-context-ID duplicate suppliers, equivalent same-ID placements, promotion-intended observed same-ID mandatory/conditional status differences, and theoretical same-ID mandatory/conditional overlaps without not-selected context are observations.\nDifferent IDs resolving to one target even theoretically, reason conflicts, every status conflict involving not-selected context, undeclared observed mandatory/conditional conflicts, and zero-delta overlays remain issues.\nTrace diagnostics include malformed or inconsistent logs, invalid session IDs, and `diagnose.trace_unfinished` for sessions idle more than 24 hours.\nFinished trace symptoms are clustered by route, symptom, and explicit cause category: mandatory-missing causes are `route-stale`, `trigger-too-broad`, `agent-skipped`, `file-missing`, or `unknown`; not-selected violations are `over-read`, `not-selected-wrong`, or `unknown`.\nAll path, session, item, and eval-ID evidence uses bounded deterministic samples.\n\nExit codes are stable:\n\n| Code | Meaning                                 |\n| ---: | --------------------------------------- |\n|    0 | Success                                 |\n|    2 | CLI misuse                              |\n|    3 | Invalid configuration or security state |\n|    4 | Generated artifact drift                |\n|    5 | Eval or quality failure                 |\n|   70 | Internal failure                        |\n\n## Generated contracts\n\n`sync` writes current harness-v5 `.agents/harness.json` and eval-v5 `.agents/harness.evals.json` as one rollback-capable transaction.\nHarness core, route, and overlay context entries use a content-addressed `contexts` registry; route eval cases use an eval-local `expectations` registry whose expectations include ordered `promotions`.\n\nRegistry IDs use 64-bit base64url digests (`cx-` or `ep-` plus 11 characters), context targets use tagged file/reference tuples, and route/overlay trigger objects omit empty categories.\n\nStrict parsers validate registry references, IDs, command subsumption targets, self edges, and cycles, then hydrate both wire artifacts into expanded private runtime models before routing, changed-file checks, diagnostics, or eval execution.\n\nMatching generator, config, and discovery fingerprints bind the pair. The config fingerprint covers both decoded authoring semantics and the normalized source graph, so source-only edits intentionally produce artifact drift.\n\nArtifacts contain no timestamps, absolute paths, environment data, or secrets.\n\nThe package publishes Draft 2020-12 schemas:\n\n- `1000skills/schema/harness.json` (current v5)\n- `1000skills/schema/harness-evals.json` (current v5)\n- `1000skills/schema/command-envelope.json` (current v5)\n- `1000skills/schema/trace-event.json` (current v2)\n\nRuntime, check, diff, diagnose, and baseline readers accept only this current harness-v5/eval-v5 pair. They do not migrate old artifacts and report `artifact.schema_version_unsupported` when the pair is not current.\n\nNormal write-mode `sync` also refuses stale or unsupported schema pairs; it never migrates them. Malformed, mismatched, mixed-owner, and unowned pairs continue to fail closed.\n`sync --repair` is the only intentional path that may replace a refused pair with artifacts compiled from current typed source.\n\nJSON-only repositories may author current harness-v5 and eval-v5 artifacts directly and use the same runtime commands.\n\n## Client parsers\n\nClient parsers use a separate entrypoint because they serve a different caller. `1000skills/harness` stays a minimal hermetic authoring interface for `harness.config.ts`; `1000skills/harness/client` is the runtime-facing interface for programs that consume current CLI envelopes.\n\n```ts\nimport { assertOk, parseRouteEnvelope } from \"1000skills/harness/client\";\n\nexport function readRoute(cliStdout: string): string {\n  const envelope = parseRouteEnvelope(cliStdout);\n  assertOk(envelope);\n  return envelope.data.routeId;\n}\n```\n\nParsers validate JSON, the envelope, output version, command identity, and command-specific data. They accept only current output v5; output versions 2, 3, and 4 are unsupported and fail with `client.output_version_unsupported`.\nOutput-v5 diagnose requires observations plus `intentionalFallback` and `unexplainedFallback`, and enforces `clean === (issues.length === 0)`. Trace envelopes also use output v5 while trace events retain the current trace protocol v2 contract.\n`CommandEnvelope` is a discriminated union on `ok`: a valid `ok: false` envelope (`FailedEnvelope`) can be inspected manually via `if (!envelope.ok)`, or `assertOk` narrows to `SuccessfulEnvelope` and throws on failure.\n\n## Development\n\nRun from the repository root:\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run build\n```\n\nTypeScript 7.0.2 is the package build compiler and emits JavaScript and declarations directly. The closed harness-config checker is pinned independently to TypeScript 6.0.3, and the packed-consumer gate compiles declaration fixtures with both versions.\nThe package also uses Vitest 4, TypeBox, Ajv, Changesets, publint, Are the Types Wrong, API Extractor, Knip, and JSCPD; direct dependencies are pinned exactly.\n\n`npm run api:update --workspace=1000skills` is the only command that updates checked-in API reports. `npm run api:check --workspace=1000skills` compares declarations and normalized reports without writing them.\n\n`prepack` runs package verification, but it does not run the complete exact-tarball consumer gate. `release:candidate` owns the full workflow: archive the exact committed source, install its lockfile with lifecycle scripts disabled, run the controlled verification/build commands, and pack once.\nIt checks that exact tarball with publint, Are the Types Wrong, npm, Yarn, pnpm, TypeScript 6.0.3, and TypeScript 7.0.2.\n\n## Release\n\n```bash\nnpm run release:candidate\ngit add docs/releases/candidates/1000skills/<version>.json\ngh workflow run publish.yml --ref main\n```\n\nAfter package documentation is approved, run `npm run release:candidate`. It requires clean committed source and writes one sealed tarball under `/tmp/1000skills-release/1000skills/<version>/<candidate-id>/`; macOS may expose the same directory through `/private/tmp`.\nReview and commit the path-free durable receipt at `docs/releases/candidates/1000skills/<version>.json` before authorizing publication.\n\nThe receipt binds the package and version to an opaque candidate ID, source revision, root tree, and a canonical SHA-256 over the sorted Git blob modes, paths, and bytes in the package source plus every repository-owned verification input declared by the release builder.\nIt also records the artifact SHA-256, npm SHA-1, and npm SRI. A metadata-only later commit may publish it only while the current package-source digest remains identical. The staging hierarchy must be owned by the current user, use mode `0700`, and contain no symlinks.\nThe sealed candidate directory and tarball use modes `0500` and `0400`; another build cannot replace either one.\n\nThe protected `publish.yml` workflow reconstructs the exact receipt-bound artifact once, uploads/downloads those bytes between jobs, and publishes with GitHub OIDC plus npm provenance. It never repacks in the publish job.\nManual `npm run release` is a fail-closed fallback that requires an explicit `RELEASE_NPM_IDENTITY`, a GitHub token authorized to create the durable lease, exact npm config and identity preflight, and authoritative version absence.\nPublication uses explicit public-registry, `latest`, public-access, and no-lifecycle-script flags. An atomic protected GitHub ref keyed by version and candidate prevents every second invocation, including fresh-runner retries.\nA successful publish runs the same registry verifier exposed as `npm run release:verify`; every failure after lease creation is resolved through `recover-release.yml` or the verifier instead of another publish attempt. Recovery needs only the durable receipt and registry bytes, not local staging.\n\nTemporary consumers, rather than the local link, prove the packed artifact before publication.\n","readmeFilename":"README.md"}