[FEATURE] Roaming account skills: update an account skill in place from Claude Code on the web (expose the existing propose_skills card)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Account-level skills (created on claude.ai) are the only skill scope that follows me across surfaces, but they can only be written from the claude.ai chat UI. Everywhere else they are a read-only download:
- Docs (https://code.claude.com/docs/en/skills): "Claude Code downloads synced skills and never uploads them. If you or Claude edit a file under
~/.claude/skills/synced/, the change isn't saved to your claude.ai account, and a later sync can overwrite or remove it." - Claude Code on the web: the same
~/.claude/skills/synced/<org>_<account>/snapshot is mounted at session start (/mnt/skills/user→ symlink into it). There is no write path.
My workflow: I develop across several repositories on Claude Code web, using one method/SOP-style account skill in all of them. Real work keeps surfacing lessons that belong in that skill. Today each lesson costs a full round trip: write a backfill note in the repo → switch to claude.ai chat → rebuild the skill there (skill-creator / paste) → save → start a new web session so the snapshot picks it up.
The round trip is slow enough that lessons get batched instead of captured while they are fresh, and the repo copy, the account copy and the per-session snapshot drift apart (see #65928 for the stale-cache half of that drift).
Proposed Solution
Treat account skills as roaming state: readable and writable from every surface, with the same review/approve step that claude.ai chat already has.
The building block already ships. Claude Code 2.1.x contains a propose_skills tool ("Show the user a review card of proposed skills to save — render-only, nothing is written"). In claude.ai chat / Cowork remote sessions the app renders that card, and Save replaces the account skill's SKILL.md in place. In claude.ai/code sessions the same binary runs, but the tool is not exposed to the model.
Ideal experience, in a Claude Code web session:
- While working in a repo, I say "fold this lesson back into <account-skill>". Claude reads the current synced copy, drafts the updated SKILL.md, and calls
propose_skills. - The web UI shows the same review card as chat (diff / full text), with a Save button. Saving writes the account skill — no switch to chat, no re-upload.
- The session's synced snapshot (
/mnt/skills/user/<skill>) refreshes after the save, so the same session keeps working with the new version instead of requiring a new session. - The card accepts a packaged
.skill(SKILL.md +references/+assets/), not only SKILL.md. Real skills carry supporting files; mine is ~350 KB of which SKILL.md is 19 KB.
Step 1–2 alone would remove the round trip and need no new sync protocol: the card and the save path already exist on the claude.ai side, the web surface only has to render it. 3 and 4 complete it.
Alternative Solutions
- Keep the skill in git under
.claude/skills/— works per repository, but a method skill shared by many repos then has N copies to keep in step, and chat sessions cannot see it at all. - Plugin marketplace — heavy for a personal skill, and account plugins do not reach web sessions either (#92031).
- CLI
claude skill push <dir>as requested in #93163 — would help terminal/CI, but not a web session, which has no terminal to run it from. - Current workaround: the manual round trip via claude.ai chat described above, plus a per-session note of which skill version each session saw so drift can at least be detected.
Priority
High - Significant impact on productivity
Feature Category
Other
Use Case Example
- I am in a Claude Code web session on repo A, using one personal account skill as the development method (an SOP-style skill: gates, checklists, templates) shared by all my repos.
- Mid-task, a review finds one of the skill's checklists is missing a step, and the same gap has now recurred in two different repos.
- With this feature: I ask Claude to fold the lesson into the skill; the review card shows the updated SKILL.md; I press Save. The account skill is updated, the session snapshot refreshes, and the next session on repo B already has the new step.
- Today instead: Claude writes a backfill note into repo A; I open claude.ai chat, paste the note, have skill-creator rebuild and repackage the skill, save it, then start a fresh web session on repo A to continue. Roughly 15–30 minutes per lesson, so lessons get batched and some are lost.
Additional Context
Related issues: #93163 (programmatic upload of custom skills), #65928 (skills panel edits not reflected in /mnt/skills/user/), #21264 / #12119 (closed as duplicates, same direction), #20697 (Desktop ↔ CLI sync), #92031 (account plugins never sync to web).