Skip to content

Verzeichnisstruktur im Detail: Vollständiger Leitfaden für Factory-Projekte ​

Was Sie nach diesem Tutorial können ​

  • ✅ Die vollständige Verzeichnisstruktur von Factory-Projekten verstehen
  • ✅ Den Zweck jedes Verzeichnisses und jeder Datei kennen
  • ✅ Die Speichermethode von Artefakten verstehen
  • ✅ Die Funktionen und Änderungsmethoden von Konfigurationsdateien beherrschen

Kernkonzept ​

Factory-Projekte verwenden eine klare hierarchische Verzeichnisstruktur, die Konfigurationen, Code, Artefakte und Dokumentation trennt. Das Verstehen dieser Verzeichnisstrukturen hilft Ihnen, Dateien schnell zu lokalisieren, Konfigurationen zu ändern und Probleme zu debuggen.

Factory-Projekte haben zwei Formen:

Form 1: Quellcode-Repository (das Sie von GitHub klonen) Form 2: Initialisiertes Projekt (das von factory init generiert wird)

Dieses Tutorial konzentriert sich auf Form 2 – die Struktur des initialisierten Factory-Projekts, da dies das Verzeichnis ist, in dem Sie täglich arbeiten.


Vollständige Struktur des Factory-Projekts ​

my-app/                          # Root-Verzeichnis Ihres Factory-Projekts
├── .factory/                    # Kernkonfigurationsverzeichnis von Factory (nicht manuell ändern)
│   ├── pipeline.yaml             # Pipeline-Definition (7 Phasen)
│   ├── config.yaml               # Projektkonfigurationsdatei (Tech Stack, MVP-Einschränkungen usw.)
│   ├── state.json                # Pipeline-Laufzustand (aktuelle Phase, abgeschlossene Phasen)
│   ├── agents/                   # Agent-Definitionen (Aufgabenbeschreibungen für KI-Assistenten)
│   ├── skills/                   # Skill-Module (wiederverwendbares Wissen)
│   ├── policies/                 # Richtliniendokumente (Berechtigungen, Fehlerbehandlung, Codestandards)
│   └── templates/                # Konfigurationsvorlagen (CI/CD, Git Hooks)
├── .claude/                      # Claude Code-Konfigurationsverzeichnis (automatisch generiert)
│   └── settings.local.json       # Claude Code-Berechtigungskonfiguration
├── input/                        # Benutzereingabeverzeichnis
│   └── idea.md                   # Strukturierte Produktidee (von Bootstrap generiert)
└── artifacts/                    # Pipeline-Artefaktverzeichnis (Ausgaben der 7 Phasen)
    ├── prd/                      # PRD-Artefakte
    │   └── prd.md                # Produktspezifikationsdokument
    ├── ui/                       # UI-Artefakte
    │   ├── ui.schema.yaml        # UI-Strukturdefinition
    │   └── preview.web/          # Vorschau-HTML-Prototyp
    │       └── index.html
    ├── tech/                     # Tech-Artefakte
    │   └── tech.md               # Technische Architekturdokumentation
    ├── backend/                  # Backend-Code (Express + Prisma)
    │   ├── src/                  # Quellcode
    │   ├── prisma/               # Datenbankkonfiguration
    │   │   ├── schema.prisma     # Prisma-Datenmodell
    │   │   └── seed.ts           # Seed-Daten
    │   ├── tests/                # Tests
    │   ├── docs/                 # API-Dokumentation
    │   ├── package.json
    │   ├── tsconfig.json
    │   └── README.md
    ├── client/                   # Frontend-Code (React Native)
    │   ├── src/                  # Quellcode
    │   ├── __tests__/            # Tests
    │   ├── app.json
    │   ├── package.json
    │   └── README.md
    ├── validation/               # Validierungsartefakte
    │   └── report.md             # Codequalitätsvalidierungsbericht
    ├── preview/                  # Preview-Artefakte
    │   ├── README.md             # Bereitstellungs- und Ausführungsanleitung
    │   └── GETTING_STARTED.md    # Schnellstartanleitung
    ├── _failed/                  # Archiv für fehlgeschlagene Artefakte
    │   └── <stage-id>/           # Artefakte der fehlgeschlagenen Phase
    └── _untrusted/               # Isolierung unbefugter Artefakte
        └── <stage-id>/           # Von unbefugten Agenten geschriebene Dateien

.factory/-Verzeichnis im Detail ​

Das .factory/-Verzeichnis ist das Kernstück des Factory-Projekts und enthält Pipeline-Definitionen, Agent-Konfigurationen und Richtliniendokumente. Dieses Verzeichnis wird automatisch durch den Befehl factory init erstellt und muss normalerweise nicht manuell geändert werden.

pipeline.yaml - Pipeline-Definition ​

Verwendung: Definiert die Ausführungsreihenfolge der 7 Phasen, Eingaben/Ausgaben und Exit-Kriterien.

Schlüsselinhalt:

  • 7 Phasen: bootstrap, prd, ui, tech, code, validation, preview
  • Für jede Phase: Agent, Eingabedateien, Ausgabedateien
  • Exit-Kriterien (exit_criteria): Validierungsstandards für den Phasenabschluss

Beispiel:

yaml
stages:
  - id: bootstrap
    description: Initialisiere Produktidee
    agent: agents/bootstrap.agent.md
    inputs: []
    outputs:
      - input/idea.md
    exit_criteria:
      - idea.md existiert
      - idea.md beschreibt eine zusammenhängende Produktidee

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten den Pipeline-Ablauf anpassen.

config.yaml - Projektkonfigurationsdatei ​

Verwendung: Konfiguriert globale Einstellungen wie Tech Stack, MVP-Einschränkungen und UI-Präferenzen.

Hauptkonfigurationselemente:

  • preferences: Tech Stack-Präferenzen (Backend-Sprache, Datenbank, Frontend-Framework usw.)
  • mvp_constraints: MVP-Bereichskontrolle (maximale Seitenzahl, maximale Modellzahl usw.)
  • ui_preferences: UI-Design-Präferenzen (ästhetische Richtung, Farbschema)
  • pipeline: Pipeline-Verhalten (Checkpoint-Modus, Fehlerbehandlung)
  • advanced: Erweiterte Optionen (Agent-Timeout, Nebenläufigkeitssteuerung)

Beispiel:

yaml
preferences:
  backend:
    language: typescript
    framework: express
    database: sqlite
  mvp_constraints:
    max_pages: 3
    enable_auth: false

Wann zu ändern: Wenn Sie den Tech Stack anpassen oder den MVP-Bereich ändern möchten.

state.json - Pipeline-Status ​

Verwendung: Zeichnet den Laufstatus der Pipeline auf und unterstützt die Wiederaufnahme an Haltepunkten.

Schlüsselinhalt:

  • status: Aktueller Status (idle/running/waiting_for_confirmation/paused/failed)
  • current_stage: Aktuelle Phase
  • completed_stages: Liste der abgeschlossenen Phasen
  • last_updated: Zeit der letzten Aktualisierung

Wann zu ändern: Automatisch aktualisiert, nicht manuell ändern.

agents/ - Agent-Definitionsverzeichnis ​

Verwendung: Definiert Verantwortlichkeiten, Eingaben/Ausgaben und Ausführungsbedingungen für jeden Agenten.

Dateiliste:

DateiBeschreibung
orchestrator.checkpoint.mdOrchestrator-Kerndefinition (Pipeline-Koordinierung)
orchestrator-implementation.mdOrchestrator-Implementierungsleitfaden (Entwicklungsreferenz)
bootstrap.agent.mdBootstrap Agent (strukturierte Produktidee)
prd.agent.mdPRD Agent (Anforderungsdokumentgenerierung)
ui.agent.mdUI Agent (UI-Prototypdesign)
tech.agent.mdTech Agent (Technische Architekturdesign)
code.agent.mdCode Agent (Codegenerierung)
validation.agent.mdValidation Agent (Codequalitätsvalidierung)
preview.agent.mdPreview Agent (Bereitstellungsanleitungsgenerierung)

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten das Verhalten eines bestimmten Agenten anpassen.

skills/ - Skill-Modulverzeichnis ​

Verwendung: Wiederverwendbare Wissensmodule, jeder Agent lädt die entsprechende Skill-Datei.

Verzeichnisstruktur:

skills/
├── bootstrap/skill.md         # Strukturierung von Produktideen
├── prd/skill.md               # PRD-Generierung
├── ui/skill.md                # UI-Design
├── tech/skill.md              # Technische Architektur + Datenbankmigration
├── code/skill.md              # Codegenerierung + Tests + Logging
│   └── references/            # Referenzvorlagen für Codegenerierung
│       ├── backend-template.md   # Produktionsreife Backend-Vorlage
│       └── frontend-template.md  # Produktionsreife Frontend-Vorlage
└── preview/skill.md           # Bereitstellungskonfiguration + Schnellstartanleitung

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten die Fähigkeiten eines bestimmten Skills erweitern.

policies/ - Richtliniendokumentverzeichnis ​

Verwendung: Definiert Richtlinien für Berechtigungen, Fehlerbehandlung, Codestandards usw.

Dateiliste:

DateiBeschreibung
capability.matrix.mdFähigkeitsgrenzmatrix (Agent-Lese-/Schreibberechtigungen)
failure.policy.mdFehlerbehandlungsrichtlinie (Wiederholung, Rollback, menschliches Eingreifen)
context-isolation.mdKontextisolierungsrichtlinie (Token-Einsparung)
error-codes.mdEinheitlicher Fehlercodestandard
code-standards.mdCodestandard (Codierungsstil, Dateistruktur)
pr-template.mdPR-Vorlage und Code-Prüfliste
changelog.mdChangelog-Generierungsstandard

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten Richtlinien oder Standards anpassen.

templates/ - Konfigurationsvorlagenverzeichnis ​

Verwendung: Konfigurationsvorlagen für CI/CD, Git Hooks usw.

Dateiliste:

DateiBeschreibung
cicd-github-actions.mdCI/CD-Konfiguration (GitHub Actions)
git-hooks-husky.mdGit Hooks-Konfiguration (Husky)

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten den CI/CD-Ablauf anpassen.


.claude/-Verzeichnis im Detail ​

settings.local.json - Claude Code-Berechtigungskonfiguration ​

Verwendung: Definiert die Verzeichnisse und Vorgänge, auf die Claude Code zugreifen darf.

Wann generiert: Automatisch bei factory init.

Wann zu ändern: Normalerweise nicht erforderlich, es sei denn, Sie möchten den Berechtigungsbereich anpassen.


input/-Verzeichnis im Detail ​

idea.md - Strukturierte Produktidee ​

Verwendung: Speichert eine strukturierte Produktidee, die vom Bootstrap Agent generiert wurde.

Generierungszeitpunkt: Nach Abschluss der Bootstrap-Phase.

Inhaltsstruktur:

  • Problembeschreibung (Problem)
  • Zielbenutzer (Target Users)
  • Kernwert (Core Value)
  • Annahmen (Assumptions)
  • Nicht-Ziele (Out of Scope)

Wann zu ändern: Wenn Sie die Produktrichtung anpassen möchten, können Sie manuell bearbeiten und dann Bootstrap oder nachfolgende Phasen erneut ausführen.


artifacts/-Verzeichnis im Detail ​

Das artifacts/-Verzeichnis ist der Speicherort für Pipeline-Artefakte. Jede Phase schreibt ihre Artefakte in das entsprechende Unterverzeichnis.

prd/ - PRD-Artefaktverzeichnis ​

Artefaktdateien:

  • prd.md: Produktspezifikationsdokument

Inhalt:

  • User Stories
  • Feature-Liste
  • Nicht-funktionale Anforderungen
  • Nicht-Ziele

Generierungszeitpunkt: Nach Abschluss der PRD-Phase.

ui/ - UI-Artefaktverzeichnis ​

Artefaktdateien:

  • ui.schema.yaml: UI-Strukturdefinition (Seiten, Komponenten, Interaktionen)
  • preview.web/index.html: Vorschau-HTML-Prototyp

Inhalt:

  • Seitenstruktur (Seitenanzahl, Layout)
  • Komponentendefinitionen (Schaltflächen, Formulare, Listen usw.)
  • Interaktionsflüsse (Navigation, Weiterleitungen)
  • Designsystem (Farbschema, Schriftarten, Abstände)

Generierungszeitpunkt: Nach Abschluss der UI-Phase.

Vorschaumethode: Öffnen Sie preview.web/index.html im Browser.

tech/ - Tech-Artefaktverzeichnis ​

Artefaktdateien:

  • tech.md: Technische Architekturdokumentation

Inhalt:

  • Tech Stack-Auswahl (Backend, Frontend, Datenbank)
  • Datenmodelldesign
  • API-Endpunkt-Design
  • Sicherheitsrichtlinien
  • Leistungsoptimierungsempfehlungen

Generierungszeitpunkt: Nach Abschluss der Tech-Phase.

backend/ - Backend-Codeverzeichnis ​

Artefaktdateien:

backend/
├── src/                      # Quellcode
│   ├── routes/               # API-Routen
│   ├── services/             # Geschäftslogik
│   ├── middleware/           # Middleware
│   └── utils/               # Hilfsfunktionen
├── prisma/                   # Prisma-Konfiguration
│   ├── schema.prisma         # Prisma-Datenmodell
│   └── seed.ts              # Seed-Daten
├── tests/                    # Tests
│   ├── unit/                 # Einheitstests
│   └── integration/          # Integrationstests
├── docs/                     # Dokumentation
│   └── api-spec.yaml        # API-Spezifikation (Swagger)
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── README.md

Inhalt:

  • Express Backend-Server
  • Prisma ORM (SQLite/PostgreSQL)
  • Vitest-Testframework
  • Swagger API-Dokumentation

Generierungszeitpunkt: Nach Abschluss der Code-Phase.

client/ - Frontend-Codeverzeichnis ​

Artefaktdateien:

client/
├── src/                      # Quellcode
│   ├── screens/              # Seiten
│   ├── components/           # Komponenten
│   ├── navigation/           # Navigationskonfiguration
│   ├── services/             # API-Services
│   └── utils/               # Hilfsfunktionen
├── __tests__/               # Tests
│   └── components/          # Komponententests
├── assets/                  # Statische Ressourcen
├── app.json                 # Expo-Konfiguration
├── package.json
├── tsconfig.json
└── README.md

Inhalt:

  • React Native + Expo
  • React Navigation
  • Jest + React Testing Library
  • TypeScript

Generierungszeitpunkt: Nach Abschluss der Code-Phase.

validation/ - Validierungsartefaktverzeichnis ​

Artefaktdateien:

  • report.md: Codequalitätsvalidierungsbericht

Inhalt:

  • Abhängigkeitsinstallationsvalidierung
  • TypeScript-Typprüfung
  • Prisma-Schema-Validierung
  • Testabdeckung

Generierungszeitpunkt: Nach Abschluss der Validation-Phase.

preview/ - Preview-Artefaktverzeichnis ​

Artefaktdateien:

  • README.md: Bereitstellungs- und Ausführungsanleitung
  • GETTING_STARTED.md: Schnellstartanleitung

Inhalt:

  • Lokale Ausführungsschritte
  • Docker-Bereitstellungskonfiguration
  • CI/CD-Pipeline
  • Zugriffsadressen und Demo-Flüsse

Generierungszeitpunkt: Nach Abschluss der Preview-Phase.

_failed/ - Archiv für fehlgeschlagene Artefakte ​

Verwendung: Speichert Artefakte fehlgeschlagener Phasen, um das Debuggen zu erleichtern.

Verzeichnisstruktur:

_failed/
├── bootstrap/
├── prd/
├── ui/
├── tech/
├── code/
├── validation/
└── preview/

Wann generiert: Nach zwei aufeinanderfolgenden Fehlschlägen einer Phase.

_untrusted/ - Isolierung unbefugter Artefakte ​

Verwendung: Speichert von unbefugten Agenten geschriebene Dateien, um die Hauptartefakte nicht zu verunreinigen.

Verzeichnisstruktur:

_untrusted/
├── bootstrap/
├── prd/
├── ui/
├── tech/
├── code/
├── validation/
└── preview/

Wann generiert: Wenn ein Agent versucht, in ein nicht autorisiertes Verzeichnis zu schreiben.


Häufig gestellte Fragen ​

1. Kann ich Dateien unter .factory/ manuell ändern? ​

Vorsicht beim Ändern

Es wird nicht empfohlen, Dateien unter .factory/ direkt zu ändern, es sei denn, Sie wissen genau, was Sie tun. Falsche Änderungen können dazu führen, dass die Pipeline nicht ordnungsgemäß ausgeführt werden kann.

Wenn Sie Konfigurationen anpassen müssen, sollten Sie vorrangig die Datei config.yaml ändern.

2. Können Dateien unter artifacts/ manuell geändert werden? ​

Ja. Dateien unter artifacts/ sind Ausgabeartefakte der Pipeline. Sie können:

  • input/idea.md oder artifacts/prd/prd.md ändern, um die Produktrichtung anzupassen
  • Code in artifacts/backend/ oder artifacts/client/ manuell reparieren
  • Stile in artifacts/ui/preview.web/index.html anpassen

Nach Änderungen können Sie die Pipeline ab der entsprechenden Phase erneut ausführen.

3. Wie werden Dateien unter _failed/ und _untrusted/ behandelt? ​

  • _failed/: Überprüfen Sie die Fehlerursache und führen Sie die Phase erneut aus, nachdem Sie das Problem behoben haben.
  • _untrusted/: Bestätigen Sie, ob die Dateien vorhanden sein sollten, und verschieben Sie sie bei Bedarf in das richtige Verzeichnis.

4. Was tun, wenn die Datei state.json beschädigt ist? ​

Wenn state.json beschädigt ist, können Sie den folgenden Befehl zum Zurücksetzen ausführen:

bash
factory reset

5. Wie kann ich den aktuellen Status der Pipeline anzeigen? ​

Führen Sie den folgenden Befehl aus, um den aktuellen Status anzuzeigen:

bash
factory status

Zusammenfassung ​

In diesem Lektion haben wir die vollständige Verzeichnisstruktur von Factory-Projekten ausführlich erläutert:

  • ✅ .factory/: Factory-Kernkonfiguration (pipeline, agents, skills, policies)
  • ✅ .claude/: Claude Code-Berechtigungskonfiguration
  • ✅ input/: Benutzereingaben (idea.md)
  • ✅ artifacts/: Pipeline-Artefakte (prd, ui, tech, backend, client, validation, preview)
  • ✅ _failed/ und _untrusted/: Archivierung für fehlgeschlagene und unbefugte Artefakte

Das Verstehen dieser Verzeichnisstrukturen hilft Ihnen, Dateien schnell zu lokalisieren, Konfigurationen zu ändern und Probleme zu debuggen.


Vorschau auf die nächste Lektion ​

In der nächsten Lektion lernen wir Code-Standards.

Sie werden lernen:

  • TypeScript-Codierungsstandards
  • Dateistruktur und Namenskonventionen
  • Kommentare und Dokumentationsanforderungen
  • Git-Commit-Nachricht-Standards