Skip to content

feat(skills): add a Skills page under Settings → Build - #6662

Open
rafavalls wants to merge 1 commit into
mainfrom
rafavalls/skills-settings-page
Open

feat(skills): add a Skills page under Settings → Build#6662
rafavalls wants to merge 1 commit into
mainfrom
rafavalls/skills-settings-page

Conversation

@rafavalls

@rafavalls rafavalls commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

What is this contribution about?

Describe your changes and why they're needed.

Skills already drive agent behaviour at runtime (buildSkillCatalog<available-skills>), but the only way to see or add one was to browse raw folders in the Library. This adds Settings → Build → Skills: a page listing the org's whole catalog (its own, built-in public sets, synced repos) with search and origin filter chips, plus folder-import for new ones. Skills are SKILL.md folders on org-fs, so import is the Library's upload with the format enforced — pick a folder containing a SKILL.md and its files land under home/skills/<slug>/ with subdirectories intact (files are grouped by destination dir; flattening would collapse references/style.md onto the root). Cards reuse the Library's FolderIcon so a skill looks like the same object on both pages: Finder blue for the org's own (deletable), graphite plus a view-only badge for read-only sets and repos, with the body glyph naming the origin. Filter chips are derived from the catalog rather than hardcoded, since which public sets exist is deployment config (ORGFS_PUBLIC_SETS) and repo volumes are per-org.

Web-only — no API, schema, endpoint or migration changes. Everything composes existing org-fs routes (/fs/skills, PUT/DELETE file, list).

How did you verify your code works?

Name the tests you ran or added and what you observed. "Verified manually" or "existing tests" without specifics doesn't count.

  • tsc --noEmit (apps/web) and oxlint clean on all touched files; knip reports no orphans.
  • bun run --cwd=apps/web test: 2987 pass / 112 fail. I re-ran with this branch's changes stashed and got byte-identical counts (2987/112/13 errors), so the failures pre-date this branch and none are introduced here.
  • react.d.ts (the webkitdirectory augmentation) is load-bearing, not decorative: removing the file reproduces exactly 2 webkitdirectory type errors, so the attribute is genuinely type-checked rather than silently any. It lives in its own module file because putting declare module "react" in the script-scoped globals.d.ts declares an ambient module that shadows React entirely (~30 errors across packages/ui).
  • Seeded a real multi-file skill (home/skills/weekly-report with references/{template,tone}.md) into a local org through OrgFs.write() and confirmed both consumers agree: the route's filesExist probe returns hasSkill=true (so the Library renders a skill card), and detectSkills returns id=home/skills/weekly-report with the parsed name/description (so agents get it in <available-skills>).

Screenshots/Demonstration

Add screenshots or a Loom video if your changes affect the UI.

Page layout follows the Connections page rhythm (title → search → chips → cards on one gap-6 column); cards follow ProjectCard.

How to Test

Provide step-by-step instructions for reviewers to test your changes:

  1. Go to Settings → Build → Skills. The built-in core / storefront sets should list as graphite folders with a view-only badge; filter chips show one per origin with counts.
  2. Click a card — the Library's skill preview opens (SKILL.md rendered, bundled files in the sidebar).
  3. Click Import skill and pick a folder containing a SKILL.md (nested subfolders are fine). It appears as a blue folder attributed to your org, with a delete action in its hover menu.
  4. Pick a folder without a SKILL.md — expect a toast telling you to pick the skill's own folder, and no upload.
  5. Confirm the imported skill also shows in Library and is offered to agents via the chat / picker.

Migration Notes

If this PR requires database migrations, configuration changes, or other setup steps, document them here. Remove this section if not applicable.

None.

Review Checklist

  • PR title is clear and descriptive
  • Changes are tested and working
  • Documentation is updated (if needed)
  • No breaking changes

🤖 Generated with Claude Code


Summary by cubic

Adds a Settings → Build → Skills page so orgs can view and import skills without browsing raw folders in the Library.

  • Lists the org's full skill catalog (own, built-in sets, synced repos) with search and origin filter chips derived from the catalog; clicking a card opens the Library's skill preview.
  • Importing a folder with a SKILL.md at its root uploads it under home/skills/<slug>/ with subdirectories intact; other folders are rejected with an error toast.
  • Cards reuse the Library's FolderIcon: blue for the org's own deletable skills, graphite with a view-only badge for read-only sets and repos.
  • Web-only, with no API, schema, or migration changes.
  • Adds en and pt-br translations.

Written for commit 6de5e6d. Summary will update on new commits.

Review in cubic

Surfaces the org's skill catalog (the same `/fs/skills` data the runtime
renders as `<available-skills>`) as a browsable page, with folder-import
for new ones.

Skills are `SKILL.md` folders on org-fs, so importing is the Library's
upload with the format enforced: pick a folder containing a SKILL.md and
its files land under `home/skills/<slug>/`, subdirectories intact. Cards
reuse the Library's FolderIcon — Finder blue for the org's own, graphite
plus a view-only badge for built-in sets and synced repos — and filter
chips are derived from the catalog rather than a hardcoded list, so a
deployment's own public sets appear automatically.

Web-only; no API, schema, or endpoint changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the claude PR authored by a coding agent label Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude PR authored by a coding agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant