Configuration
Forge uses YAML configuration files at two levels:
- Project:
.crucible/forge.config.yaml(in your repo) - Global:
~/.crucible/forge.config.yaml(user-wide defaults)
Project config overrides global config.
Minimal config
Section titled “Minimal config”assistants: - claude-code - cursor
sources: - name: team-skills type: gitFull reference
Section titled “Full reference”# Assistants to sync toassistants: - claude-code - cursor - windsurf - copilot - cline
# Sources to fetch fromsources: - name: team-skills type: git branch: main # default: main layout: auto # auto | canonical | pre-structured include: # glob patterns to include - 'skills/**' - 'rules/**' exclude: # glob patterns to exclude - '**/*.test.md' map: '' # virtual directory prefix
- name: local-rules type: local path: ~/my-rules
# Sync behaviorsync: sourceConflict: last-wins # last-wins | first-wins | error localConflict: remote-wins # remote-wins | local-wins | error backup: true # create .bak when overwriting local changes keepLocal: true # keep files removed from source
# Schedulerscheduler: schedule: '*/30 * * * *' # cron expression (default: every 30 min)
# Telemetrytelemetry: enabled: false # opt-in anonymous usage trackingSource options
Section titled “Source options”Git source
Section titled “Git source”| Field | Required | Default | Description |
|---|---|---|---|
name |
yes | — | Identifier for this source |
type |
yes | — | Must be git |
url |
yes | — | SSH or HTTPS git URL |
branch |
no | main |
Branch to fetch |
layout |
no | auto |
Layout detection mode |
include |
no | — | Glob patterns to include |
exclude |
no | — | Glob patterns to exclude |
map |
no | — | Virtual directory prefix |
Local source
Section titled “Local source”| Field | Required | Default | Description |
|---|---|---|---|
name |
yes | — | Identifier for this source |
type |
yes | — | Must be local |
path |
yes | — | Path on disk (supports ~) |
layout |
no | auto |
Layout detection mode |
include |
no | — | Glob patterns to include |
exclude |
no | — | Glob patterns to exclude |
map |
no | — | Virtual directory prefix |
Conflict resolution
Section titled “Conflict resolution”Source conflicts
Section titled “Source conflicts”When multiple sources produce the same target path:
| Strategy | Behavior |
|---|---|
last-wins |
Last source in the list wins (default) |
first-wins |
First source in the list wins |
error |
Fail the sync with an error |
Local conflicts
Section titled “Local conflicts”When a locally modified file also changed remotely:
| Strategy | Behavior |
|---|---|
remote-wins |
Overwrite local with remote (default), creates .bak if backup is on |
local-wins |
Keep local changes, skip remote update |
error |
Fail the sync with an error |