Skip to content

feat(ui): assistant skills in Settings and proposed-skill cards in chat - #102

Merged
carbogninalberto merged 1 commit into
mainfrom
carbninai/r10-s7-skills-ui
Oct 29, 2026
Merged

carbogninalberto merged 1 commit into
mainfrom
carbninai/r10-s7-skills-ui

Conversation

@carbogninalberto

Copy link
Copy Markdown
Owner

Problem

Round 10 S7 (plan 2B, UI part). PR #100 added workspace skills to the backend (/assistant-skills, load_skill, propose_skill), but Settings → Assistant still had a disabled Skills tab placeholder, and chat showed proposed and loaded skills only as raw tool JSON.

Stacked: this branch is based on carbninai/r10-s6-skills, so until #98 and #100 merge the diff also contains S4 and S6. This PR's own change is the last commit only.

Change

  • Settings → Assistant → Skills (?tab=skills, &skill=<id> deep-links one skill):
    • A list showing each skill's scope (workspace or team), status, version in effect, pending draft, author kind, update time and an enabled Switch. It can be filtered by scope.
    • A create dialog with a scope picker. The picker uses listTeams, so private teams appear only if the user can see them.
    • An editor dialog with a Markdown Textarea and a preview tab using the existing sanitizing Markdown renderer. Saves are "Save as draft" or "Save and apply" for an active skill, and "Save draft" for a draft skill.
    • A review dialog that shows a draft as a line diff against the version in effect, or the full text for a new draft skill, then activates it.
    • Version history with show text, restore and per-version activate.
    • Delete behind the shared AlertDialog ConfirmDialog.
    • Members see the same views with no write controls. The backend still enforces every write.
  • Chat (ToolCalls.svelte):
    • A completed propose_skill call renders as ProposedSkillCard: name, description, full body through the sanitizing renderer (no images), a "Draft — not active until activated" badge, the draft and active version, and "Review in Settings" deep-linking to the skill. The skill_id must be a UUID.
    • A completed load_skill call renders as one "Used skill X" line.
    • Both tools have labels.
  • The tab state lives in the URL.
  • skill-diff.ts is a small LCS line diff. Above 4M line pairs it falls back to "all removed, then all added".
  • All new strings are in en, it, zh-CN and zh-TW.
  • Docs: BE/docs/conversations.md (Skills → Settings UI) and TECHNICAL.md.

No migration and no backend change.

Verification

  • npm run check: 0 errors. The 1 warning is pre-existing, in [workspaceSlug]/+layout.svelte.
  • npm run test:unit: 110 passed, including the 4 new skill-diff tests.
  • Playwright on port 4197, run with --workers=1 on assistant-skills.test.ts, assistant-settings.test.ts and assistant.test.ts: 36 passed. The new tests cover:
    • the admin flow: list, filter, enable, create a skill for a private team with preview and script sanitization, deep-link URL, review diff and activate, save as draft, show and restore a version, delete with confirmation;
    • members' read-only view;
    • a deep link to a draft skill, with no horizontal scroll at 390 px;
    • the propose_skill card (sanitized body, deep link) and the load_skill line.
  • The new tests failed before the implementation (4 failed).
  • node AGENTS/TOOLS/check-harness.mjs passed; git diff --check is clean.
  • The secret scan is clean on this PR's commit. The outgoing range from main flags three test fixtures in the S4/S6 Go tests, which are not part of this change.

Limits

  • Editing an active skill that has a pending draft starts from the draft's text.
  • The diff covers whole lines only; name and description changes are shown as before → after.
  • The editor is a plain Textarea: the project's RichEditor produces HTML, not Markdown.

…s in chat

Settings → Assistant → Skills lists workspace and team skills with scope,
status, version, pending draft, author and update time, filtered by scope.
Owners and admins create, edit (Markdown with preview), save drafts, switch,
review a draft's line diff and activate, restore versions and delete; members
read. Chat renders propose_skill results as a draft card that deep-links to
the skill and load_skill calls as one line. Strings in en, it, zh-CN, zh-TW.
@carbogninalberto
carbogninalberto force-pushed the carbninai/r10-s7-skills-ui branch from b8f6982 to 895a89f Compare October 29, 2026 13:34
@carbogninalberto
carbogninalberto marked this pull request as ready for review October 29, 2026 13:34
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T13:36:07.149689Z 895a89f Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@carbogninalberto
carbogninalberto merged commit fc81f3a into main Oct 29, 2026
25 checks passed
@carbogninalberto
carbogninalberto deleted the carbninai/r10-s7-skills-ui branch October 29, 2026 13:46
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