プロジェクト設定
config.yaml に数行記述するだけで、ワークフローが望む方法で変更を計画するようにできます。
openspec/config.yaml は、ワークフローに対して変更の計画方法を指定するファイルです。
たとえば、以下の設定は tasks.md アーティファクトの作成ルールを更新します。
rules:
tasks:
- End every task with a commitエージェントが実行されると、これらのルールを反映し、すべてのタスクがコミットステップで終わることを保証します。
ルールは短く保ってください。ここでの設定はすべてエージェントのコンテキストに入るため、冗長なルールは出力を悪化させる可能性があります。
しくみ
config.yaml には、エージェントがアーティファクトを作成したりワークフローを実行したりする際に受け取る指示が含まれます。
実行ごとの流れは以下のとおりです。
- ワークフローを実行します(例:
/openspec-propose)。 - エージェントが
openspec instructionsコマンドを呼び出します。 - コマンドが config.yaml からコンテキストとルールを読み取ります。
- OpenSpec の組み込み指示とカスタマイズ内容が、エージェント向けの単一のプロンプトに統合されます。
- エージェントがそのプロンプトに従ってアーティファクトを作成します。
たとえば、context フィールドとこのページ冒頭のルールがある場合、openspec instructions が tasks.md に対して返す内容は以下のようになります(簡略化して注釈を加えたものです)。
<artifact id="tasks" change="add-dark-mode" schema="spec-driven">
<!-- config.yaml より: context -->
<project_context>
Designs and tasks must cover Windows, macOS, and Linux
Write all artifacts in Spanish
</project_context>
<!-- config.yaml より: tasks に対するルール -->
<rules>
- End every task with a commit
</rules>
<!-- OpenSpec より: 組み込みガイダンス -->
<instruction>
...how to write a good tasks.md...
</instruction>
<template>
...the tasks.md structure to fill in...
</template>
</artifact>設定内容が最初に届き、次に OpenSpec の組み込み指示とテンプレートが届きます。ルールは組み込み内容を補完するものであり、置き換えるものではありません。config.yaml への編集は次の実行時にエージェントに反映されます。
フィールド
3 つのフィールドがエージェントが受け取る内容を形作ります。各フィールドの正確な仕様(型、制限、バリデーション)は Project configuration (config.yaml) に記載されています。
| フィールド | 役割 | 注入先 |
|---|---|---|
context | エージェントが常に受け取る指示 | すべて: すべてのアーティファクト、apply、archive |
rules | 1 つのアーティファクトに対する追加指示 | そのアーティファクトの作成のみ |
operations | ワークフローのステップの実行方法に関するガイダンス | apply と archive のみ |
config.yaml のその他のフィールド(schema、store、references)は、プロジェクトがどのスキーマとどの OpenSpec ルートを使用するかを選択します。これらの詳細は契約ページで説明されています。
最後の列は正確なので、フィールドはそこに記載されたステップにのみ到達します。特に、verify は rules を受け取りません。実装を記載されたアーティファクトに対して照合します。
context
context は、エージェントがアーティファクトを作成するとき、タスクを適用するとき、または変更をアーカイブするときに受け取る背景情報です。
context: |
We ship cross-platform. Designs and tasks must cover Windows, macOS, and Linux
Write all artifacts in Spanishcontext は、ワークフローの出力を形成すべき事実や制約のために使用してください。恒久的なプロジェクトドキュメントはプロジェクトのドキュメントファイルに保持し、エージェントがコードを読んで学べる内容は除外してください。
別の言語: context はすべてのアーティファクトに到達するため、Write all artifacts in Spanish. を追加して、プロポーザル、スペック、デザイン、タスクの各アーティファクトをスペイン語で作成するようにエージェントに指示できます。
rules
rules はアーティファクト ID をキーにして 1 つのアーティファクトにアタッチされます。各行はそのアーティファクトの組み込みガイダンスに追加されます。
rules:
proposal:
- Keep proposals under 500 words
tasks:
- Every UI task includes a Playwright testこれにより、プロポーザルは簡潔に保たれ、tasks.md には常にブラウザテストが計画されるようになります。他のアーティファクトは影響を受けません。
operations
operations は、アーティファクトの内容ではなく、エージェントが apply と archive をどのように実行するかをガイドします。
operations:
apply:
guidance:
- Run the linter before marking a task complete
archive:
guidance:
- Summarize what shipped before archivingapply 中は、エージェントがタスクを完了する前にリンターを実行します。archive 中は、最後に変更内容のサマリーを出力します。
config.yaml で実現できないこと
Config は標準ワークフローに指示を追加するものですが、アーティファクトの存在や構造を変更することはできません。そのレベルの制御が必要な場合や、ルールで動作が一貫して制御されない場合は、スキーマをフォークすることができます。