Skip to content

Release 0.30.0: harden names, MCP writes, rollback, catalogs and update checks - #21

Merged
devohmycode merged 11 commits into
mainfrom
fix/hardening
Oct 23, 2026
Merged

devohmycode merged 11 commits into
mainfrom
fix/hardening

Conversation

@devohmycode

Copy link
Copy Markdown
Owner

Summary

Seven fixes from a review of 0.20.0, one commit each, plus a general CI workflow and the docs.

  • Skill names — checkSkillName moves to install/plan.ts and runs inside parseSkillId and planRemove, so every entry point (CLI, selection files, packs, MCP, web) refuses an empty name, a leading -, a quote, a control character or more than 200 characters. install o/r@x o/r@--global … --no-audit --dry-run used to print -s x --global; it now fails before building a command.
  • MCP mutations — install_skills and remove_skills (not dry runs) go through one queue per handler, so a second call re-reads the installed state after the first. An error frees the queue; reads answer while an install runs. Within one MCP process only.
  • Rollback — installedRevision returns a commit only when it is proven: one remembered after a rollback while the lock keeps the same folder hash (revisions.json next to history.json, written with temp + rename), an exact ref from the lock if the installer records one, or the date-found commit whose folder tree SHA (root tree for a root skill) matches skillFolderHash. Otherwise undefined, and update keeps saying the skill has no way back.
  • Catalog validation — decodeCatalog checks the shape with Zod (unknown fields kept, recent optional fields optional). A bad download is rejected before it is cached. Entries whose id would fail parseSkillId or differs from source@name are left out rather than failing the catalog: the current snapshot has 59 of them (e.g. @-21risk-automation). Load time grows by about 170 ms on the full snapshot.
  • Empty crawl — buildCatalog throws when the result has no skill, before crawl.ts saves anything.
  • Update checks — findUpdates returns { outdated, unchecked }. HTTP errors, timeouts, invalid answers, truncated trees and missing folders are unchecked (reason without URL or token); the root tree is compared under ''. outdated / update print them on stderr and exit 1; outdated --json keeps its array on stdout; the tree shows a translated warning.
  • Web page — a failed "Show more" keeps the rows and shows the error under them, retrying from the same offset. The side panel puts the focus back on the same agent, radio, chip or filter after a rebuild (or the first control when it went away), and only when the focus was in the panel.
  • CI — ci.yml runs npm ci, typecheck, tests and build on every pull request and on pushes to main.

Compatibility

MCP outdated_skills now returns { skills, unchecked } instead of an array. outdated and update exit with 1 when the check is incomplete. Both are documented in the README, the agent skill and the command.

Validation

  • npm run typecheck, npm test (268 tests), npm run build, npm run demo.
  • Each new regression test failed on the code before its fix.
  • Windows: install o/r@x o/r@--global --agent codex --project --symlink --yes --no-audit --dry-run → invalid skill name in "o/r@--global", exit 1.
  • Real browser, on the demo: Space on an agent keeps the focus, arrow keys change the scope without losing the group, Tab moves on; a simulated 502 on the second page keeps the 100 rows, shows the error, and the retry adds the next 100 once.
  • The rollback cycle (update → rollback to A → restart → update) is tested on the history functions with files and mocked GitHub, not through a real npx skills install.

@devohmycode devohmycode changed the title Harden names, MCP writes, rollback, catalogs and update checks Release 0.30.0: harden names, MCP writes, rollback, catalogs and update checks Oct 23, 2026
@devohmycode
devohmycode marked this pull request as ready for review October 23, 2026 08:50
@devohmycode
devohmycode merged commit de8c5a0 into main Oct 23, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Skills-Atlas Oct 23, 2026
@devohmycode
devohmycode deleted the fix/hardening branch October 23, 2026 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant