qvr stores configuration at ~/.quiver/config.yaml. Override with QUIVER_HOME
env var.
config.yamlvs.qvr.toml.config.yamlholds machine-local defaults — registries, your fallbackdefault_target, GitHub token, security policy — that apply to everything you do on this machine. A project'sqvr.tomlholds per-project intent that travels with the repo: its[skills]set and its[project].default-targets(set byqvr target add). For install routing,qvr.toml'sdefault-targetssit above the machine-localdefault_target(order:--targetflag >qvr.tomldefault-targets >config.yamldefault_target). See registry-format.md and the team-workflows guide.
# Registries
registries:
community:
url: https://github.com/astra-sh/community-skills.git
acme:
url: git@github.com:acme/skills.git
# Defaults
default_target: claude # Default agent target
default_registry: acme # Default registry for publish
# GitHub integration
github_token: "" # For GitHub search + higher rate limits
# Security
security:
scan_on_install: true # Auto-scan skills on install
require_scan: false # Forbid --no-scan when true
require_signed: false # Require verified Git signatures for installs
block_severity: critical # Block install at this severity (critical, error, warning)
# Output
output:
format: text # text | json
color: auto # auto | always | never
# Audit pipeline (experimental, opt-in — toggled by `qvr audit enable`/`disable`)
ops:
enabled: false # Record skill-attributed agent activity into ~/.quiver/skillops.db| Key | Type | Default | Description |
|---|---|---|---|
registries.<name>.url |
string | - | Git URL for a registry |
default_target |
string | claude |
Default --target for install/link |
default_registry |
string | - | Default --registry for publish |
github_token |
string | "" |
GitHub API token for search |
security.scan_on_install |
bool | true |
Auto-scan on install |
security.require_scan |
bool | false |
Reject --no-scan bypasses |
security.require_signed |
bool | false |
Require verified Git signatures |
security.block_severity |
string | critical |
Minimum severity to block install |
output.format |
string | text |
Default output format |
output.color |
string | auto |
Color mode |
ops.enabled |
bool | false |
Enable the experimental audit pipeline (see audit-and-tracing.md) |
# Get a value
qvr config get default_target
# → claude
# Set a value
qvr config set default_target cursor
qvr config set security.scan_on_install false
qvr config set security.require_scan true
qvr config set security.require_signed true
qvr config set github_token ghp_xxxxx
# Get all (dump config)
qvr config get
qvr config get --output jsonPin trusted commit authors per registry. A skill installs only when the commit
that last touched its own subtree (skills/<name>) — not whoever pushed
last to the branch — was authored by a pinned identity:
# Pin by email (matches any "Name <email>" with that address) …
qvr trust pin acme/skills alice@example.com
# … or by full identity.
qvr trust pin acme/skills "Alice <alice@example.com>"
qvr trust list # pinned authors per registry
qvr trust verify # check installed skills against pins
qvr trust unpin acme/skills alice@example.com # remove one author
qvr trust unpin acme/skills # remove all pins for the registryA pin must carry an email (a bare GitHub handle is rejected, since it can never match a git commit identity).
Skills may also declare the signer their ref must carry, via
metadata.signed_by in SKILL.md. When the resolved ref has a verified Git
signature whose signer does not match the declaration, the install is blocked:
---
name: code-review
description: …
metadata:
signed_by: alice@example.com
---All config keys can be overridden via environment variables with QUIVER_
prefix:
export QUIVER_DEFAULT_TARGET=cursor
export QUIVER_GITHUB_TOKEN=ghp_xxxxx
export QUIVER_SECURITY_SCAN_ON_INSTALL=false
export QUIVER_OUTPUT_FORMAT=json- CLI flags (
--output json,--target claude) - Environment variables (
QUIVER_*) - Config file (
~/.quiver/config.yaml) - Defaults
| Path | Purpose |
|---|---|
~/.quiver/config.yaml |
Configuration |
~/.quiver/qvr.lock |
Global ambient lock (--global lane) |
~/.quiver/registries/<org>/<repo>.git/ |
Bare clones of every registered source |
~/.quiver/worktrees/<org>/<repo>/<skill>/<sha7>/ |
Worktree store: SHA-keyed sparse worktrees, shared across projects (mirrors the registries/ shape) |
~/.quiver/cache/index/<name>.json |
Registry index cache (per-registry skill catalog; TTL'd, rebuilt from the bare clone) |
~/.quiver/skillops.db |
Audit pipeline SQLite store (only when ops.enabled) |
<project>/qvr.toml |
Declarative intent — skills + [project].default-targets |
<project>/qvr.lock |
Project lock — resolved proof, source of truth for what agents see |
Override base path: export QUIVER_HOME=/custom/path