# Openspec Sync Specs

Sync delta specs from an OpenSpec change to main specs.

- Repository: https://github.com/OpenVidu/openvidu (2141 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add OpenVidu/openvidu --skill openspec-sync-specs -g -a claude-code -y`
Codex: `npx skills add OpenVidu/openvidu --skill openspec-sync-specs -g -a codex -y`
Cursor: `npx skills add OpenVidu/openvidu --skill openspec-sync-specs -g -a cursor -y`
Gemini CLI: `npx skills add OpenVidu/openvidu --skill openspec-sync-specs -g -a gemini-cli -y`

## Description

Sync delta specs from an OpenSpec change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change. Also use when the user says "openspec sync" or "opsx sync".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

Sync delta specs from a change to main specs.

This is an **agent-driven** operation - you will read delta specs and directly edit main specs to apply the changes. This allows intelligent merging (e.g., adding a scenario without copying the entire requirement).

**Store selection:** If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run `openspec store list --json` to discover registered store ids, then pass `--store <id>` on the commands that read or write specs and changes (`new change`, `status`, `instructions`, `list`, `show`, `validate`, `archive`, `doctor`, `context`, `schemas`, `view`). Once selected, treat `--store <id>` as sticky for the rest of the workflow. Every unscoped example of those commands below is shorthand: before running it, append the flag. For example, run `openspec status --change "<name>" --json --store "<id>"`, not the unscoped form shown below. Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local `openspec/` root.

**Project check:** These steps expect a project that already uses OpenSpec. Before the first step that writes anything (`new change`, `archive`, `sync specs`, or authoring an artifact file), confirm the project has a root: run `openspec list --json` (with `--store <id>` when a store is selected, since the store is then the root) and read `root`. A root object means the project is set up. `"root": null` means it is not - there is no `openspec/` directory here, and a write such as `openspec new change` would create one as a side effect. The command also exits non-zero, which is that answer rather than a broken CLI, so read the JSON instead of retrying or working around it.

The rest: https://github.com/OpenVidu/openvidu/blob/HEAD/openvidu-dashboard/.claude/skills/openspec-sync-specs/SKILL.md
