Add section explaining how to initialize project with OpenCode: - Commands to analyze existing codebase - Instructions to create PRD with spec-architect - Steps to update agents and skills for the specific project - Warning about importance of initialization for correct context
330 lines
11 KiB
Markdown
330 lines
11 KiB
Markdown
# Template OpenCode
|
|
|
|
Template riutilizzabile per configurare OpenCode su nuovi progetti con best practices, workflow TDD e Spec-Driven Development.
|
|
|
|
---
|
|
|
|
## 🚀 Installazione Rapida
|
|
|
|
### 1. Clona o copia il template nel tuo progetto
|
|
|
|
```bash
|
|
# Naviga nella cartella del tuo progetto
|
|
cd /path/to/tuo-progetto
|
|
|
|
# Copia la struttura del template
|
|
cp -r /path/to/template-opencode/.opencode .
|
|
cp -r /path/to/template-opencode/export .
|
|
cp -r /path/to/template-opencode/docs .
|
|
cp -r /path/to/template-opencode/prompt .
|
|
```
|
|
|
|
### 2. Personalizza i placeholder
|
|
|
|
Sostituisci tutti i placeholder nel progetto:
|
|
|
|
| Placeholder | Descrizione | Dove sostituire |
|
|
|-------------|-------------|-----------------|
|
|
| `[NOME_PROGETTO]` | Nome del tuo progetto | `SKILL.md`, `WORKFLOW.md`, `prompt/prompt-zero.md` |
|
|
| `[ROOT_PROGETTO]` | Path completo del progetto | Tutti i file in `.opencode/agents/` |
|
|
| `[SCOPI_DEL_PROGETTO]` | Scopi per i commit | `WORKFLOW.md` |
|
|
|
|
**Comando rapido:**
|
|
```bash
|
|
# Sostituisci [NOME_PROGETTO] con il nome reale
|
|
find . -type f -name "*.md" -exec sed -i 's/\[NOME_PROGETTO\]/MioProgetto/g' {} \;
|
|
|
|
# Sostituisci [ROOT_PROGETTO] con il path reale (esempio: /home/user/mio-progetto)
|
|
find . -type f -name "*.md" -exec sed -i 's|\[ROOT_PROGETTO\]|/path/to/mio-progetto|g' {} \;
|
|
```
|
|
|
|
### 3. Inizializza il progetto
|
|
|
|
#### In `.opencode/skills/project-guidelines/SKILL.md`:
|
|
- [ ] Sostituisci `[NOME PROGETTO]` con il nome del progetto
|
|
- [ ] Aggiungi descrizione del progetto
|
|
- [ ] Personalizza la struttura delle cartelle
|
|
- [ ] Definisci comandi specifici del tuo linguaggio
|
|
- [ ] Aggiungi risorse specifiche
|
|
|
|
#### In `.opencode/WORKFLOW.md`:
|
|
- [ ] Aggiorna `[NOME_PROGETTO]` con il nome
|
|
- [ ] Aggiorna `[ROOT_PROGETTO]` con il path completo
|
|
- [ ] Personalizza `[SCOPI_DEL_PROGETTO]` con gli scope del progetto (es: api, db, ui, core)
|
|
|
|
#### In `.opencode/opencode.json`:
|
|
- Configurazione MCP già presente, puoi aggiungere server extra se necessario
|
|
|
|
#### In `export/prd.md`:
|
|
- [ ] Sostituisci con i requisiti del tuo prodotto
|
|
- [ ] Definisci obiettivi e user stories
|
|
- [ ] Specifica stack tecnologico
|
|
|
|
#### In `prompt/prompt-zero.md`:
|
|
- [ ] Personalizza `[NOME_PROGETTO]` e `[ROOT_PROGETTO]`
|
|
- [ ] Descrivi il progetto nella sezione Missione
|
|
- [ ] Aggiungi funzionalità MVP specifiche
|
|
- [ ] Personalizza stack tecnologico
|
|
|
|
### 4. Inizializza con OpenCode (IMPORTANTE)
|
|
|
|
Dopo aver copiato i file template, **devi chiedere ad OpenCode di configurare il progetto** per operare correttamente:
|
|
|
|
#### Comandi da eseguire con OpenCode:
|
|
|
|
**1. Analizza la codebase esistente:**
|
|
```
|
|
"@opencode Analizza la codebase di questo progetto e identifica:
|
|
- Tecnologie e framework utilizzati
|
|
- Struttura delle cartelle
|
|
- Pattern architetturali esistenti
|
|
- Convenzioni di codice già in uso"
|
|
```
|
|
|
|
**2. Crea il PRD (Product Requirements Document):**
|
|
```
|
|
"@spec-architect Crea il file export/prd.md con i requisiti del prodotto.
|
|
Descrivi: [spiega brevemente cosa deve fare il progetto]
|
|
Include: obiettivi, user stories, requisiti funzionali e non funzionali, stack tecnologico"
|
|
```
|
|
|
|
**3. Attualizza agenti e skill:**
|
|
```
|
|
"@opencode Analizza la cartella .opencode e aggiorna:
|
|
- .opencode/skills/project-guidelines/SKILL.md con le convenzioni specifiche di questo progetto
|
|
- .opencode/agents/spec-architect.md con il path corretto del progetto
|
|
- .opencode/agents/tdd-developer.md con il path corretto e i pattern di test del progetto
|
|
- .opencode/agents/git-manager.md con il path corretto
|
|
- .opencode/WORKFLOW.md con il nome del progetto e gli scope dei commit appropriati"
|
|
```
|
|
|
|
**4. Crea architettura e task breakdown:**
|
|
```
|
|
"@spec-architect Leggi export/prd.md e crea:
|
|
- export/architecture.md con le scelte architetturali
|
|
- export/kanban.md con il breakdown delle task
|
|
- export/progress.md inizializzato per il tracciamento"
|
|
```
|
|
|
|
#### ⚠️ Nota Importante
|
|
|
|
Senza questa inizializzazione, OpenCode **non avrà il contesto corretto** per operare sul progetto. Gli agenti devono essere configurati con:
|
|
- Il path assoluto del progetto (`[ROOT_PROGETTO]`)
|
|
- Le convenzioni specifiche del linguaggio/framework
|
|
- Gli scope dei commit appropriati
|
|
- La struttura delle cartelle del progetto
|
|
|
|
---
|
|
|
|
## 📁 Struttura del Template
|
|
|
|
```
|
|
template-opencode/
|
|
├── .opencode/ # Configurazione OpenCode
|
|
│ ├── agents/ # Configurazioni agenti
|
|
│ │ ├── spec-architect.md # Agente per specifiche
|
|
│ │ ├── tdd-developer.md # Agente per sviluppo TDD
|
|
│ │ ├── git-manager.md # Agente per Git
|
|
│ │ └── security-reviewer.md # Agente per sicurezza
|
|
│ ├── skills/
|
|
│ │ └── project-guidelines/
|
|
│ │ └── SKILL.md # Skill progetto (da personalizzare)
|
|
│ ├── WORKFLOW.md # Flusso di lavoro dettagliato
|
|
│ ├── opencode.json # Configurazione MCP
|
|
│ ├── package.json # Dipendenze
|
|
│ └── .gitignore # Esclusioni
|
|
├── prompt/
|
|
│ └── prompt-zero.md # Prompt kickoff progetto (da personalizzare)
|
|
├── export/ # Output specifiche (template)
|
|
│ ├── prd.md # Product Requirements (template)
|
|
│ ├── architecture.md # Architettura (template)
|
|
│ ├── kanban.md # Task breakdown (template)
|
|
│ ├── progress.md # Tracciamento progresso (template)
|
|
│ └── githistory.md # Storico commit (template)
|
|
└── docs/ # Documentazione (template)
|
|
├── bug_ledger.md # Log bug (template)
|
|
└── architecture.md # Decisioni architetturali (template)
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Workflow di Sviluppo
|
|
|
|
Il template implementa un workflow **Spec-Driven + TDD**:
|
|
|
|
### Fase 1: Specifica (@spec-architect)
|
|
```
|
|
Legge PRD → Crea architecture.md, kanban.md → Inizializza progress.md
|
|
```
|
|
|
|
### Fase 2: Implementazione (@tdd-developer)
|
|
```
|
|
RED → GREEN → REFACTOR per ogni task
|
|
```
|
|
|
|
### Fase 3: Commit (@git-manager)
|
|
```
|
|
Commit atomico + Conventional Commits + Documenta in githistory.md
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 Flusso di Lavoro Dettagliato
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ @spec-architect │
|
|
│ → Legge PRD in export/prd.md │
|
|
│ → Crea specifiche in export/ │
|
|
│ → Inizializza kanban e progress │
|
|
└─────────────┬───────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ @tdd-developer │
|
|
│ → RED: Scrive test fallimentare │
|
|
│ → GREEN: Implementa codice minimo │
|
|
│ → REFACTOR: Migliora codice │
|
|
└─────────────┬───────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ @git-manager │
|
|
│ → Commit atomico │
|
|
│ → Conventional commit │
|
|
│ → Documenta in githistory.md │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ Checklist Setup Completo
|
|
|
|
### Prima dello sviluppo:
|
|
- [ ] Copiato `.opencode/` nel progetto
|
|
- [ ] Copiato `export/` nel progetto
|
|
- [ ] Copiato `docs/` nel progetto
|
|
- [ ] Copiato `prompt/` nel progetto
|
|
- [ ] Sostituito `[NOME_PROGETTO]` con nome reale
|
|
- [ ] Sostituito `[ROOT_PROGETTO]` con path reale
|
|
- [ ] Personalizzato `SKILL.md` con dettagli progetto
|
|
- [ ] Aggiornato `WORKFLOW.md` con scope commit
|
|
- [ ] Creato `export/prd.md` con requisiti prodotto
|
|
- [ ] Personalizzato `prompt/prompt-zero.md`
|
|
- [ ] Verificato che tutti i file template siano presenti
|
|
|
|
### Per ogni nuova feature:
|
|
- [ ] `@spec-architect` ha creato/aggiornato specifiche
|
|
- [ ] Task scomposti in `kanban.md`
|
|
- [ ] `@tdd-developer` ha implementato con TDD
|
|
- [ ] Test coverage ≥ 90%
|
|
- [ ] `@git-manager` ha creato commit convenzionale
|
|
- [ ] `progress.md` e `githistory.md` aggiornati
|
|
|
|
---
|
|
|
|
## 📚 Documentazione
|
|
|
|
| File | Scopo |
|
|
|------|-------|
|
|
| `.opencode/WORKFLOW.md` | Flusso di lavoro dettagliato |
|
|
| `.opencode/agents/` | Configurazioni specifiche per ruolo |
|
|
| `.opencode/skills/project-guidelines/SKILL.md` | Linee guida progetto |
|
|
| `export/` | Template per output specifiche |
|
|
| `docs/` | Template per documentazione |
|
|
| `prompt/prompt-zero.md` | Prompt kickoff progetto |
|
|
|
|
---
|
|
|
|
## 🔧 Personalizzazione
|
|
|
|
### Aggiungere un nuovo agente
|
|
|
|
1. Crea file in `.opencode/agents/nome-agente.md`
|
|
2. Definisci ruolo e responsabilità
|
|
3. Aggiungi riferimento in `SKILL.md`
|
|
|
|
### Aggiungere una skill
|
|
|
|
1. Crea cartella in `.opencode/skills/nome-skill/`
|
|
2. Crea `SKILL.md` con metadati e istruzioni
|
|
3. Aggiungi riferimenti nei file necessari
|
|
|
|
### Modificare il workflow
|
|
|
|
1. Aggiorna `.opencode/WORKFLOW.md`
|
|
2. Sincronizza modifiche negli agenti interessati
|
|
3. Aggiorna `SKILL.md` se necessario
|
|
|
|
---
|
|
|
|
## 📝 Convenzioni
|
|
|
|
### TDD (Test-Driven Development)
|
|
- **RED**: Scrivi test che fallisce prima
|
|
- **GREEN**: Implementa codice minimo
|
|
- **REFACTOR**: Migliora codice mantenendo test verdi
|
|
|
|
### Conventional Commits
|
|
```
|
|
type(scope): description
|
|
|
|
[body]
|
|
|
|
[footer]
|
|
```
|
|
|
|
**Tipi:** feat, fix, docs, test, refactor, chore, ci, style
|
|
**Scope:** personalizza in base al progetto (api, db, ui, core, ...)
|
|
|
|
### Principi "Little Often"
|
|
- Task piccoli e verificabili (< 2 ore)
|
|
- Progresso incrementale
|
|
- Commit atomici
|
|
|
|
### Safety First
|
|
- Verifica prima di procedere
|
|
- Test sempre verdi prima del commit
|
|
- Documenta bug complessi e decisioni architetturali
|
|
|
|
---
|
|
|
|
## 🆘 Risoluzione Problemi
|
|
|
|
### Problemi comuni:
|
|
|
|
**1. I placeholder non sono stati sostituiti:**
|
|
```bash
|
|
# Cerca placeholder rimasti
|
|
grep -r "\[NOME_PROGETTO\]\|\[ROOT_PROGETTO\]" . --include="*.md"
|
|
```
|
|
|
|
**2. Agente non trova i file:**
|
|
- Verifica che `[ROOT_PROGETTO]` sia il path assoluto corretto
|
|
- Verifica che i file in `export/` esistano
|
|
|
|
**3. Configurazione MCP non funziona:**
|
|
- Verifica che Node.js sia installato
|
|
- Esegui `npm install` nella cartella `.opencode/`
|
|
|
|
---
|
|
|
|
## 📞 Supporto
|
|
|
|
Per domande o problemi:
|
|
1. Consulta `.opencode/WORKFLOW.md`
|
|
2. Verifica le configurazioni agenti
|
|
3. Controlla i template in `export/`
|
|
4. Apri una issue nel repository del template
|
|
|
|
---
|
|
|
|
## 📄 Licenza
|
|
|
|
MIT License - vedi file LICENSE
|
|
|
|
---
|
|
|
|
**Versione**: 1.0.0
|
|
**Aggiornato**: 2026-04-07
|