Ships the fail-closed skills.sh catalog control plane validated by the bounded 500-row permanent Test gate. No production ingestion, schedule, visibility, or bulk scanning is enabled.
* fix(moderation): replace stale signal scans
* fix(moderation): bound stale scan recovery
* fix(moderation): cap signal scan retries
* fix(management): show terminal signal scan failures
* docs: add signal failure UI proof
* fix(moderation): preserve signal retry status
* feat(ui): move creator into skill and plugin detail hero
Show publisher name, handle, and official badge below the summary in the
shared detail hero, remove the sidebar Creator row, and resolve official
status from backend publisher data plus client fallback lookup.
* fix(ui): avoid extra official publisher detail reads
* fix(ui): align creator hero types with package API
* fix(og): render org profile images in publisher OG cards
Pass publisher avatar, kind, and installs into OG meta URLs and allow
safely fetching public HTTPS org logos when generating profile images.
* fix: render org profile images in publisher OG cards
Org logos use public HTTPS URLs outside the GitHub/gravatar allowlist, so OG
generation fell back to the default mark. Allow SSRF-safe public fetches for
publisher profile avatars and embed avatar/kind metadata in OG URLs.
* fix(og): show Downloads instead of Installs on OG cards
Switch skill, plugin, and publisher OG image generators to read and
label download counts, with legacy installs query param fallback.
* fix(og): type skill API payload for canonical stat reads
Export SkillStatReadable so fetchSkillOgMeta can pass API skill stats
through readCanonicalStat without a TypeScript error.
* fix(og): format compact downloads in OG cards
Query-param download counts were rendered as raw integers on publisher
OG images. Reuse formatCompactStat, add download icon + lowercase label,
bump layout versions, and refresh org profile visual proof.
* fix(og): use Downloads label without icon on OG cards
Remove the download SVG from OG stat blocks and show only a muted
"Downloads" label above compact values. Bump skill/plugin/publisher
layout versions to bust cached social previews.
* fix(web): align publisher grouped All tab with catalog total
The grouped All chip was summing only paginated items while the Skills/Plugins tab showed the publisher total, causing mismatches like Plugins 59 vs All 12 on large profiles.
* docs(proof): add post-fix publisher All tab screenshot
* fix(web): restore full-color round user avatars in Cmd+K typeahead
Keep org avatars square and muted in the navbar search dropdown while showing user profile photos in full color with circular framing.
* fix(web): limit typeahead user color restore to profile photos
Keep muted glyph fallbacks for users without avatars while preserving full-color circular photos and explicit muted square org treatment.
* fix(web): compact CLI/Prompt toggle on skill install card
Replace pill tablist with a flat text toggle for CLI vs Prompt install
options, with matching skeleton and styles.
* chore: add UI proof screenshot for install toggle PR
* feat(profile): polish publisher detail hero, catalog, and members layout
Refine the publisher profile page with a full-width hero, larger avatar,
Links/Members side-by-side details, chip-based catalog filters, and
segmented Skills/Plugins tabs while extracting profile styles into a
dedicated stylesheet.
* feat(profile): polish catalog grouping, members UI, and chrome layout
Checkpoint before moving publisher stats into the profile header actions slot.
* feat(profile): default catalog tab, plugin links, and visual proof
Open the plugins tab when a publisher has no skills, preserve scoped
plugin detail hrefs on profile rows, and keep catalog pagination active
during search. Includes publisher profile polish follow-ups and UI proof
screenshots for the PR.
* fix(profile): clear lint issues in publisher profile route
* fix(profile): polish avatar/badge details and refresh UI proof
Square org avatars, show icon-only official badge on mobile handles, and
match member placeholder size to photo avatars. Regenerate publisher
profile Playwright screenshots for PR proof.
* test(e2e): assert publisher catalog region on profile smoke
Match the publisher profile catalog landmark after the profile polish
removed the visible "Publisher catalog" heading.
* test(e2e): stabilize org delete profile catalog waits
Wait for the publisher profile heading and catalog region before asserting
seeded skill visibility, matching the async catalog load on the polished
profile page.
* test(e2e): assert publisher catalog skills by slug link
Profile catalog rows truncate display names to 40 chars, so deletion
proofs should wait for the skill detail href instead of the full seed
label text.
* fix(test): add skillSlug to AccountDeletionFixture type
Unblocks types-build after the publisher profile e2e assertion started
reading fixture.skillSlug for the catalog link check.
* fix(web): show only downloads in plugin browse listings
Plugin list rows and cards on /plugins and the home Plugins tab no longer surface star counts.
* docs: add UI proof screenshots for plugin listing change