Skip to content
Back to skills

Uselink Repo Summary

ASecurity

Scan a GitHub repo (local or remote), generate an architecture overview as HTML, and publish to uselink. Use when the user wants to share a repo summary, architecture overview, or codebase tour with stakeholders who don't have repo access.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aigoshellbashnodedockergit

Works with

  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add compilet-dev/agent-skill-uselink --skill uselink-repo-summary --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Uselink Repo Summary?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Uselink Repo Summary
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/compilet-dev-uselink-repo-summary/badge)](https://www.skillsdirectory.com/skills/compilet-dev-uselink-repo-summary)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: uselink-repo-summary
description: "Scan a GitHub repo (local or remote), generate an architecture overview as HTML, and publish to uselink. Use when the user wants to share a repo summary, architecture overview, or codebase tour with stakeholders who don't have repo access."
allowed-tools:
  - Bash
  - Read
  - Write
  - Glob
  - Grep
---

# Repo Summary → Uselink

Scan a codebase, generate a clean architecture overview as HTML, and publish it to uselink as a shareable link.

## When to Use

- "Summarize this repo and share it"
- "Create an architecture overview for the PM"
- "Share the codebase structure with the new hire"
- User provides a GitHub URL and wants a summary page

## Prerequisites

```bash
which uselink || echo "MISSING"
test -f ~/.uselink/config.json && echo "OK" || echo "NO_CONFIG"
```

If either fails, tell the user to install (`npm install -g uselink`) or configure (`uselink login`). Do not proceed.

## Workflow

### 1. Get the repo

**Local repo (current directory):**
```bash
git remote get-url origin 2>/dev/null
basename "$(git rev-parse --show-toplevel)"
```

**Remote GitHub URL:**
```bash
gh repo clone <owner/repo> /tmp/uselink-repo-<name> -- --depth 1
cd /tmp/uselink-repo-<name>
```

### 2. Gather data

```bash
# Project name and description
gh repo view --json name,description 2>/dev/null

# Languages
gh repo view --json languages 2>/dev/null
find . -type f -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/build/*" \
  | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -10

# Directory structure (top 2 levels)
find . -maxdepth 2 -type d -not -path "*/.git*" -not -path "*/node_modules*" -not -path "*/build*" | sort

# Key files
for f in README.md CLAUDE.md package.json build.gradle.kts settings.gradle.kts Cargo.toml go.mod pyproject.toml Makefile docker-compose.yml; do
  test -f "$f" && echo "FOUND: $f"
done

# Git stats
git log --oneline -20
git shortlog -sn --no-merges | head -10
git log -1 --format="%ai"
```

### 3. Read key files

Read the first 100 lines of:
- `README.md` (project description)
- `CLAUDE.md` (architecture notes, if present)
- Main config file (`package.json`, `build.gradle.kts`, etc.)
- Entry point files (scan for `main`, `index`, `app`)

### 4. Generate HTML

Write to `/tmp/uselink-repo-summary-<name>-<timestamp>.html`.

Use the base HTML template with these sections:

```html
<!-- Summary card -->
<div class="card">
  <div class="summary-grid">
    <div class="summary-stat"><div class="num">{{TOTAL_FILES}}</div><div class="label">Files</div></div>
    <div class="summary-stat"><div class="num">{{CONTRIBUTORS}}</div><div class="label">Contributors</div></div>
    <div class="summary-stat"><div class="num">{{COMMITS}}</div><div class="label">Commits</div></div>
    <div class="summary-stat"><div class="num">{{LAST_ACTIVITY}}</div><div class="label">Last active</div></div>
  </div>
</div>

<!-- Tech Stack -->
<h2>Tech Stack</h2>
<table>
  <thead><tr><th>Layer</th><th>Technology</th></tr></thead>
  <tbody><!-- rows --></tbody>
</table>

<!-- Architecture -->
<h2>Architecture</h2>
<div class="card"><pre><code>{{ASCII_DIAGRAM}}</code></pre></div>

<!-- Directory Structure -->
<h2>Directory Structure</h2>
<div class="card"><pre><code>{{TREE}}</code></pre></div>

<!-- Key Modules -->
<h2>Key Modules</h2>
<!-- One card per module with path + purpose -->

<!-- How to Run -->
<h2>Getting Started</h2>
<div class="card"><pre><code>{{SETUP_COMMANDS}}</code></pre></div>

<!-- Recent Activity -->
<h2>Recent Activity</h2>
<table>
  <thead><tr><th>Commit</th><th>Author</th><th>Date</th></tr></thead>
  <tbody><!-- last 10 commits --></tbody>
</table>
```

Use the same inline CSS from uselink-report's base HTML shell (system font, cards, dark mode support).

### 5. Publish

```bash
uselink publish /tmp/uselink-repo-summary-<name>-<timestamp>.html \
  --title "Repo Summary -- <name>" \
  --format html
```

Return the URL to the user.

## Gotchas

- **NEVER set background or color on body, table, th, td, code, or pre.** uselink's viewer injects theme-adaptive CSS that handles light/dark mode automatically. Any hardcoded color in published HTML overrides the viewer's theme and forces a white background in dark mode. Only style layout (padding, margins, borders, border-radius, font-size, grid). Use `opacity` for muted text instead of `color: #888`.
- **Remote repos need `gh` CLI.** If the user gives a GitHub URL but `gh` is not installed, fall back to `git clone` with HTTPS. If that also fails (private repo), tell the user to clone it locally first.
- **Don't include secrets or env files in the summary.** Skip `.env`, `credentials.json`, and similar files when scanning. Never read or display their contents.
- **Large repos need sampling.** For repos with 1000+ files, show the top-level structure and 3-5 most important modules, not every file. Use `find -maxdepth 2` and read only the key files.
- **HTML must use inline CSS only.** Uselink strips external stylesheets. All styles go in a `<style>` block in `<head>`.
- **HTML-escape all repo-sourced strings.** Commit messages, file paths, and README content can contain `<`, `>`, `&` that corrupt the HTML.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.