Skip to content

guides: link out to the Agent Skills catalogue - #241

Merged
leoncheng57 merged 1 commit into
mainfrom
guides/agent-skills-entry
Aug 21, 2026
Merged

guides: link out to the Agent Skills catalogue#241
leoncheng57 merged 1 commit into
mainfrom
guides/agent-skills-entry

Conversation

@leoncheng57

@leoncheng57 leoncheng57 commented Aug 21, 2026

Copy link
Copy Markdown
Owner

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 to https://leoncheng.dev/agent-skills/.

The card renders as the same terminal window as its siblings: ~/guides/agent-skills in the title bar, $ Agent Skills, description, external site · GitHub ↗, the tag pills #agents #opencode #workflow, and a browse skills ↗ CTA.

⚠️ Dependency: this link 404s until the sibling PR ships

https://leoncheng.dev/agent-skills/ does not exist yet. It only resolves once the agent-skills repo'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 an externalUrl field to the Guide type or branching GuideCard. The card is a one-off, and the type/component stay focused on on-site guides.

  • Plain <a href>, not a router <Link> — this is a full page navigation out of the SPA. Matches how AppsIndexRoute links to House Party Photo Hunt (also a same-domain project Pages site, also a bare anchor with no target/rel).
  • Placement: last in the list. Everything above it is a first-party page on this site; the one off-site entry sits at the bottom. Also keeps the diff append-only.
  • Meta row shows only what is true. No updatedAt and no reading time exist for a site this repo does not own, so the row is external site · GitHub ↗ — mirroring the shape of the sibling cards' meta row (and its GitHub ↗ link) without inventing a date or a word count.
  • Tags are drawn from the vocabulary already on the page (agents from the OpenHands guide, opencode from the personal-config cards, workflow from the manager/worker guide). Deliberately did not introduce a new #skills tag 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" did screen.getByRole('link', { name: 'GitHub ↗' }) across the whole page. The new card has its own GitHub ↗ meta link, so getByRole now matches two elements and throws. Scoped it to that card's <article> rather than loosening it to getAllBy…[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 no updated 20… and no min 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 from GuideCard'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 from getAllGuides(), and this card is JSX in the index route, not a Guide. Verified by running it.
  • RouteMetadata.tsx — no change needed. STATIC_TITLES maps SPA routes to document.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 entirely raw.githubusercontent.com links to in-repo Markdown, so an entry that silently had no such source would have been misleading to a crawler.

Verification

step result
npm ci ok
npm run lint (CI step 1) clean
npm run test:run (CI step 2) 390 passed (was 389), same 24 pre-existing failures — see below
npm run build (CI step 3) ok, incl. the cp docs/index.html docs/404.html step
npx tsc --noEmit 20 pre-existing errors, none in changed files; not run by CI

Visually verified against a production build via vite preview on 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 that main never committed. Reverted it to match convention.

Pre-existing test failures (not from this change)

src/features/weather/routes/weather-routes.test.tsx fails 24 tests at window.localStorage.clear() with Cannot read properties of undefined. Reproduced on a clean checkout of origin/main before touching anything, and the failure set is byte-identical after. It is a local Node-version artifact — Node 26 emits localStorage is not available because --localstorage-file was not provided and shadows jsdom's implementation. Out of scope for this PR; flagging it because it will bite anyone else running the suite on Node 26.

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.
@github-actions

Copy link
Copy Markdown

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.

@leoncheng57
leoncheng57 merged commit ba2d3d8 into main Aug 21, 2026
4 checks passed
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
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