Skip to content

Repository files navigation

mattriley.tools

A static Astro site that lists Matt Riley's Homebrew tools, Neovim plugins, agent skills, and public template repositories.

Stack

Data flow

The site renders from generated data files:

  • Source of truth for Homebrew tools: homebrew-tools/Formula/*.rb
  • Source of truth for template repos: public, non-archived matt-riley/* GitHub repositories where GitHub marks the repo as a template
  • Source of truth for Neovim plugins: public, non-archived matt-riley/* GitHub repositories whose names contain .nvim
  • Source of truth for agent skills: agent-skills/skills/*/SKILL.md
  • Generator: scripts/generate-tools-data.mjs
  • Generated artifacts:
    • src/data/tools.generated.ts
    • src/data/templates.generated.ts
    • src/data/plugins.generated.ts
    • src/data/skills.generated.ts
    • public/generated/readme-images/

pnpm run generate:data owns all generated outputs. It syncs README markdown into the generated data modules and mirrors any allowed README image assets into public/generated/readme-images/ so the site can serve them locally.

The generated Homebrew tool data currently focuses on:

  • formula name
  • packaged version in the tap
  • description
  • homepage
  • synced repository README content when the homepage points at a GitHub repository
  • license
  • platform support
  • install command
  • installed binary name

The generated plugin data currently focuses on:

  • repository name and slug
  • description
  • homepage URL
  • synced repository README content
  • latest Git tag version
  • last updated timestamp
  • language and topics
  • lazy.nvim install snippet
  • vim.pack install snippet

The generated template data currently focuses on:

  • repository name and slug
  • description
  • homepage URL
  • synced repository README content
  • last updated timestamp
  • language and topics

The generated skill data currently focuses on:

  • skill directory slug and frontmatter name
  • description, compatibility, license, version, and maturity
  • upstream SKILL.md source and raw URLs
  • rendered SKILL.md instruction content with frontmatter stripped

This repo assumes the tap's duplicate cask/formula issue is resolved elsewhere and that the site consumes the formula-only end state for the Homebrew catalog.

Local development

From the repository root:

export NODE_AUTH_TOKEN=<github-token-with-package-read-access>
pnpm install
pnpm run generate:data -- --tap-path ../homebrew-tools --skills-path ../agent-skills
pnpm dev

If your tap includes formulas whose homepages point at private GitHub repositories, set TOOL_REPOS_GITHUB_TOKEN to a token that can read those repos before running pnpm run generate:data. The generator uses that access to identify and exclude private repositories from the published site, then refreshes mirrored README image assets under public/generated/readme-images/ for the remaining public entries.

If your tap or agent-skills checkout is somewhere else, point the generator at it explicitly:

pnpm run generate:data -- --tap-path /absolute/path/to/homebrew-tools --skills-path /absolute/path/to/agent-skills

The repo now consumes the published Snurble design-system packages from GitHub Packages, so fresh installs need NODE_AUTH_TOKEN set before pnpm install. The committed .npmrc keeps only the @matt-riley scope pointed at https://npm.pkg.github.com, and the mise install task writes the auth token into the user-level ~/.npmrc at runtime. The install task prefers NODE_AUTH_TOKEN and falls back to MISE_GITHUB_TOKEN, which is already available in CI via mise-action.

Commands

pnpm run generate:data  # Regenerate generated catalog data from the tap, GitHub, and agent-skills checkout
pnpm dev                # Start local dev server
pnpm build              # Run astro check and build static output
pnpm preview            # Preview the production build locally
pnpm lint               # Run oxlint across src/, scripts/, and tests/
pnpm test               # Run the Vitest suite
pnpm format             # Format the repository with oxfmt
pnpm format:check       # Verify formatting

Automatic updates

.github/workflows/sync-tools-data.yml syncs site data on a schedule (every 6 hours) and can also be triggered manually via workflow_dispatch. It checks out the public homebrew-tools tap and agent-skills catalog, uses the repo's existing GitHub App credentials (vars.APP_ID and secrets.PRIVATE_KEY) to identify any private tap-backed repositories so they can be excluded from the published site, regenerates and formats generated catalog outputs, and commits if any of those generated outputs changed.

Deployment remains intentionally undecided; the site output is plain static Astro so hosting can be chosen later.

License

MIT

About

Astro site for showcasing Homebrew tools and Neovim plugins with synced GitHub metadata.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages