GUIDE

Install, use, contribute.

Everything about the gallery in one place — from loading your first extension in Chrome to publishing your own project.

01 / INSTALL

Install an extension in Chrome

Gallery projects are open-source folders, not Web Store packages, so you load them yourself. It takes under a minute.

  1. Pick a project. Open All repos, filter by platform (ChatGPT, Gemini, GitHub, Lovable, Browser) and read the card.
  2. Download the source. Press ↓ Download ZIP on the card. The ZIP contains only that extension's folder. Extract it somewhere permanent.
  3. Open the extensions page. Type chrome://extensions in the address bar and turn on Developer mode (top right).
  4. Load it. Click Load unpacked and select the extracted folder — the one that directly contains manifest.json.
  5. Use it. UI themes apply when you open the target site (for example chatgpt.com or gemini.google.com). Tools add a toolbar icon; pin it from the puzzle menu.
Check permissions. Always review what an extension asks for on chrome://extensions → Details. Community contributions are not an automatic safety guarantee; the code is open so you can inspect it first.

Updating or removing: to update, download the new ZIP, replace the folder and press the reload ↻ icon on the extension card. To remove it, use Remove on the same card.

02 / CATALOG

How the gallery works

There are no hand-written project lists. The site reads catalog.json, which is generated from the repository folders.

  1. A contributor adds Tools/new-tool/manifest.json with a README.md, or a UI design under a platform/style folder with design.md.
  2. The Pull Request runs Validate gallery and automatic-discovery integration tests.
  3. A maintainer reviews and merges it to main.
  4. Publish automatic gallery rebuilds catalog.json and deploys with GitHub Actions.
  5. The new card, search results, platform filters and project counts appear on the site.

Only merged projects appear — a Pull Request alone never publishes code. Each card links to the project's documentation and its source folder, and builds a per-extension ZIP at deploy time.

03 / SUBMIT

Submit your own project

Fork the repository, add one folder, open a Pull Request. You never edit app.js, the HTML or any filter buttons.

Tools/
└── your-new-tool/
    ├── manifest.json
    ├── README.md
    ├── popup.html
    ├── popup.js
    └── gallery.json   # optional card customization

Need a starting point? Copy the starter template ↗ and read the contributor instructions ↗. Structural validation is automatic, but security, copyright and privacy reviews are still done by a person — never submit secrets or misleading author attribution.

04 / METADATA

Customize the card with gallery.json

A valid extension is published from its manifest.json and documentation alone. Add gallery.json next to the manifest only to customize its card.

{
  "name": "Focus Tabs",
  "description": "A simple tab organizer for deep work.",
  "platform": "browser",
  "style": "Productivity Tool",
  "tags": ["Tabs", "Productivity", "Lightweight"],
  "icon": "FT",
  "palette": ["#152d36", "#1e5160", "#79d9c9"],
  "author": {
    "name": "Your GitHub username",
    "url": "https://github.com/your-username"
  },
  "preview": "screenshots/preview.png"
}
FieldRequiredDefault
nameNomanifest name
descriptionNomanifest description
platformNoparent UI platform, or inferred category for Tools
styleNoplatform's style folder / Browser Tool
tagsNocategory and style
iconNoplatform monogram
paletteNothree deterministic hex gradient colors
authorNono author claim unless provided
previewNogenerated gradient illustration

Rules: at most six tags, exactly three 6-digit hex palette colors, a GitHub profile URL for author.url, and local PNG / JPG / WebP / SVG preview files inside the extension folder only.

05 / LOCAL

Run and test locally

Requires Node.js 22 or newer. From the repository root:

node scripts/build-catalog.mjs
node scripts/test-catalog.mjs
node scripts/validate.mjs
node scripts/serve-gallery.mjs

Open http://127.0.0.1:4173 and press Ctrl+C to stop. Opening index.html through file:// is not supported because the page loads catalog.json with fetch.

06 / MAINTAINERS

One-time GitHub Pages setup

  1. Open Settings → Pages ↗ and change Build and deployment → Source from Deploy from a branch to GitHub Actions.
  2. Open Actions → Publish automatic gallery ↗, press Run workflow and choose main, once.

After that every merge to main regenerates and deploys the catalog. If Pages stays on main /docs, the site can only use the committed catalog.json snapshot.

Search indexing: submit sitemap.xml in Google Search Console (URL-prefix property) and use Request indexing. Keep the verification file; indexing is never guaranteed.

07 / FAQ

Common questions

My project is not on the site.

Only merged projects are published. Check that the Pull Request passed validation, was merged to main, and that the publish workflow finished.

The Download ZIP button does nothing.

Per-extension ZIP files are built during a successful GitHub Pages deployment and are not committed to Git. Make sure Pages uses the GitHub Actions source.

The contributors list is empty.

Contributors load from GitHub's public API at runtime. Rate limits or network failures show a link to GitHub instead — counts are never invented.

Chrome says “Manifest file is missing or unreadable”.

You selected the wrong folder. Choose the directory that directly contains manifest.json, not its parent.

Do the animations slow my device?

Effects are lightweight and pause when the tab is hidden. They are disabled when your system requests reduced motion.