guides: link out to the Agent Skills catalogue - #241
Merged
Conversation
Adds a card to the guides index for the agent-skills catalogue, which is hosted in its own repository and published to leoncheng.dev/agent-skills. Follows the inlined-article precedent already used for OpenCode Remote Control rather than adding an externalUrl field to the Guide type: the card is a one-off, and GuideCard/Guide stay focused on on-site guides. The link is a plain anchor, matching how the apps index links to House Party Photo Hunt, because it is a full page navigation out of the SPA. The meta row shows only what is true for a site this repo does not own: "external site" and a GitHub link, with no review date or reading time. The existing OpenCode Remote Control assertion looked up "GitHub ↗" over the whole page and is now ambiguous, so it is scoped to that card's article instead of relaxed.
|
PR preview: https://leoncheng.dev/previews/pr-241/ Deployed at 4dee72f, updated 2026-08-21 01:19 EDT / 2026-08-21 05:19 UTC. This preview refreshes on every push and is removed when the pull request closes. |
This was referenced Aug 21, 2026
leoncheng57
added a commit
that referenced
this pull request
Aug 21, 2026
The catalogue is the newest work, so it takes the most prominent slot instead of the last one #241 gave it. That puts an inlined article above the getAllGuides() cards, which are sorted by updatedAt descending, so the placement is called out in a comment: it reads like a sorting bug otherwise and would get "fixed" back. A test pins the new order, since nothing else would catch a silent re-sort. The existing scoped "GitHub ↗" lookups still resolve, as both already narrow to their own <article>. Closes #255
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.
Adds a card to the Guides index for Agent Skills, a catalogue of portable agent skills hosted in its own repository (
leoncheng57/agent-skills) and published tohttps://leoncheng.dev/agent-skills/.The card renders as the same terminal window as its siblings:
~/guides/agent-skillsin the title bar,$ Agent Skills, description,external site · GitHub ↗, the tag pills#agents #opencode #workflow, and abrowse skills ↗CTA.https://leoncheng.dev/agent-skills/does not exist yet. It only resolves once theagent-skillsrepo's Pages site is deployed — that repo needs Settings → Pages → Source = "GitHub Actions" and a successful deploy run.Merge that one first. This PR is otherwise standalone and reversible, but merging it ahead of the deploy publishes a dead link on
/guides. There is no cost to waiting.Approach
Followed the existing inlined-
<article>precedent already used for the OpenCode Remote Control card rather than adding anexternalUrlfield to theGuidetype or branchingGuideCard. The card is a one-off, and the type/component stay focused on on-site guides.<a href>, not a router<Link>— this is a full page navigation out of the SPA. Matches howAppsIndexRoutelinks to House Party Photo Hunt (also a same-domain project Pages site, also a bare anchor with notarget/rel).updatedAtand no reading time exist for a site this repo does not own, so the row isexternal site · GitHub ↗— mirroring the shape of the sibling cards' meta row (and itsGitHub ↗link) without inventing a date or a word count.agentsfrom the OpenHands guide,opencodefrom the personal-config cards,workflowfrom the manager/worker guide). Deliberately did not introduce a new#skillstag for a single card.Tests
One existing assertion broke, and it broke for a real reason:
guides-route.test.tsx→ "lists the OpenCode Remote Control interactive guide" didscreen.getByRole('link', { name: 'GitHub ↗' })across the whole page. The new card has its ownGitHub ↗meta link, sogetByRolenow matches two elements and throws. Scoped it to that card's<article>rather than loosening it togetAllBy…[0], so it still pins the exact href on the exact card.Added "links out to the externally hosted agent skills catalogue", asserting the title link and CTA both point at
https://leoncheng.dev/agent-skills/, the meta GitHub link points at the repo, and — negatively — that the card renders noupdated 20…and nomin read, so nobody later backfills a fake date.Assertions that were expected to break but did not, and why:
getByText(/8 chapters/)and/\+5 more/— these come fromGuideCard's chapter preview. The new card is inlined and has no chapters, so neither query became ambiguous.home-route.test.tsx— unaffected as predicted: the home page's recent-work list is built fromgetAllGuides(), and this card is JSX in the index route, not aGuide. Verified by running it.RouteMetadata.tsx— no change needed.STATIC_TITLESmaps SPA routes todocument.title; this card creates no route, and/agent-skills/is never handled by the router (the browser leaves the SPA entirely). Confirmed there is no/guides/*prefix fallback that would mis-handle it.Also updated
public/llms.txt— added an "Externally hosted entries" subsection under Reading guides, stating explicitly that these entries have no Markdown under this repository and pointing at the external repo. The surrounding section is entirelyraw.githubusercontent.comlinks to in-repo Markdown, so an entry that silently had no such source would have been misleading to a crawler.Verification
npm cinpm run lint(CI step 1)npm run test:run(CI step 2)npm run build(CI step 3)cp docs/index.html docs/404.htmlstepnpx tsc --noEmitVisually verified against a production build via
vite previewon a port confirmed free; the preview server was killed and the port released.docs/is not committed here. It is tracked but stale — last touched in #164, many commits back — and a fresh build produces a large pile of untracked assets thatmainnever committed. Reverted it to match convention.Pre-existing test failures (not from this change)
src/features/weather/routes/weather-routes.test.tsxfails 24 tests atwindow.localStorage.clear()withCannot read properties of undefined. Reproduced on a clean checkout oforigin/mainbefore touching anything, and the failure set is byte-identical after. It is a local Node-version artifact — Node 26 emitslocalStorage is not available because --localstorage-file was not providedand shadows jsdom's implementation. Out of scope for this PR; flagging it because it will bite anyone else running the suite on Node 26.