Skip to content

fix: pin one Skill per key and clear three brand rollout defects - #443

Merged
harlan-zw merged 5 commits into
mainfrom
fix/brand-cleanup
Oct 5, 2026
Merged

harlan-zw merged 5 commits into
mainfrom
fix/brand-cleanup

Conversation

@harlan-zw

Copy link
Copy Markdown
Collaborator

🔗 Linked issue

Related to #441, #438 and #435

❓ Type of change

  • 📖 Documentation
  • 🐞 Bug fix
  • 👌 Enhancement
  • ✨ New feature
  • 🧹 Chore
  • ⚠️ Breaking change

📚 Description

Four defects from the brand rollout, one commit each. None of them changes a design.

1. Duplicate pinned Skills on track pages. /skills/design listed emil-design-eng and web-design-guidelines twice under "Hand-picked design skills". A pin key was owner/name, and one owner can ship a Skill of that name from two repositories. emilkowalski/skill is the pre-rename identity of emilkowalski/skills (ADR-0002), and vercel-labs/openreview ships its own web-design-guidelines. Production D1 matched 14 pin keys to two or three Skills each.

  • Every pin in clusters.ts is now owner/repo/name, resolved against production D1. Where a key matched more than one Skill, a renamed repository takes GitHub's current name. Otherwise the pin takes the repository the merged collection seeded, or the most-starred one.
  • parseClusterSkillKeys throws on a two-segment key. The SQL pinned arm, the pin ORDER BY, both cluster routes and isCategoryPinned all use the full key. The cluster cache names move to v6.
  • trackBoard lists one copy of an owner's Skill across its sections: the talked section first, then the pins, then the most-starred copy. Without this, the rename twin still showed in the stars section under the pick.
  • Migration 0139 indexes the new key expression and drops the owner/name index, which no query reads now.
  • The indexability pin signal now reaches only the pinned Skill. A namesake that relied on the pin alone becomes noindex at its next recompute.
  • Four anti-slop pins (Aboudjem/humanizer-skill/humanizer, ehmo/slopkit/slopbeth, jalaalrd/anti-ai-slop-writing/anti-ai-slop-writing, stephenturner/skill-deslop/deslop) match no production row. Their owner/name keys matched nothing either, so the anti-slop page lists the same Skills as before. Their repositories come from GitHub.
  • The count line on a track page still counts every member, so it can exceed the rows when the board hides a copy.
  • The longer keys put skills-to-gh-redirect 1.1 kB over its 20 kB size budget, because it imports clusters.ts for slugs. nuxt.config.ts allows it 22 kB.

2. The trending header overclaimed. It said rows rank by how many separate devs talked about each one. loadTrendingBoard also moves Skills from the 20 most-starred repositories below every other row. On 2026-10-06 that kept dietrichgebert/ponytail off the 30-row board, although nine accounts posted about it in the past seven days.

This PR keeps the demotion and makes the header state it. loadTrendingBoard also feeds the homepage band, /skills, the weekly social script and the trending SEO admissions. Removing the demotion would reorder all of them before the 2026-11-11 SEO gate. The copy change touches one page. ADR-0004 asks a heading to state what orders its rows, and the header now does. Track pages keep their shorter line, because ADR-0010 dropped the demotion there. The count is DEMOTED_STARRED_REPOSITORIES in shared/trending-range.ts, and both the page and the ranking read it. COPY.md records the new strings.

3. Three rose dots on the /cli opening band. The Braille names texture and both install chips drew rose, and DESIGN.md "Brand System" allows one rose element per band. The "Teach your agent skilld" chip keeps its rose dot. CliInstallChip gains the quiet prop, and the texture draws its pick in stone, as the home hero does.

4. The header trending glyph failed contrast. TrendingMark drew in --ui-text-dimmed: 2.44:1 in light and 4.16:1 in dark, per axe. It now draws in --ui-text-muted, 7.03:1 and 5.46:1, and axe reports no header violation in either mode. No rose is added. The same component on SkillTable gets the same colour.

Architecture of this change: pin data feeds the key parser, the membership SQL and the indexability lookup, the SQL pinned arm selects one Skill per key in D1, and the trending header, /cli band and header glyph change on their own

🤖 AI disclosure: Harlan Agent Kit modified this description. My AI open-source policy.

An owner/name pin matched every repository of one owner that shipped a Skill
of that name. /skills/design listed emil-design-eng and web-design-guidelines
twice under its hand-picked heading, and the indexability pin signal reached
the namesakes too. Pins now name the repository, resolved against production
D1. The track board also lists one copy of an owner's Skill, so a renamed
repository's old identity stays off the page.
The /skills/trending header said rows rank by how many devs talked about each
one, but the board moves Skills from the 20 most-starred repositories below
every other row. On 2026-10-06 that kept ponytail, which seven devs talked
about, off the 30-row board. The header now states the demotion, and the page
and the ranking read one shared constant for the count.
The /cli hero drew three rose dots: the Braille names pick and both install
chips. DESIGN.md allows one rose element per band. The Teach your agent skilld
chip keeps its rose dot. The CLI chip takes the quiet prop, and the texture
draws its pick in stone, as the home hero does.
The braille mark before Trending Skills drew in --ui-text-dimmed, stone 400 in
light and stone 500 in dark. Both fail text contrast, and axe warned in the
console. It now draws in --ui-text-muted. No rose is added.
skills-to-gh-redirect reads track slugs from clusters.ts, which also holds
every pin. The owner/repo/name pin keys added about 1.3 kB and put the
middleware 1.1 kB over its 20 kB budget, a build warning.
@harlan-zw

Copy link
Copy Markdown
Collaborator Author

Agent comment (Harlan Agent Kit): checks CI cannot show.

  • Ran the new clusterPageSql for design read-only against production D1. Each of the nine pins returns one row, and the stars section still held emilkowalski/skill/emil-design-eng, which the board dedupe now hides.
  • Applied all migrations, 0139 included, to a local D1 copy seeded with the two production twins. /skills/design lists each pin once at 1440 and 390, in light and dark.
  • /cli canvas pixel count: production draws 23 rose pixels in the texture and two rose chip dots. This branch draws none in the texture and one rose chip dot, in both modes.
  • axe color-contrast on the header: production flags the trending glyph at 2.44:1 light and 4.16:1 dark. This branch has zero header violations in both modes.
  • The redirect middleware budget warning is gone in a fresh dev boot. The other over-budget warnings are on main too.

Screenshots come from the local dev server, so the Nuxt DevTools pill and the green dot are dev-only. The local trending board has no recent posts, so it shows the header with star rows.

/skills/design, 1440 light /skills/trending, 1440 light
Design track at 1440 in light mode: each hand-picked Skill listed once Trending board at 1440 in light mode with the new header
/cli, 1440 light /cli, 1440 dark
CLI opening band in light mode: one rose dot on the Teach your agent skilld chip CLI opening band in dark mode: one rose dot on the Teach your agent skilld chip
Header, 1440 dark Header menu, 390 light
Header at 1440 in dark mode with the muted trending glyph Mobile menu at 390 in light mode with the muted trending glyph

@harlan-zw harlan-zw added the harlan-agent-review Pull request triage requires an adversarial Review. Adding this label manually always forces one. label Oct 5, 2026
@harlan-github-agent harlan-github-agent Bot added harlan-agent-running An Agent holds a Task on this issue or pull request right now. harlan-agent-review-required Pull request triage requires an adversarial Review for this head commit. and removed harlan-agent-review Pull request triage requires an adversarial Review. Adding this label manually always forces one. labels Oct 5, 2026
@harlan-github-agent

harlan-github-agent Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

🤖 MERGED

Harlan Agent Kit posted this automated review. It is not Harlan's personal review or approval. AI open source policy. Last updated: 2026-10-05 18:27 UTC.

GitHub merged this pull request.

  • Logged (32/100): The talked section can still list the same Skill twice. View code
    • Ask an agent to verify and fix this finding
  • Logged (35/100): Every image in the pull request stays inaccessible after authenticated retrieval. View code
    • Ask an agent to verify and fix this finding

Review completed. No finding above 80/100.

Selected findings run after merge and open separate pull requests.

@harlan-zw
harlan-zw merged commit 3bd6047 into main Oct 5, 2026
7 checks passed
@harlan-github-agent harlan-github-agent Bot removed harlan-agent-running An Agent holds a Task on this issue or pull request right now. harlan-agent-review-required Pull request triage requires an adversarial Review for this head commit. labels Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant