Skip to content

feat(chat): conversational create_skill — brief + confirm + explain (beat 21)#257

Merged
AVADSA25 merged 1 commit into
mainfrom
feat/create-skill-conversational
Jul 15, 2026
Merged

feat(chat): conversational create_skill — brief + confirm + explain (beat 21)#257
AVADSA25 merged 1 commit into
mainfrom
feat/create-skill-conversational

Conversation

@AVADSA25

Copy link
Copy Markdown
Owner

What (Mickael's ask)

"create a skill for X" built silently with no explanation. He wants it conversational like the auto-escalation offer: "Plan → I review → approve → then go… the user should be briefed directly from CODEC in the chat."

Flow

  1. "create a skill that tells me the moon phase" → CODEC briefs: "I'll build a skill for: tells me the moon phase. I'll generate it, then stage it in your Skills tab for review — nothing runs until you approve it there. Build it?" + a [Build it] / [Cancel] chip.
  2. Vague ("make a skill") → "What should the skill do? e.g. 'a skill that checks the bitcoin price'."
  3. [Build it]POST /api/chat/build_skill runs the real create_skill review-gate flow → conversational outcome: "Done — I generated moon_phase and staged it in your Skills tab. Open Skills to see what it does, then Approve to make it live."

Design

  • routes/chat.py: _detect_create_skill_request() intercepts the chat surface before the pre-LLM hijack, so create_skill no longer fires silently; streams the brief + a skill_confirm SSE frame. New POST /api/chat/build_skill. _skill_outcome_message() rephrases the terse result.
  • codec_chat.html: renderSkillConfirmChip + Build/Cancel handlers, mirroring renderEscalateChip. No emoji.
  • MCP/voice create_skill paths untouched — this conversational layer is chat-only.

Verify

Detection, confirm-decision, outcome message, and the real build path all exercised headlessly (staged a dad_joke skill via /api/chat/build_skill path, then cleaned up). pytest -k "chat or try_skill or escalate or skill_review"119 passed. ruff clean. No manifest change (no skills/ edit).

🤖 Generated with Claude Code

…beat 21)

"create a skill for X" used to fire create_skill silently and stage the result
with no explanation. Now the chat surface briefs the user first and confirms
before building, mirroring the auto-escalation "Start as Project?" offer:

- "create a skill that tells me the moon phase" → CODEC replies "I'll build a
  skill for: <desc>. I'll stage it in your Skills tab for review — nothing runs
  until you approve. Build it?" + a [Build it]/[Cancel] chip.
- Vague ("make a skill") → asks what it should do.
- [Build it] → POST /api/chat/build_skill → runs the real review-gate flow →
  conversational outcome ("Done — generated **name**, staged in Skills, approve
  there to activate").

Chat-surface only (routes/chat.py intercept before the pre-LLM hijack + a new
endpoint; chip in codec_chat.html mirroring renderEscalateChip). MCP/voice
create_skill paths untouched. No skills/*.py change → no manifest regen.
119 chat/skill tests pass, ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@AVADSA25
AVADSA25 merged commit a61837a into main Jul 15, 2026
1 check passed
AVADSA25 added a commit that referenced this pull request Jul 16, 2026
)

DEMO_SCRIPT.md had been rewritten locally (the 15→22→25-beat seal, performance
reorder, name-drop moats table) but was never actually committed — it sat as
an uncommitted edit in the shared working tree since 2026-07-14. Committing the
full sealed version now, plus today's status refresh:

- #21 self-improve: now fully conversational (#257), no longer "fix in progress"
- #20 observer recall: fully fixed — routing (#256), real NSWorkspace capture
  (#258), honest on out-of-range clock-time asks (#260)
- #14 Pilot: navigation confirmed live; live-view click-through flagged as a
  rebuild in progress (was mis-marked READY)
- #19 Connector: OAuth sign-in itself confirmed working; connected/disconnect
  state + persistent tokens flagged as a rebuild in progress
- #18: note to set the CODEC connector to Always Allow in Claude's settings

Co-authored-by: Mickael Farina <farina.mickael@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants