From siae-devforge
Genera il Master Test Plan (MTP) in formato .docx e la Product Risk Analysis (PRA) in formato .xlsx conformi ai template SIAE, attraverso un flusso interattivo a 6 fasi. Orchestra: intake perimetro (3 canali: JIRA/chat/documenti), analisi funzionale, conferma sistemi impattati, discovery GitHub opzionale, produzione .docx e .xlsx via patch template. Lingua: italiano.
How this skill is triggered — by the user, by Claude, or both
Slash command
/siae-devforge:qa-docsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Orchestratore**: questo file governa le 6 fasi. Dettagli strutturali → `reference/template-structure.md`.
Orchestratore: questo file governa le 6 fasi. Dettagli strutturali →
reference/template-structure.md. Regole operative →reference/phase-playbook.md. Canali intake →reference/intake-channels.md.
⚠️ Attivazione: invocare SOLO tramite il comando esplicito
/qa-docs— non auto-triggerare su keyword come "Master Test Plan", "MTP", "piano di test", ecc.
Lingua: tutta l'interazione con l'utente e il contenuto del documento sono in italiano.
Mantieni e aggiorna questo oggetto ad ogni turno:
sessione:
codice: "" # es. DMND0006339
titolo: ""
autore: ""
versione: "1.0"
data: "" # YYYY-MM-DD
intake_grezzo:
jira: [] # issue key + contenuto estratto
chat: ""
documenti: [] # {nome_file, contenuto_estratto}
analisi:
obiettivo_progetto: ""
piattaforme: []
piattaforme_modificate: []
sistemi_impattati: []
touch_point: []
sistemi_impattati_confermati: false
perimetro_progetto: ""
perimetro_test: [] # [{num, titolo, punti:[]}]
criteri_accettazione: []
out_of_scope: []
obiettivi_test: []
livelli: [] # [{livello, descrizione, dettaglio, owner, governance}]
performance_test: "Non previsti."
nrt: "Non previsti."
test_automatici: "Non previsti."
gantt: [] # [{sprint, date, pct}] — solo se fornito dall'utente
rischi: []
analisi_approvata: false
github:
saltato: false
repo: []
servizi: []
note: ""
confermato: false
punti_da_confermare: []
Invoca il MODULO INTAKE (→ reference/intake-channels.md).
Presenta i 3 canali e lascia che l'utente ne scelga uno o più (combinabili):
Applica i pre-check e fallback descritti in reference/intake-channels.md.
Output di Fase 1: intake_grezzo popolato con provenienza tracciata per ogni informazione.
A partire da intake_grezzo, produci:
Non usare placeholder vuoti: deduci con criterio, marca esplicitamente i gap.
Presenta l'analisi in forma leggibile (in chat, non nel docx ancora). Il gate copre 3 conferme contestuali:
Mostra: obiettivo, perimetri, macro-scenari, livelli, performance/NRT/UAT, out of scope.
Mostra la bozza con i nodi SmartArt proposti:
Evidenzia i punti «DA CONFERMARE». Chiedi conferma/correzione via MODULO INTAKE.
Aggiorna sistemi_impattati_confermati: true quando confermato.
Nota: il template SmartArt ha 8 slot contenuto (2 Piattaforme + 1 Sistemi Impattati + 5 Piattaforme Modificate). Se il numero di voci da inserire differisce dagli slot disponibili, segnalalo e chiedi come adattare.
Chiedi esplicitamente sprint, date e % mancanti. Se l'utente non li fornisce, lascia struttura «DA CONFERMARE». Non inventare mai date.
Chiedi una delle tre:
NON avanzare senza risposta esplicita. analisi_approvata deve essere true prima di proseguire.
I sistemi impattati sono già stati prodotti in Fase 2 e confermati in Fase 3. GitHub è solo validazione/arricchimento tecnico. Saltando questa fase il documento non perde affidabilità.
Chiedi all'utente: (a) saltare, (b) fornire manualmente repo/servizi, o (c) discovery automatica.
Pre-check (fermati al primo successo):
gh auth status 2>/dev/null && echo "gh OK"
echo "GITHUB_TOKEN: ${GITHUB_TOKEN:+presente}"
git remote -v 2>/dev/null | head -3
gh disponibile → usa gh repo list, gh search reposDestinazione esiti: aggiorna solo i contenuti già esistenti di 1.1 (SmartArt piattaforme) e 1.7 (GANTT). Non sovrascrivere silenziosamente voci già confermate: segnala discrepanze come «DA CONFERMARE». Non creare sezioni nuove.
Se scelta (a), imposta github.saltato: true e salta direttamente a Fase 6.
Se github.saltato: true → salta a Fase 6 direttamente.
Altrimenti presenta repo/servizi individuati, mappatura su 1.1/1.7, eventuali discrepanze.
Chiedi:
Costruisci mtp_data.json:
{
"meta": {"codice": "...", "titolo": "...", "autore": "...", "versione": "1.0", "data": "..."},
"obiettivo_progetto": "...",
"piattaforme": ["SPORT"],
"piattaforme_modificate": ["Mule", "Sistema Incassi"],
"sistemi_impattati": ["SPORT"],
"perimetro_progetto": "...",
"perimetro_test": [{"num": 1, "titolo": "...", "punti": ["..."]}],
"obiettivi_test": ["..."],
"livelli": [
{"livello": "T0", "descrizione": "Unit Test/System Test", "dettaglio": "...", "owner": "Fornitore", "governance": "QA"},
{"livello": "T1", "descrizione": "Integration Test", "dettaglio": "...", "owner": "Fornitore", "governance": "QA"},
{"livello": "T2", "descrizione": "UAT", "dettaglio": "...", "owner": "BU/QA/Fornitore", "governance": "QA"}
],
"performance_test": "Non previsti.",
"nrt": "Non previsti.",
"test_automatici": "Non previsti.",
"gantt": [],
"out_of_scope": ["..."],
"rischi": ["..."]
}
python3 ~/.claude/skills/qa-docs/scripts/build_mtp.py mtp_data.json output_dir/
python3 ~/.claude/skills/qa-docs/scripts/build_pra.py mtp_data.json output_dir/
Output: PRA_-_<CODICE>.xlsx
Verifica:
=IF(B5=... (non valore statico)Struttura pra_obiettivi (aggiungi al JSON in 6.1 — un entry per ogni macro-scenario):
"pra_obiettivi": [
{
"obiettivo": "nome macro-scenario",
"criticita": "Alta",
"fattore_rischio": "Q-15 Aderenza ai requisiti",
"motivazione": "breve motivazione",
"frequenza_uso": "Alta",
"req_nrt": "No",
"req_performance": "No",
"req_e2e_uat": "Si"
}
]
Valori criticità: Bassa / Media / Alta / Bloccante
Valori frequenza: Bassa / Media / Alta / Molto Alta
Fattori di rischio: codici B-xx / T-xx / Q-xx (vedi foglio Tabelle del template → reference/pra-structure.md)
Coerenza con MTP: req_nrt ↔ sezione 1.5, req_performance ↔ 1.4, req_e2e_uat ↔ T2 in 1.3.
Struttura pra_piano (opzionale, da Fase 3c GANTT):
"pra_piano": [
{"team": "Team A", "iterazione": "Sprint 1", "processo": "...", "owner": "..."}
]
python3 ~/.claude/skills/qa-docs/scripts/check_fidelity.py output_dir/MTP_*.docx ~/.claude/skills/qa-docs/assets/MTP_template.docx
Se la verifica rileva scostamenti non attesi → mostrali all'utente e chiedi se accettare o rigenerare.
Presenta entrambi i file:
MTP_<CODICE>_-_<titolo>.docxPRA_-_<CODICE>.xlsx| Dipendenza | Fallback |
|---|---|
| MCP Atlassian assente | API REST JIRA con token, poi fallback a chat |
| Token JIRA assente | Chiedi di incollare contenuto issue |
| Skill di estrazione file assente | Usa Read diretto per .txt/.md; per .pdf/.docx avvisa e chiedi testo incollato |
| GitHub non accessibile | Proponi (a) salta o (b) riferimenti manuali |
python-docx non installato | pip3 install python-docx prima di eseguire |
| Template non trovato | Usa path assoluto ~/.claude/skills/qa-docs/assets/MTP_template.docx |
reference/template-structure.md — struttura sezione per sezione, hex, SmartArt, anchorreference/phase-playbook.md — domande standard e regole per ogni fasereference/intake-channels.md — specifica 3 canali MODULO INTAKEnpx claudepluginhub itsiae/siae-dev-forge --plugin siae-devforgeProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.