Use when defining version policies, banning dependencies, pinning versions, or creating partitioned version groups in syncpack. Covers advanced version management patterns.
View on GitHubTheBushidoCollective/han
jutsu-syncpack
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-syncpack/skills/syncpack-version-groups/SKILL.md -a claude-code --skill syncpack-version-groupsInstallation paths:
.claude/skills/syncpack-version-groups/# Syncpack Version Groups
Version groups allow you to define sophisticated dependency version policies in your monorepo. This skill covers advanced patterns for version management.
## Version Group Structure
```js
export default {
versionGroups: [
{
label: 'Description of this group',
dependencies: ['package-name', '@scope/**'],
dependencyTypes: ['prod', 'dev'],
packages: ['apps/**'],
specifierTypes: ['exact', 'range'],
// Policy options (choose one)
preferVersion: 'highestSemver',
// pinVersion: '1.0.0',
// isBanned: true,
// isIgnored: true,
},
],
};
```
## Filter Options
### dependencies
Match specific packages by name or glob:
```js
dependencies: [
'react', // exact match
'react-*', // wildcard
'@types/**', // scoped packages
'{react,vue}', // either/or
]
```
### dependencyTypes
Filter by where dependencies appear:
```js
dependencyTypes: [
'dev', // devDependencies
'local', // workspace: protocol
'overrides', // npm overrides
'peer', // peerDependencies
'pnpmOverrides', // pnpm.overrides
'prod', // dependencies
'resolutions', // yarn resolutions
]
```
### packages
Filter by which package.json files:
```js
packages: [
'apps/**', // all apps
'packages/core', // specific package
'!packages/legacy', // exclude pattern
]
```
### specifierTypes
Filter by version specifier format:
```js
specifierTypes: [
'exact', // 1.2.3
'range', // ^1.2.3, ~1.0.0, >=2.0.0
'tag', // latest, next, canary
'url', // https://, git://
'file', // file:../path
'workspace', // workspace:*
]
```
## Version Policies
### preferVersion
Choose which version wins when mismatches exist:
```js
// Use the highest semver version found
preferVersion: 'highestSemver'
// Use the lowest semver version found
preferVersion: 'lowestSemver'
// Use whatever a spec