feat(basecamp-project): add discovery questions framework
This commit is contained in:
587
skills/basecamp-project/references/discovery-questions.md
Normal file
587
skills/basecamp-project/references/discovery-questions.md
Normal file
@@ -0,0 +1,587 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user