Claude-skill-registry conversational-goal-discovery
Chat-based goal classification (habit/distance/speed/race) with constraint clarification. Use during onboarding or when user wants to update their running goals through conversation with weekly commitment discovery.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/conversational-goal-discovery" ~/.claude/skills/majiayu000-claude-skill-registry-conversational-goal-discovery && rm -rf "$T"
manifest:
skills/data/conversational-goal-discovery/SKILL.mdsource content
When Cursor should use this skill
- Early chat sessions or onboarding when the user's goal is ambiguous
- When the user asks for help choosing a plan or habit
- When user wants to clarify or update their running goals
- When implementing conversational onboarding features
Invocation guidance
- Provide the last N
entries and any partial onboarding answers.ConversationTurn - Classify goal (
|habit
|distance
|speed
) with confidence and blockers.race - Return a
summary plus structuredCoachMessage
.GoalDiscoveryResult - Ask clarifying questions if confidence < 0.7.
- Suggest weekly commitment (3-4 runs for beginners, 4-5 for intermediate, 5-6 for advanced).
Input schema (JSON)
{ "conversation": ConversationTurn[], "profile": UserProfile, "partialOnboarding"?: Record<string, unknown> }
Output schema (JSON)
{ "goalDiscovery": { "goal": Goal, "confidence": number, "blockers": string[], "weeklyCommitment": number, "preferredDays"?: string[], "starterPlanId"?: string, "summaryCard": string, "safetyFlags"?: SafetyFlag[] }, "coachMessage": CoachMessage }
Integration points
- Chat API:
- Conversational interfacev0/app/api/chat/route.ts - Prompt context:
- Conversation historyv0/lib/conversationStorage.ts
- Onboarding promptsv0/lib/onboardingPromptBuilder.ts
- Handoff: trigger plan generation via
when confidence ≥0.7v0/app/api/generate-plan/route.ts - UI: Chat screen and onboarding wizard
- Database: Store conversation turns in
tablechat_messages
Safety & guardrails
- Avoid medical advice; if user mentions pain/injury, advise pause and professional consult.
- Keep responses concise (<120 words) and supportive.
- Emit
on harmful intents or ambiguous data.SafetyFlag - If user has injury history, recommend starting conservatively.
- Never promise specific performance outcomes or weight loss guarantees.
Conversation flow patterns
Goal discovery sequence
- Initial question: "What brings you to running?" or "What are you hoping to achieve?"
- Clarify constraints: "How many days per week can you commit?" "Any time restrictions?"
- Assess experience: "What's your recent running history?"
- Confirm goal: "So it sounds like [goal]. Is that right?"
- Suggest next step: "Let me create a plan for you" or "Tell me more about..."
Goal types and indicators
- Habit: "consistency", "build routine", "just want to run"
- Distance: "5K", "10K", "half marathon", "marathon", specific distance target
- Speed: "get faster", "PR", "improve time", pace goals
- Race: mentions specific race, date, or event
Telemetry
- Emit
with:ai_skill_invoked
(classified)goalconfidence
(conversation length)turns_countlatency_ms
- Emit
when user responds to suggestionsai_user_feedback
Common edge cases
- Multiple goals: Ask user to prioritize primary goal
- Vague responses: Ask specific follow-up questions
- Unrealistic goals: Gently adjust expectations with rationale
- Injury mentions: Prioritize recovery, recommend professional consultation
- Low confidence: Continue conversation, don't force goal classification
Testing considerations
- Test with various conversation patterns (short, long, meandering)
- Verify confidence scoring accuracy
- Test with ambiguous or conflicting statements
- Validate SafetyFlag emission for injury mentions
- Test handoff to plan generation at confidence threshold