{"_id":"@curatelabs/graphforge-agent-skills","_rev":"2-93ebdbca4ca6c07262a951150bad402b","name":"@curatelabs/graphforge-agent-skills","dist-tags":{"latest":"0.5.2"},"versions":{"0.5.1":{"name":"@curatelabs/graphforge-agent-skills","version":"0.5.1","keywords":["graphforge","agent-skills","knowledge-graph","ai-agents","npx"],"license":"Apache-2.0","_id":"@curatelabs/graphforge-agent-skills@0.5.1","maintainers":[{"name":"decisionnerd","email":"ds.liberty@gmail.com"}],"homepage":"https://docs.graphforge.sh/","bugs":{"url":"https://github.com/CurateLabs/graphforge/issues"},"bin":{"graphforge-agent-skills":"bin/graphforge-agent-skills.js"},"dist":{"shasum":"24ce9f79f82b8983a1e05e455ed9bdacb758ba71","tarball":"https://registry.npmjs.org/@curatelabs/graphforge-agent-skills/-/graphforge-agent-skills-0.5.1.tgz","fileCount":16,"integrity":"sha512-wq3WzmgOabDZlAWXZ5aGq22dZERo41C1hdIz0DS5r8rLNvPGUT2YE63oAmJIChlCF236LT6+nFXKucdHfhE5Fw==","signatures":[{"sig":"MEQCICQa6YM+zw67s22rNfBsoz+vaAK5fs9UbmQz26fxvjjLAiBzRyA384vyW8+onk+9RHLa9JMRqlgD2yMm8+j9QPyYrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98842},"type":"module","_from":"file:candidate/release-artifacts/npm/curatelabs-graphforge-agent-skills-0.5.1.tgz","engines":{"node":">=20"},"exports":{".":"./adapter/index.js","./schemas":"./schemas/validator.js","./workflows":"./workflows/index.js","./compatibility.json":"./compatibility.json","./schemas/input-envelope-v1.json":"./schemas/input-envelope-v1.json","./schemas/skill-manifest-v1.json":"./schemas/skill-manifest-v1.json","./schemas/output-envelope-v1.json":"./schemas/output-envelope-v1.json"},"scripts":{"test":"node --test tests/*.test.mjs","pack:local":"npm pack --ignore-scripts","format:check":"prettier --check package.json compatibility.json README.md adapter bin tests schemas skills workflows rc examples scripts","test:offline":"node tests/offline-pack-smoke.mjs","test:rc-native":"node scripts/run-native-rc-e2e.mjs","example:analyst":"node examples/analyst-agent.mjs","example:developer":"node examples/developer-agent.mjs"},"_npmUser":{"name":"decisionnerd","email":"ds.liberty@gmail.com"},"_resolved":"/home/runner/_work/graphforge/graphforge/candidate/release-artifacts/npm/curatelabs-graphforge-agent-skills-0.5.1.tgz","_integrity":"sha512-wq3WzmgOabDZlAWXZ5aGq22dZERo41C1hdIz0DS5r8rLNvPGUT2YE63oAmJIChlCF236LT6+nFXKucdHfhE5Fw==","repository":{"url":"git+https://github.com/CurateLabs/graphforge.git","type":"git","directory":"packages/agent-skills"},"_npmVersion":"10.9.4","description":"NPX-distributed agent skills and adapters for GraphForge","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/graphforge-agent-skills_0.5.1_1785610170782_0.71823022045633","host":"s3://npm-registry-packages-npm-production"},"graphforgeCompatibility":{"range":">=0.5.0 <0.6.0","release":"0.5.1","schemaVersion":1}},"0.5.2":{"name":"@curatelabs/graphforge-agent-skills","version":"0.5.2","description":"NPX-distributed agent skills and adapters for GraphForge","license":"Apache-2.0","homepage":"https://docs.graphforge.sh/","repository":{"type":"git","url":"git+https://github.com/CurateLabs/graphforge.git","directory":"packages/agent-skills"},"bugs":{"url":"https://github.com/CurateLabs/graphforge/issues"},"keywords":["graphforge","agent-skills","knowledge-graph","ai-agents","npx"],"type":"module","bin":{"graphforge-agent-skills":"bin/graphforge-agent-skills.js"},"exports":{".":"./adapter/index.js","./workflows":"./workflows/index.js","./schemas":"./schemas/validator.js","./schemas/input-envelope-v1.json":"./schemas/input-envelope-v1.json","./schemas/output-envelope-v1.json":"./schemas/output-envelope-v1.json","./schemas/skill-manifest-v1.json":"./schemas/skill-manifest-v1.json","./compatibility.json":"./compatibility.json"},"engines":{"node":">=20"},"graphforgeCompatibility":{"schemaVersion":1,"release":"0.5.2","range":">=0.5.0 <0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"test":"node --test tests/*.test.mjs","test:offline":"node tests/offline-pack-smoke.mjs","test:rc-native":"node scripts/run-native-rc-e2e.mjs","example:analyst":"node examples/analyst-agent.mjs","example:developer":"node examples/developer-agent.mjs","pack:local":"npm pack --ignore-scripts","format:check":"prettier --check package.json compatibility.json README.md adapter bin tests schemas skills workflows rc examples scripts"},"_id":"@curatelabs/graphforge-agent-skills@0.5.2","_integrity":"sha512-vCoIqJWHehfMaGcmJyfE17SVUE4sxDyl9pnbMXAzdpZsyHP6q5+6jxq/cNDVuwfue9f/upL87kTYsomZR1iXbQ==","_resolved":"/home/runner/_work/graphforge/graphforge/candidate/release-artifacts/npm/curatelabs-graphforge-agent-skills-0.5.2.tgz","_from":"file:candidate/release-artifacts/npm/curatelabs-graphforge-agent-skills-0.5.2.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-vCoIqJWHehfMaGcmJyfE17SVUE4sxDyl9pnbMXAzdpZsyHP6q5+6jxq/cNDVuwfue9f/upL87kTYsomZR1iXbQ==","shasum":"8f547d84a22fea1d1089d26ba881fc18cb6946e6","tarball":"https://registry.npmjs.org/@curatelabs/graphforge-agent-skills/-/graphforge-agent-skills-0.5.2.tgz","fileCount":16,"unpackedSize":98842,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG+X6hmaKDc6+hpb3LmNiEnqJftkWWE9TtJABWtHeoggAiEA+W6U+FERaSvo209DoBwu5Af6piZasvobd85j7NBn2x0="}]},"_npmUser":{"name":"decisionnerd","email":"ds.liberty@gmail.com"},"directories":{},"maintainers":[{"name":"decisionnerd","email":"ds.liberty@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/graphforge-agent-skills_0.5.2_1785868331234_0.8364101318553752"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-01T18:49:30.599Z","modified":"2026-08-04T18:32:11.647Z","0.5.1":"2026-08-01T18:49:30.930Z","0.5.2":"2026-08-04T18:32:11.393Z"},"bugs":{"url":"https://github.com/CurateLabs/graphforge/issues"},"license":"Apache-2.0","homepage":"https://docs.graphforge.sh/","keywords":["graphforge","agent-skills","knowledge-graph","ai-agents","npx"],"repository":{"type":"git","url":"git+https://github.com/CurateLabs/graphforge.git","directory":"packages/agent-skills"},"description":"NPX-distributed agent skills and adapters for GraphForge","maintainers":[{"name":"decisionnerd","email":"ds.liberty@gmail.com"}],"readme":"# GraphForge agent skills\n\nThis package is the distributable NPX shell for GraphForge agent skills. Its\nfoundation includes the versioned, semantics-free adapter used by every skill.\nThe first preservation-first workflows bootstrap local projects and append\nexplicit graph and knowledge records.\n\n## Shared adapter\n\nImport the adapter from `@curatelabs/graphforge-agent-skills`. Pass the shipped\n`GraphForge` constructor from `@curatelabs/graphforge` and `tableFromIPC` from\n`apache-arrow` to `openProject`; the adapter does not bundle or substitute a\nruntime:\n\n```js\nimport { openProject } from \"@curatelabs/graphforge-agent-skills\";\nimport { tableFromIPC } from \"apache-arrow\";\nimport { createRequire } from \"node:module\";\n\nconst { GraphForge } = createRequire(import.meta.url)(\"@curatelabs/graphforge\");\nconst opened = await openProject({\n  GraphForge,\n  path: \"/absolute/path/to/project\",\n  requiredCapabilities: { graph: 1, workspace: 1 },\n  tableFromIPC,\n  writeOptions: {\n    writeMode: \"optimistic_multi_writer\",\n    writeQueueCapacity: 64,\n    maxRebaseAttempts: 3,\n  },\n});\n```\n\nDiscovery accepts only an existing, real directory with the exact v0.5\n`FORMAT` marker. Missing, ambiguous, symlinked, malformed, and future-format\ninputs fail before the native constructor is called. Capability checks require\nexact versions and reject `unsupported_future` rows.\n\nEvery adapter/workflow open passes an explicit validated embedded-write options\nobject to the native binding. Callers may select `single_writer` (the default),\n`queued_writer`, or `optimistic_multi_writer`; invalid names, unbounded queues,\nand unbounded retry counts fail before native construction. The adapter does not\nadd coordination semantics, identity inference, a server, or a transport.\n\nThe adapter contract version is `1`. `uuidToString` emits lowercase hyphenated\nUUIDs, `tableToJson` preserves Arrow schema column order while representing\n64-bit integers as decimal strings, and `stableJson` recursively sorts object\nkeys and appends one LF. Structured failures serialize as\n`{code, contract_version, details, message}`.\n\nThe shared boundary rejects parent-traversal and control-character paths,\nproject-directory or `FORMAT` symlinks, and unsupported subprocess requests\nbefore any native constructor or command can run. Discovery errors report only\nbounded counts, never candidate paths. Native error text is replaced with a\nfixed message while a valid `GF_*` code is retained. Recursive values are\ncycle-checked and bounded to depth 16, 4,096 entries, and 4,096 characters per\nstring; violations return a fixed structured error without reflecting content.\nThe adapter deliberately has no `node:child_process` import or execution path.\n\n## Skill schemas\n\nThe package ships closed, versioned JSON schemas for skill manifests and\ninput/output envelopes. Import the dependency-free offline validators from\n`@curatelabs/graphforge-agent-skills/schemas`. Rejected values produce at most eight\nstably ordered diagnostics with fixed, non-value-bearing messages. See\n[`schemas/README.md`](schemas/README.md) for the contract and identifiers.\nInput, output, and error-detail payloads enforce the same recursive value\nbudgets in the dependency-free validator; the checked-in schemas additionally\nbound every nested string, array, and object.\n\n## Local offline smoke\n\nFrom the repository root, create the local artifact and run the deterministic\noffline install/invocation smoke:\n\n```bash\npnpm --filter @curatelabs/graphforge-agent-skills pack:local\npnpm --filter @curatelabs/graphforge-agent-skills test:offline\n```\n\nThe smoke test installs the packed tarball into a clean temporary project and\ninvokes it without registry access:\n\n```bash\nnpx --offline --no-install graphforge-agent-skills compatibility --json\n```\n\nThe compatibility response is machine-readable and currently declares support\nfor GraphForge `>=0.5.0 <0.6.0`.\n\n## Bootstrap, build knowledge, and resolve belief\n\nImport `bootstrapProject`, `buildKnowledge`, `resolveBeliefSubject`,\n`narrateBeliefRecords`, `dispatchRecordedNeutralAnalysis`, `exploreGraph`, and\n`retrieveAnalyze` from `@curatelabs/graphforge-agent-skills/workflows`. Both require the\nshipped `GraphForge` and `tableFromIPC` surfaces shown above. Bootstrap creates\nor reopens a local project, defaults to exploratory ontology mode, and verifies\none reserved marker through a real close/reopen/query cycle. Replays return the\nsame marker UUID; duplicates or ontology-mode mismatches return structured\nconflicts.\n\nBuild knowledge accepts caller-keyed nodes and edges plus caller-supplied UUIDv7\noperation and ledger identities. It enables the public provenance/knowledge\ncapabilities, uses native UUID handles for graph references, and uses the atomic\nassertion-plus-nonempty-evidence API, then appends the required explicit M20\nconfidence assessment. M21 reasoning and first status are appended only when\ntheir explicit input blocks are supplied. A domain property named `confidence`\nremains an ordinary graph property.\n\nEvery native Arrow receipt is decoded into bounded deterministic JSON rows.\nNative generation publication remains authoritative: a failed composite write\ndoes not replace its previous complete generation. The workflow does not promise\na transaction spanning separate public API calls and never compensates by\ndeleting prior records.\n\n`resolveBeliefSubject` accepts exactly one assertion UUID or hypothesis\nquestion key, a transaction cutoff, an independently optional valid time, and\nthe complete version-1 belief-projection policy. Rust resolves the subject and\nreturns canonical Arrow evidence with its opaque graph projection. The thin\nworkflow decodes that evidence and returns the addressed\nassertion identities, competing and superseded alternatives, statusless or\nunselected state, exact source-record UUIDs, and native projection\nfingerprints. Native ambiguity remains a structured error; confidence is never\nused to choose an alternative. The returned opaque `projection` is reserved for\nlater recorded dispatch through the native resolved-projection API.\n\n`narrateBeliefRecords` pages every public scoped M20/M21 history family for the\nresolved assertion set within an explicit `record_budget`, keeps competing and\nsuperseded records distinguishable, and returns project-level pagination\ndescriptors rather than truncating broader collections.\n\n`dispatchRecordedNeutralAnalysis` forwards one caller-prepared descriptor to\n`invokeResolvedRecorded`, returns the Arrow result with independent run and\nattachment state, and leaves completed M20 runs queryable when attachment fails.\n\n`exploreGraph` dispatches bounded neighborhood, traversal, path, and\nreachability requests through the public paths/descriptor facade, fails closed\nwithout finite bounds, and opens only the graph capability.\n\n`retrieveAnalyze` reaches public M19 find modes and every live M18 family with\nexplicit caller-selected algorithms/inputs, finite `result_limit`, and\ngraph-only capability opens.\n\n## Release-candidate end-to-end scenarios\n\nAnalyst-agent and developer-agent scenarios live in `rc/scenarios.js` and are\nshared by:\n\n- golden CI tests in `tests/rc-e2e.test.mjs`\n- executable examples in `examples/`\n- the native pack-install runner `scripts/run-native-rc-e2e.mjs`\n\n```bash\npnpm --filter @curatelabs/graphforge-agent-skills test\npnpm --filter @curatelabs/graphforge-agent-skills example:analyst\npnpm --filter @curatelabs/graphforge-agent-skills example:developer\n\n# Optional native evidence against a local @curatelabs/graphforge build\nGRAPHFORGE_NODE_MODULE=$PWD/crates/graphforge-bindings-node/index.js \\\n  pnpm --filter @curatelabs/graphforge-agent-skills test:rc-native -- \\\n    --commit-sha \"$(git rev-parse HEAD)\" \\\n    --evidence target/release-workflows/agent-skills/rc-e2e.json\n```\n\nThe native runner packs the package, offline-installs the tarball into a clean\ntemporary consumer, verifies public workflow exports and compatibility, then\nruns both scenarios against the pinned Node binding. Evidence redacts volatile\npaths/timestamps and records the commit SHA plus package/runtime versions.\nPublication remains the v0.5.0 publication close-out issue.\n","readmeFilename":"README.md"}