1.3.0: multi-file skills & packs, plus a guided onboarding tool
Two features since 1.2.0: skill sharing grows from a single SKILL.md to whole directories and multi-skill packs, and a new onboarding tool guides newcomers through Threadnote on request.
Multi-file skills. share publish-artifact / share_skill now carry the SKILL.md's whole directory — companion scripts, references, assets — under agent-artifacts/skills/<agent>/<name>/, recorded in a generated .threadnote-bundle.json. A lone SKILL.md publishes byte-for-byte as before. Every text member runs through the scrubber; binary members are blocked by default (--allow-binary to include) and byte-scanned for embedded credentials/paths.
Constellation packs. For skills whose shared code lives outside any single skill dir (repo-root scripts//lib/), a threadnote-bundle.json manifest declares the skills, shared include paths, deps, and path rewrites. share publish-bundle <manifest> / share_bundle writes agent-artifacts/packs/<agent>/<name>/{<name>.pack.md, <name>.pack.json, files/<verbatim tree>}; install materializes the whole tree under one root (~/.{codex,claude}/skills/threadnote-packs/<team>/<name>/) and expands a ${THREADNOTE_PACK_ROOT} token so hardcoded repo-root paths resolve. Packs install in a namespace disjoint from skills, so a pack and a same-named skill never collide.
Guided onboarding. A new threadnote_guide MCP tool: ask your agent "what can I do with Threadnote?" and it returns a setup-aware walkthrough (server health, configured share teams, seeded projects) for the agent to present and offer to run step by step. The walkthrough loads only when the tool is invoked — the only always-on cost is the tool's description.
Sharing safety. The scrubber covers every text member, the pack index, and the manifest; a residual machine-local /Users//home path blocks publish (other absolute paths warn). Install validates member paths against ../absolute traversal. Publish rolls back this run's writes on failure (restoring a replaced pack on --force); install swaps via backup-rename; per-member status folding refuses to clobber local edits without --force. Only .md is OpenViking-ingested for recall; the file tree is git-carried.
Also:
- Pins the local Node version to 22.22.0 via
.nvmrc. - Bumps the package version to
1.3.0.