---
name: projekt-initialisieren
description: Initialisiert ein neues Projekt aus diesem Template durch ein kurzes Interview und verwendet für Codeprojekte standardmässig das OpenTofu-/k3d-Gerüst. Verwenden, wenn PROJECT.md noch template_status uninitialized enthält oder das Template erstmals vollständig an ein konkretes Projekt angepasst werden soll; nicht bei einer bereits eindeutigen Bitte um einen fokussierten Initialisierungs-Skill wie $opentofu-initialisieren.
---

# Projekt initialisieren

Passe das Template einmalig an das konkrete Projekt an. Stelle nur Fragen,
deren Antworten nicht bereits aus vorhandenen Dateien hervorgehen.

Wenn der Benutzer bereits eindeutig nur einen fokussierten Teil wie das
OpenTofu-/k3d-Gerüst verlangt, führe stattdessen den passenden Skill ohne
diesen Fragekatalog aus. Bewahre dabei `template_status: uninitialized`, damit
die vollständige Projektinitialisierung später weiterhin möglich bleibt.

Für ein neues Codeprojekt ist das Gerüst von `opentofu-initialisieren` eine
bewusste DigiEstate-Konvention. Verwende es nach der fachlichen
Projektinitialisierung standardmässig, sofern der Benutzer es nicht
ausdrücklich abwählt und kein erkennbar unvereinbarer bestehender Stack
vorliegt. Ein reines Text-, Analyse- oder Dokumentprojekt erhält das Gerüst
nicht. Diese Voreinstellung erlaubt weder eine Werkzeuginstallation noch den
Start von Cluster, Container-Build oder IaC-Anwendung.

## Fachliche Grundlage

Die Initialisierung folgt **Progressive Elaboration**: Dokumentiere zunächst
nur, was bereits bekannt und für den Start nötig ist. Die spätere Planung wird
mit neuen Erkenntnissen verfeinert. Der
[PMI-ACP Examination Content Outline](https://www.pmi.org/-/media/pmi/documents/public/pdf/certifications/agile-certified-exam-outline.pdf)
verbindet diese schrittweise Detaillierung mit Planung auf mehreren Ebenen.

## Ablauf

1. Lies `PROJECT.md`, `BACKLOG.md`, `PLAN.md`, `TOOLS.md`, `TEMPLATE_SETUP.md`,
   `PROJECT_GUIDE.md` und den aktuellen Git-Status.
2. Frage zuerst, ob die Template-Quelle gepflegt oder ein konkretes Projekt
   initialisiert wird. Beende die Initialisierung im ersten Fall ohne
   Projektdateien anzupassen.
3. Ermittle vorhandene Inhalte und Änderungen. Überschreibe keine
   Nutzerarbeit. Stelle fest, ob das Hauptergebnis Code enthält und ob eine
   ausdrückliche Abwahl oder ein unvereinbarer bestehender Stack gegen das
   Standardgerüst spricht.
4. Stelle die übrigen Fragen aus `TEMPLATE_SETUP.md` einzeln. Überspringe bereits
   beantwortete Fragen und erkläre kurz, warum eine Antwort benötigt wird.
5. Fasse Zweck, Ergebnis, Umfang, Nicht-Ziele, Randbedingungen und die erste
   kleine Arbeitswelle zusammen. Weise bei einem Codeprojekt das geplante
   OpenTofu-/k3d-Gerüst oder den bestätigten Grund für seine Abwahl sichtbar
   aus.
6. Zeige vor Änderungen, welche Dateien ausgefüllt, angelegt oder als optional
   entfernt werden sollen.
7. Hole vor jeder Löschung eine ausdrückliche Bestätigung ein. Schweigen oder
   eine allgemeine Zustimmung zur Initialisierung gilt nicht als
   Löschfreigabe.
8. Aktualisiere `PROJECT.md`, `README.md`, `BACKLOG.md`, `PLAN.md` und bekannte
   projektprägende Werkzeuge in `TOOLS.md`. Die Root-`README.md` beschreibt das
   konkrete Projekt statt der Template-Quelle. Sichere genannte spätere Ideen,
   Features und mögliche Tasks mit ihrem ehrlichen Reifegrad im Backlog,
   statt sie ungefragt auszuwählen oder zu planen. Setze `template_status`
   erst nach bestätigter Zusammenfassung auf `initialized`.
9. Ist das Hauptergebnis ein Bericht oder eine Analyse, lege `REPORT.md` aus
   `docs/templates/report-template.md` an und verwende `bericht-verfassen`.
   Erzeuge keinen Bericht für reine Softwareprojekte.
10. Wird eine grafische Oberfläche benötigt, fülle
   `docs/templates/gui-brief-template.md` nur so weit wie bekannt aus und lege
   das Ergebnis als `docs/gui/GUI-BRIEF.md` ab. Verwende für die weitere Arbeit
   `gui-gestalten`. Lösche die Vorlage nicht.
11. Sind Fachbegriffe, Regeln oder Kontextgrenzen bereits bekannt, lege
    `docs/domain/DOMAIN.md` aus `docs/templates/domain-template.md` an. Sind
    mehrere Systeme und ihre Beziehungen relevant, lege zusätzlich
    `docs/architecture/ARCHITECTURE.md` aus
    `docs/templates/architecture-template.md` an. Erzeuge keine leeren
    optionalen Artefakte.
12. Sind sensible Daten, öffentliche Zugänge oder externe Vertrauensgrenzen
    relevant, lege `docs/security/SECURITY.md` aus
    `docs/templates/security-review-template.md` an. Halte die Sicherheits- und
    Datenschutzprüfung ansonsten direkt im ersten Task fest.
13. Registriere den ersten Task im Backlog und lege seine Datei nur an, wenn er
    bewusst ausgewählt, nicht blockiert und nach den Kriterien in
    `BACKLOG.md` auf `R4` ist. Verwende dafür
    `docs/templates/task-template.md`. Lege nur dann ein ADR an, wenn bereits
    eine dauerhafte Entscheidung getroffen wurde.
14. Ist das Hauptergebnis ein Codeprojekt und liegt kein Widerspruch gegen das
    Standardgerüst vor, führe nach den bestätigten Dateianpassungen aus:

    ```text
    python3 skills/opentofu-initialisieren/scripts/initialize.py . --project-name <projektname> --template-project
    ```

    Fehlt Python 3, stoppe ohne Installation. Der Template-Modus bewahrt die
    projektspezifische Root-`README.md`, ergänzt `.gitignore` erhaltend und
    behandelt alle anderen abweichenden Dateien weiterhin als Konflikt. Starte
    weder `task up` noch einen anderen Laufzeitbefehl ohne zusätzlichen Auftrag.
15. Behalte nur die Laufzeitadapter, die der Benutzer verwenden möchte. Auch
    deren Entfernung benötigt die Bestätigung aus Schritt 7.

## Ergebnis

Beende die Initialisierung mit einer kurzen Liste der geltenden Artefakte, der
offenen Fragen und des nächsten kleinen Schritts.
