skein-js-turborepo ยท diff
git:20261019.6fb6b5f to git:20261020.cc0f786
3 added, 1 removed. Audit A to A.
---
name: skein-js-turborepo
description: Add or maintain a skein-js LangGraph.js server or local application inside a Turborepo workspace. Use when configuring Turbo tasks, caching, package dependencies, or workspace imports.
license: Apache-2.0
---
# skein-js in a Turborepo workspace
Use the workspace's package manager and installed Turbo version. This skill covers task wiring around a skein-js project; use the `skein-js` skill or [skein-js docs](https://skein-js.github.io/skein-js/using-skein) for graph and server behavior.
1. Inspect `turbo.json`, workspace package patterns, package names, and existing scripts. Integrate with the conventions already present rather than replacing the task graph.
- 2. For a new app, scaffold skein-js in the intended workspace directory and make sure the package manager includes it. Select `--storage sqlite` when local persistence is requested; preserve existing defaults otherwise. Keep the generated `dev`, `build`, and `start` scripts unless the app already has equivalent ones. See [scaffolding](https://skein-js.github.io/skein-js/scaffolding#nx-and-other-monorepos).
+ 2. For a new app, scaffold skein-js in a new child directory and make sure the package manager includes it. Accept workspace registration or register it manually with `--no-workspace-update`, then install from the workspace root. ESLint and Prettier default on (`--no-linting` opts out); generated projects recommend Node 24 with engines `^22.12.0 || ^24.0.0`. Select `--storage sqlite` when local persistence is requested; preserve existing defaults otherwise. Keep the generated `dev`, `build`, and `start` scripts unless the app already has equivalent ones. See [scaffolding](https://skein-js.github.io/skein-js/scaffolding#nx-and-other-monorepos).
3. Configure long-running `dev` and `start` hosts as persistent and uncached. If `build` is cached, include the config-driven app's skein artifact or the embedding app's own build outputs, accounting for workspace dependencies and build-time environment variables that affect them. A one-shot CLI task does not need to be persistent. Do not cache a live host or assume runtime credentials are build inputs. Follow the installed Turbo version's [task configuration](https://turborepo.com/docs/reference/configuration).
4. Run the app's tasks through Turbo using the actual package name or filter, then start its host and exercise one graph run through the protocol service, console, or SDK when practical. Confirm that config-driven `start` reads the built artifact and that the chosen storage is available: a writable SQLite file for the local pair, or the configured Postgres/Redis services.
+
+ Check that inherited ESLint/Prettier configs have their matching tool dependencies declared at the root. Run the generated `format` command before `format:check` when the root uses non-default formatting. Avoid `create-skein-js . --force` at an existing workspace root because discovery currently skips markers on the target itself. See the [current workspace limitations](https://skein-js.github.io/skein-js/scaffolding).
Keep `langgraph.json` paths valid from the app package's working directory. A graph can import shared workspace packages through the workspace's existing package links and TypeScript configuration; see [LangGraph CLI compatibility](https://skein-js.github.io/skein-js/langgraph-cli-compat).
Cache the build artifact, such as `.skein/build/**`, rather than all of `.skein/**`. Exclude the live SQLite database and its `-wal`/`-shm` companions from build inputs and outputs. An embedding host supplies an absolute application-data path and owns backend startup and shutdown; use the existing Agent Protocol for a separate UI and daemon. See [local deployment](https://skein-js.github.io/skein-js/local-deployment) for lifecycle and packaged host examples.