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: SEO — keyword-rich metadata + ItemList & SoftwareSourceCode JSON-LD
Centralise APP_KEYWORDS in lib/version.ts (agent names, AGENTS.md / CLAUDE.md,
host names, intent variants) and surface them at three layers:
- root layout pulls from APP_KEYWORDS so every page inherits the vocabulary
- home page gains a long-form title/description and an ItemList JSON-LD listing
all ranked repos so each /repo/{id} URL is reachable to crawlers from /
- repo detail page emits per-repo keywords (slug, owner, language, every
agent label paired with the repo name) and adds a SoftwareSourceCode entity
alongside the existing breadcrumb so each page ranks for the project's name
AGENTS.md, code-review and quality-check skills updated to add app/page.tsx to
the JSON-LD allowlist.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
-`dangerouslySetInnerHTML` is allowed only for the existing server-built JSON-LD scripts (`app/layout.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`) with the `<` → `<` escape preserved. Reject any new use.
57
+
-`dangerouslySetInnerHTML` is allowed only for the existing server-built JSON-LD scripts (`app/layout.tsx`, `app/page.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`) with the `<` → `<` escape preserved. Reject any new use.
58
58
- External links include `rel="noopener noreferrer"`.
Copy file name to clipboardExpand all lines: .claude/skills/quality-check/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ Run the four checks below on any diff affecting UI or I/O. Report findings group
39
39
## Security
40
40
41
41
-**SQL parameterisation**: every query uses `?` placeholders. No string concatenation.
42
-
-**`dangerouslySetInnerHTML`** is allowed only for server-built JSON-LD (`app/layout.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`) and must keep the `<` → `<` escape. Any other use must be rejected.
42
+
-**`dangerouslySetInnerHTML`** is allowed only for server-built JSON-LD (`app/layout.tsx`, `app/page.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`) and must keep the `<` → `<` escape. Any other use must be rejected.
43
43
-**External URLs** in `<a target="_blank">` always include `rel="noopener noreferrer"`.
44
44
-**User input at every boundary** is validated: `parseRepoUrl` for repo URLs, `Number.isFinite` for numeric params, length caps on search strings.
45
45
-**Clone safety**: `git clone --depth 1 --single-branch`; never execute code from a clone (no `bun install`, no `npm install`, no post-clone scripts).
- We `git clone --depth 1 --single-branch` arbitrary URLs — safe by default. We never run post-clone scripts, never `npm install`, never execute code from the clone.
178
178
- SQL: all queries parameterised. No interpolation.
179
-
- HTML: React auto-escapes. The only `dangerouslySetInnerHTML` is server-built JSON-LD with `<` escaped to `<` (`app/layout.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`); never feed user-controlled strings into it.
179
+
- HTML: React auto-escapes. The only `dangerouslySetInnerHTML` is server-built JSON-LD with `<` escaped to `<` (`app/layout.tsx`, `app/page.tsx`, `app/repo/[id]/page.tsx`, `app/package/[registry]/[name]/page.tsx`); never feed user-controlled strings into it.
180
180
- Local-path mode reads files; never writes outside `data/` and the clone workspace passed to `shallowClone`.
181
181
- No auth yet (read-only dashboard). When auth lands (`tasks/0.6.0/01-opt-out-claim-flow.md`), do it via OAuth and gate DB writes per user.
"Agent Friendly Code — AI coding agent friendliness leaderboard for Claude Code, Cursor, Devin, Codex, Gemini, Aider, OpenHands, Pi";
23
+
constHOME_DESCRIPTION=
24
+
"Public leaderboard ranking GitHub, GitLab, and Bitbucket repos by how agent-friendly they are for Claude Code, Cursor, Devin, GPT-5 Codex, Gemini CLI, Aider, OpenHands, and Pi — per model, with AGENTS.md / CLAUDE.md, CI, tests, and dev-env signals.";
constdescription=`Agent-friendliness score for ${slug} across Claude Code, Cursor, Devin, and GPT-5 Codex — with the top improvements ranked by score-gain.`;
"Public dashboard ranking open-source repos by how friendly they are to AI coding agents (Claude Code, Cursor, Devin, GPT-5 Codex) — per model, across GitHub, GitLab, and Bitbucket.";
0 commit comments