From 6a6e2c6f17c8986ccbdd93d9e8c81c8cbdf6d0c3 Mon Sep 17 00:00:00 2001 From: Leon Cheng Date: Fri, 21 Aug 2026 03:06:12 -0400 Subject: [PATCH] guides: lead the index with the Agent Skills card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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
. Closes #255 --- .../guides/routes/GuidesIndexRoute.tsx | 87 ++++++++++--------- .../guides/routes/guides-route.test.tsx | 18 ++++ 2 files changed, 64 insertions(+), 41 deletions(-) diff --git a/src/features/guides/routes/GuidesIndexRoute.tsx b/src/features/guides/routes/GuidesIndexRoute.tsx index 9e29c471..f547929b 100644 --- a/src/features/guides/routes/GuidesIndexRoute.tsx +++ b/src/features/guides/routes/GuidesIndexRoute.tsx @@ -28,11 +28,15 @@ export default function GuidesIndexRoute(): ReactElement {

- {guides.map((guide) => ( - - ))} - {/* Interactive page, not a markdown guide, so it is listed here - explicitly instead of coming from getAllGuides(). */} + {/* Deliberately rendered FIRST, above the date-sorted markdown guides + from getAllGuides() — this is not a sorting bug, so please do not + "fix" it by moving the card back down. The catalogue is the newest + work and gets the most prominent slot on the page (issue #255, + overriding the bottom placement chosen in #241). + + Hosted in its own repository and published to + leoncheng.dev/agent-skills, so this card links out of the SPA with + a plain anchor rather than a router Link. */}

- - OpenCode Remote Control - - BETA + Agent Skills

- Control local OpenCode sessions from your phone over a private - tailnet, with ntfy pushes that deep-link into the exact session. - Interactive setup builder, daily commands, notification - customization, and troubleshooting on one page. + A catalogue of portable agent skills: reusable, on-demand + workflow instructions a coding agent loads only when a task + calls for them. Written for OpenCode and compatible with any + agent that reads a SKILL.md file, so the same skill works in + Claude Code or Cursor. Every skill page carries copy-paste + install commands.

- updated 2026-08-13 - - interactive guide + external site - + GitHub ↗

+
    +
  • #agents
  • +
  • #opencode
  • +
  • #workflow
  • +

- read guide → + browse skills ↗

- {/* Hosted in its own repository and published to - leoncheng.dev/agent-skills, so this card links out of the SPA - with a plain anchor rather than a router Link. It is listed last - because everything above it is a first-party page on this site. */} + {guides.map((guide) => ( + + ))} + {/* Interactive page, not a markdown guide, so it is listed here + explicitly instead of coming from getAllGuides(). */}

- Agent Skills + + OpenCode Remote Control + + BETA

- A catalogue of portable agent skills: reusable, on-demand - workflow instructions a coding agent loads only when a task - calls for them. Written for OpenCode and compatible with any - agent that reads a SKILL.md file, so the same skill works in - Claude Code or Cursor. Every skill page carries copy-paste - install commands. + Control local OpenCode sessions from your phone over a private + tailnet, with ntfy pushes that deep-link into the exact session. + Interactive setup builder, daily commands, notification + customization, and troubleshooting on one page.

- external site + updated 2026-08-13 + + interactive guide - + GitHub ↗

-
    -
  • #agents
  • -
  • #opencode
  • -
  • #workflow
  • -

- browse skills ↗ + read guide →

diff --git a/src/features/guides/routes/guides-route.test.tsx b/src/features/guides/routes/guides-route.test.tsx index 636b9c31..5dbed41f 100644 --- a/src/features/guides/routes/guides-route.test.tsx +++ b/src/features/guides/routes/guides-route.test.tsx @@ -159,6 +159,24 @@ describe('guides index route', () => { expect(card.queryByText(/updated 20/)).not.toBeInTheDocument() expect(card.queryByText(/min read/)).not.toBeInTheDocument() }) + + it('leads the index with the agent skills card, ahead of the date-sorted guides', () => { + render( + + + + ) + + const skillsCard = screen.getByRole('link', { name: 'Agent Skills' }).closest('article')! + const cards = Array.from(skillsCard.parentElement!.querySelectorAll(':scope > article')) + + // Deliberate placement, not a sorting bug: the catalogue outranks the + // markdown guides even though those are sorted by updatedAt descending. + // Pinned here so a future refactor cannot quietly re-sort it back down. + expect(cards.length).toBeGreaterThan(1) + expect(cards[0]).toBe(skillsCard) + expect(cards.indexOf(screen.getByRole('link', { name: GUIDE_TITLE }).closest('article')!)).toBeGreaterThan(0) + }) }) describe('guide site chrome', () => {