Skip to content

[Feature] Onboarding completion criteria — at least one skill or exhausted attempts #596

@graycyrus

Description

@graycyrus

Summary

Define and enforce clear completion criteria for the onboarding conversation: agent marks done only after user connects at least one skill OR agent has genuinely tried and user declined.

Problem

Currently the welcome agent can call complete_onboarding({"action": "complete"}) at any point with no enforced minimum engagement. This means onboarding can be "completed" after a single exchange with no skills connected.

Solution

Combine prompt-level and code-level guards:

Prompt-level (in prompt.md):

  • Agent instructed to only call complete after: (a) at least one skill connected, OR (b) offered connections 2-3 times and user explicitly declined
  • AND at least 3 back-and-forth exchanges have occurred

Code-level (in complete_onboarding.rs):

  • complete action validates minimum criteria before flipping the flag
  • If criteria not met, return error with reason: "User hasn't connected any skills and minimum exchanges not reached"
  • The check_status action returns ready_to_complete: bool and reason: string

Graceful fallback:

  • If user says "skip", "later", "not now" — agent acknowledges, briefly explains how to connect later (settings), then completes
  • If user is clearly disengaged after 3+ exchanges — agent wraps up gracefully

Acceptance criteria

  • Minimum exchangescomplete action rejects if fewer than 3 back-and-forth exchanges
  • Skill attempt — Agent tries to get at least one skill connected before completing
  • Graceful decline — If user declines all skills, agent completes after explaining how to connect later
  • Skip support — "Skip" / "later" / "not now" recognized as explicit decline, handled gracefully
  • Server-side enforcementcomplete_onboarding tool enforces criteria, not just prompt-level
  • Status reportingcheck_status returns ready_to_complete with reason

Related


Parent: #599 — Conversational onboarding agent

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions