Docs
Skill makigjuro/cloudstack-ai-plugins/plugins/dev-workflow/skills/docs
Claude Code plugin marketplace — AI-powered full-stack cloud engineer for .NET 10 + React 19 + Azure/Terraform/Helm projects. 29 skills, 6 agents, 14 rules.
npx -y skills add makigjuro/cloudstack-ai-plugins --skill docsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate or update project documentation from code -- API docs, service docs, architecture docs, or runbooks. Use after adding endpoints, entities, events, or infrastructure changes, or when documentation may be stale.
SKILL.md
9.7 KB, as published. Nobody here has run it
Generate / Update Documentation
Generate or update markdown documentation by analyzing the actual codebase. Never fabricate -- every statement must be backed by code you've read.
Arguments
{target}-- What to document. One of:service {name}-- Full service documentation (endpoints, events, config)api {service}-- API endpoint reference for a servicearchitecture-- Update the technical architecture docdomain-- Update the domain model docrunbook {service}-- Operational runbook (health checks, alerts, troubleshooting)quickstart-- Update the quickstart / getting started guideall-- Regenerate all outdated docs
If no argument given, detect what's changed since last docs update and suggest what needs refreshing.
Configuration
Read cloudstack.json from the project root at the start of execution. Extract:
NAMESPACE=project.namespaceSOLUTION=backend.solutionPathSERVICES=backend.services[]FRONTEND_PATH=frontend.path(default:web)CHARTS_PATH=infrastructure.chartsPath(default:deploy/charts)TERRAFORM_PATH=infrastructure.terraformPath
If cloudstack.json does not exist, auto-detect by scanning the project structure.
Process
Step 1: Detect Scope
If no target specified:
# Find docs that may be stale -- compare last doc commit vs last code commit
git log -1 --format=%H -- docs/
git log -1 --format=%H -- src/ ${FRONTEND_PATH} ${CHARTS_PATH} ${TERRAFORM_PATH}
# Show what code changed since docs were last updated
git diff {last-docs-commit}..HEAD --stat -- src/ ${FRONTEND_PATH} ${CHARTS_PATH} ${TERRAFORM_PATH}
Present the user with a summary of what's changed and recommend which docs to update.
Step 2: Gather Evidence
Read the actual code -- do NOT guess or use stale memory. For each doc type:
Service doc (docs/services/{service-name}/README.md):
- Read
src/{Service}/{Service}.Host/Program.cs-- DI, middleware, config sections - Read
src/{Service}/{Service}.Host/Endpoints/-- all endpoint files - Read
src/{Service}/{Service}.Application/Commands/-- all command records - Read
src/{Service}/{Service}.Application/Queries/-- all query records - Read
src/{Service}/{Service}.Infrastructure/DependencyInjection.cs-- external dependencies - Read
src/{Service}/{Service}.Infrastructure/Persistence/Configurations/-- DB schema - Grep for messaging subjects/topics in the service
- Read Helm chart values if present:
${CHARTS_PATH}/{service-name}/values.yaml - Read
appsettings.jsonin the Host project -- configuration keys
API doc (docs/services/{service-name}/api.md):
- Read all endpoint files in
src/{Service}/{Service}.Host/Endpoints/ - Read corresponding command/query records for request/response shapes
- Read validators for constraints
- Extract: method, route, request body, response body, status codes, auth requirements
Architecture doc (docs/architecture/technical-architecture.md):
- Read all
Program.csfiles for service topology - Read app host / orchestrator config for service discovery and dependencies
- Read
${TERRAFORM_PATH}/for infrastructure components - Read
${CHARTS_PATH}/for deployment topology - Grep for inter-service communication patterns (HTTP clients, messaging subjects)
Domain model doc (docs/architecture/domain-model.md):
- Read all entities in the shared domain layer
- Read all value objects in the shared domain layer
- Read all domain events in the shared domain layer
- Read EF Core configurations for relationships and constraints
Runbook (docs/services/{service-name}/runbook.md):
- Read
Program.csfor health check endpoints - Read
${CHARTS_PATH}/{service-name}/values.yamlfor resource limits, probes, env vars - Read
${CHARTS_PATH}/{service-name}/templates/for alerts, HPA config - Grep for error codes and error handling patterns
- Read integration test factory for dependencies (DB, messaging, cache, storage)
Quickstart (docs/quickstart.md):
- Read app host / orchestrator config for local dev setup
- Read
docker-compose*.ymlif present - Read
${FRONTEND_PATH}/package.jsonfor frontend setup - Read
Directory.Build.propsfor SDK requirements - Verify all commands by checking they reference real files/scripts
Step 3: Generate Documentation
Write the documentation to the appropriate path. Follow these rules:
Structure:
- Use the existing file if updating -- preserve sections the user may have manually edited
- Add a metadata comment at the top:
<!-- Generated from code by /docs on {date}. Do not edit generated sections. --> - Mark auto-generated sections with
<!-- BEGIN GENERATED -->/<!-- END GENERATED -->markers - Leave non-generated sections untouched when updating
Content rules:
- Every endpoint, entity, event, and config key must come from actual code you read
- Include code references:
See: src/{Service}/.../FileName.cs - Use tables for structured data (endpoints, config keys, events)
- Include Mermaid diagrams for architecture and entity relationships where helpful
- Keep descriptions concise -- one sentence per item unless complexity warrants more
Step 4: Verify
After generating:
- Check all file paths referenced in the doc actually exist
- Check all endpoint routes match what's in the code
- Check all config keys match what's in appsettings / values.yaml
- Validate any Mermaid diagrams using
mcp__claude_ai_Mermaid_Chart__validate_and_render_mermaid_diagram-- fix syntax errors before writing - Report what was generated/updated and word count
Output Formats
Service Doc Template
<!-- Generated from code by /docs on {date}. Do not edit generated sections. -->
# {Service Name}
{One-paragraph description of what this service does.}
## API Endpoints
<!-- BEGIN GENERATED -->
| Method | Route | Description | Auth |
|--------|-------|-------------|------|
| POST | `/api/{resource}` | Create a new resource | API Key |
| GET | `/api/{resource}/{id}` | Get resource by ID | API Key |
<!-- END GENERATED -->
## Commands & Queries
<!-- BEGIN GENERATED -->
### Commands
| Command | Description | Handler |
|---------|-------------|---------|
| `CreateResourceCommand` | Creates a new resource | `CreateResourceHandler` |
### Queries
| Query | Description | Handler |
|-------|-------------|---------|
| `GetResourceByIdQuery` | Retrieves resource by ID | `GetResourceByIdHandler` |
<!-- END GENERATED -->
## Domain Events Published
<!-- BEGIN GENERATED -->
| Event | Trigger | Key Data |
|-------|---------|----------|
| `ResourceCreatedEvent` | Resource.Create() | ResourceId, TenantId |
<!-- END GENERATED -->
## Messaging Subjects
<!-- BEGIN GENERATED -->
| Subject | Type | Direction | Description |
|---------|------|-----------|-------------|
| `{project}.{resource}.events.<type>` | Persistent | Outbound | Resource events |
<!-- END GENERATED -->
## Configuration
<!-- BEGIN GENERATED -->
| Key | Description | Default | Required |
|-----|-------------|---------|----------|
| `ConnectionStrings:{name}` | Database connection | -- | Yes |
<!-- END GENERATED -->
## Dependencies
<!-- BEGIN GENERATED -->
- **PostgreSQL** -- State persistence
- **Messaging** -- Event publishing
<!-- END GENERATED -->
API Doc Template
<!-- Generated from code by /docs on {date}. Do not edit generated sections. -->
# {Service Name} API Reference
Base URL: `/api/{resource}`
<!-- BEGIN GENERATED -->
## POST /api/{resource}
Create a new resource.
**Request Body:**
\`\`\`json
{
"name": "string",
"metadata": "string | null"
}
\`\`\`
**Response (201):**
\`\`\`json
{
"id": "guid",
"name": "string",
"createdAt": "datetime"
}
\`\`\`
**Error Codes:**
| Code | Status | Description |
|------|--------|-------------|
| `RESOURCE_ALREADY_EXISTS` | 409 | Resource with this ID already exists |
| `NAME_REQUIRED` | 400 | Name is missing or empty |
**Validation Rules:**
- `name` -- Required, max 200 characters
<!-- END GENERATED -->
Runbook Template
<!-- Generated from code by /docs on {date}. Do not edit generated sections. -->
# {Service Name} Runbook
## Health Checks
| Endpoint | Type | Description |
|----------|------|-------------|
| `/health/live` | Liveness | Process is running |
| `/health/ready` | Readiness | Dependencies accessible |
## Dependencies
| Dependency | Failure Impact | Recovery |
|------------|---------------|----------|
| PostgreSQL | Full outage | Readiness probe fails, pod restarts |
| Messaging | Event publishing stops | Circuit breaker, retries |
## Resource Limits
| Resource | Request | Limit |
|----------|---------|-------|
| CPU | 100m | 500m |
| Memory | 256Mi | 512Mi |
## Common Issues
### {Error Code}
- **Symptom:** {what the user sees}
- **Cause:** {root cause}
- **Resolution:** {steps to fix}
## Alerts
| Alert | Severity | Condition | Runbook Action |
|-------|----------|-----------|----------------|
Guidelines
- Accuracy over completeness -- skip a section rather than guess
- Update, don't replace -- preserve manually-written content outside generated markers
- Reference code -- every fact should be traceable to a source file
- Keep it scannable -- tables, headers, and short paragraphs over walls of text
- Date everything -- the metadata comment helps track staleness