/ops-init — Interactive Project Setup
You are guiding the user through setting up a new ade-ops project. This is an interactive wizard — ask questions one phase at a time, wait for answers, then proceed.
Context
ade-ops manages remote analytics environments (Databricks, Fabric, DevOps). A project is a self-contained unit with:
src/— source of truth (notebooks, PBI models)overlays/— per-environment transforms (catalog, schema, exclusions)state/— mirror of what's deployed remotelyconfig/— project.yaml + credentials.yaml
The init wizard collects all info needed to generate this structure.
Instructions
Phase 1: Identity
Ask the user (in Italian, as per CLAUDE.md language rules):
Inizializziamo un nuovo progetto ade-ops.
- Client: come si chiama il cliente? (es.
<client>,acme)- Progetto: nome del progetto? (es.
<project>,analytics)- Descrizione: una riga che descrive lo scopo del progetto
- Directory: dove vuoi creare il progetto? (default:
projects/{client}/{project}/dentro ade-ops)
Wait for answers before proceeding.
Phase 2: Platforms & Technology
Ask:
Piattaforme e tecnologie:
Quali piattaforme usi? (scegli una o più)
databricks— notebooks, cataloghi, tabellefabric— Power BI semantic models e reportdevops— git repos (futuro)Per Databricks: qual è l'URL del workspace? (es.
https://adb-xxx.azuredatabricks.net)Per Fabric: qual è il tenant? (es.
contoso.com)Cosa devi deployare? (scope)
notebooks— notebook Python su Databrickspower_bi— modelli TMDL e report su Fabric- entrambi?
Wait for answers.
Phase 3: Environments
Ask:
Ambienti:
- Quanti ambienti hai? (es. dev, cert, prod)
- Per ciascun ambiente, ho bisogno di:
- Nome (es.
dev)- Descrizione breve (es. "Development, dati CERT")
- Databricks: workspace path, catalog, schema
- Fabric (se usato): workspace ID, model name, model ID, report suffix
Dimmi il primo ambiente e procediamo uno alla volta.
Collect environment details iteratively. For each environment, confirm before moving to the next.
Phase 4: Work Mode
Ask:
Come lavori:
- Lavori solo tu o c'è un team? (solo / team)
- Dove scrivi il codice? (il path nel workspace Databricks dove sviluppi — es. folder personale, shared, ecc.)
- Qual è il catalogo base usato in src/? Il catalogo che usi nel codice sorgente — gli overlay lo sostituiranno per gli altri ambienti. (es.
silver_demo_cert)- Come ti autentichi?
- Databricks: token PAT, Azure AD, ecc.
- Fabric: az CLI, device code, service principal
Phase 5: Version Control
Ask:
Versioning del progetto:
- Vuoi un repo git per questo progetto? Il progetto vive separato dal framework ade-ops.
- Si — inizializza git, utile per storia del codice e audit trail
- No — niente git, il progetto resta solo locale
- Vuoi pubblicarlo su GitHub? (solo se git = sì)
- Si, repo privato — crea su GitHub e fai il primo push
- No — solo git locale per ora
Phase 6: Generate
Once all info is collected:
- Summarize the configuration in a table and ask for conferma
- Use the scaffold engine to generate the project:
import sys
sys.path.insert(0, str(Path("core")))
from engine.init import ProjectSetup, PlatformConfig, EnvironmentConfig, scaffold_project
setup = ProjectSetup(
client="...",
project="...",
description="...",
target_dir="...", # if custom
platforms=[PlatformConfig(name="databricks", host="...")],
environments=[EnvironmentConfig(name="dev", ...)],
scopes={"notebooks": "databricks"},
base_catalog="...",
)
project_dir = scaffold_project(setup)
- Show the generated structure with
find - If git was requested, initialize the repo:
cd {project_dir}
git init
# .gitignore is generated by scaffold
git add .
git commit -m "Initial project setup via ade-ops /ops-init"
- If GitHub was requested, create the remote repo:
gh repo create {owner}/{client}-{project} --private --source=. --push
- Remind the user to:
- Copy
config/credentials.example.yamltoconfig/credentials.yamland fill in the real values (or rely on the${DATABRICKS_TOKEN}env var).credentials.yamlis gitignored. - Review overlays for correctness
- Run
python -m core.cli preflight --project {project_dir} --env {env}to verify connectivity - Run first
pullto populatestate/ - The ade-ops engine lives in the framework repo, not in the project
- Copy
Important
- Speak Italian (conversation language per CLAUDE.md)
- Ask one phase at a time — don't dump all questions at once
- If the user gives partial info, ask follow-up questions
- Use the project at
<lab-root>/ade\ade_projects\<client>\<project>as reference if the user mentions - The generated project is ready to use immediately after filling in credentials
- The project repo and the ade-ops framework repo are SEPARATE — the project does not contain engine code