chore(featured): curate Featured picks down to top 10 across categories (#1966)

* chore(featured): curate Featured picks down to top 10 across categories

The picker's Featured chip currently surfaces 64 plugins because
`isFeaturedPlugin` (apps/web/src/components/plugins-home/facets.ts)
treats any finite `od.featured` number as featured, and the field
had been adopted incrementally by 51 skills + 13 templates without
a curation step. The result is a "Featured" tab that's effectively
"everything tagged at all" — no editorial signal.

Curate down to 10 picks, allocated to keep the showcase legible:

  0.001  skills/deck-swiss-international
  0.01   skills/deck-guizang-editorial
  0.02   design-templates/magazine-poster              [add]
  0.04   skills/doc-kami-parchment
  0.10   design-templates/web-prototype-taste-brutalist [add od: block]
  0.13   skills/video-hyperframes
  0.14   skills/frame-glitch-title
  0.15   skills/vfx-text-cursor
  0.16   skills/frame-logo-outro
  0.17   skills/deck-open-slide-canvas

Selection mirrors the html-anything `recommended: 1..10` ranking
(html-anything is the upstream content source for these skills, per
the `od.upstream` field on each SKILL.md). Two of those 10 picks
weren't in the prior featured set at all — `magazine-poster` had no
`od.featured` field and `web-prototype-taste-brutalist` had no `od:`
block at all — so they get added rather than just rebalanced.

Removes `od.featured` from the other 56 files. No UI code change;
the existing `isFeaturedPlugin` logic now reads a curated set
instead of an accidental one.

* chore(featured): align baked plugin manifests with curated top 10

The picker reads `od.featured` from each plugin's
`plugins/_official/examples/<id>/open-design.json` manifest, not from
the SKILL.md frontmatter the previous commit edited. Without this
follow-up the curated set of 10 would be invisible to users — the
picker's Featured chip would still surface 27 baked plugins from the
pre-existing manifests.

Mirror the SKILL.md curation into the baked layer:

  removed `od.featured` from 19 manifests:
    article-magazine, card-xiaohongshu, data-report,
    frame-data-chart-nyt, frame-flowchart-sticky,
    frame-light-leak-cinema, frame-liquid-bg-hero,
    frame-macos-notification, guizang-ppt, html-ppt,
    kami-deck, kami-landing, mockup-device-3d,
    open-design-landing-deck, ppt-keynote, resume-modern,
    social-reddit-card, social-spotify-card, social-x-post-card

  added `od.featured` to 2 manifests:
    magazine-poster -> 0.02
    web-prototype-taste-brutalist -> 0.10

Verified locally against `daemon /api/plugins`: featured count is
now exactly 10, matching the SKILL.md source of truth from the
previous commit.
This commit is contained in:
Joey-nexu 2026-05-18 12:56:26 +08:00 committed by GitHub
parent b68e4d3252
commit f1870cbf3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
79 changed files with 7 additions and 77 deletions

View file

@ -18,7 +18,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 11
preview:
type: html
entry: index.html

View file

@ -20,7 +20,6 @@ od:
mode: prototype
platform: desktop
scenario: personal
featured: 5
preview:
type: html
entry: index.html

View file

@ -22,7 +22,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 6
preview:
type: html
entry: index.html

View file

@ -19,7 +19,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 7
preview:
type: html
entry: index.html

View file

@ -17,7 +17,6 @@ od:
mode: prototype
platform: desktop
scenario: finance
featured: 10
preview:
type: html
entry: index.html

View file

@ -22,7 +22,6 @@ od:
mode: prototype
platform: mobile
scenario: personal
featured: 12
preview:
type: html
entry: index.html

View file

@ -19,7 +19,6 @@ triggers:
od:
mode: deck
scenario: marketing
featured: 0.02
default_for: deck
upstream: "https://github.com/op7418/guizang-ppt-skill"
preview:

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: education
featured: 25
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: personal
featured: 34
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 28
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 30
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 29
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 31
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: finance
featured: 20
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 26
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: marketing
featured: 21
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 22
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: engineering
featured: 32
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: operations
featured: 23
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: personal
featured: 33
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -12,7 +12,6 @@ triggers:
od:
mode: deck
scenario: marketing
featured: 24
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -11,7 +11,6 @@ triggers:
od:
mode: deck
scenario: marketing
featured: 27
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -19,7 +19,6 @@ triggers:
od:
mode: deck
scenario: marketing
featured: 19
upstream: "https://github.com/lewislulu/html-ppt-skill"
preview:
type: html

View file

@ -23,7 +23,6 @@ triggers:
od:
mode: deck
scenario: finance
featured: 15
upstream: "https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/pitch-agent"
preview:
type: html

View file

@ -21,7 +21,6 @@ od:
surface: web
mode: deck
scenario: marketing
featured: 0.06
audience: founders, researchers, design studios, conference talks
tone: editorial, restrained, print-first
scale: 6-15 viewport-locked slides

View file

@ -23,7 +23,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 0.05
audience: founders, design studios, OSS maintainers, researchers
tone: editorial, restrained, print-first
scale: viewport-anchored long-form single page

View file

@ -20,7 +20,6 @@ od:
mode: prototype
platform: desktop
scenario: operation
featured: 1
fidelity: high
preview:
type: html

View file

@ -18,6 +18,7 @@ triggers:
- "杂志海报"
- "报纸版式"
od:
featured: 0.02
mode: prototype
platform: desktop
scenario: marketing

View file

@ -16,7 +16,6 @@ od:
mode: prototype
platform: mobile
scenario: design
featured: 13
preview:
type: html
entry: index.html

View file

@ -22,7 +22,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 6
preview:
type: html
entry: index.html

View file

@ -23,7 +23,6 @@ od:
surface: web
mode: deck
scenario: marketing
featured: 2
audience: founders pitching, conference talks, internal reviews
tone: editorial, restrained, premium
scale: 6-15 viewport-locked slides

View file

@ -22,7 +22,6 @@ od:
category: brand-page
surface: web
scenario: marketing
featured: 1
audience: founders, design studios, OSS maintainers
tone: editorial, restrained, premium
scale: viewport-anchored long-form single page

View file

@ -23,7 +23,6 @@ od:
mode: prototype
platform: desktop
scenario: orbit
featured: 1
preview:
type: html
entry: index.html

View file

@ -19,7 +19,6 @@ od:
mode: prototype
platform: desktop
scenario: orbit
featured: 2
preview:
type: html
entry: index.html

View file

@ -20,7 +20,6 @@ od:
mode: prototype
platform: desktop
scenario: orbit
featured: 3
preview:
type: html
entry: index.html

View file

@ -19,7 +19,6 @@ od:
mode: prototype
platform: desktop
scenario: orbit
featured: 4
preview:
type: html
entry: index.html

View file

@ -19,7 +19,6 @@ od:
mode: prototype
platform: desktop
scenario: orbit
featured: 5
preview:
type: html
entry: index.html

View file

@ -21,7 +21,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 7
preview:
type: html
entry: index.html

View file

@ -28,7 +28,6 @@ od:
mode: template
platform: desktop
scenario: live-artifacts
featured: 1
preview:
type: html
entry: index.html

View file

@ -24,7 +24,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 8
preview:
type: html
entry: index.html

View file

@ -14,7 +14,6 @@ od:
mode: prototype
platform: desktop
scenario: marketing
featured: 1
preview:
type: html
entry: example.html

View file

@ -1,6 +1,8 @@
---
name: web-prototype-taste-brutalist
description: Swiss industrial-print web prototype. Newsprint canvas, monolithic black grotesque, viewport-bleeding numerals, hairline grid dividers, hazard-red accent, ASCII syntax decoration. Distilled from Leonxlnx/taste-skill `brutalist-skill` (Swiss Industrial Print mode).
od:
featured: 0.10
---
# Web Prototype — Industrial Brutalist (Swiss Print)

View file

@ -37,7 +37,6 @@
"platform": "desktop",
"scenario": "marketing",
"surface": "web",
"featured": 0.03,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -36,7 +36,6 @@
"platform": "desktop",
"scenario": "marketing",
"surface": "web",
"featured": 24,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -37,7 +37,6 @@
"platform": "desktop",
"scenario": "finance",
"surface": "web",
"featured": 10,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -34,7 +34,6 @@
"mode": "video",
"scenario": "video",
"surface": "video",
"featured": 46,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -35,7 +35,6 @@
"mode": "video",
"scenario": "operations",
"surface": "video",
"featured": 45,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -35,7 +35,6 @@
"mode": "video",
"scenario": "video",
"surface": "video",
"featured": 36,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -35,7 +35,6 @@
"mode": "video",
"scenario": "video",
"surface": "video",
"featured": 39,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -34,7 +34,6 @@
"mode": "video",
"scenario": "video",
"surface": "video",
"featured": 41,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -38,7 +38,6 @@
"kind": "scenario",
"taskKind": "new-generation",
"mode": "deck",
"featured": 0.02,
"scenario": "marketing",
"surface": "web",
"preview": {

View file

@ -40,7 +40,6 @@
"kind": "scenario",
"taskKind": "new-generation",
"mode": "deck",
"featured": 19,
"scenario": "marketing",
"surface": "web",
"preview": {

View file

@ -35,7 +35,6 @@
"kind": "scenario",
"taskKind": "new-generation",
"mode": "deck",
"featured": 0.06,
"scenario": "marketing",
"surface": "web",
"preview": {

View file

@ -41,7 +41,6 @@
"platform": "desktop",
"scenario": "marketing",
"surface": "web",
"featured": 0.05,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -84,6 +84,7 @@
"capabilities": [
"prompt:inject",
"fs:write"
]
],
"featured": 0.02
}
}

View file

@ -38,7 +38,6 @@
"platform": "desktop",
"scenario": "product",
"surface": "web",
"featured": 47,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -37,7 +37,6 @@
"kind": "scenario",
"taskKind": "new-generation",
"mode": "deck",
"featured": 2,
"scenario": "marketing",
"surface": "web",
"preview": {

View file

@ -34,7 +34,6 @@
"mode": "deck",
"scenario": "marketing",
"surface": "web",
"featured": 19,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -36,7 +36,6 @@
"platform": "desktop",
"scenario": "personal",
"surface": "web",
"featured": 12,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -38,7 +38,6 @@
"platform": "desktop",
"scenario": "marketing",
"surface": "web",
"featured": 42,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -38,7 +38,6 @@
"platform": "desktop",
"scenario": "personal",
"surface": "web",
"featured": 43,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -38,7 +38,6 @@
"platform": "desktop",
"scenario": "marketing",
"surface": "web",
"featured": 44,
"preview": {
"type": "html",
"entry": "./example.html"

View file

@ -74,6 +74,7 @@
"capabilities": [
"prompt:inject",
"fs:write"
]
],
"featured": 0.10
}
}

View file

@ -21,7 +21,6 @@ od:
surface: web
platform: desktop
scenario: marketing
featured: 0.03
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -19,7 +19,6 @@ od:
surface: web
platform: desktop
scenario: marketing
featured: 24
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -19,7 +19,6 @@ od:
surface: web
platform: desktop
scenario: finance
featured: 10
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -17,7 +17,6 @@ od:
mode: prototype
platform: desktop
scenario: support
featured: 8
preview:
type: html
entry: index.html

View file

@ -20,7 +20,6 @@ od:
mode: video
surface: video
scenario: video
featured: 46
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -20,7 +20,6 @@ od:
mode: video
surface: video
scenario: operations
featured: 45
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -20,7 +20,6 @@ od:
mode: video
surface: video
scenario: video
featured: 36
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -20,7 +20,6 @@ od:
mode: video
surface: video
scenario: video
featured: 39
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -20,7 +20,6 @@ od:
mode: video
surface: video
scenario: video
featured: 41
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -13,7 +13,6 @@ od:
mode: image
surface: image
scenario: personal
featured: 11
preview:
type: image
entry: final/spritesheet.png

View file

@ -21,7 +21,6 @@ od:
surface: web
platform: desktop
scenario: product
featured: 47
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -18,7 +18,6 @@ od:
mode: deck
surface: web
scenario: marketing
featured: 19
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -19,7 +19,6 @@ od:
surface: web
platform: desktop
scenario: personal
featured: 12
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -21,7 +21,6 @@ od:
surface: web
platform: desktop
scenario: marketing
featured: 42
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -21,7 +21,6 @@ od:
surface: web
platform: desktop
scenario: personal
featured: 43
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html

View file

@ -21,7 +21,6 @@ od:
surface: web
platform: desktop
scenario: marketing
featured: 44
upstream: "https://github.com/nexu-io/html-anything"
preview:
type: html