Files
AGENTS/skills/basecamp-project/references/discovery-questions.md

588 lines
17 KiB
Markdown

---
title: Discovery Questions Framework
description: Guided project definition workflow for Basecamp projects - 8 phases covering vision, success criteria, timeline, team, communication, tools, risks, and review
type: reference
version: 1.0
last_updated: 2025-04-27
---
# Discovery Questions Framework
Leitet User durch 8 Phasen der Projekt-Definition, ähnlich dem brainstorming Skill. Jede Phase kann übersprungen werden; Multiple-Choice-Fragen haben "Anderes"-Fallback.
---
## Phase 1: Vision & Goals
```yaml
phase:
id: 1
name: "Vision & Goals"
description: "Kläre das Ziel und den Zweck des Projekts"
skippable: true
questions:
- id: "project_goal"
text: "Was ist das Ziel dieses Projekts?"
type: "freetext"
required: true
prompt: "Beschreibe in einem Satz, was wir erreichen wollen"
- id: "problem_solved"
text: "Welches Problem löst dieses Projekt?"
type: "freetext"
required: false
placeholder: "Welchen Schmerzpunkt oder welches Bedürfnis adressieren wir?"
```
### Beispiel-Prompts
**Frage:** Was ist das Ziel dieses Projekts?
**Prompt:** Beschreibe in einem Satz, was wir erreichen wollen.
**Antwort-Beispiel:** "Wir wollen die interne Dokumentation von Prozessen verbessern, damit new Joiner schneller produktiv werden."
---
## Phase 2: Success Criteria
```yaml
phase:
id: 2
name: "Success Criteria"
description: "Definiere messbare Kriterien für Projekterfolg"
skippable: true
questions:
- id: "success_indicators"
text: "Woran erkennen wir, dass das Projekt erfolgreich war?"
type: "multiple_choice_checkbox"
required: false
options:
- label: "Funktional fertig"
description: "Alle geplanten Features wurden implementiert"
value: "functional_complete"
- label: "Zeitnah geliefert"
description: "Deadline wurde eingehalten"
value: "on_time"
- label: "Qualitätsziele erreicht"
description: "Tests, Reviews und QA bestanden"
value: "quality_met"
- label: "Stakeholder zufrieden"
description: "Feedback von Auftraggebern eingeholt und positiv"
value: "stakeholder_happy"
- label: "Budget eingehalten"
description: "Kosten blieben im geplanten Rahmen"
value: "on_budget"
- label: "Andere"
description: "Eigene Erfolgskriterien definieren"
value: "other"
freetext: true
freetext_label: "Andere Erfolgskriterien:"
freetext_placeholder: "z.B. 95% Adoption Rate nach Launch"
- id: "kpis"
text: "Welche messbaren KPIs definieren Erfolg?"
type: "freetext"
required: false
multiline: true
placeholder: "z.B. Response Time < 200ms, Coverage > 80%, NPS > 50"
```
### UI-Darstellung
```
Woran erkennen wir, dass das Projekt erfolgreich war?
☐ Funktional fertig (alle Features implementiert)
☐ Zeitnah geliefert (Deadline eingehalten)
☐ Qualitätsziele erreicht (Tests, Reviews bestanden)
☐ Stakeholder zufrieden (Feedback eingeholt)
☐ Budget eingehalten
☑ Andere: ___95% Adoption Rate nach Launch___
```
---
## Phase 3: Timeline & Milestones
```yaml
phase:
id: 3
name: "Timeline & Milestones"
description: "Definiere Start, Ende und wichtige Zwischenmeilensteine"
skippable: true
questions:
- id: "start_date"
text: "Wann soll das Projekt starten?"
type: "date"
required: true
parse_natural: true
examples:
- "nächsten Montag"
- "2025-06-01"
- "Mitte Juni"
- "sofort"
- id: "end_date"
text: "Wann soll das Projekt abgeschlossen sein?"
type: "date"
required: true
parse_natural: true
examples:
- "Ende Q2"
- "2025-08-15"
- "in 3 Monaten"
- id: "milestones"
text: "Welche wichtigen Zwischenmeilensteine gibt es?"
type: "dynamic_list"
required: false
item_template:
- id: "name"
type: "freetext"
placeholder: "Meilenstein Name"
- id: "date"
type: "date"
required: false
parse_natural: true
placeholder: "Datum (optional)"
add_button: "+ Meilenstein hinzufügen"
min_items: 0
max_items: 10
```
### Beispiel-Liste
```
Welche wichtigen Zwischenmeilensteine gibt es?
┌─────────────────────────────────────────────────────┐
│ 1. Discovery Phase │
│ Datum: 2025-05-15 │
├─────────────────────────────────────────────────────┤
│ 2. Design Approval │
│ Datum: Ende Mai │
├─────────────────────────────────────────────────────┤
│ 3. Beta Release │
│ Datum: — │
├─────────────────────────────────────────────────────┤
│ [+ Meilenstein hinzufügen] │
└─────────────────────────────────────────────────────┘
```
---
## Phase 4: Team & Roles
```yaml
phase:
id: 4
name: "Team & Roles"
description: "Definiere Team-Mitglieder und Rollen"
skippable: true
questions:
- id: "team_members"
text: "Wer ist am Projekt beteiligt?"
type: "basecamp_people_lookup"
required: false
source: "basecamp people list --json"
fallback: "freetext"
fallback_label: "Person hinzufügen (nicht in Basecamp):"
- id: "roles_needed"
text: "Welche Rollen brauchen wir?"
type: "multiple_choice_checkbox"
required: false
options:
- label: "Projektleitung"
value: "project_lead"
- label: "Entwicklung"
value: "development"
- label: "Design"
value: "design"
- label: "QA/Testing"
value: "qa"
- label: "Stakeholder/Product Owner"
value: "stakeholder"
- label: "Externe Dienstleister"
value: "external"
- label: "Andere"
value: "other"
freetext: true
freetext_label: "Andere Rolle:"
- id: "progress_reporting"
text: "Soll regelmäßig über Fortschritt berichtet werden?"
type: "yes_no"
required: false
default: true
trigger: "creates_checkins"
```
### Basecamp People Lookup Flow
```
Wer ist am Projekt beteiligt?
[🔍 Basecamp Team durchsuchen...]
Verfügbare Personen:
┌────────────────────────────────────────────────────┐
│ 👤 Alice Müller Projektleitung │
│ 👤 Bob Schmidt Entwicklung │
│ 👤 Carol Weber Design │
│ 👤 Dave Fischer QA │
└────────────────────────────────────────────────────┘
[✓] Alice Müller
[✓] Bob Schmidt
[ ] Carol Weber
[ ] Dave Fischer
[+ Person hinzufügen (nicht in Basecamp)]
oder manuell eingeben:
Anderer Name: ___________
```
---
## Phase 5: Communication Preferences
```yaml
phase:
id: 5
name: "Communication Preferences"
description: "Definiere Kommunikationskanäle und -rhythmus"
skippable: true
questions:
- id: "communication_channels"
text: "Wie soll hauptsächlich kommuniziert werden?"
type: "multiple_choice_checkbox"
required: false
options:
- label: "Täglicher Standup"
description: "Kurze tägliche Updates im Chat-Kanal"
value: "daily_standup"
- label: "Wöchentliches Sync-Meeting"
description: "Regelmäßiges Meeting für Fortschritt und Blocker"
value: "weekly_sync"
- label: "Ad-hoc bei Bedarf"
description: "Kommunikation nur wenn nötig"
value: "ad_hoc"
- label: "Async-First"
description: "Primär Messages und Documents, seltene Meetings"
value: "async_first"
- label: "Video-Calls für Meetings"
description: "Meetings per Video-Call statt vor Ort"
value: "video_calls"
- id: "escalation_mentions"
text: "Sollen @mentions für Eskalation genutzt werden?"
type: "yes_no"
required: false
default: true
hint: "Bei @mention wird derjenige sofort benachrichtigt"
```
### UI-Darstellung
```
Wie soll hauptsächlich kommuniziert werden?
☐ Täglicher Standup (Chat-Kanal)
☑ Wöchentliches Sync-Meeting
☑ Async-First (primär Messages/Documents)
☐ Video-Calls für Meetings
Sollen @mentions für Eskalation genutzt werden?
[JA] Nein
```
---
## Phase 6: Tools & Workflows
```yaml
phase:
id: 6
name: "Tools & Workflows"
description: "Wähle Basecamp-Tools und Workflow-Konfiguration"
skippable: true
questions:
- id: "basecamp_tools"
text: "Welche Basecamp-Tools sollen aktiv genutzt werden?"
type: "multiple_choice_checkbox"
required: false
default_checked:
- "message_board"
- "todos"
- "chat"
- "checkins"
- "documents"
options:
- label: "Message Board"
description: "Kickoff-Nachrichten, Entscheidungen, Updates"
value: "message_board"
- label: "To-Dos"
description: "Aufgaben und Meilensteine"
value: "todos"
- label: "Schedule"
description: "Kalender-Events für Meilensteine"
value: "schedule"
- label: "Chat"
description: "Kommunikation und Standups"
value: "chat"
- label: "Cards/Kanban"
description: "Visuelles Task-Board (Alternative zu To-Dos)"
value: "cards"
- label: "Check-ins"
description: "Automatische Abfragen zu Fortschritt"
value: "checkins"
- label: "Documents"
description: "Specs, Referenzen, Entscheidungen"
value: "documents"
- label: "Gauges"
description: "Fortschritts-Indikatoren"
value: "gauges"
- label: "Files"
description: "Dateien und Anhänge"
value: "files"
- id: "progress_gauge"
text: "Soll ein Gauge mit Fortschritts-Indikator erstellt werden?"
type: "yes_no"
required: false
conditional_on: "basecamp_tools includes 'gauges'"
default: false
```
### UI-Darstellung mit Vorauswahl
```
Welche Basecamp-Tools sollen aktiv genutzt werden?
☑ Message Board (Kickoff, Entscheidungen)
☑ To-Dos (Aufgaben, Meilensteine)
☐ Schedule (Kalender-Events)
☑ Chat (Kommunikation, Standups)
☐ Cards/Kanban (Alternative zu To-Dos)
☑ Check-ins (Automatische Abfragen)
☑ Documents (Specs, Referenzen)
☐ Gauges (Fortschritts-Tracking)
☐ Files (Dateien, Anhänge)
Soll ein Gauge mit Fortschritts-Indikator erstellt werden?
[Ja] Nein
```
---
## Phase 7: Risks & Dependencies
```yaml
phase:
id: 7
name: "Risks & Dependencies"
description: "Identifiziere Risiken und Abhängigkeiten"
skippable: true
questions:
- id: "known_risks"
text: "Gibt es bekannte Risiken?"
type: "freetext"
required: false
multiline: true
placeholder: "z.B. Abhängigkeit von externem API, limitierte Testumgebung, kritische Abhängigkeit von Key Person"
- id: "dependencies"
text: "Welche Abhängigkeiten gibt es?"
type: "freetext"
required: false
multiline: true
placeholder: "z.B. Wartet auf Approval von Legal, Abhängig von Datenbank-Migration, Braucht Zugang zu Prod-System"
- id: "external_stakeholders"
text: "Wer sind externe Stakeholder?"
type: "freetext"
required: false
multiline: true
placeholder: "z.B. Externe Agentur für Design, Kunde für Feedback, Vendor für Integration"
```
---
## Phase 8: Review
```yaml
phase:
id: 8
name: "Review"
description: "Zusammenfassung aller Antworten zur Bestätigung"
skippable: false
questions:
- id: "summary"
type: "review_summary"
sections:
- "vision_goals"
- "success_criteria"
- "timeline"
- "team"
- "communication"
- "tools"
- "risks"
actions:
- label: "Alles korrekt"
value: "confirm"
next: "create_project"
- label: "Bearbeiten"
value: "edit"
next: "phase_picker"
```
### Review-Darstellung
```
═══════════════════════════════════════════════════════
PROJEKT-ZUSAMMENFASSUNG
═══════════════════════════════════════════════════════
📌 VISION & GOALS
Ziel: Interne Dokumentation verbessern
Problem: New Joiner brauchen zu lange zur Einarbeitung
🎯 SUCCESS CRITERIA
☑ Funktional fertig
☑ Zeitnah geliefert
☐ Qualitätsziele erreicht
☑ Stakeholder zufrieden
KPI: 95% Adoption Rate nach Launch
📅 TIMELINE
Start: 2025-06-01
Ende: 2025-08-15 (11 Wochen)
Meilensteine:
• Discovery Phase — 2025-05-15
• Design Approval — Ende Mai
• Beta Release — (ohne Datum)
👥 TEAM
Alice Müller (Projektleitung)
Bob Schmidt (Entwicklung)
Carol Weber (Design)
Rollen: Projektleitung, Entwicklung, Design
✓ Regelmäßige Fortschrittsberichte
💬 KOMMUNIKATION
Async-First, wöchentliche Sync-Meetings
✓ @mentions für Eskalation aktiviert
🛠 TOOLS (aktiviert)
Message Board, To-Dos, Chat, Check-ins, Documents
⚠️ RISIKEN & ABHÄNGIGKEITEN
Risiken: —
Abhängigkeiten: Wartet auf Approval von Legal
Externe Stakeholder: Kunde für Feedback
═══════════════════════════════════════════════════════
[ ✅ Alles korrekt — Projekt erstellen ]
[ ✏️ Zurück zu Phase: [Vision ▼] ]
```
---
## Nutzung im Skill Workflow
### Discovery Flow Integration
Der Discovery-Fragen-Katalog wird verwendet wenn:
1. **Kein Plan vorhanden** — User möchte Projekt von Grund auf definieren
2. **Vor dem Drafting** — Als strukturierter Einstieg vor dem eigentlichen Planning
3. **Ergänzung zu bestehendem Plan** — Falls wichtige Felder fehlen
### Flow-Integration
```
User: "Ich will ein neues Projekt in Basecamp erstellen"
Skill: "Lass uns das Projekt gemeinsam definieren."
"Wir gehen durch 8 kurze Phasen."
[Phase 1-8 durchlaufen]
Zusammenfassung anzeigen
User bestätigt → Erstelle Projekt
User möchte ändern → Springe zur Phase
```
### Abspeichern der Answers
```python
# Struktur für gesammelte Answers
discovery_answers = {
"project_goal": "...",
"problem_solved": "...",
"success_indicators": [...],
"kpis": "...",
"start_date": "2025-06-01",
"end_date": "2025-08-15",
"milestones": [
{"name": "Discovery", "date": "2025-05-15"},
{"name": "Design Approval", "date": "..."},
],
"team_members": [
{"id": "123", "name": "Alice Müller", "role": "project_lead"}
],
"roles_needed": ["project_lead", "development", "design"],
"progress_reporting": True,
"communication_channels": ["async_first", "weekly_sync"],
"escalation_mentions": True,
"basecamp_tools": ["message_board", "todos", "chat", "checkins", "documents"],
"progress_gauge": False,
"known_risks": "...",
"dependencies": "...",
"external_stakeholders": "...",
}
```
### Mapping zu Basecamp Structure
| Discovery Field | Basecamp Creation |
|-----------------|-------------------|
| project_goal, problem_solved | Kickoff Message |
| start_date, end_date | Schedule (oder Project Description) |
| milestones | To-Do Lists + Schedule Entries |
| team_members | Project People |
| communication_channels | Chat Channel Topic + PM Setup |
| basecamp_tools | Aktiviert/Deaktiviert im Project |
| progress_gauge | Gauge Creation |
| known_risks, dependencies | Message Board Post |
---
## Natural Language Date Parsing
Der Skill unterstützt flexible Datumsangaben:
| Input | Parsed Output |
|-------|---------------|
| "nächsten Montag" | 2025-05-05 (wenn gerade April) |
| "Ende Q2" | 2025-06-30 |
| "Mitte Juni" | 2025-06-15 |
| "in 3 Wochen" | +21 Tage von heute |
| "2025-06-01" | 2025-06-01 |
| "sofort" | today's date |
| "ASAP" | today's date |
---
## Implementation Notes
1. **Jede Phase ist überspringbar** — User kann "Weiter" oder "Überspringen" sagen
2. **Multiple Choice mit Freitext-Fallback** — "Andere" öffnet Freitext-Eingabe
3. **Datum-Parsing** — Akzeptiere natürliche Sprache mit Fallback auf direkte Eingabe
4. **Basecamp People Lookup** — Nutze `basecamp people list --json` für Team-Auswahl
5. **Review-Phase ist Pflicht** — Zeigt Zusammenfassung vor Projekt-Erstellung
6. **Answers werden gesammelt** — Bis zur Bestätigung in Discovery-Objekt gespeichert