Skip to content

feat: recommend Featured plugins and skills from search and adoption - #3717

Merged
Patrick-Erichsen merged 6 commits into
codex/claw724-homepage-collectionfrom
codex/claw724-featured-recommendations
Sep 15, 2026
Merged

Patrick-Erichsen merged 6 commits into
codex/claw724-homepage-collectionfrom
codex/claw724-featured-recommendations

Conversation

@Patrick-Erichsen

@Patrick-Erichsen Patrick-Erichsen commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

Search demand alone misses artifacts people are already adopting. This adds one advisory Featured report for plugins and skills, reusing each catalog’s existing Trending ranks and counts alongside the shared search aggregates. Staff can inspect the same candidates in the management dashboard, authenticated API, and admin CLI, with reasons, exact periods, freshness, current eligibility and excluded entries. It does not change public Trending or publish Featured selections.

Part of CLAW-893, stacked after scoped skill collection #3714 and homepage collection #3716.

Validation: the unified stack at b5a6462c96519589d4bc8c5e4ea847375be4191d passes 6,856 unit tests (3 skipped), all CLI/package suites, static/audit and types/build. Bounded independent code review returned no P0 findings. The only rebase adaptation is an English-language test fixture, matching the current public Trending eligibility rule.

Before/after UI proof uses explicitly LOCAL validation data, not production recommendations. The baseline shows the original plugin-demand dashboard; the candidate demonstrates separate plugin/skill adoption evidence using its own labeled fixtures. Counts across these fixtures are not a product benchmark.

Original plugin-demand dashboard

Live proof: Actual Convex actions, authenticated HTTP/admin CLI and browser agree: the plugin has 40 downloads/3 installs; the skill has 60 downloads/4 installs/2 bookmarks; both retain their catalog rank, periods and snapshot identity despite zero completed-day searches. Current eligibility is rechecked. Anonymous access remains denied; read-only report calls leave digest and Featured state untouched. Production dry run follows deployment and will use only real collected searches and adoption.

Local validation: claw893-plugin-dashboard.png

Local validation: claw893-skill-dashboard.png

Production change: +878/−108 lines (tests and generated types reported separately); growth provides the shared adoption/recommendation owner, bounded API/CLI schema and review UI. No new scoring weights, collection store, ranking algorithm or publishing path.

Accessible proof and exact production-source blob comparison: evidence index. All three public PNGs returned HTTP200 and matched the inspected local image SHA256 bytes.

@clawsweeper

clawsweeper Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@vercel

vercel Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
clawhub Ready Ready Preview Sep 15, 2026 8:43pm UTC

Request Review

@Patrick-Erichsen
Patrick-Erichsen added this pull request to stack #3719 September 15, 2026 20:13
@Patrick-Erichsen Patrick-Erichsen changed the title codex/claw724 featured recommendations feat: recommend Featured plugins and skills from search and adoption Sep 15, 2026
@Patrick-Erichsen

Copy link
Copy Markdown
Collaborator Author

Observed live validation after rebasing and deploying the published stack (5e15835dd0) to the disposable local backend. The public Trending owner now includes the current English eligibility check; the retained v4 fixture snapshot remains serveable under its explicit transition contract. Both catalog reports, authenticated HTTP and real admin CLI agree. The same report reads preserve all 19 observations, 26 plugin badges, 1 skill badge and zero digest records. This is local fixture proof, not the production dry run.

{
  "environment": "DISPOSABLE LOCAL VALIDATION FIXTURES \u2014 not production recommendations",
  "http": {
    "plugin": {
      "status": 200,
      "cacheControl": "private, no-store"
    },
    "skill": {
      "status": 200,
      "cacheControl": "private, no-store"
    }
  },
  "cliEvidenceMatches": true,
  "unauthenticatedStatus": 401,
  "reportReadsPreserveState": {
    "pluginSearchObservations": 19,
    "searchWeeklyDigests": 0,
    "packageBadges": 26,
    "skillBadges": 1
  },
  "catalogs": {
    "plugin": {
      "adoption": {
        "generatedAt": 1789502704677,
        "inspectedItems": 1,
        "periodEnd": 1789502704677,
        "periodStart": 1788912000000,
        "rankingVersion": "unversioned",
        "snapshotId": "pn7c84q0fxw6yej7a4qyh9atmx8efsbf",
        "status": "available",
        "totalItems": 1,
        "truncated": false
      },
      "candidates": [
        {
          "adoption": {
            "bookmarks": null,
            "downloads": 40,
            "generatedAt": 1789502704677,
            "installs": 3,
            "lifetimeInstalls": null,
            "periodEnd": 1789502704677,
            "periodStart": 1788912000000,
            "rank": 1,
            "rankingVersion": "unversioned",
            "snapshotId": "pn7c84q0fxw6yej7a4qyh9atmx8efsbf",
            "source": "package-trending",
            "sourceObservedAt": null
          },
          "artifactKind": "plugin",
          "category": null,
          "displayName": "LOCAL validation calendar",
          "eligibilityReasons": [],
          "eligibleForFeatured": true,
          "id": "plugin:claw893-local-calendar",
          "isFeatured": false,
          "isOfficial": false,
          "name": "claw893-local-calendar",
          "search": null,
          "summary": null,
          "support": "adoption-only",
          "url": "/plugins/claw893-local-calendar",
          "version": "1.0.0"
        }
      ],
      "searches7d": 0
    },
    "skill": {
      "adoption": {
        "generatedAt": 1789502705142,
        "inspectedItems": 1,
        "periodEnd": 1789502400000,
        "periodStart": 1789416000000,
        "rankingVersion": "skills-trending-v4",
        "snapshotId": "claw893-local-observed",
        "status": "available",
        "totalItems": 1,
        "truncated": false
      },
      "candidates": [
        {
          "adoption": {
            "bookmarks": 2,
            "downloads": 60,
            "generatedAt": 1789502705142,
            "installs": 4,
            "lifetimeInstalls": null,
            "periodEnd": 1789502400000,
            "periodStart": 1789416000000,
            "rank": 1,
            "rankingVersion": "skills-trending-v4",
            "snapshotId": "claw893-local-observed",
            "source": "clawhub-rising",
            "sourceObservedAt": null
          },
          "artifactKind": "skill",
          "category": null,
          "displayName": "LOCAL validation calendar",
          "eligibilityReasons": [],
          "eligibleForFeatured": true,
          "id": "clawhub:xx71sg9xgqqp9j3zywanftxees8ee7vp",
          "isFeatured": false,
          "isOfficial": false,
          "name": "claw893-local-calendar",
          "nativeSkillId": "xx71sg9xgqqp9j3zywanftxees8ee7vp",
          "search": null,
          "summary": "Manage your calendar events and schedule meetings with clear reminders for your team.",
          "support": "adoption-only",
          "url": "/claw893-local-skill/skills/claw893-local-calendar",
          "version": "1.0.0"
        }
      ],
      "searches7d": 0
    }
  }
}

@clawsweeper

clawsweeper Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 15, 2026, 4:59 PM ET / 20:59 UTC (Revision 2).

ClawSweeper review

What this changes

Adds staff-only Featured recommendations that combine search demand with existing adoption rankings across the dashboard, API, and admin CLI.

Merge readiness

✅ Ready for maintainer review

Keep open: this collaborator-authored PR adds distinct functionality absent from current main. No blocking findings; the updated evidence resolves the previous screenshot-access concern.

Priority: P2
Reviewed head: a8e18d8023f410ac551ebcb084199345b985da65

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused implementation with convincing local runtime and browser evidence and no blocking findings.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (linked_artifact): The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.
Evidence reviewed 8 items Review scope and repository policy: Read the complete root AGENTS.md and applicable ClawHub maintainer and Convex guidance. No additional ancestor-scoped AGENTS.md or maintainer-notes directory applies. Reviewed the pinned merge-base-to-head delta; the supplied stale test merge was not used to infer removals.
Shared recommendation implementation: The report reads up to 100 search rows and adoption entries, reuses catalog ranking evidence and shared eligibility hydration, and bounds returned candidates. The pure combiner preserves separate search/adoption evidence and explicit exclusions.
Access and compatibility boundaries: The public action requires an active admin/moderator. HTTP recommendations run behind the existing API-token and moderator checks with private, no-store responses; demand remains the default. No persisted schema, badge-writing path, dependency, or workflow changes are introduced.
Findings None None.
Security None None.

How this fits together

ClawHub’s staff intelligence tools help curators choose plugins and skills to feature. The report combines search aggregates with existing Trending snapshots, checks current eligibility, and returns advisory candidates without publishing selections.

flowchart TD
  A[Staff request] --> B[Staff access check]
  B --> C[Recommendation report]
  D[Search aggregates] --> C
  E[Existing Trending snapshots] --> C
  C --> F[Current eligibility checks]
  F --> G[Dashboard API and CLI evidence]
Loading

Before merge

None.

Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Diff size +1555/-165 across 20 files The change spans the shared report, three staff interfaces, tests, and supporting specifications.
Production and test LOC Production +878/-108; tests +543/-4 Production growth is justified by the shared adoption adapters, recommendation report, API schema, and review UI.

Technical review

Best possible solution:

Keep a single advisory recommendation owner that preserves catalog-specific evidence and current eligibility while leaving Featured publication under existing staff controls.

Do we have a high-confidence way to reproduce the issue?

Not applicable: this adds a recommendation capability; the supplied real local browser and runtime evidence demonstrates adoption candidates with no completed-day search history.

Is this the best way to solve the issue?

Yes: shared report composition reuses existing rankings and eligibility checks; implementing separate scoring in the dashboard and CLI would create competing behavior.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 22cc45be4fc3.

Labels

Label changes:

  • add P2: This is a bounded staff curation improvement with no demonstrated urgent user-facing regression.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.

Label justifications:

  • P2: This is a bounded staff curation improvement with no demonstrated urgent user-facing regression.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The recommendation owner is exercised through real disposable Convex actions, authenticated HTTP/admin CLI, and inspected browser screenshots for both catalogs; observed counts, periods, ranks, anonymous denial, and unchanged report-related state support the changed behavior.

Evidence

What I checked:

  • Review scope and repository policy: Read the complete root AGENTS.md and applicable ClawHub maintainer and Convex guidance. No additional ancestor-scoped AGENTS.md or maintainer-notes directory applies. Reviewed the pinned merge-base-to-head delta; the supplied stale test merge was not used to infer removals. (AGENTS.md:1, a8e18d8023f4)
  • Shared recommendation implementation: The report reads up to 100 search rows and adoption entries, reuses catalog ranking evidence and shared eligibility hydration, and bounds returned candidates. The pure combiner preserves separate search/adoption evidence and explicit exclusions. (convex/featuredIntelligence.ts:51, a8e18d8023f4)
  • Access and compatibility boundaries: The public action requires an active admin/moderator. HTTP recommendations run behind the existing API-token and moderator checks with private, no-store responses; demand remains the default. No persisted schema, badge-writing path, dependency, or workflow changes are introduced. (convex/httpApiV1/searchInsightsV1.ts:6, a8e18d8023f4)
  • Inspected real browser and runtime proof: Inspected all three prepared PNGs directly: baseline demand dashboard and separate plugin/skill recommendation views. Candidate screenshots show adoption-only fixtures with 40 downloads/3 installs and 60 downloads/4 installs/2 bookmarks, respectively. Posted real Convex/HTTP/admin CLI output agrees, records anonymous 401, and reports unchanged observations, badges, and digest records. Evidence is explicitly disposable local validation, not production demand. See feat: recommend Featured plugins and skills from search and adoption #3717 (comment) and https://github.com/openclaw/clawhub/tree/qa-artifacts/clawhub-ui-proof/pr-3717/search-and-adoption-evidence.
  • Proof source identity and review continuity: Read the linked summary.json. Its recorded proof revision is 5e15835 and earlier reviewed revision is 2347a08. Current recommendation backend, combiner, HTTP, CLI, schema, and card-component blobs match the recorded proof blobs. Fresh screenshots identify the current candidate and include updated skill-collection copy. The prior projection contains no findings or published rank-up moves. (convex/featuredIntelligence.ts:1, a8e18d8023f4)
  • Current main and release necessity: Current main retains the existing package Trending producer but has neither the new recommendation module nor the staff search-insights module. GitHub directory inspection likewise found no such modules in v0.23.3. Related collection and digest PRs are separate open stack components, not merged replacements. (convex/packageLeaderboards.ts:79, 22cc45be4fc3)

Likely related people:

  • Patrick-Erichsen: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Vyctor H. Brzezowski: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (1 earlier review cycle)
  • reviewed 2026-09-15T20:27:33.436Z sha 2347a08 :: blocked before merge. :: none

@Patrick-Erichsen

Patrick-Erichsen commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator Author

ClawHub UI Proof

Status: passed
Mode: feature
Scenario: staff search and adoption recommendations, two catalogs
Provider: isolated Playwright + real disposable Convex
Baseline: not run for feature proof.
Candidate: a8e18d8023f410ac551ebcb084199345b985da65

Existing search-demand dashboard (local fixture baseline)

Existing search-demand dashboard (local fixture baseline)

Plugin Featured evidence (local fixture)

Plugin Featured evidence (local fixture)

Skill Featured evidence (local fixture)

Skill Featured evidence (local fixture)

Raw proof files: https://github.com/openclaw/clawhub/tree/qa-artifacts/clawhub-ui-proof/pr-3717/search-and-adoption-evidence

@Patrick-Erichsen

Copy link
Copy Markdown
Collaborator Author

Resolved both proof availability risks from the latest review. The three screenshots now live on the repository’s qa-artifacts branch via the existing UI-proof publisher. Each public raw PNG returned HTTP 200 and matched the personally inspected local file byte-for-byte. The PR body uses these working links.

Proof index and screenshots · exact source blob comparison

All 16 changed production/test/generated files have identical git blob IDs between the real running proof revision 5e15835dd0951426bd466d8146ed5906d5ea5f3b and reviewed head 2347a082880667450c7f6558bba88713f4175b02. Only four existing specification documents differ. The comparison lists both full commit IDs and every file’s blob IDs, so replay does not depend on a now-unavailable abbreviated commit. Images and HTTP/CLI output remain explicitly local fixture validation; production recommendations will be captured after deployment.

@Patrick-Erichsen
Patrick-Erichsen removed this pull request from stack #3719 September 15, 2026 20:38
@Patrick-Erichsen
Patrick-Erichsen force-pushed the codex/claw724-featured-recommendations branch from 2347a08 to a8e18d8 Compare September 15, 2026 20:41
@Patrick-Erichsen
Patrick-Erichsen changed the base branch from codex/claw724-skill-collection to codex/claw724-homepage-collection September 15, 2026 20:41
@Patrick-Erichsen
Patrick-Erichsen added this pull request to stack #3634 September 15, 2026 20:41
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Sep 15, 2026
@Patrick-Erichsen
Patrick-Erichsen merged commit eaeaec4 into main Sep 15, 2026
53 of 58 checks passed
@Patrick-Erichsen
Patrick-Erichsen deleted the codex/claw724-featured-recommendations branch September 15, 2026 21:04

This branch was successfully deployed

1 active deployment
Preview – clawhub — a8e18d80 Deployed Sep 15, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal backlog priority with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant