home / skills / levnikolaevich / claude-code-skills / ln-775-api-docs-generator

ln-775-api-docs-generator skill

/ln-775-api-docs-generator

This skill configures Swagger/OpenAPI documentation for .NET or FastAPI projects, generating secure, versioned API specs and UI via MCP-guided patterns.

npx playbooks add skill levnikolaevich/claude-code-skills --skill ln-775-api-docs-generator

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
6.7 KB
---
name: ln-775-api-docs-generator
description: Configures Swagger/OpenAPI documentation
---

# ln-775-api-docs-generator

**Type:** L3 Worker
**Category:** 7XX Project Bootstrap
**Parent:** ln-770-crosscutting-setup

Configures API documentation with Swagger/OpenAPI.

---

## Overview

| Aspect | Details |
|--------|---------|
| **Input** | Context Store from ln-770 |
| **Output** | Swagger/OpenAPI configuration |
| **Stacks** | .NET (Swashbuckle), Python (FastAPI built-in) |

---

## Phase 1: Receive Context + Analyze API Structure

Accept Context Store and scan for API endpoints.

**Required Context:**
- `STACK`: .NET or Python
- `PROJECT_ROOT`: Project directory path

**Idempotency Check:**
- .NET: Grep for `AddSwaggerGen` or `UseSwagger`
- Python: FastAPI has built-in OpenAPI, check for custom configuration
- If found: Return `{ "status": "skipped" }`

**API Analysis:**
1. Scan for controller/router files
2. Identify authentication method (JWT, OAuth2, API Key)
3. Check for API versioning

---

## Phase 2: Research Documentation Standards

Use MCP tools for current documentation.

**For .NET:**
```
MCP ref: "Swashbuckle ASP.NET Core OpenAPI Swagger configuration"
Context7: /domaindrivendev/Swashbuckle.AspNetCore
```

**For Python:**
```
MCP ref: "FastAPI OpenAPI documentation customization"
Context7: /tiangolo/fastapi
```

**Key Patterns to Research:**
1. OpenAPI 3.0/3.1 specification
2. Security scheme definitions
3. XML comments integration (.NET)
4. Response examples and schemas
5. API versioning documentation

---

## Phase 3: Decision Points

### Q1: API Information

| Field | Description | Required |
|-------|-------------|----------|
| Title | API name | ✓ Yes |
| Version | API version (v1, v2) | ✓ Yes |
| Description | Brief description | Optional |
| Contact | Support contact | Optional |
| License | API license | Optional |

### Q2: Security Scheme

| Scheme | Use Case | OpenAPI Type |
|--------|----------|--------------|
| **JWT Bearer** (Recommended) | Token in Authorization header | `http` + `bearer` |
| **API Key** | Key in header or query | `apiKey` |
| **OAuth2** | Full OAuth2 flow | `oauth2` |
| **None** | Public API | No security |

### Q3: Documentation Features

| Feature | .NET | Python | Default |
|---------|------|--------|---------|
| XML Comments | ✓ Supported | N/A | ✓ Enable |
| Response Examples | ✓ Manual | ✓ Pydantic | ✓ Enable |
| Request Validation | ✓ Annotations | ✓ Pydantic | ✓ Enable |
| Try It Out | ✓ Yes | ✓ Yes | ✓ Enable |

---

## Phase 4: Generate Configuration

### .NET Output Files

| File | Purpose |
|------|---------|
| `Extensions/SwaggerExtensions.cs` | Swagger service registration |
| `*.csproj` (update) | Enable XML documentation |

**Generation Process:**
1. Use MCP ref for current Swashbuckle API
2. Generate SwaggerExtensions with:
   - AddEndpointsApiExplorer
   - AddSwaggerGen with OpenApiInfo
   - Security definition (if auth detected)
   - XML comments inclusion
3. Update csproj for documentation generation

**Packages to Add:**
- `Swashbuckle.AspNetCore`

**Registration Code:**
```csharp
builder.Services.AddSwaggerServices();
// ...
app.UseSwaggerServices();
```

**csproj Update:**
```xml
<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
  <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
```

### Python Output Files

| File | Purpose |
|------|---------|
| `core/openapi_config.py` | OpenAPI customization |

**Generation Process:**
1. Use MCP ref for FastAPI OpenAPI customization
2. Generate openapi_config.py with:
   - Custom OpenAPI schema
   - Security scheme definitions
   - Tags and descriptions
3. FastAPI generates OpenAPI automatically

**Note:** FastAPI has built-in OpenAPI support. This worker customizes the default configuration.

**Registration Code:**
```python
from core.openapi_config import custom_openapi
app.openapi = lambda: custom_openapi(app)
```

---

## Phase 5: Validate

**Validation Steps:**

1. **Syntax check:**
   - .NET: `dotnet build --no-restore`
   - Python: `python -m py_compile core/openapi_config.py`

2. **Access documentation:**
   | Stack | URL |
   |-------|-----|
   | .NET | http://localhost:5000/swagger |
   | Python | http://localhost:5000/docs |
   | Python (ReDoc) | http://localhost:5000/redoc |

3. **Verify content:**
   - [ ] All endpoints visible
   - [ ] Request/response schemas displayed
   - [ ] Security scheme shown (if configured)
   - [ ] Try It Out functional

4. **OpenAPI spec validation:**
   ```bash
   # .NET
   curl http://localhost:5000/swagger/v1/swagger.json | jq .

   # Python
   curl http://localhost:5000/openapi.json | jq .
   ```

---

## Security Scheme Examples

### JWT Bearer (.NET)

```csharp
// Structure only - actual code generated via MCP ref
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
    Description = "JWT Authorization header using Bearer scheme",
    Name = "Authorization",
    In = ParameterLocation.Header,
    Type = SecuritySchemeType.Http,
    Scheme = "bearer",
    BearerFormat = "JWT"
});
```

### JWT Bearer (Python/FastAPI)

```python
# Structure only - actual code generated via MCP ref
from fastapi.security import HTTPBearer
security = HTTPBearer()
```

---

## Return to Coordinator

```json
{
  "status": "success",
  "files_created": [
    "Extensions/SwaggerExtensions.cs"
  ],
  "packages_added": [
    "Swashbuckle.AspNetCore"
  ],
  "registration_code": "builder.Services.AddSwaggerServices();",
  "message": "Configured Swagger/OpenAPI documentation"
}
```

---

## Reference Links

- [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
- [FastAPI OpenAPI](https://fastapi.tiangolo.com/tutorial/metadata/)
- [OpenAPI Specification](https://spec.openapis.org/oas/latest.html)

---

## Critical Rules

- **Use MCP ref for current Swashbuckle/FastAPI API** — do not hardcode configuration from memory
- **Auto-detect auth scheme** — scan for JWT, OAuth2, or API Key and configure security definition accordingly
- **Enable XML documentation in .NET** — update csproj with `GenerateDocumentationFile` and suppress warning 1591
- **FastAPI: customize, not replace** — built-in OpenAPI works by default, only add custom schema/security
- **Idempotent** — if `AddSwaggerGen`/`UseSwagger` exists, return `status: "skipped"`

## Definition of Done

- Context Store received (stack, project root)
- API structure analyzed (controllers/routers, auth method, versioning)
- Documentation standards researched via MCP tools
- Swagger/OpenAPI configuration generated with API info and security scheme
- XML comments enabled (.NET) or custom OpenAPI schema configured (Python)
- Syntax validated (`dotnet build` or `py_compile`)
- Structured JSON response returned to ln-770 coordinator

---

**Version:** 2.0.0
**Last Updated:** 2026-01-10

Overview

This skill configures Swagger/OpenAPI documentation for .NET (Swashbuckle) and Python (FastAPI) projects. It scans the project context to detect existing configuration, analyzes API structure and authentication, and generates idempotent documentation setup files. The output enables OpenAPI metadata, security schemes, XML comments (for .NET), and a customizable FastAPI OpenAPI hook.

How this skill works

The skill accepts a Context Store containing STACK and PROJECT_ROOT, then scans source files for controllers/routers, versioning, and auth patterns (JWT, OAuth2, API key). If existing Swagger/OpenAPI registration is detected it returns a skipped status. Otherwise it researches current best practices (Swashbuckle or FastAPI), decides API info and security configuration, and writes registration and helper files (Extensions/SwaggerExtensions.cs or core/openapi_config.py). It also updates project files (csproj) or wiring code and runs basic syntax validation.

When to use it

  • Bootstrapping API docs for a new .NET or FastAPI service
  • Adding or standardizing OpenAPI metadata and security schemes
  • Enabling XML comments and response examples in .NET projects
  • Customizing FastAPI openapi schema without replacing built-in generation
  • Validating that all endpoints and schemas appear in the generated spec

Best practices

  • Always run idempotency check to avoid duplicate registrations
  • Prefer JWT Bearer by default unless auth scanning finds OAuth2 or API key
  • Enable XML documentation in .NET projects and suppress 1591 warnings
  • Use Pydantic models or explicit response examples to improve schema quality
  • Validate generated spec with a quick curl + jq or language-specific build/compile step

Example use cases

  • Add Swagger to an existing ASP.NET Core API and enable XML comments in csproj
  • Customize FastAPI OpenAPI schema to include security definitions and tags
  • Detect existing AddSwaggerGen/UseSwagger and skip generation to preserve manual edits
  • Generate Extensions/SwaggerExtensions.cs and register services in Program.cs
  • Run dotnet build or python -m py_compile to validate syntax after generation

FAQ

What inputs does the skill require?

It needs STACK (.NET or Python) and PROJECT_ROOT pointing at the repository root in the Context Store.

How does idempotency work?

It greps for AddSwaggerGen/UseSwagger in .NET or checks for FastAPI custom openapi wiring; if found it returns status: skipped.

Which security schemes are supported?

JWT Bearer (recommended), API Key, OAuth2, or none; the skill auto-detects and configures the appropriate OpenAPI security definition.