.comet/config.yaml is the single project-level configuration file. This page covers the shared entry fields and the classic.* defaults. See Native configuration for native.* fields.
This page uses <classic-root> for the configured Classic OpenSpec root: docs/openspec/ for new projects and openspec/ for projects that retain the legacy layout. The location is selected by classic.artifact_layout; see Project file structure.
Complete example
When both workflows are enabled and the project uses English, an installation can generate a configuration like this. From the Classic perspective, the shared fields and theclassic: block are the relevant parts:
Shared entry fields
Changing
default_workflow changes only the /comet entry. It does not
migrate any existing change.Hook write allowlist
hook.allow_paths is a shared write policy. When it is empty, writes inside the project outside artifact areas follow each workflow’s phase and Guard rules. Once configured, writes to matching directories and their subdirectories pass through directly. A typical use is allowing implementation directories such as src/ to be modified during any phase, avoiding blocks outside Build.
.comet Runtime state directory and Classic’s OpenSpec and Superpowers artifact roots are always protected and cannot be allowed through this setting. Out-of-bounds or malformed paths are reported by comet doctor.
Classic fields
artifact_layout selects the project-level directory; the other four fields are snapshotted into a new Classic change’s .comet.yaml:
Classic project defaults are snapshotted into
.comet.yaml when a new change is
created. Later edits do not rewrite existing changes.Artifact language versus Skill language
The Skill language selected bycomet init determines whether the English or Chinese Comet Skills are installed. Classic artifact language is stored in classic.language:
When a new Classic change is created, Comet snapshots project-level
classic.language into <classic-root>/changes/<name>/.comet.yaml. OpenSpec proposals, designs, tasks, Superpowers design and plan documents, verification reports, and archive notes follow this setting instead of guessing from the language of the request that triggered the workflow.
Configuration precedence
The following precedence applies only to Classiclanguage, context_compression, review_mode, and auto_transition:
auto_transition in detail
auto_transition controls whether Comet invokes the next Skill after a phase advances.
Environment variables
COMET_LANGUAGE, COMET_AUTO_TRANSITION, COMET_FORCE_PHASE,
and COMET_OPENSPEC are user-facing environment variables.
COMET_CONTEXT_COMPRESSION and COMET_REVIEW_MODE exist in the resolver
layer but are not formally documented for general use; they are mainly for internal and test use.How to configure
Configure project defaults
Edit.comet/config.yaml:
Temporary overrides with environment variables
Next steps
- State management —
.comet.yamlfield reference and state-machine constraints - Context compression — the
offandbetamodes - Review mode — the
off,standard, andthoroughmodes - Automatic progression — how
auto_transitionbehaves - Project file structure — where configuration and artifacts live

