mirror of
https://github.com/nexu-io/open-design.git
synced 2026-09-20 06:15:06 +08:00
da7c4ae051
* fix(web): rank Community "Newest" by shipped publishedAt, not local install timestamps
The Community gallery Newest toggle sorted by the installed-record
updatedAt/installedAt. Those are stamped when a machine seeds its own
database, so a fresh install (or an upgrade that re-stamps the catalog)
writes the whole bundled catalog milliseconds apart in folder-walk
order — Newest showed reverse walk order (roughly reverse-alphabetical),
unrelated to publication recency.
Root-cause fix: bundled templates now ship a real publication date.
- packages/contracts: add optional manifest field publishedAt (ISO 8601).
- apps/web sortByNewest: freshness = publishedAt when parseable, else
updatedAt (right signal for user-installed plugins); tie-breaks and
stability unchanged.
- plugins/_official: backfill publishedAt into all 460 bundled manifests
from each folder's first-appearance commit date in upstream git
history.
- e2e: repository-resource guard requiring every bundled manifest to
declare a parseable publishedAt, so the signal cannot silently erode.
- docs: field reference entries in plugins-spec (en + zh-CN).
Issue: https://plane.powerformer.net/open-design/projects/49832a02-3158-4faf-bf2f-d0e39c40c7e6/issues/ca0778af-97f5-4fc0-bc63-739280904979
Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)
* worker: 模板用最新筛选,筛选出来的不是最新的
Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)
* fix(web): keep shipped appeal order inside same-publishedAt batches
Review follow-up (#5597, nettee): after the freshness tie on an equal
publishedAt, the comparator still consulted local updatedAt/installedAt,
which a fresh install stamps in folder-walk order — so every
same-publication batch (largest: 322 manifests on one catalog date)
re-sorted per machine instead of keeping the shipped visual-appeal
ranking. Same-publishedAt records now preserve their incoming position;
local timestamps break ties only when at least one side has no usable
publishedAt. Adds the requested regression spec pinning
same-publishedAt / different-updatedAt records.
Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)
* fix(web): gate publishedAt freshness to bundled records; untrack oversized looper attachment
Review follow-up (#5597, nettee round 2): publishedAt was overriding
updatedAt for every visible plugin, so a user-installed github/local/
marketplace plugin carrying an old manifest publishedAt would be buried
behind bundled templates despite a newer local install. publishedAtMs
now returns null for non-bundled records — "Newest" means install
recency for user installs, catalog publication for bundled ones. Adds
the requested regression (non-bundled, old publishedAt, newer
updatedAt) and clarifies the field docs (en + zh-CN).
CI repair: commit 578f7a9 tracked .looper-attachments/bug13_1.png
(3.8MB bug screenshot), tripping the Static gate 1MiB blob guard and
the Validate workspace aggregate. Untrack it and gitignore
.looper-attachments/ so harness attachments stay out of the repo.
Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)
87 lines
2.6 KiB
JSON
87 lines
2.6 KiB
JSON
{
|
|
"$schema": "https://open-design.ai/schemas/plugin.v1.json",
|
|
"specVersion": "1.0.0",
|
|
"name": "example-web-clone",
|
|
"title": "Website Clone",
|
|
"title_i18n": {
|
|
"en": "Website Clone",
|
|
"zh-CN": "网站复刻",
|
|
"zh-TW": "網站復刻"
|
|
},
|
|
"version": "0.1.0",
|
|
"publishedAt": "2026-07-10T03:28:06Z",
|
|
"description": "Clone or visually recreate a website using source-first reconnaissance, route crawling, interaction probes, asset capture, and post-clone audit notes.",
|
|
"description_i18n": {
|
|
"en": "Clone or visually recreate a website using source-first reconnaissance, route crawling, interaction probes, asset capture, and post-clone audit notes.",
|
|
"zh-CN": "使用源码优先的侦察、路由抓取、交互探针、素材采集和复刻审计,复刻或视觉还原一个网站。",
|
|
"zh-TW": "使用原始碼優先的偵察、路由抓取、互動探針、素材擷取與復刻稽核,復刻或視覺還原一個網站。"
|
|
},
|
|
"license": "MIT",
|
|
"author": {
|
|
"name": "Jane xiaoer / Open Design",
|
|
"url": "https://github.com/Jane-xiaoer/claude-skill-web-clone"
|
|
},
|
|
"homepage": "https://github.com/Jane-xiaoer/claude-skill-web-clone",
|
|
"tags": [
|
|
"example",
|
|
"first-party",
|
|
"prototype",
|
|
"web",
|
|
"website",
|
|
"web-clone",
|
|
"website-clone",
|
|
"site-clone",
|
|
"reproduce-site",
|
|
"visual-clone"
|
|
],
|
|
"od": {
|
|
"kind": "scenario",
|
|
"taskKind": "new-generation",
|
|
"mode": "prototype",
|
|
"scenario": "web-clone",
|
|
"surface": "web",
|
|
"preview": {
|
|
"type": "html",
|
|
"entry": "./index.html"
|
|
},
|
|
"useCase": {
|
|
"query": {
|
|
"en": "Clone or visually recreate this website: {{targetUrl}}. Use the web-clone workflow: find real source first, recon the site, choose a fidelity path, build a local clone, remove tracking, and write NOTES.md plus clone/audit evidence.",
|
|
"zh-CN": "复刻这个网站:{{targetUrl}}。使用 web-clone 流程:先找真实源码,再侦察站点、选择保真路径、构建本地复刻、删除追踪脚本,并写好 NOTES.md 与复刻/审计证据。"
|
|
}
|
|
},
|
|
"inputs": [
|
|
{
|
|
"name": "targetUrl",
|
|
"label": "Target URL",
|
|
"type": "string",
|
|
"required": false,
|
|
"placeholder": "https://example.com"
|
|
}
|
|
],
|
|
"context": {
|
|
"skills": [
|
|
{
|
|
"ref": "web-clone"
|
|
}
|
|
]
|
|
},
|
|
"pipeline": {
|
|
"stages": [
|
|
{
|
|
"id": "generate",
|
|
"atoms": [
|
|
"file-write",
|
|
"live-artifact"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"capabilities": [
|
|
"prompt:inject",
|
|
"fs:write",
|
|
"shell"
|
|
]
|
|
}
|
|
}
|