Skip to content
Back to skills

Uselink Api Docs

ASecurity

Scan backend controllers/routes, generate API documentation as HTML, and publish to uselink. Use when the user wants to share API docs with frontend devs, partners, or stakeholders who need to understand the API contract.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
developmentpythongojavakotlinbashnodeexpressfastapispringapi

Works with

  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add compilet-dev/agent-skill-uselink --skill uselink-api-docs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Uselink Api Docs?

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

Security grade badge for Uselink Api Docs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/compilet-dev-uselink-api-docs/badge)](https://www.skillsdirectory.com/skills/compilet-dev-uselink-api-docs)

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-api-docs
description: "Scan backend controllers/routes, generate API documentation as HTML, and publish to uselink. Use when the user wants to share API docs with frontend devs, partners, or stakeholders who need to understand the API contract."
allowed-tools:
  - Bash
  - Read
  - Write
  - Glob
  - Grep
---

# API Docs → Uselink

Scan a codebase for API endpoints, generate clean API documentation as HTML, and publish to uselink.

## When to Use

- "Generate API docs and share them"
- "Document our endpoints for the frontend team"
- "Share the API contract with the mobile dev"
- "What endpoints do we have? Publish a reference."

## Prerequisites

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

## Workflow

### 1. Detect framework and find endpoints

**Micronaut/Kotlin:**
```bash
grep -rn "@Controller\|@Get\|@Post\|@Put\|@Delete" \
  --include="*.kt" -l | grep -v build | grep -v test
```

**Express/Node:**
```bash
grep -rn "router\.\(get\|post\|put\|delete\)\|app\.\(get\|post\|put\|delete\)" \
  --include="*.ts" --include="*.js" -l | grep -v node_modules | grep -v test
```

**FastAPI/Python:**
```bash
grep -rn "@app\.\(get\|post\|put\|delete\)\|@router\.\(get\|post\|put\|delete\)" \
  --include="*.py" -l | grep -v __pycache__ | grep -v test
```

**Spring/Java:**
```bash
grep -rn "@RestController\|@GetMapping\|@PostMapping\|@RequestMapping" \
  --include="*.java" --include="*.kt" -l | grep -v build | grep -v test
```

### 2. Read each controller

For each controller file:
- Extract the base path (e.g., `@Controller("/api/v1/documents")`)
- Extract each endpoint: method, path, query params, body type, return type
- Extract auth requirements (e.g., `@Secured`, middleware)
- Read the request/response DTOs to get field names and types

### 3. Group endpoints

Group by resource/domain:
- `/api/v1/documents/*` → Documents
- `/api/v1/auth/*` → Authentication
- `/api/v1/comments/*` → Comments

### 4. Generate HTML

Write to `/tmp/uselink-api-docs-<project>-<timestamp>.html`.

```html
<!-- API header -->
<div class="card">
  <h3>{{PROJECT}} API Reference</h3>
  <p class="muted">{{ENDPOINT_COUNT}} endpoints · Generated {{DATE}}</p>
  <p>Base URL: <code>{{BASE_URL}}</code></p>
</div>

<!-- Table of contents -->
<h2>Endpoints</h2>
<table>
  <thead><tr><th>Method</th><th>Path</th><th>Description</th><th>Auth</th></tr></thead>
  <tbody>
    <tr>
      <td><span class="tag tag-done">POST</span></td>
      <td><code>{{PATH}}</code></td>
      <td>{{SHORT_DESC}}</td>
      <td>{{AUTH_REQUIREMENT}}</td>
    </tr>
  </tbody>
</table>

<!-- Per-resource sections -->
<h2>{{RESOURCE_NAME}}</h2>

<!-- Per-endpoint detail -->
<h3><span class="tag tag-done">POST</span> <code>{{PATH}}</code></h3>
<div class="card">
  <p>{{DESCRIPTION}}</p>

  <h4>Query Parameters</h4>
  <table>
    <thead><tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr></thead>
    <tbody>
      <tr><td><code>{{PARAM}}</code></td><td>{{TYPE}}</td><td>{{REQ}}</td><td>{{DESC}}</td></tr>
    </tbody>
  </table>

  <h4>Request Body</h4>
  <pre><code>{{REQUEST_JSON_EXAMPLE}}</code></pre>

  <h4>Response</h4>
  <pre><code>{{RESPONSE_JSON_EXAMPLE}}</code></pre>
</div>
```

Use color-coded method tags:
- `GET` → green (`tag-done`)
- `POST` → blue (`tag-nit`)
- `DELETE` → red (`tag-bug`)

### 5. Publish

```bash
uselink publish /tmp/uselink-api-docs-<project>-<timestamp>.html \
  --title "API Reference -- <project> -- <date>" \
  --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`.
- **Generate example JSON, don't guess.** Read the actual DTO/model classes to get field names, types, and defaults. Don't invent example values that don't match the schema.
- **Use snake_case in JSON examples if that's the wire format.** Check the project's serialization config (Jackson SNAKE_CASE, etc.) and match the actual API output.
- **Skip internal/admin endpoints unless asked.** If the docs are for external consumers, filter out admin-only routes. Ask the user if unclear.
- **Auth info matters.** Always show whether an endpoint requires authentication and what role/scope is needed. Stakeholders need this to understand access patterns.
- **HTML-escape all code examples.** JSON with angle brackets or ampersands in string values will corrupt the HTML.
- **Large APIs need a TOC.** If there are 20+ endpoints, the table of contents at the top is critical for navigation.

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.