home / skills / coollabsio / coolify-docs / adding-service-documentation

adding-service-documentation skill

/.claude/skills/adding-service-documentation

This skill helps you document a new Coolify service by generating markdown docs, logos, and catalog updates for the service repository.

npx playbooks add skill coollabsio/coolify-docs --skill adding-service-documentation

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

Files (6)
SKILL.md
4.3 KB
---
name: adding-service-documentation
description: Documents new Coolify one-click services by creating markdown pages in docs/services/, downloading logos to docs/public/images/services/, and updating List.vue catalog. Use when adding service documentation, creating service pages, onboarding services from templates/compose/, or updating the services catalog with new entries.
allowed-tools: Read, Grep, Glob, Write, Bash
---

# Add Service Documentation

This skill guides you through documenting a new service in the Coolify documentation repository.

## When to Use This Skill

- Adding documentation for a new service from the Coolify repository
- Creating service pages with proper formatting and images
- Updating the services list component
- Following documentation standards for service pages

## Quick Start Workflow

1. **Identify the service** from Coolify's GitHub repository (`templates/compose/`)
2. **Extract metadata** from the YAML template header
3. **Download the logo** from GitHub and save to `docs/public/images/services/`
4. **Create documentation** at `docs/services/{service-slug}.md`
5. **Update services list** in `docs/.vitepress/theme/components/Services/List.vue`
6. **Test locally** with `bun run dev`

## File Structure

```
Coolify Repository (GitHub):
├── templates/compose/
│   └── service-name.yaml        # Service template with metadata
└── public/svgs/
    └── service-logo.svg          # Service logo

https://github.com/coollabsio/coolify/tree/main/templates/compose
https://github.com/coollabsio/coolify/tree/main/public/svgs

Documentation Repository:
├── docs/
│   ├── services/
│   │   └── service-name.md       # Service documentation page
│   ├── public/images/services/
│   │   └── service-logo.svg      # Copied logo
│   └── .vitepress/theme/components/Services/
│       └── List.vue               # Services catalog (line ~261)
```

## Required Files

Every service requires these 3 files:

1. **Service documentation** (`docs/services/{slug}.md`)
2. **Service logo** (`docs/public/images/services/{name}-logo.{ext}`)
3. **List entry** (in `docs/.vitepress/theme/components/Services/List.vue`)

## Detailed Instructions

**Service-specific:**
- [METADATA.md](./METADATA.md) - Extracting service info from YAML
- [DOCUMENTATION.md](./DOCUMENTATION.md) - Writing service docs
- [IMAGES.md](./IMAGES.md) - Service logo guidelines
- [CATALOG.md](./CATALOG.md) - Updating the services list
- [TEMPLATES.md](./TEMPLATES.md) - Documentation templates

**Shared guidelines:**
- [FRONTMATTER.md](../_shared/FRONTMATTER.md) - Title, description, Open Graph
- [IMAGES.md](../_shared/IMAGES.md) - General image syntax
- [LINKS.md](../_shared/LINKS.md) - Internal and external link formatting
- [CONTAINERS.md](../_shared/CONTAINERS.md) - VitePress callout containers

## Important Rules

1. **Download logos locally**: NEVER use external image URLs - always download to `docs/public/images/services/`
2. **Skip ignored services**: If YAML has `# ignore: true`, don't document it
3. **Images**: Use `![alt](path)` for logos; use `<ZoomableImage>` only for screenshots
4. **Add UTM parameters**: Append `?utm_source=coolify.io` to all external links
5. **Follow naming**: Use lowercase, hyphenated slugs (e.g., `my-service.md`)
6. **Alphabetical order**: Insert services alphabetically in List.vue

## Testing

```bash
# Start dev server
bun run dev

# Verify:
# - Service appears in list at http://localhost:5173/docs/services/
# - Logo displays correctly
# - Service page loads at /docs/services/{slug}
# - All links work
# - Category filter includes service

# Build for production
bun run build
```

## Troubleshooting

**Image not showing:**

- Check path starts with `/docs/images/services/` (not `/public/`)
- Verify file exists in `docs/public/images/services/`
- Confirm file extension matches

**Service not in list:**

- Verify entry added to `services` array in List.vue
- Check `ignore: true` is not set
- Ensure valid JavaScript syntax

**Category missing:**

- Check category name matches existing categories (case-sensitive)
- See [CATALOG.md](./CATALOG.md) for full category list

## Related Commands

- `/new-services` - Automated service documentation generator
- Check existing services for examples in `docs/services/`

Overview

This skill documents new Coolify one-click services by creating a service page, saving the service logo locally, and updating the services catalog component. It enforces naming, image, and link conventions so new entries integrate cleanly with the documentation site. Use it to add or onboard services consistently and to keep the services list up to date.

How this skill works

The skill extracts metadata from the service YAML template in templates/compose/, downloads the logo into docs/public/images/services/, and creates a markdown page at docs/services/{slug}.md with the required frontmatter and content. It then inserts a new, alphabetized entry into docs/.vitepress/theme/components/Services/List.vue and validates locally by running the site dev server.

When to use it

  • Adding documentation for a new one-click service from templates/compose/
  • Onboarding services provided as templates or compose files
  • Creating or updating the service markdown page and local logo file
  • Updating the services catalog (List.vue) with a new entry
  • Verifying service pages and logos render correctly before a production build

Best practices

  • Always download logos into docs/public/images/services/; never reference external image URLs
  • Use lowercase, hyphenated slugs for filenames and frontmatter (e.g., my-service.md)
  • Follow shared frontmatter and image guidelines for title, description, and Open Graph metadata
  • Add ?utm_source=coolify.io to external links for consistent tracking
  • Insert the service entry alphabetically into List.vue and ensure valid JS syntax

Example use cases

  • Document a new database or cache service discovered in templates/compose/ and add its logo and page
  • Onboard a third-party one-click template by extracting metadata and creating a polished docs page
  • Update an existing service page when the template metadata or logo changes
  • Add a new category-filterable service so it appears in the documentation catalog
  • Run the dev server to verify logo rendering, page routing, and link correctness

FAQ

What if the service YAML contains ignore: true?

Skip documenting that service. The ignore flag marks templates that should not appear in docs.

Where must I put the downloaded logo?

Save logos to docs/public/images/services/ and reference them with the docs path so the image displays correctly.