.sley.yaml Configuration Reference
Complete reference for the .sley.yaml configuration file.
TIP
For an overview of configuration methods and precedence, see Configuration.
Basic Structure
yaml
# Path to .version file
path: .version
# Plugin configuration
plugins:
commit-parser: true
tag-manager:
enabled: true
# ... plugin options
# Extension configuration (optional)
extensions:
- name: my-extension
path: /path/to/extension
enabled: true
# Workspace configuration (monorepos)
workspace:
discovery:
enabled: trueTop-Level Options
| Option | Type | Default | Description |
|---|---|---|---|
path | string | .version | Path to the .version file |
plugins | object | {} | Plugin configuration |
extensions | array | [] | Extension configuration |
workspace | object | {} | Workspace/monorepo configuration |
Plugin Configuration
Plugins can be enabled with a simple boolean or with detailed configuration:
yaml
plugins:
# Simple enable
commit-parser: true
# Simple disable
commit-parser: false
# Detailed configuration
tag-manager:
enabled: true
prefix: "v"
annotate: true
push: falseAvailable Plugins
| Plugin | Default | Description |
|---|---|---|
commit-parser | enabled | Analyze conventional commits |
tag-manager | disabled | Git tag automation |
version-validator | disabled | Version policy enforcement |
dependency-check | disabled | Cross-file version sync |
changelog-parser | disabled | Infer bump type from CHANGELOG.md |
changelog-generator | disabled | Generate changelogs from commits |
release-gate | disabled | Pre-bump quality gates |
audit-log | disabled | Version history tracking |
See Plugin System for detailed plugin configuration.
Extension Configuration
yaml
extensions:
- name: docker-tag-sync
path: /Users/username/.sley-extensions/docker-tag-sync
enabled: true
hooks:
- post-bump| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Extension name |
path | string | yes | Path to extension directory |
enabled | bool | no | Enable/disable (default: true) |
hooks | []string | no | Hooks to run (default: all) |
Workspace Configuration
For monorepos with multiple .version files:
yaml
workspace:
discovery:
enabled: true
recursive: true
max_depth: 10
exclude:
- "testdata"
- "examples"
- "node_modules"
# Optional: explicit module definitions
modules:
- name: api
path: ./services/api/.version
enabled: true
- name: legacy
path: ./legacy/.version
enabled: falseDiscovery Options
| Option | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable automatic discovery |
recursive | bool | true | Search subdirectories recursively |
max_depth | int | 10 | Maximum directory depth to search |
exclude | []string | [] | Patterns to exclude from discovery |
Module Definition
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Module name |
path | string | yes | Path to .version file |
enabled | bool | no | Enable/disable (default: true) |
Complete Example
More Examples
Find individual plugin configuration examples in the sley repository examples directory.
yaml
# .sley.yaml - Full configuration example
# All plugins working together
path: .version
plugins:
# Commit Parser (enabled by default)
commit-parser: true
# Release Gate
release-gate:
enabled: true
require-clean-worktree: true
blocked-on-wip-commits: true
require-ci-pass: false
allowed-branches:
- "main"
- "release/*"
blocked-branches:
- "experimental/*"
# Version Validator
version-validator:
enabled: true
rules:
- type: pre-release-format
pattern: "^(alpha|beta|rc)(\\.[0-9]+)?$"
- type: major-version-max
value: 10
- type: max-prerelease-iterations
value: 10
- type: require-even-minor
enabled: false
- type: branch-constraint
branch: "release/*"
allowed: ["patch"]
- type: branch-constraint
branch: "main"
allowed: ["minor", "patch"]
# Dependency Check
dependency-check:
enabled: true
auto-sync: true
files:
- path: package.json
field: version
format: json
- path: Chart.yaml
field: version
format: yaml
- path: pyproject.toml
field: tool.poetry.version
format: toml
- path: VERSION
format: raw
- path: src/version.go
format: regex
pattern: 'const Version = "(.*?)"'
# Changelog Parser
changelog-parser:
enabled: true
path: CHANGELOG.md
require-unreleased-section: true
infer-bump-type: true
priority: commits
# Changelog Generator
changelog-generator:
enabled: true
mode: "both"
format: "grouped"
changes-dir: ".changes"
changelog-path: "CHANGELOG.md"
repository:
auto-detect: true
use-default-icons: true
exclude-patterns:
- "^Merge"
- "^WIP"
- "^fixup!"
- "^squash!"
include-non-conventional: false
contributors:
enabled: true
show-new-contributors: true
# Tag Manager
tag-manager:
enabled: true
auto-create: true
prefix: v
annotate: true
push: false
tag-prereleases: false
sign: false
signing-key: ""
message-template: "Release {version}"
# Audit Log
audit-log:
enabled: true
path: ".version-history.json"
format: "json"
include-author: true
include-timestamp: true
include-commit-sha: true
include-branch: true
# Monorepo configuration
workspace:
discovery:
enabled: true
recursive: true
max_depth: 5
exclude:
- "testdata"
- "examples"Module-specific Configuration
In monorepos, each module can have its own .sley.yaml that overrides workspace settings:
yaml
# services/api/.sley.yaml
path: VERSION # Use VERSION instead of .version
plugins:
commit-parser: false # Disable for this module
tag-manager:
enabled: true
prefix: "api-v" # Module-specific prefixSee Also
- Configuration Overview - Configuration methods and precedence
- Environment Variables - Environment variable configuration
- CLI Reference - Command-line options
- Plugin System - Detailed plugin configuration
- Extension System - Extension configuration and hooks
- Monorepo Support - Multi-module setup guide
- Troubleshooting - Common configuration issues