Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions agents/devops-infinity-loop-specialist.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: devops-infinity-loop-specialist
description: A Senior DevOps Engineer guiding you through CI/CD, containerization, and the entire Plan to Monitor loop.
model: gpt-4
tools: []
---

You are a Senior DevOps and Site Reliability Engineer (SRE). Your goal is to help developers implement the DevOps Infinity Loop (Plan → Code → Build → Test → Release → Deploy → Operate → Monitor).

Your expertise includes:
- Containerization (Docker, Kubernetes)
- CI/CD Pipelines (GitHub Actions, GitLab CI, Azure DevOps)
- Infrastructure as Code (Terraform, Ansible)
- Monitoring & Observability (Prometheus, Grafana, OpenTelemetry)

When interacting with the user:
1. Always identify which phase of the DevOps loop their question belongs to.
2. Provide secure, scalable, and automated solutions.
3. Emphasize "Shift-Left" security and automated testing.
4. Give practical, copy-pasteable code snippets for pipelines or IaC when applicable.
5. Keep responses concise, highly technical, and focused on operational excellence.
78 changes: 78 additions & 0 deletions skills/docker-compose-dev-generator/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
name: docker-compose-dev-generator
description: Generates a complete docker-compose.yml tailored for local development with hot-reload and healthchecks
---

# Docker Compose Dev Generator

This skill instructs GitHub Copilot to analyze your project stack and generate a highly optimized `docker-compose.yml` file specifically designed for local development.

## When to Use This Skill

Use this skill when you need to:
- Set up a local development environment for a new or existing project.
- Configure hot-reloading (volume mapping) so code changes reflect immediately without rebuilding containers.
- Add local infrastructure dependencies like databases (PostgreSQL, MySQL, MongoDB) or caching (Redis) with proper healthchecks.

## Prerequisites

- Docker Desktop or Docker Engine installed.
- A basic understanding of the project's stack (e.g., Node.js, Python, React).
- GitHub Copilot Chat active in your IDE.

## Core Capabilities

### 1. Stack Detection
Analyzes your current workspace (e.g., `package.json`, `requirements.txt`) to automatically determine the required services and base images.

### 2. Hot-Reloading Configuration
Maps local directories to container volumes, allowing developers to see changes in real-time without restarting the container.

### 3. Service Orchestration & Healthchecks
Automatically configures `depends_on` and `healthcheck` blocks to ensure services (like an API) only start after their dependencies (like a database) are fully ready to accept connections.

## Usage Examples

### Example 1: Standard Web Stack
**User prompt:**
> "@workspace Generate a docker-compose file for local development for this project. It uses Node.js and needs a PostgreSQL database."

### Example 2: Frontend with Hot-Reload
**User prompt:**
> "Create a docker-compose.yml for my React application with hot-reloading enabled and map it to port 3000."

## Guidelines

1. **Use Alpine or Slim images** - Default to lightweight base images for faster build times in local environments.
2. **Implement Named Volumes** - Always use named volumes for database data persistence so data isn't lost when containers stop.
3. **Explicit Port Mapping** - Clearly map container ports to host ports to avoid conflicts (e.g., `5432:5432`).

## Common Patterns

### Pattern: API + Database
```yaml
services:
api:
build: .
ports:
- "8080:8080"
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
depends_on:
db:
condition: service_healthy

db:
image: postgres:15-alpine
environment:
POSTGRES_USER: devuser
POSTGRES_PASSWORD: devpassword
POSTGRES_DB: devdb
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U devuser"]
interval: 5s
timeout: 5s
retries: 5
Loading