Skip to content

Referensi CLI

OpenSpec CLI (openspec) menyediakan perintah terminal untuk penyiapan proyek, validasi, pemeriksaan status, dan manajemen. Perintah ini melengkapi perintah slash AI (seperti /opsx:propose) yang didokumentasikan di Perintah.

Ringkasan

KategoriPerintahTujuan
Penyiapaninit, updateInisialisasi dan perbarui OpenSpec di proyek Anda
Store (repo OpenSpec mandiri)store setup, store register, store unregister, store remove, store list, store doctorKelola store — repo OpenSpec mandiri yang telah Anda daftarkan
KesehatandoctorLaporkan kesehatan hubungan untuk root yang teridentifikasi
Konteks kerjacontextKumpulkan set kerja (root + store yang direferensikan)
Workset pribadiworkset create, workset list, workset open, workset removeSimpan dan buka tampilan kerja pribadi, lokal di tool Anda
Penelusuranlist, view, showJelajahi perubahan dan spesifikasi
ValidasivalidatePeriksa perubahan dan spesifikasi untuk menemukan masalah
Siklus hiduparchiveFinalisasi perubahan yang telah selesai
Alur kerjanew change, status, instructions, templates, schemasDukungan alur kerja yang berbasis artefak
Skemaschema init, schema fork, schema validate, schema whichBuat dan kelola alur kerja kustom
KonfigurasiconfigLihat dan ubah pengaturan
Utilitasfeedback, completionUmpan balik dan integrasi shell

Perintah Manusia vs Agen

Sebagian besar perintah CLI dirancang untuk penggunaan manusia di terminal. Beberapa perintah juga mendukung penggunaan agen/script melalui output JSON.

Perintah Hanya untuk Manusia

Perintah ini bersifat interaktif dan dirancang untuk penggunaan di terminal:

PerintahTujuan
openspec initInisialisasi proyek (prompt interaktif)
openspec viewDasbor interaktif
openspec workset open <name>Buka workset yang disimpan (jendela editor atau sesi agen terminal)
openspec config editBuka konfigurasi di editor
openspec feedbackKirim umpan balik via GitHub
openspec completion installInstal pelengkapan otomatis shell

Perintah yang Kompatibel dengan Agen

Perintah ini mendukung output --json untuk penggunaan pemrograman oleh agen AI dan script:

PerintahPenggunaan ManusiaPenggunaan Agen
openspec listJelajahi perubahan/specs--json untuk data terstruktur
openspec show <item>Baca konten--json untuk parsing
openspec validatePeriksa masalah--all --json untuk validasi massal
openspec statusLihat kemajuan artefak--json untuk status terstruktur
openspec instructionsDapatkan langkah selanjutnya--json untuk instruksi agen
openspec templatesTemukan path template--json untuk resolusi path
openspec schemasDaftar skema yang tersedia--json untuk penemuan skema
openspec store setup <id>Buat dan daftarkan store lokal--json dengan input eksplisit untuk output setup terstruktur
openspec store register <path>Daftarkan store yang ada--json untuk output pendaftaran terstruktur
openspec store unregister <id>Lupakan pendaftaran store lokal--json untuk output pembersihan terstruktur
openspec store remove <id>Hapus folder store lokal yang terdaftar--yes --json untuk penghapusan non-interaktif
openspec store listJelajahi store yang terdaftar--json untuk pendaftaran terstruktur
openspec store doctorPeriksa setup store lokal--json untuk diagnostik terstruktur
openspec new change <id>Buat kerangka perubahan repo-lokal--json, ditambah --store <id> untuk menggunakan store terdaftar sebagai root OpenSpec
openspec workset create [name]Susun tampilan kerja pribadi--member <path> --json untuk komposisi non-interaktif
openspec workset listJelajahi workset yang disimpan--json untuk tampilan terstruktur
openspec workset remove <name>Hapus tampilan yang disimpan--yes --json untuk penghapusan non-interaktif

Opsi Global

Opsi ini berlaku untuk semua perintah:

OpsiDeskripsi
--version, -VTampilkan nomor versi
--no-colorNonaktifkan output warna
--help, -hTampilkan bantuan untuk perintah

Perintah Setup

openspec init

Inisialisasi OpenSpec di proyek Anda. Membuat struktur folder dan mengonfigurasi integrasi alat AI.

Perilaku default menggunakan default konfigurasi global: profil core, pengiriman both, alur kerja propose, explore, apply, sync, archive.

openspec init [path] [options]

Argumen:

ArgumenWajibDeskripsi
pathTidakDirektori target (default: direktori saat ini)

Opsi:

OpsiDeskripsi
--tools <list>Konfigurasi alat AI secara non-interaktif. Gunakan all, none, atau daftar yang dipisahkan koma
--forceBersihkan file legacy secara otomatis tanpa meminta konfirmasi
--profile <profile>Timpa profil global untuk menjalankan init ini (core atau custom)

--profile custom menggunakan alur kerja apa pun yang saat ini dipilih di konfigurasi global (openspec config profile).

ID Alat yang Didukung (--tools): amazon-q, antigravity, auggie, bob, claude, cline, codeartsagent, codex, forgecode, codebuddy, continue, costrict, crush, cursor, factory, gemini, github-copilot, hermes, iflow, junie, kilocode, kimi, kiro, lingma, vibe, oh-my-pi, opencode, pi, qoder, qwen, roocode, trae, windsurf, zcode

Daftar ini mencerminkan AI_TOOLS di src/core/config.ts. Lihat Alat yang Didukung untuk keterampilan dan path perintah setiap alat.

Contoh:

bash
# Inisialisasi interaktif
openspec init

# Inisialisasi di direktori tertentu
openspec init ./my-project

# Non-interaktif: konfigurasi untuk Claude dan Cursor
openspec init --tools claude,cursor

# Konfigurasi untuk semua alat yang didukung
openspec init --tools all

# Timpa profil untuk menjalankan ini
openspec init --profile core

# Lewati prompt dan bersihkan file legacy secara otomatis
openspec init --force

Yang dibuatnya:

openspec/
├── specs/              # Spesifikasi Anda (sumber kebenaran)
├── changes/            # Perubahan yang diusulkan
└── config.yaml         # Konfigurasi proyek

.claude/skills/         # Keterampilan Claude Code (jika claude dipilih)
.cursor/skills/         # Keterampilan Cursor (jika cursor dipilih)
.cursor/commands/       # Perintah Cursor OPSX (jika pengiriman mencakup perintah)
... (konfigurasi alat lainnya)

openspec update

Perbarui file instruksi OpenSpec setelah mengupgrade CLI. Hasilkan ulang file konfigurasi alat AI menggunakan profil global saat ini, alur kerja yang dipilih, dan mode pengiriman.

openspec update [path] [options]

Argumen:

ArgumenWajibDeskripsi
pathTidakDirektori target (default: direktori saat ini)

Opsi:

OpsiDeskripsi
--forcePaksa pembaruan bahkan ketika file sudah up to date

Contoh:

bash
# Perbarui file instruksi setelah upgrade npm
npm update @fission-ai/openspec
openspec update

Store (repo OpenSpec mandiri)

Beta. Store dan fitur yang dibangun di atasnya (referensi, konteks kerja, workset) adalah yang baru; nama perintah, flag, format file, dan output JSON mungkin berubah bentuk antar rilis. Untuk panduan langkah demi langkah yang berfokus pada masalah, lihat panduan store.

Store adalah repo OpenSpec mandiri yang telah Anda daftarkan di mesin ini — misalnya repo perencanaan atau repo kontrak. Mendaftarkan store memungkinkan perintah normal (list, show, status, validate, new change, archive, ...) bertindak di dalamnya dari mana saja dengan meneruskan --store <id>.

openspec store setup

Buat dan daftarkan store lokal. Tanpa argumen di terminal, OpenSpec memandu pengguna melalui setup. Agen dan script harus meneruskan input eksplisit dan menggunakan --json.

bash
openspec store setup [id] [options]

Opsi:

OpsiDeskripsi
--path <path>Folder tempat store harus berada (misalnya ~/openspec/<id>)
--remote <url>Catat remote kanonik di store.yaml store baru
--init-gitInisialisasi repositori Git dengan commit awal (default)
--no-init-gitLewati semua aksi Git: tidak ada inisialisasi, tidak ada commit awal
--jsonOutput JSON

Jalankan non-interaktif (--json, script, agen) harus meneruskan baik id store maupun --path. Di terminal interaktif, setup meminta lokasi dengan saran yang dapat diedit di tempat yang terlihat dan dimiliki pengguna (misalnya ~/openspec/<id>); ini tidak pernah default ke direktori data yang dikelola OpenSpec.

Contoh:

bash
openspec store setup
openspec store setup team-context
openspec store setup team-context --path ~/openspec/team-context --no-init-git
openspec store setup team-context --path ~/openspec/team-context --no-init-git --json

openspec store register

Daftarkan folder store lokal yang ada. Selama beta store, root mungkin didaftarkan sebelum ada perubahan, spec diterapkan, atau perubahan diarsipkan; dalam hal itu openspec/changes/, openspec/specs/, dan openspec/changes/archive/ mungkin tidak ada sampai perintah normal membuatnya. Repo yang hanya berisi konfigurasi yang mendeklarasikan store: <id> tetap menjadi pointer ke store lain dan tidak didaftarkan sebagai root store kecuali pointer tersebut dihapus.

bash
openspec store register [path] [options]

Opsi:

OpsiDeskripsi
--id <id>Id store; default ke metadata store atau nama folder
--yesKonfirmasi pembuatan metadata identitas store untuk root OpenSpec yang sehat
--jsonOutput JSON

openspec store unregister

Lupakan pendaftaran store lokal tanpa menghapus file.

bash
openspec store unregister <id> [--json]

Gunakan ini ketika store dipindahkan, dikloning di tempat lain, atau tidak boleh ditampilkan lagi oleh OpenSpec di mesin ini.

openspec store remove

Lupakan pendaftaran store lokal dan hapus folder lokalnya.

bash
openspec store remove <id> [--yes] [--json]

remove menampilkan folder yang tepat sebelum menghapus di terminal interaktif. Agen, script, dan pemanggil JSON harus meneruskan --yes untuk mengkonfirmasi penghapusan. OpenSpec menolak menghapus folder yang tidak berisi metadata store yang cocok.

openspec store list

Daftar store yang terdaftar secara lokal.

bash
openspec store list [--json]
openspec store ls [--json]

openspec store doctor

Periksa pendaftaran store lokal, metadata, dan kehadiran Git.

bash
openspec store doctor [id] [--json]

Doctor hanya untuk diagnostik; ini melaporkan root yang hilang, ketidakcocokan metadata, dan state registry lokal yang tidak valid tanpa memodifikasi store.

Referencing stores from a project

Repo proyek dapat mendeklarasikan store mana yang digunakan untuk kerjanya di openspec/config.yaml:

yaml
schema: spec-driven
references:
  - team-context

Dari saat itu, output openspec instructions di repo tersebut (baik permukaan per-artefak maupun apply, mode JSON dan manusia) membawa indeks dari spec setiap store yang dirujuk — id spec, ringkasan satu baris dari bagian Purpose setiap spec, dan perintah pengambilan (openspec show <spec-id> --type spec --store <id>). Indeks dibangun secara langsung dari checkout yang terdaftar setiap kali dijalankan; konten spec tidak pernah disalin ke dalam output.

Referensi adalah konteks hanya-baca. Mereka tidak pernah mengubah tempat perintah bertindak: pekerjaan tetap di root repo sendiri, dan menulis ke store yang dirujuk tetap merupakan aksi --store eksplisit. Referensi yang tidak dapat diselesaikan (misalnya, store yang tidak terdaftar di mesin ini) menjadi peringatan di indeks dengan perbaikan yang tepat, dan instruksi tetap dihasilkan. openspec doctor melaporkan kesehatan referensi di satu tempat.

Recording where a store is cloned from

Store dapat mencatat sumber klon kanoniknya di file identitas yang di-commit, sehingga proses onboarding tidak pernah berakhir di "daftarkan store":

bash
openspec store setup team-context --path ~/openspec/team-context \
  --remote git@github.com:acme/team-context.git

Remote masuk ke .openspec-store/store.yaml di dalam commit awal, sehingga setiap klon lahir dengan mengetahuinya. Untuk store yang sudah ada, edit store.yaml secara manual dan commit. store doctor menampilkan remote yang tercatat (dan asal Git checkout yang diamati); panduan berbagi setup/register menamainya; dan register mencatat asal checkout di registry lokal mesin.

Deklarasi referensi juga dapat membawa sumber klon, sehingga rekan tim yang belum memiliki store mendapatkan perbaikan lengkap yang dapat ditempel (git clone <remote> <path> && openspec store register <path> --id <id>):

yaml
references:
  - { id: team-context, remote: "git@github.com:acme/team-context.git" }

Mencatat remote bukanlah sinkronisasi: OpenSpec tidak pernah mengkloning, menarik, atau mengirimkan secara otomatis.

Declaring a default store

Repo yang perencanaannya sepenuhnya dieksternalisasi — tidak ada openspec/specs/ atau openspec/changes/ lokal — dapat mendeklarasikan store-nya sekali saja alih-alih meneruskan --store di setiap perintah:

yaml
# openspec/config.yaml (satu-satunya file di bawah openspec/)
store: team-context

Perintah normal kemudian secara otomatis mengatasi ke store yang dideklarasikan; banner root dan blok JSON root melaporkan source: "declared" dengan id store, dan petunjuk yang dicetak tetap membawa --store <id>. Deklarasi adalah fallback, bukan pengganti: --store eksplisit selalu menang, dan direktori dengan folder perencanaan nyata mengabaikan pointer (dengan peringatan). Untuk mengubah repo pointer menjadi root OpenSpec lokal, hapus baris store: dan jalankan openspec init — init menolak membuat kerangka sementara deklarasi ada.

Variasi tingkat mesin mencakup semua repo sekaligus: openspec config set defaultStore <id> (lihat Konfigurasi). Ini hanya dikonsultasikan setelah --store, root lokal, dan pointer proyek semuanya gagal diatasi; banner root dan blok JSON root kemudian melaporkan source: "global_default".

Doctor (kesehatan relasi)

Satu pertanyaan hanya-baca, satu lokasi: apakah akar OpenSpec sehat, dan apakah toko yang dirujuknya tersedia di mesin ini?

bash
openspec doctor [--store <id>] [--json]

Laporan memisahkan kesehatan akar, kesehatan metadata toko (termasuk catatan ketika remote yang tercatat dan asal checkout berbeda, serta catatan ketika checkout toko tertinggal di belakang ref pelacakan upstream terakhir yang diambil), dan kesehatan referensi (instruksi diagnostik yang sama ditampilkan, dengan perbaikan clone untuk referensi yang belum terselesaikan). Temuan kesehatan dengan tingkat keparahan apapun menghasilkan kode keluar 0 — agen membaca array status; hanya kegagalan perintah (tidak ada akar, toko tidak dikenali) yang menghasilkan kode keluar 1. Doctor tidak pernah mengkloning, menyinkronkan, atau memperbaiki. Untuk mendapatkan set yang disusun itu sendiri bukan kondisi sehatnya, gunakan openspec context.

Konteks kerja (set yang disusun)

Segala sesuatu yang terkait dengan pekerjaan ini melalui deklarasi OpenSpec, dalam satu set kerja: akar OpenSpec dan toko yang dirujuknya.

bash
openspec context [--store <id>] [--json] [--code-workspace <path> [--force]]

Ringkasan JSON dapat dikonsumsi agen (setiap toko yang dirujuk dan tersedia membawa resep fetch-nya; anggota yang belum terselesaikan membawa instruksi perbaikan yang sama seperti yang ditampilkan oleh doctor). Opsi --code-workspace juga menulis file ruang kerja VS Code yang berisi akar ditambah toko yang dirujuk dan tersedia (folder ref:<id>) — ini adalah satu-satunya operasi tulis yang dilakukan oleh perintah ini, yang akan ditolak jika file sudah ada tanpa opsi --force. Anggota yang tidak tersedia dilaporkan, tidak pernah ditebak.

"Konteks kerja" adalah set yang disusun; field context: di openspec/config.yaml adalah latar belakang proyek yang disisipkan ke dalam instruksi — dua hal yang berbeda. Perintah openspec doctor menjawab apakah set tersebut sehat; perintah openspec context menjawab apa itu set tersebut.

Set kerja pribadi

Beta. Set kerja adalah bagian dari permukaan beta baru; perintah, flag, dan format file mungkin berubah antar rilis. Untuk panduan langkah demi langkah, lihat panduan toko.

Set kerja adalah tampilan pribadi yang bernama dari folder yang Anda gunakan bersama — akar perencanaan plus apapun yang Anda pilih — yang disimpan di mesin Anda dan dibuka kembali berdasarkan nama di alat Anda. Ini sepenuhnya lokal: tidak pernah di-commit, tidak pernah dibagikan, tidak pernah diturunkan dari deklarasi, dan menghapusnya tidak pernah menyentuh folder anggota.

bash
openspec workset create [name] [--member <path> | --member <name>=<path>]... [--tool <id>] [--json]
openspec workset list [--json]
openspec workset open <name> [--tool <id>]
openspec workset remove <name> [--yes] [--json]

create menjalankan alur panduan singkat (atau menerima flag --member secara non-interaktif; anggota pertama adalah utama — sesi dimulai di sana). open meluncurkan alat yang dipilih: editor (VS Code, Cursor) membuka jendela dengan setiap anggota dan kembali; agen CLI (Claude Code, codex) mengambil alih terminal ini sebagai sesi dengan setiap anggota yang terlampir dan tidak ada prompt yang terisi sebelumnya, berakhir ketika Anda keluar. Folder anggota yang hilang saat dibuka akan dilewati dengan catatan; yang lainnya terbuka. Preferensi alat yang disimpan dapat diganti per pembukaan dengan --tool.

Mendukung alat baru adalah konfigurasi, bukan kode. Setiap alat adalah salah satu dari dua gaya peluncuran — workspace-file (diluncurkan dengan .code-workspace yang dihasilkan) atau attach-dirs (satu flag lampiran per anggota) — dan kunci openers di config.json global (buka dengan openspec config edit) menambahkan alat atau menyesuaikan bawaan per bidang:

json
{
  "openers": {
    "zed": { "style": "workspace-file" },
    "claude": { "attach_flag": "--dir" }
  }
}

Semua status set kerja berada di folder worksets/ di direktori data global (tampilan yang disimpan plus file <name>.code-workspace yang dihasilkan, dibuat ulang setiap kali dibuka); menghapus folder tersebut menghapus semua jejak.


Perintah Penelusuran

openspec list

Daftar perubahan atau spesifikasi di proyek Anda.

openspec list [options]

Opsi:

OpsiDeskripsi
--specsDaftar spesifikasi sebagai ganti perubahan
--changesDaftar perubahan (default)
--sort <order>Urutkan berdasarkan recent (default) atau name
--jsonKeluarkan sebagai JSON

Contoh:

bash
# Daftar semua perubahan aktif
openspec list

# Daftar semua spesifikasi
openspec list --specs

# Keluaran JSON untuk skrip
openspec list --json

Keluaran (teks):

Perubahan:
  add-dark-mode     Tidak ada tugas      baru saja

openspec view

Tampilkan dasbor interaktif untuk menelusuri spesifikasi dan perubahan.

openspec view

Membuka antarmuka berbasis terminal untuk menavigasi spesifikasi dan perubahan proyek Anda.


openspec show

Tampilkan detail perubahan atau spesifikasi.

openspec show [item-name] [options]

Argumen:

ArgumenDiperlukanDeskripsi
item-nameTidakNama perubahan atau spesifikasi (meminta input jika dihilangkan)

Opsi:

OpsiDeskripsi
--type <type>Tentukan jenis: change atau spec (terdeteksi otomatis jika tidak ambigu)
--jsonKeluarkan sebagai JSON
--no-interactiveNonaktifkan prompt

Opsi khusus perubahan:

OpsiDeskripsi
--deltas-onlyTampilkan hanya spesifikasi delta (mode JSON)

Opsi khusus spesifikasi:

OpsiDeskripsi
--requirementsTampilkan hanya persyaratan, kecualikan skenario (mode JSON)
--no-scenariosKecualikan konten skenario (mode JSON)
-r, --requirement <id>Tampilkan persyaratan tertentu berdasarkan indeks berbasis 1 (mode JSON)

Contoh:

bash
# Seleksi interaktif
openspec show

# Tampilkan perubahan tertentu
openspec show add-dark-mode

# Tampilkan spesifikasi tertentu
openspec show auth --type spec

# Keluaran JSON untuk penguraian
openspec show add-dark-mode --json

Perintah Validasi

openspec validate

Validasi perubahan dan spesifikasi untuk masalah struktural.

openspec validate [item-name] [options]

Perubahan dengan nol delta spesifikasi gagal validasi kecuali .openspec.yaml-nya mendeklarasikan skip_specs: true (untuk refactor murni, tooling, atau pekerjaan dokumen — lihat Resep 5).

Argumen:

ArgumenDiperlukanDeskripsi
item-nameTidakItem tertentu untuk divalidasi (meminta input jika dihilangkan)

Opsi:

OpsiDeskripsi
--allValidasi semua perubahan dan spesifikasi
--changesValidasi semua perubahan
--specsValidasi semua spesifikasi
--type <type>Tentukan jenis ketika nama ambigu: change atau spec
--strictAktifkan mode validasi ketat
--jsonKeluarkan sebagai JSON
--concurrency <n>Validasi paralel maksimum (default: 6, atau env OPENSPEC_CONCURRENCY)
--no-interactiveNonaktifkan prompt

Contoh:

bash
# Validasi interaktif
openspec validate

# Validasi perubahan tertentu
openspec validate add-dark-mode

# Validasi semua perubahan
openspec validate --changes

# Validasi semua hal dengan keluaran JSON (untuk CI/skrip)
openspec validate --all --json

# Validasi ketat dengan peningkatan paralelisme
openspec validate --all --strict --concurrency 12

Keluaran (teks):

Memvalidasi add-dark-mode...
  ✓ proposal.md valid
  ✓ specs/ui/spec.md valid
  ⚠ design.md: bagian "Technical Approach" hilang

1 peringatan ditemukan

Keluaran (JSON):

json
{
  "version": "1.0.0",
  "results": {
    "changes": [
      {
        "name": "add-dark-mode",
        "valid": true,
        "warnings": ["design.md: missing 'Technical Approach' section"]
      }
    ]
  },
  "summary": {
    "total": 1,
    "valid": 1,
    "invalid": 0
  }
}

Perintah Siklus Hidup

openspec archive

Arsipkan perubahan yang selesai dan gabungkan spesifikasi delta ke spesifikasi utama.

openspec archive [change-name] [options]

Argumen:

ArgumenDiperlukanDeskripsi
change-nameTidakPerubahan untuk diarsipkan (meminta input jika dihilangkan)

Opsi:

OpsiDeskripsi
-y, --yesLewati prompt konfirmasi
--skip-specsLewati pembaruan spesifikasi untuk satu kali arsip. Perubahan yang secara permanen tidak memiliki delta spesifikasi harus mendeklarasikan skip_specs: true di .openspec.yaml-nya sebagai gantinya — ini mengarsipkan tanpa flag
--no-validateLewati validasi (memerlukan konfirmasi)

Contoh:

bash
# Arsip interaktif
openspec archive

# Arsipkan perubahan tertentu
openspec archive add-dark-mode

# Arsipkan tanpa prompt (CI/skrip)
openspec archive add-dark-mode --yes

# Arsipkan perubahan tooling yang tidak memengaruhi spesifikasi
openspec archive update-ci-config --skip-specs

Apa yang dilakukan:

  1. Memvalidasi perubahan (kecuali --no-validate)
  2. Meminta konfirmasi (kecuali --yes)
  3. Menggabungkan spesifikasi delta ke openspec/specs/
  4. Memindahkan folder perubahan ke openspec/changes/archive/YYYY-MM-DD-<name>/

Perintah Alur Kerja

Perintah ini mendukung alur kerja berbasis artefak OPSX. Mereka berguna bagi manusia yang memeriksa kemajuan dan agen yang menentukan langkah selanjutnya.

openspec new change

Buat direktori perubahan dan metadata opsional yang di-check-in di root OpenSpec yang terselesaikan.

bash
openspec new change <name> [options]

Nama perubahan harus menggunakan huruf kecil kebab-case. Mereka dimulai dengan huruf kecil, kemudian berisi huruf kecil, angka, dan tanda hubung tunggal. Mereka tidak dapat dimulai dengan angka, berisi spasi, garis bawah, huruf besar, tanda hubung berturut-turut, atau tanda hubung di awal/akhir. Saat menyertakan ID tiket eksternal, beri awalan dengan kata, misalnya ticket-123-add-notifications alih-alih 123-add-notifications.

Opsi:

OpsiDeskripsi
--description <text>Deskripsi untuk ditambahkan ke index.md
--goal <text>Metadata tujuan opsional untuk disimpan dengan perubahan
--schema <name>Skema alur kerja yang akan digunakan
--store <id>ID toko untuk digunakan sebagai root OpenSpec (toko adalah repo OpenSpec mandiri yang telah Anda daftarkan)
--jsonKeluarkan JSON

Contoh:

bash
openspec new change add-billing-api
openspec new change add-billing-api --store team-context --json

openspec status

Tampilkan status penyelesaian artefak untuk sebuah perubahan.

openspec status [options]

Opsi:

OpsiDeskripsi
--change <id>Nama perubahan (meminta input jika dihilangkan)
--schema <name>Override skema (terdeteksi otomatis dari konfigurasi perubahan)
--jsonKeluarkan sebagai JSON

Contoh:

bash
# Pemeriksaan status interaktif
openspec status

# Status untuk perubahan tertentu
openspec status --change add-dark-mode

# JSON untuk penggunaan agen
openspec status --change add-dark-mode --json

Keluaran (teks):

Perubahan: add-dark-mode
Skema: spec-driven
Kemajuan: 2/4 artefak selesai

[x] proposal
[ ] design
[x] specs
[-] tasks (diblokir oleh: design)

Perubahan yang mendeklarasikan skip_specs: true menampilkan tahap spesifikasinya sebagai [~] specs (skipped: change declares skip_specs) dan mengecualikannya dari hitungan kemajuan.

Keluaran (JSON):

json
{
  "changeName": "add-dark-mode",
  "schemaName": "spec-driven",
  "isComplete": false,
  "applyRequires": ["tasks"],
  "artifacts": [
    {"id": "proposal", "outputPath": "proposal.md", "status": "done", "requires": []},
    {"id": "design", "outputPath": "design.md", "status": "ready", "requires": ["proposal"]},
    {"id": "specs", "outputPath": "specs/**/*.md", "status": "done", "requires": ["proposal"]},
    {"id": "tasks", "outputPath": "tasks.md", "status": "blocked", "requires": ["specs", "design"], "missingDeps": ["design"]}
  ]
}

openspec instructions

Dapatkan instruksi yang diperkaya untuk membuat artefak atau menerapkan tugas. Digunakan oleh agen AI untuk memahami apa yang harus dibuat selanjutnya.

openspec instructions [artifact] [options]

Argumen:

ArgumenDiperlukanDeskripsi
artifactTidakID artefak: proposal, specs, design, tasks, atau apply

Opsi:

OpsiDeskripsi
--change <id>Nama perubahan (diperlukan dalam mode non-interaktif)
--schema <name>Override skema
--jsonKeluarkan sebagai JSON

Kasus khusus: Gunakan apply sebagai artefak untuk mendapatkan instruksi implementasi tugas.

Contoh:

bash
# Dapatkan instruksi untuk artefak selanjutnya
openspec instructions --change add-dark-mode

# Dapatkan instruksi artefak tertentu
openspec instructions design --change add-dark-mode

# Dapatkan instruksi penerapan/implementasi
openspec instructions apply --change add-dark-mode

# JSON untuk konsumsi agen
openspec instructions design --change add-dark-mode --json

Keluaran mencakup:

  • Konten templat untuk artefak
  • Konteks proyek dari konfigurasi
  • Konten dari artefak dependensi
  • Aturan per artefak dari konfigurasi

Untuk artefak yang dilewati melalui skip_specs: true, keluaran hanya berupa peringatan (JSON menambahkan bidang skipped/warning) — artefak tidak boleh dibuat.


openspec templates

Tampilkan jalur templat yang terselesaikan untuk semua artefak dalam skema.

openspec templates [options]

Opsi:

OpsiDeskripsi
--schema <name>Skema untuk diperiksa (default: spec-driven)
--jsonKeluarkan sebagai JSON

Contoh:

bash
# Tampilkan jalur templat untuk skema default
openspec templates

# Tampilkan templat untuk skema kustom
openspec templates --schema my-workflow

# JSON untuk penggunaan pemrograman
openspec templates --json

Keluaran (teks):

Skema: spec-driven

Templat:
  proposal  → ~/.openspec/schemas/spec-driven/templates/proposal.md
  specs     → ~/.openspec/schemas/spec-driven/templates/specs.md
  design    → ~/.openspec/schemas/spec-driven/templates/design.md
  tasks     → ~/.openspec/schemas/spec-driven/templates/tasks.md

openspec schemas

Daftar skema alur kerja yang tersedia dengan deskripsi dan aliran artefaknya.

openspec schemas [options]

Opsi:

OpsiDeskripsi
--jsonKeluarkan sebagai JSON

Contoh:

bash
openspec schemas

Keluaran:

Skema yang tersedia:

  spec-driven (paket)
    Alur kerja pengembangan berbasis spesifikasi default
    Alur: proposal → specs → design → tasks

  my-custom (proyek)
    Alur kerja kustom untuk proyek ini
    Alur: research → proposal → tasks

Perintah Schema

Perintah untuk membuat dan mengelola skema alur kerja kustom.

openspec schema init

Buat skema lokal proyek baru.

openspec schema init <name> [options]

Argumen:

ArgumenWajibDeskripsi
nameYaNama skema (kebab-case)

Opsi:

OpsiDeskripsi
--description <teks>Deskripsi skema
--artifacts <daftar>ID artefak yang dipisahkan koma (default: proposal,specs,design,tasks)
--defaultTetapkan sebagai skema default proyek
--no-defaultJangan tanyakan untuk menetapkan sebagai default
--forceTimpa skema yang ada
--jsonOutput sebagai JSON

Contoh:

bash
# Pembuatan skema interaktif
openspec schema init research-first

# Non-interaktif dengan artefak spesifik
openspec schema init rapid \
  --description "Alur kerja iterasi cepat" \
  --artifacts "proposal,tasks" \
  --default

Yang dihasilkan:

openspec/schemas/<name>/
├── schema.yaml           # Definisi skema
└── templates/
    ├── proposal.md       # Template untuk setiap artefak
    ├── specs.md
    ├── design.md
    └── tasks.md

openspec schema fork

Salin skema yang ada ke proyek Anda untuk disesuaikan.

openspec schema fork <source> [name] [options]

Argumen:

ArgumenWajibDeskripsi
sourceYaSkema yang akan disalin
nameTidakNama skema baru (default: <source>-custom)

Opsi:

OpsiDeskripsi
--forceTimpa tujuan yang ada
--jsonOutput sebagai JSON

Contoh:

bash
# Fork skema spec-driven bawaan
openspec schema fork spec-driven my-workflow

openspec schema validate

Validasi struktur dan template skema.

openspec schema validate [name] [options]

Argumen:

ArgumenWajibDeskripsi
nameTidakSkema yang akan divalidasi (validasi semua jika diabaikan)

Opsi:

OpsiDeskripsi
--verboseTampilkan langkah validasi terperinci
--jsonOutput sebagai JSON

Contoh:

bash
# Validasi skema tertentu
openspec schema validate my-workflow

# Validasi semua skema
openspec schema validate

openspec schema which

Tampilkan dari mana skema diselesaikan (berguna untuk debugging prioritas).

openspec schema which [name] [options]

Argumen:

ArgumenWajibDeskripsi
nameTidakNama skema

Opsi:

OpsiDeskripsi
--allCantumkan semua skema beserta sumbernya
--jsonOutput sebagai JSON

Contoh:

bash
# Periksa dari mana skema berasal
openspec schema which spec-driven

Output:

spec-driven diselesaikan dari: package
  Sumber: /usr/local/lib/node_modules/@fission-ai/openspec/schemas/spec-driven

Prioritas skema:

  1. Proyek: openspec/schemas/<name>/
  2. Pengguna: ~/.local/share/openspec/schemas/<name>/
  3. Paket: Skema bawaan

Perintah Konfigurasi

openspec config

Lihat dan modifikasi konfigurasi global OpenSpec.

openspec config <subcommand> [options]

Subperintah:

SubperintahDeskripsi
pathTampilkan lokasi file konfigurasi
listTampilkan semua pengaturan saat ini
get <kunci>Dapatkan nilai tertentu
set <kunci> <nilai>Tetapkan nilai
unset <kunci>Hapus kunci
resetReset ke default
editBuka di $EDITOR
profile [preset]Konfigurasi profil alur kerja secara interaktif atau melalui preset

Contoh:

bash
# Tampilkan jalur file konfigurasi
openspec config path

# Cantumkan semua pengaturan
openspec config list

# Dapatkan nilai tertentu
openspec config get telemetry.enabled

# Tetapkan nilai
openspec config set telemetry.enabled false

# Tetapkan nilai string secara eksplisit
openspec config set user.name "My Name" --string

# Hapus pengaturan kustom
openspec config unset user.name

# Tetapkan toko default tingkat mesin (akar fallback ketika tidak ada --store,
# akar lokal, atau toko proyek: pointer diselesaikan)
openspec config set defaultStore team-plans

# Reset semua konfigurasi
openspec config reset --all --yes

# Edit konfigurasi di editor Anda
openspec config edit

# Konfigurasi profil dengan wizard berbasis aksi
openspec config profile

# Preset cepat: ganti alur kerja ke core (pertahankan mode pengiriman)
openspec config profile core

openspec config profile dimulai dengan ringkasan keadaan saat ini, kemudian memungkinkan Anda memilih:

  • Ubah pengiriman + alur kerja
  • Ubah pengiriman saja
  • Ubah alur kerja saja
  • Pertahankan pengaturan saat ini (keluar)

Jika Anda mempertahankan pengaturan saat ini, tidak ada perubahan yang ditulis dan tidak ada prompt pembaruan yang ditampilkan. Jika tidak ada perubahan konfigurasi tetapi file proyek saat ini tidak sinkron dengan profil/pengiriman global Anda, OpenSpec akan menampilkan peringatan dan menyarankan openspec update. Menekan Ctrl+C juga akan membatalkan alur dengan bersih (tidak ada jejak tumpukan) dan keluar dengan kode 130. Dalam daftar periksa alur kerja, [x] berarti alur kerja tersebut dipilih dalam konfigurasi global. Untuk menerapkan pilihan tersebut ke file proyek, jalankan openspec update (atau pilih Terapkan perubahan ke proyek ini sekarang? ketika diminta di dalam proyek).

Contoh interaktif:

bash
# Pembaruan hanya pengiriman
openspec config profile
# pilih: Ubah pengiriman saja
# pilih pengiriman: Skills saja

# Pembaruan hanya alur kerja
openspec config profile
# pilih: Ubah alur kerja saja
# toggle alur kerja dalam daftar periksa, lalu konfirmasi

Perintah Utilitas

openspec feedback

Kirim umpan balik tentang OpenSpec. Membuat isu GitHub.

openspec feedback <message> [options]

Argumen:

ArgumenWajibDeskripsi
messageYaPesan umpan balik

Opsi:

OpsiDeskripsi
--body <teks>Deskripsi terperinci

Persyaratan: GitHub CLI (gh) harus diinstal dan diautentikasi.

Contoh:

bash
openspec feedback "Tambahkan dukungan untuk jenis artefak kustom" \
  --body "Saya ingin mendefinisikan jenis artefak saya sendiri di luar yang bawaan."

openspec completion

Kelola pelengkapan shell untuk CLI OpenSpec.

openspec completion <subcommand> [shell]

Subperintah:

SubperintahDeskripsi
generate [shell]Output skrip pelengkapan ke stdout
install [shell]Instal pelengkapan untuk shell Anda
uninstall [shell]Hapus pelengkapan yang terinstal

Shell yang didukung: bash, zsh, fish, powershell

Contoh:

bash
# Instal pelengkapan (deteksi shell otomatis)
openspec completion install

# Instal untuk shell tertentu
openspec completion install zsh

# Hasilkan skrip untuk instalasi manual
openspec completion generate bash > ~/.bash_completion.d/openspec

# Hapus instalasi
openspec completion uninstall

Kode Keluar

KodeMakna
0Berhasil
1Kesalahan (kegagalan validasi, file hilang, dll.)

Variabel Lingkungan

VariabelDeskripsi
OPENSPEC_TELEMETRYTetapkan ke 0 untuk menonaktifkan telemetri
DO_NOT_TRACKTetapkan ke 1 untuk menonaktifkan telemetri (sinyal DNT standar)
OPENSPEC_CONCURRENCYKonkurensi default untuk validasi massal (default: 6)
EDITOR atau VISUALEditor untuk openspec config edit
NO_COLORNonaktifkan output warna ketika disetel

Dokumentasi Terkait

  • Perintah - Perintah slash AI (/opsx:propose, /opsx:apply, dll.)
  • Alur Kerja - Pola umum dan kapan menggunakan setiap perintah
  • Kustomisasi - Buat skema dan template kustom
  • Memulai - Panduan setup pertama kali