From siae-devforge
Aggiunge un nuovo prefix S3 alla event rule EventBridge `transient_relational_new` in modules/transient/eventbridge-new-data.tf seguendo il flusso completo SIAE — crea release+feature branch, applica edit, apre PR draft, mergia in deploy/collaudo, esegue make dev. Trigger - "aggiungi prefix transient", "nuovo prefix bronze", "aggiungi dominio a transient_relational_new", "abilita ingestion {db_name}", "registra prefix EventBridge", "registra dominio EDW".
How this skill is triggered — by the user, by Claude, or both
Slash command
/siae-devforge:siae-add-transient-prefixThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Tipo:** Rigid | **Fase SDLC:** 3-7 (Branching → Implementation → Release)
Tipo: Rigid | Fase SDLC: 3-7 (Branching → Implementation → Release)
Skill end-to-end che incapsula il processo standard per registrare un nuovo dominio dati nel routing EventBridge del data lake SIAE: branch setup, edit del file
modules/transient/eventbridge-new-data.tf, PR draft, merge indeploy/collaudoe deploymake dev.
NESSUN PREFIX SENZA TICKET. NESSUN MERGE SENZA PR. NESSUN DEPLOY SENZA CONFERMA.
| Parametro | Descrizione | Esempio |
|---|---|---|
ticket-id | ID numerico del ticket Jira (senza prefisso area) | 1566 |
incremento | Numero increment formato NN_NN | 01_28 |
db-name | Nome dominio/db da aggiungere come prefix S3 (snake_case) | bm_utilizzazioni |
Default fissi (non parametrizzati):
area = EDWmodules/transient/eventbridge-new-data.tfaws_cloudwatch_event_rule.transient_relational_newtransient/{db-name}/Branch derivati:
release/EDW_DL_{incremento} → es. release/EDW_DL_01_28feature/EDW_DL_{incremento}/EDW-{ticket-id} → es. feature/EDW_DL_01_28/EDW-1566Sempre quando l'utente chiede di:
bm_utilizzazioni, accertatori, sap_bw)transient/{db}/ nel data lakeEccezioni — chiedi se:
transient_relational_newmodules/transient/eventbridge-new-data.tftransient/{db_name}/🟢 SICURO
Verifica:
ticket-id: solo cifreincremento: formato NN_NNdb-name: snake_case minuscolo, solo [a-z0-9_]Se mancanti, chiedi:
Parametri necessari:
- ticket-id (es. 1566):
- incremento (formato NN_NN, es. 01_28):
- db-name (es. bm_utilizzazioni):
Costruisci:
RELEASE_BRANCH=release/EDW_DL_{INCREMENTO}
FEATURE_BRANCH=feature/EDW_DL_{INCREMENTO}/EDW-{TICKET_ID}
PREFIX_VALUE=transient/{DB_NAME}/
🟢 SICURO
git status --short
git fetch origin
git ls-remote --heads origin "{RELEASE_BRANCH}" "{FEATURE_BRANCH}" "deploy/collaudo"
grep -n "aws_cloudwatch_event_rule\" \"transient_relational_new\"" modules/transient/eventbridge-new-data.tf
Se il file o la resource non esistono → STOP, chiedi all'utente.
Se uno dei branch esiste già → mostra all'utente e chiedi se usare quello esistente.
🔴 ALTO — Mostra card e attendi conferma esplicita.
| 🔴 ALTO — Operazioni multiple su origin · siae-add-transient-prefix |
|---|
| ⚠️ EFFETTI REMOTI MULTIPLI |
Parametri: ticket=EDW-{TICKET_ID} · increment={INCREMENTO} · db={DB_NAME} |
Branch: {RELEASE_BRANCH} · {FEATURE_BRANCH} |
Prefix da aggiungere: {PREFIX_VALUE} in transient_relational_new |
| ▼ Sequenza Azioni |
1. 🌿 Crea + push {RELEASE_BRANCH} da main |
2. 🌿 Crea + push {FEATURE_BRANCH} da {RELEASE_BRANCH} |
3. 📝 Edit modules/transient/eventbridge-new-data.tf (aggiunge prefix) |
| 4. 💾 Commit + push su feature branch |
5. 📋 Crea PR draft feature → release |
6. 🔀 Merge feature → deploy/collaudo (può richiedere risoluzione conflitti) |
7. 🚀 Push deploy/collaudo |
8. 🚀 make dev (lancia pipeline CI/CD su collaudo) |
| 💡 Perché: registra il nuovo dominio nel routing S3→EventBridge |
| 🚫 Se NO: nessuna azione viene eseguita |
⏸️ ATTENDI CONFERMA ESPLICITA — "sì, procedi" / "no, annulla". Silenzio ≠ consenso.
🔴 ALTO
git checkout main && git pull origin main
git checkout -b {RELEASE_BRANCH}
git push -u origin {RELEASE_BRANCH}
git checkout -b {FEATURE_BRANCH}
git push -u origin {FEATURE_BRANCH}
🟡 MEDIO
Leggi il file modules/transient/eventbridge-new-data.tf e localizza l'array key dentro aws_cloudwatch_event_rule.transient_relational_new. Aggiungi la nuova entry come ultima dell'array (mantenere ordine cronologico di registrazione domini), aggiornando la virgola sulla riga precedente.
Pattern Edit:
]){ "prefix" : "{PREFIX_VALUE}" } + chiusura ]Esempio (per bm_utilizzazioni):
{ "prefix" : "transient/edwh/" },
{ "prefix" : "transient/{DB_NAME}/" }
]
Verifica post-edit: grep -n "{DB_NAME}" modules/transient/eventbridge-new-data.tf deve trovare la nuova riga.
🔴 ALTO
git add modules/transient/eventbridge-new-data.tf
git commit -m "feat(EDW-{TICKET_ID}): add {DB_NAME} prefix to transient_relational_new event rule
Co-Authored-By: SIAE DevForge"
git push origin {FEATURE_BRANCH}
gh pr create \
--base {RELEASE_BRANCH} \
--head {FEATURE_BRANCH} \
--draft \
--title "EDW-{TICKET_ID} — increment {INCREMENTO}: add {DB_NAME} prefix" \
--body "## Summary
- Aggiunge prefix \`transient/{DB_NAME}/\` alla event rule \`transient_relational_new\`
- Abilita routing EventBridge per nuovi oggetti S3 sotto \`transient/{DB_NAME}/\`
## Ticket
EDW-{TICKET_ID}
## Branch
- Base: \`{RELEASE_BRANCH}\`
- Feature: \`{FEATURE_BRANCH}\`
Co-Authored-By: SIAE DevForge"
🔴 ALTO — Mostra mini pre-flight prima di procedere.
Nota importante: il merge diretto su
deploy/collaudopuò essere bloccato dal classifier di auto-mode perché bypassa il PR review. In quel caso, fornire i comandi manuali all'utente.
git checkout deploy/collaudo
git pull origin deploy/collaudo
git merge --no-ff {FEATURE_BRANCH} -m "Merge {FEATURE_BRANCH} into deploy/collaudo
Co-Authored-By: SIAE DevForge"
Gestione conflitti (probabile su eventbridge-new-data.tf se altri prefix sono stati aggiunti in parallelo):
<<<<<<< HEAD ... ======= ...>>>>>>>git add modules/transient/eventbridge-new-data.tf && git commitgit push origin deploy/collaudo
make dev🟢 SICURO (la pipeline è gated)
Invoca la skill siae-datalake-deploy con argomento dev, oppure esegui direttamente:
make dev
Recupera il run ID e monitora:
sleep 5
gh api "repos/itsiae/dataplatform-datalake-iaac/actions/runs?per_page=1&event=push" \
| python3 -c "import sys,json; r=json.load(sys.stdin)['workflow_runs'][0]; print(r['id'], r['status'], r['html_url'])"
Polling fino a completed, poi mostra esito jobs.
Nota nota: se la pipeline fallisce con TEST_COVERAGE_PERCENTAGE variable is not set o No merged PR found for commit ..., è perché il merge diretto su deploy/collaudo non passa per PR. Soluzioni:
gh variable set TEST_COVERAGE_PERCENTAGE --body "0" --repo itsiae/dataplatform-datalake-iaac🟢 SICURO
✅ Prefix `transient/{DB_NAME}/` registrato su EventBridge
Ticket: EDW-{TICKET_ID}
Increment: {INCREMENTO}
Release: {RELEASE_BRANCH}
Feature: {FEATURE_BRANCH}
PR draft: <URL>
Deploy collaudo: <run URL>
Esito make dev: <success|failure>
Riformula: "Confermi? Rispondi 'sì, procedi' oppure 'no, annulla'."
NON forzare. Chiedere se usare l'esistente, rinominare o annullare.
Risolvere mantenendo TUTTE le entry esistenti più la nuova. NON sovrascrivere.
Fornire i comandi esatti all'utente per esecuzione manuale.
make dev fallita per coverageVedere Step 8 per le opzioni di sblocco. NON modificare il workflow YAML senza esplicita richiesta.
STOP immediato. La skill assume struttura repo dataplatform-datalake-iaac. Se il repo è diverso, chiedere all'utente.
| Pensiero | Realtà |
|---|---|
| "Skippo la PR draft, tanto poi mergio direttamente in collaudo" | La PR è il gate audit + traccia il diff per la pipeline coverage |
| "Aggiungo il prefix in mezzo all'array per ordine alfabetico" | L'array è cronologico per registrazione — append in coda |
| "Il conflitto in collaudo lo risolvo prendendo HEAD" | Si perdono i prefix paralleli — concatena SEMPRE |
| "Push diretto su deploy/collaudo è veloce, salto PR" | Bypassa quality gate; classifier bloccherà comunque |
| "Il db-name lo metto in CamelCase" | Il file usa snake_case ovunque — coerenza obbligatoria |
| "Salto la pre-flight, sono operazioni sicure" | Push su origin + merge in branch condiviso = effetti su tutto il team |
| Operazione | Livello | Card |
|---|---|---|
| Validazione parametri | 🟢 Sicuro | No |
| Fetch + verifica stato | 🟢 Sicuro | No |
| Edit file Terraform | 🟡 Medio | No (incluso in pre-flight Step 3) |
| Push branch su origin | 🔴 Alto | Sì (Step 3) |
| Merge in deploy/collaudo | 🔴 Alto | Sì (Step 3) |
| Push deploy/collaudo | 🔴 Alto | Sì (Step 3) |
make dev (push tag COLLAUDO) | 🟡 Medio | No (gated dalla pipeline) |
modules/transient/eventbridge-new-data.tf senza richiesta esplicitatransient_relational_newticket-id, incremento, db-name prima di costruire branchfeature → release prima del merge in collaudo--force) senza richiesta esplicitaUtente: "siae-add-transient-prefix 1566 01_28 bm_utilizzazioni"
oppure
Utente: "Aggiungi il prefix per bm_utilizzazioni, ticket EDW-1566 increment 01_28"
Output atteso: branch creati, PR #X aperta, merge collaudo eseguito, run pipeline avviato e monitorato.
Provides 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.
npx claudepluginhub itsiae/siae-dev-forge --plugin siae-devforge