typescript-monorepo
SkillDocs & knowledgeGuidance for TypeScript monorepos with mixed package managers. Use when codebase has inherited package manager and a workspace root.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the typescript-monorepo skill
What this skill tells your AI
The instructions your AI receives, as published by unoplat/unoplat-code-confluence in unoplat-code-confluence-query-engine/src/unoplat_code_confluence_query_engine/skills/typescript-monorepo/SKILL.md and read by ahel’s review.
TypeScript Monorepo Workflow Guidance
Install Commands
- Workspace-scoped install runs from workspace root, not leaf
- bun:
bun installat workspace root - pnpm:
pnpm installat workspace root - npm:
npm ciat workspace root - working_directory = workspace root (repo-relative)
Workspace Root Discovery
- If
workspace_rootis present, use it as the direct hint for workspace-owned commands - If
workspace_rootis missing but provenance is inherited, walk upward fromcodebase_pathto find the nearest owning workspace root - Inspect parent directories one level at a time with absolute paths using
get_directory_treeandread_file_content - Stop when you find the nearest workspace-owned signals such as
pnpm-workspace.yaml, a rootpackage.jsonwithworkspaces, a lockfile,turbo.json, ornx.json - Do not assume the leaf owns install/build commands just because the exact workspace root was not precomputed
Build Commands
- Turborepo:
turbo run buildorbun run buildat workspace root - Individual:
bun run build --filter <package>from workspace root - Check turbo.json or nx.json for build pipeline configuration
- working_directory = workspace root
Test/Lint/TypeCheck Commands
- Usually leaf-specific: run from codebase root (omit working_directory)
- Some monorepos configure workspace-level lint/test via turbo.json/nx.json
- Inspect the leaf's package.json scripts section for available commands
Working Directory Rules
- working_directory = workspace root for install/build commands
- working_directory = omit (None) for leaf-local test/lint/type_check
- working_directory = "." when command must run from repository root
- If both workspace-level and leaf-level commands exist for same stage, emit both with distinct working_directory
Config File Path Rules
- config_file must always be repository-root-relative
- Never use absolute paths in config_file
- Never use codebase-relative
..segments in config_file - For workspace-owned configs above the leaf, emit the full repository-root path, for example:
infra/services/turbo.jsoninfra/services/pnpm-workspace.yaml
Upward Discovery Example
- Given
codebase_path = /opt/unoplat/repositories/acme/infra/services/apps/apiand inherited provenance with noworkspace_root - Inspect
/opt/unoplat/repositories/acme/infra/services/apps/api, then/opt/unoplat/repositories/acme/infra/services/apps, then/opt/unoplat/repositories/acme/infra/services - If
/opt/unoplat/repositories/acme/infra/services/pnpm-workspace.yamlexists, use repo-relativeinfra/servicesas the workspace root - Then emit workspace-owned commands like install/build with
working_directory = "infra/services"
Package Manager Inheritance
- Leaf inherits manager from nearest workspace aggregator
- Commands use the inherited manager's CLI (bun, pnpm, npm, yarn)
- Lock files live at workspace root, not leaf
- If leaf has its own local manager, provenance=local and no workspace root
Signals
- GitHub stars
- 94
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
typescript-monorepo- Source
- github.com/unoplat/unoplat-code-confluence