Git Repo Brief — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Git Repo Brief (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server that generates structured briefs for public GitHub repositories. Get comprehensive repository information including overview, key files, release notes, and activity snapshots.
npm install
npm run build# Run directly
npm start
# Or after building
node dist/cli.jsnpm start -- --http
# or
HTTP_PORT=3001 node dist/cli.js --httpAdd to your MCP client configuration (e.g., Claude Desktop):
{
"mcpServers": {
"git-repo-brief": {
"command": "node",
"args": ["/path/to/git-repo-brief/dist/cli.js"]
}
}
}Get a comprehensive overview of a GitHub repository.
Input:
{
"repo_url": "https://github.com/owner/repo"
}Output:
{
"ok": true,
"data": {
"name": "repo",
"full_name": "owner/repo",
"description": "Repository description",
"stars": 1234,
"forks": 567,
"language": "TypeScript",
"topics": ["mcp", "github"],
"license": "MIT",
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z",
"default_branch": "main",
"homepage": "https://example.com",
"owner": {
"login": "owner",
"avatar_url": "https://github.com/owner.png",
"type": "User"
}
},
"meta": {
"source": "https://api.github.com/repos/owner/repo",
"retrieved_at": "2024-01-15T10:00:00Z",
"pagination": { "next_cursor": null },
"warnings": []
}
}Fetch contents of key files from a repository.
Input:
{
"repo_url": "https://github.com/owner/repo",
"paths": ["README.md", "package.json"]
}Output:
{
"ok": true,
"data": {
"files": [
{
"path": "README.md",
"content": "# Project\n\nDescription...",
"size": 1234,
"encoding": "utf-8"
},
{
"path": "package.json",
"content": "{\"name\": \"project\"}",
"size": 456,
"encoding": "utf-8"
}
],
"default_branch": "main"
},
"meta": {
"retrieved_at": "2024-01-15T10:00:00Z",
"warnings": []
}
}Get recent release notes from a repository.
Input:
{
"repo_url": "https://github.com/owner/repo",
"limit": 5
}Output:
{
"ok": true,
"data": {
"releases": [
{
"tag_name": "v1.0.0",
"name": "Version 1.0.0",
"body": "## Changes\n- Feature A\n- Bug fix B",
"published_at": "2024-01-01T00:00:00Z",
"prerelease": false,
"draft": false,
"html_url": "https://github.com/owner/repo/releases/tag/v1.0.0"
}
],
"total_count": 1
},
"meta": {
"retrieved_at": "2024-01-15T10:00:00Z",
"pagination": { "next_cursor": null },
"warnings": []
}
}Get a snapshot of recent repository activity.
Input:
{
"repo_url": "https://github.com/owner/repo"
}Output:
{
"ok": true,
"data": {
"last_commit_date": "2024-01-14T15:30:00Z",
"last_commit_message": "fix: resolve parsing issue",
"open_issues_count": 25,
"open_prs_count": 8,
"contributors_count": 42,
"watchers_count": 100,
"has_wiki": true,
"has_discussions": true
},
"meta": {
"retrieved_at": "2024-01-15T10:00:00Z",
"warnings": []
}
}When running in HTTP mode:
GET /health - Health checkGET /tools - List available toolsPOST /tools/repo_overview - Get repository overviewPOST /tools/extract_key_files - Extract key filesPOST /tools/release_notes - Get release notesPOST /tools/activity_snapshot - Get activity snapshotcurl -X POST http://localhost:3000/tools/repo_overview \
-H "Content-Type: application/json" \
-d '{"repo_url": "https://github.com/microsoft/vscode"}'| Variable | Default | Description |
|---|---|---|
GITHUB_TOKEN | - | GitHub personal access token (optional, increases rate limit from 60 to 5000 req/hour) |
REQUEST_DELAY_MS | 100 | Delay between requests for rate limiting |
REQUEST_TIMEOUT_MS | 30000 | Request timeout in milliseconds |
TRANSPORT_MODE | stdio | Transport mode: stdio or http |
HTTP_PORT | 3000 | HTTP server port (when using HTTP transport) |
The server implements polite rate limiting:
All responses follow the standard envelope format:
{
"ok": true,
"data": { ... },
"meta": {
"source": "optional API URL",
"retrieved_at": "ISO-8601 timestamp",
"pagination": { "next_cursor": null },
"warnings": []
}
}{
"ok": false,
"error": {
"code": "INVALID_INPUT | UPSTREAM_ERROR | RATE_LIMITED | TIMEOUT | PARSE_ERROR | INTERNAL_ERROR",
"message": "Human readable message",
"details": { ... }
},
"meta": {
"retrieved_at": "ISO-8601 timestamp"
}
}# Install dependencies
npm install
# Run in development mode
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Type check
npm run typecheck
# Build
npm run build# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run with coverage
npm run test:coverageMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.