You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: fix site template, add QoL features, update docs and scaffold
Fix parse_skills() to handle YAML frontmatter correctly.
Add collapsible categories, search/filter, back-to-top, toast, mobile nav.
Fix install steps rendering raw HTML (safe filter).
Update README/AGENTS/CLAUDE/CONTRIBUTING/SECURITY for site-template.
Rewrite scaffold pages.yml.j2 for unified template, add site.json.j2 and mcp-tools.json.j2.
Upgrade validate.yml to enforce full registry.json schema.
Made-with: Cursor
Copy file name to clipboardExpand all lines: AGENTS.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,8 @@ This is a **meta-repository** -- it does not contain a Cursor plugin or MCP serv
10
10
11
11
-**`registry.json`** -- single source of truth for all tool repos (9 entries). The catalog site and README tables are derived from it.
12
12
-**`standards/`** -- 9 Markdown docs defining conventions for folder structure, CI/CD, plugin manifests, GitHub Pages, commit conventions, README format, AGENTS.md format, and versioning.
13
-
-**`scaffold/`** -- Python repo generator (`create-tool.py`) with 18 Jinja2 templates that produce a fully standards-compliant new tool repo.
13
+
-**`scaffold/`** -- Python repo generator (`create-tool.py`) with Jinja2 templates that produce a fully standards-compliant new tool repo.
14
+
-**`site-template/`** -- shared GitHub Pages build system for tool repos. `build_site.py` reads `.cursor-plugin/plugin.json`, `site.json`, `skills/`, `rules/`, and `mcp-tools.json` from a tool repo and renders `docs/index.html` via `template.html.j2`. Self-hosts Inter and JetBrains Mono fonts. Tool repos clone this directory in CI and run the build script at deploy time.
14
15
-**`docs/`** -- static GitHub Pages catalog site (vanilla HTML/CSS/JS, no build step). Reads `registry.json` at runtime to render tool cards.
15
16
-**`assets/`** -- logo image.
16
17
-**`.github/workflows/`** -- CI/CD for this repo (validate, pages, release, release-drafter, stale, codeql, dependency-review, label-sync).
@@ -178,6 +179,19 @@ Pure documentation -- no code. Each file documents a convention derived from ana
178
179
- CI runs a scaffold dry-run test on every push. If you add a new required file, add a `test -f` check to the `validate.yml` scaffold test step.
179
180
- The `LICENSE.j2` template has conditional logic for MIT, Apache-2.0, and CC-BY-NC-ND-4.0. If adding a new license option, update both the template and the `LICENSE_FILES`/`SPDX` dicts in `create-tool.py`.
180
181
182
+
## When editing site-template/
183
+
184
+
-`site-template/build_site.py` is the build script that generates GitHub Pages sites for tool repos. It reads data from the tool repo and renders HTML via `template.html.j2`.
185
+
-`site-template/template.html.j2` is a Jinja2 template producing a single-page site with: sticky nav, hero with animated stats, collapsible MCP tool categories, search/filter, back-to-top, toast copy feedback, and mobile hamburger nav.
186
+
-`site-template/fonts/` contains self-hosted Inter (400/500/700) and JetBrains Mono (400) woff2 files.
187
+
-`site-template/SETUP-PROMPT.md` is a copy-paste prompt for applying the template to a new tool repo.
188
+
- Tool repos consume this template via their `pages.yml` workflow, which clones Developer-Tools-Directory with sparse checkout and runs `build_site.py --repo-root . --out docs`.
189
+
- Data sources in each tool repo: `.cursor-plugin/plugin.json` (metadata), `site.json` (branding/colors), `skills/*/SKILL.md` (parsed for name/description via frontmatter), `rules/*.mdc` (parsed for name/scope/description), `mcp-tools.json` (manually maintained tool list).
190
+
- Changes to the template or build script affect all tool repos on their next deploy. Test locally before pushing:
-`docs/index.html` is the single-page catalog site. It embeds a copy of `registry.json` inside a `<script type="application/json" id="registry-data">` tag as a fallback for when the direct fetch fails.
**Registry** tracks every tool repo. **Standards** document conventions for CI/CD, folder structure, manifests, and versioning. **Scaffold** generates new repos that follow those standards automatically.
46
+
**Registry** tracks every tool repo. **Standards** document conventions for CI/CD, folder structure, manifests, and versioning. **Scaffold** generates new repos that follow those standards automatically.**Site template** provides a shared build system for tool repo GitHub Pages sites.
46
47
47
48
## Tools
48
49
@@ -172,6 +173,11 @@ Developer-Tools-Directory/
172
173
assets/ Logo
173
174
docs/ GitHub Pages catalog site
174
175
scaffold/ Repo generator + Jinja2 templates
176
+
site-template/ Shared GitHub Pages build system for tool repos
Copy file name to clipboardExpand all lines: SECURITY.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,7 @@ This repository is a meta-repository containing:
23
23
| registry.json | Schema poisoning via malicious PR (fake repo URLs, XSS in description fields) | CI validates schema on every PR. The catalog site renders text content via `textContent`, not `innerHTML`. |
24
24
| GitHub Pages site | XSS via registry data rendered in the DOM | Tool descriptions are inserted via `textContent`. No `innerHTML` or `eval` is used with registry data. |
25
25
| GitHub Actions workflows | Workflow injection via PR title/body in release-drafter | Release-drafter uses the official action with no custom script interpolation of PR content. |
26
+
| Site template (supply chain) | Tool repos clone this repo in CI to build their Pages site. A compromised template could inject malicious HTML/JS into all tool repo sites. | Template changes are reviewed before merge. Tool repos pin to `main` branch. The build script does not execute arbitrary code from tool repos -- it only reads JSON and Markdown files. |
0 commit comments