Repository navigation
fix: pin one Skill per key and clear three brand rollout defects - #443
Merged
Merged
Conversation
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.
Collaborator
Author
Contributor
🤖 MERGED
GitHub merged this pull request.
Review completed. No finding above 80/100. Selected findings run after merge and open separate pull requests. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.






🔗 Linked issue
Related to #441, #438 and #435
❓ Type of 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/designlistedemil-design-engandweb-design-guidelinestwice under "Hand-picked design skills". A pin key wasowner/name, and one owner can ship a Skill of that name from two repositories.emilkowalski/skillis the pre-rename identity ofemilkowalski/skills(ADR-0002), andvercel-labs/openreviewships its ownweb-design-guidelines. Production D1 matched 14 pin keys to two or three Skills each.clusters.tsis nowowner/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.parseClusterSkillKeysthrows on a two-segment key. The SQL pinned arm, the pinORDER BY, both cluster routes andisCategoryPinnedall use the full key. The cluster cache names move to v6.trackBoardlists 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.0139indexes the new key expression and drops theowner/nameindex, which no query reads now.noindexat its next recompute.Aboudjem/humanizer-skill/humanizer,ehmo/slopkit/slopbeth,jalaalrd/anti-ai-slop-writing/anti-ai-slop-writing,stephenturner/skill-deslop/deslop) match no production row. Theirowner/namekeys matched nothing either, so the anti-slop page lists the same Skills as before. Their repositories come from GitHub.skills-to-gh-redirect1.1 kB over its 20 kB size budget, because it importsclusters.tsfor slugs.nuxt.config.tsallows it 22 kB.2. The trending header overclaimed. It said rows rank by how many separate devs talked about each one.
loadTrendingBoardalso moves Skills from the 20 most-starred repositories below every other row. On 2026-10-06 that keptdietrichgebert/ponytailoff 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.
loadTrendingBoardalso 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 isDEMOTED_STARRED_REPOSITORIESinshared/trending-range.ts, and both the page and the ranking read it.COPY.mdrecords the new strings.3. Three rose dots on the
/cliopening 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.CliInstallChipgains thequietprop, and the texture draws its pick in stone, as the home hero does.4. The header trending glyph failed contrast.
TrendingMarkdrew 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 onSkillTablegets the same colour.