Migrazione a OPSX
Questa guida ti aiuta a passare dal vecchio workflow OpenSpec a OPSX. La migrazione è progettata per essere fluida: il tuo lavoro esistente viene preservato e il nuovo sistema offre maggiore flessibilità.
Cosa cambia?
OPSX sostituisce il vecchio workflow basato su fasi rigide con un approccio fluido e basato su azioni. Ecco il cambiamento chiave:
| Aspetto | Legacy | OPSX |
|---|---|---|
| Comandi | /openspec:proposal, /openspec:apply, /openspec:archive | Default: /opsx:propose, /opsx:explore, /opsx:apply, /opsx:update, /opsx:sync, /opsx:archive (comandi workflow estesi opzionali) |
| Workflow | Crea tutti gli artefatti in una volta | Crea incrementalmente o tutto in una volta—a tua scelta |
| Tornare indietro | Fasi rigide e scomode | Naturale—aggiorna qualsiasi artefatto in qualsiasi momento |
| Personalizzazione | Struttura fissa | Basato su schema, completamente modificabile |
| Configurazione | CLAUDE.md con marcatori + project.md | Config pulita in openspec/config.yaml |
Il cambiamento di filosofia: Il lavoro non è lineare. OPSX smette di fingere che lo sia.
Prima di Iniziare
Il Tuo Lavoro Esistente è Al Sicuro
Il processo di migrazione è progettato con la preservazione come priorità:
- Modifiche attive in
openspec/changes/— Completamente preservate. Puoi continuare con i comandi OPSX. - Modifiche archiviate — Intatte. La tua cronologia rimane intatta.
- Spec principali in
openspec/specs/— Intatte. Queste sono la tua fonte di verità. - Il tuo contenuto in CLAUDE.md, AGENTS.md, ecc. — Preservato. Vengono rimossi solo i blocchi marker di OpenSpec; tutto ciò che hai scritto resta.
Cosa Viene Rimosso
Solo i file gestiti da OpenSpec che vengono sostituiti:
| Cosa | Perché |
|---|---|
| Directory/file dei comandi slash legacy | Sostituiti dal nuovo sistema di skills |
openspec/AGENTS.md | Trigger di workflow obsoleto |
Marker di OpenSpec in CLAUDE.md, AGENTS.md, ecc. | Non più necessari |
Posizioni dei comandi legacy per strumento (esempi—il tuo strumento può variare):
- Claude Code:
.claude/commands/openspec/ - Cursor:
.cursor/commands/openspec-*.md - Devin Desktop, precedentemente Windsurf:
.windsurf/workflows/openspec-*.md - Cline:
.clinerules/workflows/openspec-*.md - Roo:
.roo/commands/openspec-*.md - GitHub Copilot:
.github/prompts/openspec-*.prompt.md(solo estensioni IDE; non supportato in Copilot CLI) - Codex: OpenSpec ora utilizza il percorso canonico
.agents/skills/openspec-*. I fileSKILL.mdgestiti da OpenSpec sotto il precedente percorso.codex/skillsvengono riconciliati solo dopo che esistono i sostituti; i file personalizzati e le copie divergenti restano al loro posto. Se un albero.agentsnon marcato contiene già skills di OpenSpec, OpenSpec preserva il rendering esistente di Codex ($openspec-*) o generico (/openspec-*) invece di indovinare dalla directory legacy. Selezionacodexesplicitamente conopenspec initper cambiare la proprietà. La pulizia dei prompt legacy riguarda ancora solo i nomi file approvati da OpenSpec in$CODEX_HOME/promptso~/.codex/prompts. - E altri (Augment, Continue, Amazon Q, ecc.)
La migrazione rileva quali strumenti hai configurato e pulisce i loro file legacy.
L'elenco delle rimozioni può sembrare lungo, ma si tratta di tutti file creati originariamente da OpenSpec. Il tuo contenuto personale non viene mai eliminato.
Cosa Richiede la Tua Attenzione
Un file richiede migrazione manuale:
openspec/project.md — Questo file non viene eliminato automaticamente perché potrebbe contenere contesto di progetto scritto da te. Dovrai:
- Rivederne il contenuto
- Spostare il contesto utile in
openspec/config.yaml(vedi indicazioni sotto) - Eliminare il file quando sei pronto
Perché abbiamo fatto questo cambiamento:
Il vecchio project.md era passivo—gli agenti potevano leggerlo, potevano non leggerlo, potevano dimenticare cosa avevano letto. Abbiamo riscontrato affidabilità incoerente.
Il nuovo contesto in config.yaml viene iniettato attivamente in ogni richiesta di pianificazione di OpenSpec. Questo significa che le tue convenzioni di progetto, lo stack tecnologico e le regole sono sempre presenti quando l'AI crea artefatti. Affidabilità superiore.
Il compromesso:
Poiché il contesto viene iniettato in ogni richiesta, vorrai essere conciso. Concentrati su ciò che conta davvero:
- Stack tecnologico e convenzioni chiave
- Vincoli non ovvi che l'AI deve conoscere
- Regole che venivano frequentemente ignorate in passato
Non preoccuparti di renderlo perfetto. Stiamo ancora imparando cosa funziona meglio e miglioreremo il funzionamento dell'iniezione del contesto man mano che sperimentiamo.
Esecuzione della Migrazione
Sia openspec init che openspec update rilevano i file legacy e ti guidano attraverso lo stesso processo di pulizia. Usa quello che si adatta alla tua situazione:
- Le nuove installazioni impostano di default il profilo
core(propose,explore,apply,update,sync,archive). - Le installazioni migrate preservano i tuoi workflow precedentemente installati scrivendo un profilo
customquando necessario.
Uso di openspec init
Esegui questo se vuoi aggiungere nuovi strumenti o riconfigurare quali strumenti sono configurati:
openspec initIl comando init rileva i file legacy e ti guida attraverso la pulizia:
Upgrading to the new OpenSpec
OpenSpec now uses agent skills, the emerging standard across coding
agents. This simplifies your setup while keeping everything working
as before.
Files to remove
No user content to preserve:
• .claude/commands/openspec/
• openspec/AGENTS.md
Files to update
OpenSpec markers will be removed, your content preserved:
• CLAUDE.md
• AGENTS.md
Needs your attention
• openspec/project.md
We won't delete this file. It may contain useful project context.
The new openspec/config.yaml has a "context:" section for planning
context. This is included in every OpenSpec request and works more
reliably than the old project.md approach.
Review project.md, move any useful content to config.yaml's context
section, then delete the file when ready.
? Upgrade and clean up legacy files? (Y/n)Cosa succede quando rispondi sì:
- Le directory dei comandi slash legacy vengono rimosse
- I marker di OpenSpec vengono rimossi da
CLAUDE.md,AGENTS.md, ecc. (il tuo contenuto resta) openspec/AGENTS.mdviene eliminato- Le nuove skills vengono installate in
.claude/skills/ openspec/config.yamlviene creato con uno schema predefinito
Uso di openspec update
Esegui questo se vuoi solo migrare e aggiornare i tuoi strumenti esistenti all'ultima versione:
openspec updateIl comando update rileva e pulisce anche gli artefatti legacy, quindi aggiorna le skills/comandi generati per corrispondere al tuo profilo attuale e alle impostazioni di consegna.
Ambienti Non Interattivi / CI
Per migrazioni scriptate:
openspec init --force --tools claudeIl flag --force salta i prompt e accetta automaticamente la pulizia.
Questo include la pulizia dei file prompt di Codex gestiti da OpenSpec nella directory globale dei prompt di Codex. La pulizia riguarda solo i nomi file legacy approvati da OpenSpec, li rimuove solo dopo che esistono le skills sostitutive .agents/skills/openspec-*, e preserva tutti gli altri file.
Migrazione da project.md a config.yaml
Il vecchio openspec/project.md era un file markdown libero per il contesto di progetto. Il nuovo openspec/config.yaml è strutturato e—criticamente—iniettato in ogni richiesta di pianificazione in modo che le tue convenzioni siano sempre presenti quando l'AI lavora.
Prima (project.md)
# Project Context
This is a TypeScript monorepo using React and Node.js.
We use Jest for testing and follow strict ESLint rules.
Our API is RESTful and documented in docs/api.md.
## Conventions
- All public APIs must maintain backwards compatibility
- New features should include tests
- Use Given/When/Then format for specificationsDopo (config.yaml)
schema: spec-driven
context: |
Tech stack: TypeScript, React, Node.js
Testing: Jest with React Testing Library
API: RESTful, documented in docs/api.md
We maintain backwards compatibility for all public APIs
rules:
proposal:
- Include rollback plan for risky changes
specs:
- Use Given/When/Then format for scenarios
- Reference existing patterns before inventing new ones
design:
- Include sequence diagrams for complex flowsDifferenze Chiave
| project.md | config.yaml |
|---|---|
| Markdown libero | YAML strutturato |
| Un unico blocco di testo | Contesto separato e regole per artefatto |
| Non chiaro quando viene usato | Il contesto appare in TUTTI gli artefatti; le regole appaiono solo negli artefatti corrispondenti |
| Nessuna selezione dello schema | Il campo esplicito schema: imposta il workflow predefinito |
Cosa Tenere, Cosa Scartare
Durante la migrazione, sii selettivo. Chiediti: "L'AI ha bisogno di questo per ogni richiesta di pianificazione?"
Buoni candidati per context:
- Stack tecnologico (linguaggi, framework, database)
- Pattern architetturali chiave (monorepo, microservizi, ecc.)
- Vincoli non ovvi ("non possiamo usare la libreria X perché...")
- Convenzioni critiche che vengono spesso ignorate
Sposta in rules:
- Formattazione specifica per artefatto ("usa Given/When/Then nelle specifiche")
- Criteri di revisione ("le proposte devono includere piani di rollback")
- Queste appaiono solo per l'artefatto corrispondente, mantenendo le altre richieste più leggere
Escludi completamente
- Buone pratiche generali che l'AI già conosce
- Spiegazioni verbose che potrebbero essere riassunte
- Contesto storico che non influenza il lavoro attuale
Passi di Migrazione
Crea config.yaml (se non è già stato creato da init):
yamlschema: spec-drivenAggiungi il tuo contesto (sii conciso—questo va in ogni richiesta):
yamlcontext: | Your project background goes here. Focus on what the AI genuinely needs to know.Aggiungi regole per artefatto (facoltativo):
yamlrules: proposal: - Your proposal-specific guidance specs: - Your spec-writing rulesElimina project.md una volta spostato tutto ciò che è utile.
Non ragionare troppo. Inizia con l'essenziale e itera. Se noti l'AI che manca di qualcosa di importante, aggiungilo. Se il contesto sembra gonfiato, riducilo. Questo è un documento vivente.
Hai Bisogno di Aiuto? Usa Questo Prompt
Se non sei sicuro come distillare il tuo project.md, chiedi al tuo assistente AI:
I'm migrating from OpenSpec's old project.md to the new config.yaml format.
Here's my current project.md:
[paste your project.md content]
Please help me create a config.yaml with:
1. A concise `context:` section (this gets injected into every planning request, so keep it tight—focus on tech stack, key constraints, and conventions that often get ignored)
2. `rules:` for specific artifacts if any content is artifact-specific (e.g., "use Given/When/Then" belongs in specs rules, not global context)
Leave out anything generic that AI models already know. Be ruthless about brevity.L'AI ti aiuterà a identificare cosa è essenziale e cosa può essere ridotto.
I Nuovi Comandi
La disponibilità dei comandi dipende dal profilo:
Predefinito (profilo core):
| Comando | Scopo |
|---|---|
/opsx:propose | Crea una modifica e genera gli artefatti di pianificazione in un solo passo |
/opsx:explore | Rifletti su idee senza struttura |
/opsx:apply | Implementa i task da tasks.md |
/opsx:update | Rivedi gli artefatti di pianificazione di una modifica e mantienili coerenti |
/opsx:sync | Unisci le specifiche delta nelle specifiche principali |
/opsx:archive | Finalizza e archivia la modifica |
Workflow espanso (selezione personalizzata):
| Comando | Scopo |
|---|---|
/opsx:new | Avvia un nuovo scaffold di modifica |
/opsx:continue | Crea il prossimo artefatto (uno alla volta) |
/opsx:ff | Fast-forward—crea gli artefatti di pianificazione in un colpo solo |
/opsx:verify | Convalida che l'implementazione corrisponda alle specifiche |
/opsx:bulk-archive | Archivia più modifiche in un colpo solo |
/opsx:onboard | Workflow di onboarding guidato end-to-end |
Abilita i comandi espansi con openspec config profile, quindi esegui openspec update.
Mappatura dei Comandi dal Legacy
| Legacy | Equivalente OPSX |
|---|---|
/openspec:proposal | /opsx:propose (predefinito) o /opsx:new seguito da /opsx:ff (espanso) |
/openspec:apply | /opsx:apply |
/openspec:archive | /opsx:archive |
Nuove Capacità
Queste capacità fanno parte del set di comandi del workflow espanso.
Creazione granulare degli artefatti:
/opsx:continueCrea un artefatto alla volta in base alle dipendenze. Usa questo quando vuoi rivedere ogni passo.
Modalità esplorazione:
/opsx:exploreRifletti su idee con un partner prima di impegnarti in una modifica.
Comprendere la Nuova Architettura
Da Fasi Vincolate a Fluido
Il flusso di lavoro legacy imponeva una progressione lineare:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ FASE DI │ ───► │ FASE DI │ ───► │ FASE DI │
│ PIANIFICAZIONE│ │IMPLEMENTAZIONE│ │ ARCHIVIAZIONE│
└──────────────┘ └──────────────┘ └──────────────┘
Se sei nella fase di implementazione e ti accorgi che il progetto è sbagliato?
Peccato. I gate di fase non ti permettono di tornare indietro facilmente.OPSX usa azioni, non fasi:
┌───────────────────────────────────────────────┐
│ AZIONI (non fasi) │
│ │
│ new ◄──► continue ◄──► apply ◄──► archive │
│ │ │ │ │ │
│ └──────────┴───────────┴─────────────┘ │
│ qualsiasi ordine │
└───────────────────────────────────────────────┘Grafo delle Dipendenze
Gli artefatti formano un grafo diretto. Le dipendenze sono abilitatori, non gate:
proposal
(nodo radice)
│
┌─────────────┴─────────────┐
│ │
▼ ▼
specs design
(richiede: (richiede:
proposal) proposal)
│ │
└─────────────┬─────────────┘
│
▼
tasks
(richiede:
specs, design)Quando esegui /opsx:continue, controlla cosa è pronto e propone il prossimo artefatto. Puoi anche creare più artefatti pronti in qualsiasi ordine.
Skill vs Comandi
Il sistema legacy usava file di comando specifici per lo strumento:
.claude/commands/openspec/
├── proposal.md
├── apply.md
└── archive.mdOPSX usa lo standard emergente delle skill:
.claude/skills/
├── openspec-explore/SKILL.md
├── openspec-new-change/SKILL.md
├── openspec-continue-change/SKILL.md
├── openspec-apply-change/SKILL.md
└── ...Le skill sono riconosciute da più strumenti di coding AI e forniscono metadati più ricchi.
Codex in OPSX utilizza solo le skill. OpenSpec non genera più file di prompt personalizzati per Codex; utilizza invece le directory generate .agents/skills/openspec-*.
Continuare Modifiche Esistenti
Le tue modifiche in corso funzionano perfettamente con i comandi OPSX.
Hai una modifica attiva dal flusso di lavoro legacy?
/opsx:apply add-my-featureOPSX legge gli artefatti esistenti e continua da dove eri rimasto.
Vuoi aggiungere altri artefatti a una modifica esistente?
/opsx:continue add-my-featureMostra cosa è pronto per essere creato in base a ciò che già esiste.
Hai bisogno di vedere lo stato?
openspec status --change add-my-featureIl Nuovo Sistema di Configurazione
Struttura di config.yaml
# Obbligatorio: Schema predefinito per nuove modifiche
schema: spec-driven
# Facoltativo: Contesto del progetto (max 50KB)
# Iniettato in TUTTE le istruzioni degli artefatti
context: |
Your project background, tech stack,
conventions, and constraints.
# Facoltativo: Regole per artefatto
# Iniettato solo negli artefatti corrispondenti
rules:
proposal:
- Includi piano di rollback
specs:
- Usa il formato Given/When/Then
design:
- Documenta le strategie di fallback
tasks:
- Suddividi in blocchi massimi di 2 oreRisoluzione dello Schema
Per determinare quale schema usare, OPSX controlla in ordine:
- Flag CLI:
--schema <name>(priorità più alta) - Metadati della modifica:
.openspec.yamlnella directory della modifica - Configurazione del progetto:
openspec/config.yaml - Predefinito:
spec-driven
Schemi Disponibili
| Schema | Artefatti | Ideale per |
|---|---|---|
spec-driven | proposal → specs → design → tasks | La maggior parte dei progetti |
Elenca tutti gli schemi disponibili:
openspec schemasSchemi Personalizzati
Crea il tuo flusso di lavoro:
openspec schema init my-workflowOppure fai un fork di uno esistente:
openspec schema fork spec-driven my-workflowVedi Personalizzazione per i dettagli.
Risoluzione dei problemi
"File legacy rilevati in modalità non interattiva"
Stai eseguendo in un ambiente CI o non interattivo. Usa:
openspec init --forceComandi non visualizzati dopo la migrazione
Riavvia il tuo IDE. Le skill vengono rilevate all'avvio.
"ID artefatto sconosciuto nelle regole"
Verifica che le chiavi rules: corrispondano agli ID degli artefatti del tuo schema:
- spec-driven:
proposal,specs,design,tasks
Esegui questo per vedere gli ID degli artefatti validi:
openspec schemas --jsonConfigurazione non applicata
- Assicurati che il file sia in
openspec/config.yaml(non.yml) - Convalida la sintassi YAML
- Le modifiche alla configurazione hanno effetto immediato, non è necessario riavviare
project.md non migrato
Il sistema conserva intenzionalmente project.md perché potrebbe contenere contenuti personalizzati. Esaminalo manualmente, sposta le parti utili in config.yaml, quindi eliminalo.
Vuoi vedere cosa verrebbe pulito?
Esegui init e rifiuta il prompt di pulizia: vedrai il riepilogo completo del rilevamento senza apportare alcuna modifica.
Riferimento Rapido
File Dopo la Migrazione
project/
├── openspec/
│ ├── specs/ # Invariato
│ ├── changes/ # Invariato
│ │ └── archive/ # Invariato
│ └── config.yaml # NUOVO: Configurazione del progetto
├── .claude/
│ └── skills/ # NUOVO: Skill OPSX
│ ├── openspec-propose/ # profilo core predefinito
│ ├── openspec-explore/
│ ├── openspec-apply-change/
│ ├── openspec-update-change/
│ ├── openspec-sync-specs/
│ ├── openspec-archive-change/
│ └── ... # profilo esteso aggiunge new/continue/ff/ecc.
├── CLAUDE.md # Marcatori OpenSpec rimossi, il tuo contenuto preservato
└── AGENTS.md # Marcatori OpenSpec rimossi, il tuo contenuto preservatoCosa è Scomparso
.claude/commands/openspec/— sostituito da.claude/skills/openspec/AGENTS.md— obsoletoopenspec/project.md— migra aconfig.yaml, quindi elimina- Blocchi marcatori OpenSpec in
CLAUDE.md,AGENTS.md, ecc.
Cheatsheet dei Comandi
/opsx:propose Avvia rapidamente (profilo core predefinito)
/opsx:apply Implementa i task
/opsx:archive Completa e archivia
# Flusso di lavoro esteso (se abilitato):
/opsx:new Crea lo scheletro di una modifica
/opsx:continue Crea l'artefatto successivo
/opsx:ff Crea artefatti di pianificazioneOttenere Aiuto
- Discord: discord.gg/YctCnvvshC
- GitHub Issues: github.com/Fission-AI/OpenSpec/issues
- Documentazione: docs/opsx.md per il riferimento completo di OPSX