From 2f9f483504df0e9e75e74621de16f99c65bf9d25 Mon Sep 17 00:00:00 2001 From: Harlan GitHub Agent Date: Wed, 21 Oct 2026 17:43:55 +1100 Subject: [PATCH] docs(seo): prepare ten link experiment candidates --- docs/work/EXECUTE-seo-recovery.md | 22 +- docs/work/seo-link-experiment-candidates.json | 716 ++++++++++++++++++ docs/work/seo-link-experiment.md | 87 +++ docs/work/seo-recovery-panel.json | 1 + 4 files changed, 823 insertions(+), 3 deletions(-) create mode 100644 docs/work/seo-link-experiment-candidates.json create mode 100644 docs/work/seo-link-experiment.md diff --git a/docs/work/EXECUTE-seo-recovery.md b/docs/work/EXECUTE-seo-recovery.md index b078fd69..8f2b6a06 100644 --- a/docs/work/EXECUTE-seo-recovery.md +++ b/docs/work/EXECUTE-seo-recovery.md @@ -26,6 +26,15 @@ This brief supersedes the measurement plan in [EXECUTE-seo-keyword-rework.md](EX ## Log +- 2026-10-21 Prepared ten Experiment B candidates in the [dated manifest](seo-link-experiment-candidates.json). + All ten canonical destinations returned 200, allowed indexing, and appeared in the Skills sitemap. + Each checked README contained no `skilld.dev` string; the manifest records its blob SHA. + Both badge themes returned 200 SVG. Source resolution and current admission passed for each Skill. + The retained Google checks span 20 August to 13 October; all ten reported unknown to Google. + These are dated pre-recruitment observations, not current Google verdicts or link start dates. + The [activation protocol](seo-link-experiment.md) starts each 14-day window only after a verified live link. + The original 41 URLs and their groups retain their history. The 11 November gate stays fixed. + - 2026-10-21 Follow-up verified the deployed reference-file repair from #662. The huggingface `references/adapting-to-the-lora.md` link returned 200 HTML with its file title and noindex directive. Deployment [39320257178](https://github.com/skilld-dev/skilld.dev/actions/runs/39320257178) succeeded for `c1e3ad7a`, which contains #661 and #662. @@ -316,7 +325,10 @@ After #557 is live, the counts behind each coverage bucket change meaning. Triag | `f_comparison` | 1 | Original source comparison with contextual internal links | Indexed with impressions for relevant prose editing or comparison queries | | `b_linked` | 10, to fill | Outside links from README badges (experiment B) | Crawled or indexed within 14 days of the link | -The `b_linked` group is not in the panel yet. Its 10 URLs are the Skill pages that receive outside links. When the first badge links land, pick them from the top 50 Skills whose maintainers got a badge request. Then move `b_linked` from `pending_groups` to `groups` in the JSON. +The `b_linked` group records Skill destinations with verified outside links, up to ten URLs. +The [candidate manifest](seo-link-experiment-candidates.json) records preparation separately. +As links land, follow the [activation protocol](seo-link-experiment.md) and add their destinations to the group. +Preserve each URL's first live observation and the original panel history. Baseline: the Pages report of 2026-09-30. The curated URLs sit in "Discovered, currently not indexed". The retired URLs sit in "Crawled, currently not indexed". The first per-URL reading comes from gscdump Watched URLs, after gscdump 4.6.0 and gscdump.com #557 are live. Load the panel with `gscdump indexing watch add`. Add at most 50 URLs per call. @@ -423,12 +435,16 @@ Sprint 0 item 1 is the base for every experiment. Only Skills admitted from the - Measures: the `b_linked` group. Add it to the panel first. - Setup: - - Run a GitHub README badge program. The badge and its embed snippet already exist at `/b//` and `/brand-kit/github-badge`. Ask the maintainers of the top 50 Skills to embed a badge that links to their Skill page. + - Use the [candidate manifest](seo-link-experiment-candidates.json) to prepare ten relevant README link requests. + Its pool is the first 50 reviewed individual Skill Repositories on the Repository leaderboard, ordered by GitHub stars. + The badge and embed snippet already exist at `/b//` and `/brand-kit/github-badge`. - Make the skilld CLI print canonical Skill page URLs ([skilld #178](https://github.com/skilld-dev/skilld/pull/178), after [#327](https://github.com/skilld-dev/skilld.dev/pull/327)). - Publish one launch post on established hosts: harlanzw.com, X, HN, r/ClaudeAI. Use original data, for example "we ran the top 50 Skills across 4 Agents". - Never buy links. Leave the 20 spam network domains alone. Disavow only if a manual action appears. - Read at 14 days. -- Scale rule: if 5 or more of the 10 linked URLs move from Discovered to Crawled or Indexed within 14 days, links are the lever. Put more effort there. +- Scale rule: if five of ten linked URLs move from unknown or discovered to crawled or indexed, investigate further. + Each URL has 14 days from its own verified live link. Apply the [dated evidence rules](seo-link-experiment.md#measurement). + This is an observational signal; it does not establish that links caused the change. ### C. Unique value template (deferred) diff --git a/docs/work/seo-link-experiment-candidates.json b/docs/work/seo-link-experiment-candidates.json new file mode 100644 index 00000000..0881eeaa --- /dev/null +++ b/docs/work/seo-link-experiment-candidates.json @@ -0,0 +1,716 @@ +{ + "preparedAt": "2026-10-21T06:41:23.486Z", + "site": "https://skilld.dev", + "gate": "2026-11-11", + "protocol": "seo-link-experiment.md", + "selection": { + "poolUrl": "https://skilld.dev/api/skills/leaderboard?page=1", + "pool": "First 50 reviewed individual Skill Repositories, ordered by GitHub stars", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "excludes": [ + "Every Repository in the original 41-URL panel", + "Repositories in the 20 October public README link sample" + ], + "scope": "No skilld.dev string in each checked default-branch README. This does not establish absence of links elsewhere." + }, + "baselineCaveat": "Retained checks span 20 August to 13 October. These are dated pre-recruitment evidence, not current or day-zero Google verdicts.", + "screenedOut": [ + { + "repository": "lackeyjb/playwright-skill", + "url": "https://skilld.dev/gh/lackeyjb/playwright-skill", + "reason": "Retained baseline already Crawled - currently not indexed. Keep the planned ten on the same unknown-to-Google baseline.", + "checkedAt": "2026-10-01T08:45:24.000Z" + } + ], + "candidates": [ + { + "repository": "pbakaus/impeccable", + "skill": "impeccable", + "url": "https://skilld.dev/gh/pbakaus/impeccable", + "selection": { + "reviewedRepositoryRank": 6, + "githubStars": 83960, + "fit": "frontend design and interface review" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:07.560Z", + "status": 200, + "canonical": "https://skilld.dev/gh/pbakaus/impeccable", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "impeccable by pbakaus · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/pbakaus/impeccable/blob/dad8dbb3aac21ad1fa236c110315ef4abece23e8/cursor-plugin/skills/impeccable/SKILL.md", + "sourceCommitSha": "dad8dbb3aac21ad1fa236c110315ef4abece23e8" + }, + "readme": { + "path": "README.md", + "sha": "8011ddf2bc35842e161cfaec07cdc7ba30dd4782", + "sourceUrl": "https://github.com/pbakaus/impeccable/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:07.560Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-09-05T08:37:41.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "d9a50cf4-b786-4133-ad09-8c7963b5f6fc" + }, + "contribution": { + "guideUrl": "https://github.com/pbakaus/impeccable/blob/main/docs/DEVELOP.md", + "note": "Use a direction request first. docs/DEVELOP.md requires an approved issue before a pull request.", + "proposedRequestUrl": "https://github.com/pbakaus/impeccable/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/pbakaus/impeccable?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:19.538Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/pbakaus/impeccable?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:18.704Z" + } + ], + "proposedPlacement": "alongside the README installation links" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "mvanhorn/last30days-skill", + "skill": "last30days", + "url": "https://skilld.dev/gh/mvanhorn/last30days-skill", + "selection": { + "reviewedRepositoryRank": 8, + "githubStars": 64786, + "fit": "research into recent community discussions" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:08.378Z", + "status": 200, + "canonical": "https://skilld.dev/gh/mvanhorn/last30days-skill", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "last30days by mvanhorn · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/mvanhorn/last30days-skill/blob/13a6cc5fd1f2d8a9b8420bbba6742599b2f4a077/skills/last30days/SKILL.md", + "sourceCommitSha": "13a6cc5fd1f2d8a9b8420bbba6742599b2f4a077" + }, + "readme": { + "path": "README.md", + "sha": "07ffbea2cb945f26621d39652a54eda199467bce", + "sourceUrl": "https://github.com/mvanhorn/last30days-skill/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:08.378Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-01T09:59:24.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "24336183-8331-4b11-809f-042eb3b36d56" + }, + "contribution": { + "guideUrl": "https://github.com/mvanhorn/last30days-skill/blob/main/CONTRIBUTING.md", + "note": "The contribution guide describes pull requests. Ask about the optional link before preparing a patch.", + "proposedRequestUrl": "https://github.com/mvanhorn/last30days-skill/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/mvanhorn/last30days-skill?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:20.652Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/mvanhorn/last30days-skill?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:19.934Z" + } + ], + "proposedPlacement": "beside the README installation section" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "hugohe3/ppt-master", + "skill": "ppt-master", + "url": "https://skilld.dev/gh/hugohe3/ppt-master", + "selection": { + "reviewedRepositoryRank": 9, + "githubStars": 64634, + "fit": "creating editable presentation files" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:07.261Z", + "status": 200, + "canonical": "https://skilld.dev/gh/hugohe3/ppt-master", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "ppt-master by hugohe3 · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/hugohe3/ppt-master/blob/cc8b722a24e9fb540e67c2d58a9ea3da534cd682/skills/ppt-master/SKILL.md", + "sourceCommitSha": "cc8b722a24e9fb540e67c2d58a9ea3da534cd682" + }, + "readme": { + "path": "README.md", + "sha": "18c4d9720a59046f602e2a89db415e90f87e3cd0", + "sourceUrl": "https://github.com/hugohe3/ppt-master/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:07.261Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-01T08:43:47.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "9bcd4e7d-9f6d-40c8-b8f0-9f8bcb165c73" + }, + "contribution": { + "guideUrl": "https://github.com/hugohe3/ppt-master/blob/main/CONTRIBUTING.md", + "note": "Use an issue request. CONTRIBUTING.md asks for issues instead of tiny README pull requests.", + "proposedRequestUrl": "https://github.com/hugohe3/ppt-master/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/hugohe3/ppt-master?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:20.733Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/hugohe3/ppt-master?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.151Z" + } + ], + "proposedPlacement": "alongside the README project badges" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "zarazhangrui/frontend-slides", + "skill": "frontend-slides", + "url": "https://skilld.dev/gh/zarazhangrui/frontend-slides", + "selection": { + "reviewedRepositoryRank": 15, + "githubStars": 30938, + "fit": "creating HTML presentations and converting PowerPoint slides" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:12.228Z", + "status": 200, + "canonical": "https://skilld.dev/gh/zarazhangrui/frontend-slides", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "frontend-slides by zarazhangrui · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/zarazhangrui/frontend-slides/blob/9906a34d640d2111f724544cbc50f7f130569ae1/SKILL.md", + "sourceCommitSha": "9906a34d640d2111f724544cbc50f7f130569ae1" + }, + "readme": { + "path": "README.md", + "sha": "bd4bd929069d569e7dfbe3e8d6be77431bb50e43", + "sourceUrl": "https://github.com/zarazhangrui/frontend-slides/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:12.228Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-01T21:11:39.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "46f523f7-4ae3-47c7-937b-387130f9c2e6" + }, + "contribution": { + "guideUrl": "https://github.com/zarazhangrui/frontend-slides/blob/main/README.md", + "note": "The community profile supplied no contribution guide. Use a courtesy issue request and check current issue guidance before sending.", + "proposedRequestUrl": "https://github.com/zarazhangrui/frontend-slides/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/zarazhangrui/frontend-slides?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.515Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/zarazhangrui/frontend-slides?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.541Z" + } + ], + "proposedPlacement": "beside the README installation section" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "jimliu/baoyu-skills", + "skill": "baoyu-image-gen", + "url": "https://skilld.dev/gh/jimliu/baoyu-skills/baoyu-image-gen", + "selection": { + "reviewedRepositoryRank": 17, + "githubStars": 26808, + "fit": "the baoyu-image-gen image generation Skill" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:11.713Z", + "status": 200, + "canonical": "https://skilld.dev/gh/jimliu/baoyu-skills/baoyu-image-gen", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "baoyu-image-gen by jimliu · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/JimLiu/baoyu-skills/blob/1567581c26ec29f4216c6e6835415bf30343b0e3/skills/baoyu-image-gen/SKILL.md", + "sourceCommitSha": "1567581c26ec29f4216c6e6835415bf30343b0e3" + }, + "readme": { + "path": "README.md", + "sha": "eb7cdd139af53d040fb3cc047fb1e2ffa586a6b6", + "sourceUrl": "https://github.com/JimLiu/baoyu-skills/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:11.713Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-08-20T08:40:05.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "b1dff185-36fd-4bf6-aae1-e1cbab6c50ee" + }, + "contribution": { + "guideUrl": "https://github.com/JimLiu/baoyu-skills/blob/main/README.md", + "note": "The community profile supplied no contribution guide. Link the individual Skill rather than the Repository hub.", + "proposedRequestUrl": "https://github.com/jimliu/baoyu-skills/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/jimliu/baoyu-skills/baoyu-image-gen?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.910Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/jimliu/baoyu-skills/baoyu-image-gen?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.626Z" + } + ], + "proposedPlacement": "beside baoyu-image-gen in the README Skill list" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "muratcankoylan/agent-skills-for-context-engineering", + "skill": "agent-skills-for-context-engineering", + "url": "https://skilld.dev/gh/muratcankoylan/agent-skills-for-context-engineering/agent-skills-for-context-engineering", + "selection": { + "reviewedRepositoryRank": 19, + "githubStars": 18174, + "fit": "context engineering for Agents" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:14.121Z", + "status": 200, + "canonical": "https://skilld.dev/gh/muratcankoylan/agent-skills-for-context-engineering/agent-skills-for-context-engineering", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "agent-skills-for-context-engineering by muratcankoylan · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/blob/9ff0c99108b36d3b886defd825d8ac1f47dba374/SKILL.md", + "sourceCommitSha": "9ff0c99108b36d3b886defd825d8ac1f47dba374" + }, + "readme": { + "path": "README.md", + "sha": "fb93738758427603aec5a6dcfb05f0845eb53f53", + "sourceUrl": "https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:14.121Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-13T08:44:37.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "bc1e0bd1-b660-417d-ad00-b4d945a82501" + }, + "contribution": { + "guideUrl": "https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/blob/main/CONTRIBUTING.md", + "note": "CONTRIBUTING.md directs questions to issues. Ask whether the link fits before proposing a patch.", + "proposedRequestUrl": "https://github.com/muratcankoylan/agent-skills-for-context-engineering/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/muratcankoylan/agent-skills-for-context-engineering/agent-skills-for-context-engineering?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.273Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/muratcankoylan/agent-skills-for-context-engineering/agent-skills-for-context-engineering?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:21.986Z" + } + ], + "proposedPlacement": "beside the README getting started links" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "parthjadhav/app-store-screenshots", + "skill": "app-store-screenshots", + "url": "https://skilld.dev/gh/parthjadhav/app-store-screenshots", + "selection": { + "reviewedRepositoryRank": 28, + "githubStars": 7457, + "fit": "building App Store and Google Play screenshots" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:14.212Z", + "status": 200, + "canonical": "https://skilld.dev/gh/parthjadhav/app-store-screenshots", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "app-store-screenshots by parthjadhav · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/ParthJadhav/app-store-screenshots/blob/5386f227360bddb06c8beaff920a1a34c9f01932/skills/app-store-screenshots/SKILL.md", + "sourceCommitSha": "5386f227360bddb06c8beaff920a1a34c9f01932" + }, + "readme": { + "path": "README.md", + "sha": "410f0d54ddb93a7192cdfc6838384001d55b1fe1", + "sourceUrl": "https://github.com/ParthJadhav/app-store-screenshots/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:14.212Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-01T09:59:32.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "5056f99b-18a9-40ba-b7e3-8d5e72c15691" + }, + "contribution": { + "guideUrl": "https://github.com/ParthJadhav/app-store-screenshots/blob/main/CONTRIBUTING.md", + "note": "CONTRIBUTING.md requires link checks for README edits. Both badge themes and the destination were checked.", + "proposedRequestUrl": "https://github.com/parthjadhav/app-store-screenshots/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/parthjadhav/app-store-screenshots?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.633Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/parthjadhav/app-store-screenshots?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.334Z" + } + ], + "proposedPlacement": "alongside the existing README Skill badges" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "twostraws/swiftui-agent-skill", + "skill": "swiftui-pro", + "url": "https://skilld.dev/gh/twostraws/swiftui-agent-skill", + "selection": { + "reviewedRepositoryRank": 30, + "githubStars": 6264, + "fit": "SwiftUI code review with SwiftUI Pro" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:16.724Z", + "status": 200, + "canonical": "https://skilld.dev/gh/twostraws/swiftui-agent-skill", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "swiftui-pro by twostraws · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/twostraws/SwiftUI-Agent-Skill/blob/ce32af1693b9e78a7d22ff48001c97a304d32063/swiftui-pro/SKILL.md", + "sourceCommitSha": "ce32af1693b9e78a7d22ff48001c97a304d32063" + }, + "readme": { + "path": "README.md", + "sha": "12e282c9336a10d31c23d53a586d2049e2b77525", + "sourceUrl": "https://github.com/twostraws/SwiftUI-Agent-Skill/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:16.724Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-10-01T21:11:32.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "06ac4889-3f5a-4e2b-9c37-f985ee33a394" + }, + "contribution": { + "guideUrl": "https://github.com/twostraws/SwiftUI-Agent-Skill/blob/main/README.md", + "note": "The README welcomes README edits. Use a courtesy request before any external pull request.", + "proposedRequestUrl": "https://github.com/twostraws/swiftui-agent-skill/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/twostraws/swiftui-agent-skill?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.724Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/twostraws/swiftui-agent-skill?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.724Z" + } + ], + "proposedPlacement": "beside the README usage section" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "leonxlnx/unlazy", + "skill": "unlazy", + "url": "https://skilld.dev/gh/leonxlnx/unlazy", + "selection": { + "reviewedRepositoryRank": 34, + "githubStars": 4004, + "fit": "completion discipline and acceptance checks for Agent work" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:39:02.258Z", + "status": 200, + "canonical": "https://skilld.dev/gh/leonxlnx/unlazy", + "robots": [ + "index,follow", + "index,follow" + ], + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/Leonxlnx/unlazy/blob/16671491f6679ad9378f52604d3bc2415b4120c7/SKILL.md", + "sourceCommitSha": "16671491f6679ad9378f52604d3bc2415b4120c7" + }, + "readme": { + "path": "README.md", + "sha": "18f48c03dee2d60000b96249dce2b914557021c2", + "sourceUrl": "https://github.com/Leonxlnx/unlazy/blob/main/README.md", + "checkedAt": "2026-10-21T06:39:02.258Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:39:02.258Z", + "checkedAt": "2026-09-26T09:56:26.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "dadd1a89-0efb-4406-98ad-55bc6e95dff5" + }, + "contribution": { + "guideUrl": "https://github.com/Leonxlnx/unlazy/blob/main/CONTRIBUTING.md", + "note": "CONTRIBUTING.md requires exact evidence for claims. Keep the request about the existing page and optional link.", + "proposedRequestUrl": "https://github.com/leonxlnx/unlazy/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/leonxlnx/unlazy?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:23.093Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/leonxlnx/unlazy?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:22.806Z" + } + ], + "proposedPlacement": "beside the README installation section" + }, + "adoption": { + "_tag": "awaiting-link" + } + }, + { + "repository": "jakubkrehel/make-interfaces-feel-better", + "skill": "make-interfaces-feel-better", + "url": "https://skilld.dev/gh/jakubkrehel/make-interfaces-feel-better", + "selection": { + "reviewedRepositoryRank": 36, + "githubStars": 3730, + "fit": "interface polish, animation, and typography" + }, + "eligibility": { + "checkedAt": "2026-10-21T06:30:17.084Z", + "status": 200, + "canonical": "https://skilld.dev/gh/jakubkrehel/make-interfaces-feel-better", + "robots": [ + "index,follow", + "index,follow" + ], + "title": "make-interfaces-feel-better by jakubkrehel · skilld", + "sitemapUrl": "https://skilld.dev/__sitemap__/skills-0.xml", + "sitemapMember": true, + "sourceResolved": "ok", + "seoIndexable": true, + "sourceFileUrl": "https://github.com/jakubkrehel/make-interfaces-feel-better/blob/35545ea1512ad59fa463e6b1f95ca9c052981fe6/skills/make-interfaces-feel-better/SKILL.md", + "sourceCommitSha": "35545ea1512ad59fa463e6b1f95ca9c052981fe6" + }, + "readme": { + "path": "README.md", + "sha": "201b1b7f498864b09479be10b3421d43cefa8744", + "sourceUrl": "https://github.com/jakubkrehel/make-interfaces-feel-better/blob/main/README.md", + "checkedAt": "2026-10-21T06:30:17.084Z", + "skilldDomainOccurrences": 0 + }, + "retainedGoogle": { + "source": "NuxtSEO search inspect without --fresh", + "snapshotReadBy": "2026-10-21T06:32:29.036Z", + "checkedAt": "2026-09-26T09:56:26.000Z", + "coverageState": "URL is unknown to Google", + "lastCrawlTime": null, + "requestId": "dd2f3edd-7e21-4ccb-a219-457d0dfeb2d9" + }, + "contribution": { + "guideUrl": "https://github.com/jakubkrehel/make-interfaces-feel-better/blob/main/README.md", + "note": "The community profile supplied no contribution guide. Use a courtesy issue request and check current issue guidance before sending.", + "proposedRequestUrl": "https://github.com/jakubkrehel/make-interfaces-feel-better/issues/new", + "issuesEnabled": true + }, + "badge": { + "checkedVariants": [ + { + "theme": "dark", + "url": "https://skilld.dev/b/jakubkrehel/make-interfaces-feel-better?theme=dark", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:23.486Z" + }, + { + "theme": "light", + "url": "https://skilld.dev/b/jakubkrehel/make-interfaces-feel-better?theme=light", + "status": 200, + "contentType": "image/svg+xml; charset=utf-8", + "checkedAt": "2026-10-21T06:41:23.447Z" + } + ], + "proposedPlacement": "alongside the existing README Skill badge" + }, + "adoption": { + "_tag": "awaiting-link" + } + } + ] +} diff --git a/docs/work/seo-link-experiment.md b/docs/work/seo-link-experiment.md new file mode 100644 index 00000000..847b7dfb --- /dev/null +++ b/docs/work/seo-link-experiment.md @@ -0,0 +1,87 @@ +# Experiment B: link candidates + +The [candidate manifest](seo-link-experiment-candidates.json) records ten existing, admitted Skill destinations checked on 21 October 2026. +It separates recruitment evidence from the [original recovery panel](seo-recovery-panel.json). +The 11 November gate and indexing freeze still apply. + +## Selection evidence + +The pool was the first 50 reviewed individual Skill Repositories from the [Repository leaderboard](https://skilld.dev/api/skills/leaderboard?page=1). +This pool is ordered by GitHub stars. It is not the global top 50 Skills. +Stars help order recruitment; they do not grant indexing admission. + +Each candidate met these checks: + +- A different Repository from every original panel Repository and the 20 October public README link sample. +- An existing canonical Skill destination in the Skills sitemap. +- A direct HTTP 200 response, indexing allowed, and a self-canonical URL. +- A resolved source, current indexing admission, and a healthy public Repository. +- No `skilld.dev` string in its checked default-branch README, recorded with its blob SHA. +- HTTP 200 SVG responses from both badge themes, generated through the existing embed helper. +- A retained Google inspection reporting `URL is unknown to Google`. + +The README check does not establish absence of links elsewhere. +The Repository exclusions avoid known overlap. They do not create a matched untreated control. +Playwright was screened out because its retained baseline already reported crawled, not indexed. + +## Baseline dates + +The retained Google checks span 20 August to 13 October. +Reading them on 21 October does not make them current. +They are dated pre-recruitment evidence, not current or day-zero Google verdicts. +HTTP indexability does not prove that Google indexed a page. + +Before activating a candidate, read its latest retained inspection and repeat the cheap eligibility checks. +If the Google check predates adoption, record that timing gap. +Do not infer the page's state on the adoption day from older evidence. +If a candidate already progressed, preserve that evidence and exclude it from the unknown-to-crawled transition count. +Do not run fresh inspections merely to align the original panel. + +## Link activation + +Preparation does not start a measurement window. +Keep each candidate's `adoption._tag` as `awaiting-link` until an outside link is verified live. +Then replace that object with a `live-link` record containing: + +- `sourceUrl`: the public page containing the link. +- `sourceBlobSha`: the README blob SHA, when the source is GitHub. +- `targetUrl`: the exact linked canonical Skill destination. +- `firstObservedAt`: the first verified live observation, in UTC. +- `sourceCommittedAt`: the source commit time, when available; keep it separate from the observation time. +- `linkKind`: badge or plain link. +- `renderedRel`: the observed attributes, or an explicit unavailable result. + +Do not assume a followed link from README source alone. +Add verified live destinations to `b_linked` as they land, up to ten URLs. +Keep every original group, URL, exclusion, and observation. +Keep each candidate's history when its eligibility changes; do not silently replace an activated destination. + +## Measurement + +Start each URL's 14-day window at its own first verified live link. +Record both the Google inspection time and the last reported crawl time. +A crawl transition needs a reported crawl after the link; an old crawl timestamp does not qualify. +An indexed result needs a post-link inspection reporting indexed status. +An old inspection, provider error, or missing Checkpoint leaves the result unavailable. +Missing evidence is not a failed experiment. + +The threshold remains five qualifying moves among ten live destinations. +Count moves from unknown or discovered to crawled or indexed. +If fewer than ten links land, report recruitment progress separately from the ten-URL threshold. +This observational result can justify further investigation. It cannot attribute the change to the links. +Sitewide changes, baseline gaps, and maintainer self-selection remain confounders. + +A full 14-day window at the 11 November gate needs a link by 28 October. +Later links have incomplete windows at that gate. Keep their later read dates explicit. +Keep the gate date; do not turn incomplete windows into failures. + +## Outreach + +Check each maintainer's current contribution and issue guidance before publishing a request. +Use one relevant channel. Ask before preparing an external pull request. +Keep any proposed link optional and useful to the Repository's readers. +Offer a plain link alongside the badge. Do not exchange rewards or require ranking credit. +Google's [link spam policy](https://developers.google.com/search/docs/essentials/spam-policies#link-spam) covers links created primarily to manipulate rankings. + +Personal outreach drafts remain separate from this public measurement record. +Publishing under Harlan's name requires approval of the exact message. diff --git a/docs/work/seo-recovery-panel.json b/docs/work/seo-recovery-panel.json index 7f0424e7..ad6d220b 100644 --- a/docs/work/seo-recovery-panel.json +++ b/docs/work/seo-recovery-panel.json @@ -97,6 +97,7 @@ "pr": "skilld.dev#321", "expect": "crawled or indexed within 14 days of the outside link going live", "size": 10, + "candidate_manifest": "seo-link-experiment-candidates.json", "fill": "Add 10 Skill URLs when the first README badge links land, then move this group into groups." } }