coder-hahomelabs

Coder workspace environment for hahomelabs.com deployments. Includes networking, ports, convex config, nhost config

16 stars

Best use case

coder-hahomelabs is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Coder workspace environment for hahomelabs.com deployments. Includes networking, ports, convex config, nhost config

Teams using coder-hahomelabs should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/coder-hahomelabs/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/devops/coder-hahomelabs/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/coder-hahomelabs/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How coder-hahomelabs Compares

Feature / Agentcoder-hahomelabsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Coder workspace environment for hahomelabs.com deployments. Includes networking, ports, convex config, nhost config

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Coder Workspace Environment (hahomelabs.com)

Context for projects running in this Coder workspace environment at hahomelabs.com.

## Environment

You are running in a **Coder development workspace**:

| Property | Value |
|----------|-------|
| **OS** | Linux (Ubuntu/Debian-based) |
| **Architecture** | x86_64 |
| **Container Runtime** | Docker-in-Docker capability via envbox |
| **Infrastructure** | Kubernetes-managed workspace with persistent storage |
| **Networking** | Internal cluster networking with port forwarding capabilities |
| **Shell** | Bash |
| **System Package Manager** | `apt`/`apt-get` |

## Available Tools

The following tools are pre-installed and available in this workspace:

| Tool | Command | Description |
|------|---------|-------------|
| **Docker** | `docker`, `docker-compose` | Full container management capability |
| **Kubernetes CLI** | `kubectl` | Cluster access and management (requires VPN) |
| **GitHub CLI** | `gh` | Pre-configured with auto OAuth token refresh |
| **VS Code Server** | IDE with extensions |
| **Coder CLI** | `coder` | Coder-specific workspace operations |
| **PM2** | `pm2` | Process manager for keeping Node.js services running in the background |
| **Node.js (with pnpm)** | `node`, `pnpm` | Node.js runtime and pnpm package manager |
| **Convex CLI** | `npx convex` | Available when Convex feature is enabled |
| **Claude Code** | `claude` | AI-powered CLI (custom installation via base image) |
| **ccusage** | `ccusage` | Claude Code usage monitoring utility |
| **OpenCode** | `opencode` | AI CLI tool |

## Service URLs

Services use this URL pattern:

```
https://<service>--<workspace-name>--<username>.coder.hahomelabs.com
```

| Service | Port | URL Example |
|---------|------|-------------|
| Dev server | 3000 | `https://app--myproject--johndoe.coder.hahomelabs.com` |
| Prod/preview | 3010 | `https://app-prod--myproject--johndoe.coder.hahomelabs.com` |

**IMPORTANT**: Always use full URLs. Do NOT use `localhost:` URLs as they cause issues with remote services, authentication, cookies, and cross-origin requests.

## Optional Features (Enabled at Workspace Creation)

### PostgreSQL (CloudNativePG)

When enabled, these environment variables are available:

```bash
POSTGRES_HOST     # <workspace-full-name>-db-rw
POSTGRES_PORT     # 5432
POSTGRES_DATABASE # app
POSTGRES_USER     # app
POSTGRES_PASSWORD # Auto-generated
DATABASE_URL      # postgres://app:password@host:port/app
DIRECT_URL        # postgres://app:password@host:port/app
```

**Database details**:
- Database name: `app`
- User: `app`
- Read-write service: `${workspace_full_name}-db-rw`
- Supports workspace-to-workspace cloning (same user only)
- Backup bucket: `workspace-cnpg-${owner}-${name}-${short_id}`

### S3 Storage (Ceph)

When enabled, these environment variables are available:

```bash
S3_ENDPOINT        # https://s3.us-central-1.hahomelabs.com
S3_REGION          # us-central-1
S3_BUCKET          # workspace-${owner}-${name}-${short_id}
AWS_S3_ENDPOINT    # Same as S3_ENDPOINT
AWS_BUCKET         # Same as S3_BUCKET
S3_BACKUP_ENDPOINT # https://s3.us-central-1.hahomelabs.com
S3_BACKUP_BUCKET   # workspace-cnpg-${owner}-${name}-${short_id}
```

**S3 details**:
- Endpoint: `https://s3.us-central-1.hahomelabs.com`
- Region: `us-central-1`
- Max bucket size: 5GB
- Supports workspace-to-workspace cloning

### Convex Backend

When enabled:
- **Dashboard** (`/convex`): `https://convex--<workspace>--<user>.coder.hahomelabs.com`
- **API** (`/convex-api`): `https://convex-api--<workspace>--<user>.coder.hahomelabs.com`
- **Site Proxy** (`/convex-site`): `https://convex-site--<workspace>--<user>.coder.hahomelabs.com`
- **S3 Proxy** (`/convex-s3-proxy`): `https://convex-s3-proxy--<workspace>--<user>.coder.hahomelabs.com`
- Convex CLI available via `npx convex`
- Uses internal PostgreSQL and S3

### Nhost Backend

When enabled:
- **Dashboard** (`/nhost-dashboard`): `https://nhost-dashboard--<workspace>--<user>.coder.hahomelabs.com`
- **Hasura Console** (`/hasura`): `https://hasura--<workspace>--<user>.coder.hahomelabs.com`
- **MailHog** (`/mailhog`): `https://mailhog--<workspace>--<user>.coder.hahomelabs.com`
- **Auth** (hidden): `https://nhost-auth--<workspace>--<user>.coder.hahomelabs.com`
- **Functions** (hidden): `https://nhost-functions--<workspace>--<user>.coder.hahomelabs.com`
- **Storage** (hidden): `https://nhost-storage--<workspace>--<user>.coder.hahomelabs.com`
- **GraphQL** (hidden): `https://nhost-graphql--<workspace>--<user>.coder.hahomelabs.com`
- Uses internal PostgreSQL and S3

## LLM Gateway

AI requests route through LiteLLM proxy with budget controls:

```bash
# Environment variables (ask user before accessing)
OPENAI_BASE_URL      # https://llm-gateway.hahomelabs.com/v1
LITELLM_BASE_URL     # https://llm-gateway.hahomelabs.com
ANTHROPIC_AUTH_TOKEN # Per-user API key (development)
LITELLM_APP_API_KEY  # Per-user API key (applications)
```

**Model mapping**:
- Haiku → "small" (fast, low cost)
- Sonnet → "medium" (balanced)
- Opus → "large" (max capability)

## Package Managers

### System packages

```bash
sudo apt-get update
sudo apt-get install <package>
```

### Node.js

Check lockfile to determine which to use:
- `pnpm-lock.yaml` → Use `pnpm`
- `yarn.lock` → Use `yarn`
- `package-lock.json` → Use `npm`
- `bun.lockb` → Use `bun`

## Background Services

### PM2 (Node.js processes)

```bash
pm2 status          # Check status
pm2 logs            # View all logs
pm2 logs <app>      # View app logs
pm2 logs --lines 50 --nostream  # View recent log entries
pm2 restart <app>   # Restart app
```

### Docker

```bash
docker ps           # List containers
docker logs <container>
docker logs -f <container>  # Follow logs
```

## Workspace Scripts

| Script | Location | When it runs |
|--------|----------|--------------|
| Startup | `start.sh` | Workspace starts |
| Shutdown | `stop.sh` | Workspace stops |

Scripts are executed automatically by the Coder agent. Use them for:
- Starting development servers with PM2
- Running database migrations
- Setting up environment-specific configurations
- Graceful shutdown of services

**Note**: Startup script runs with 60-second timeout, then backgrounds if still running.

## Platform-Specific Considerations

### Docker Usage

- Docker commands work normally (this is not Docker Desktop)
- No special port mapping or host configurations needed
- Docker-in-Docker means containers run inside the workspace environment

### File Paths

- Use **standard Linux paths** (not Windows or macOS formats)
- **Relative paths** for project files: `src/components/Header.tsx`
- **Absolute paths** for system files: `/usr/local/bin/tool`

### Hardware Optimizations

- Target **x86_64 architecture** for any hardware-specific optimizations
- Do NOT use ARM/Apple Silicon-specific flags or binaries
- Modern Intel/AMD processor features are available

### Environment Variables

**CRITICAL**: Before using or changing ANY environment variable, you MUST:

1. **Ask the user for permission** - "May I check the environment variables?" or "May I use/change the X environment variable?"
2. **Explain what you need** - Describe which variable(s) you need to access and why
3. **Wait for explicit approval** - Do not proceed without user consent

To check available environment variables:
```bash
env | grep -i <pattern>    # Search for specific variables
env                        # List all environment variables
printenv                   # Alternative way to list all
echo $VAR_NAME             # Check specific variable
```

**Never** modify environment variables without explicit user permission, as they may affect:
- API authentication and routing
- Service connections
- Model selection behavior
- Workspace functionality

### Network Services

- Services run on **standard Linux ports**
- No macOS/Windows port conflicts to consider
- Internal cluster networking with port forwarding for external access

## Workspace Cloning

- **PostgreSQL cloning**: Restores from source workspace backup
- **S3 cloning**: Syncs data from source workspace bucket
- **Restriction**: Can only clone from own workspaces (same user)
- **Limitation**: Source workspace name cannot contain hyphens

## GitHub CLI

GitHub CLI (`gh`) is pre-configured with automatic OAuth token refresh. The token refreshes automatically via a wrapper function in `.bashrc`.

## Gotchas

1. **File paths**: Use standard Linux paths (`/home/coder/project`)
2. **Architecture**: x86_64 only (no ARM binaries)
3. **Environment variables**: Ask user before accessing
4. **Service URLs**: Use full URLs, not localhost
5. **Disk space**: Home directory is persistent, size configurable
6. **Workspace cloning**: Source workspaces with hyphens in name cannot be used
7. **Database**: PostgreSQL database name is always `app`, user is always `app`

## Capabilities

You can help with:

- **Code Development**: Writing, reviewing, and debugging code
- **Concept Explanations**: Explaining complex programming concepts
- **Best Practices**: Suggesting optimizations and patterns
- **Architecture**: Helping with design decisions
- **Troubleshooting**: Debugging technical issues
- **Documentation**: Providing comments and docs
- **DevOps**: Infrastructure and deployment tasks
- **Containers**: Docker and Kubernetes operations

## Response Guidelines

- Provide clear, concise, and accurate responses
- Consider the context of the workspace and the user's current task
- Account for the Linux x86_64 environment in all recommendations
- For Coder CLI commands and workspace management, reference the `coder-workspace-management` skill

Related Skills

codereadr-automation

16
from diegosouzapw/awesome-omni-skill

Automate Codereadr tasks via Rube MCP (Composio). Always search tools first for current schemas.

aasm-coder

16
from diegosouzapw/awesome-omni-skill

Implement state machines with AASM for workflow management. Covers state transitions, guards, callbacks, and testing.

coder-docs

16
from diegosouzapw/awesome-omni-skill

Index + offline snapshot of coder/coder documentation (progressive disclosure).

ansible-coder

16
from diegosouzapw/awesome-omni-skill

This skill guides writing Ansible playbooks for server configuration. Use when hardening servers, installing packages, or automating post-provisioning tasks that cloud-init cannot handle.

vibecoder-guide-legacy

16
from diegosouzapw/awesome-omni-skill

Guides VibeCoder (non-technical users) through natural language development (legacy). Use when user mentions どうすればいい, 次は何, 使い方, 困った, help, what should I do. Do NOT load for: 技術者向け作業, 直接的な実装指示, レビュー.

semgrep-coderabbit-review

16
from diegosouzapw/awesome-omni-skill

Two-stage code review combining fast pattern detection (Semgrep) with AI-powered semantic analysis (CodeRabbit)

python-coder

16
from diegosouzapw/awesome-omni-skill

Modern Python 3.12+ development with uv, ruff, and production-ready practices. Routes to specialized skills for frameworks and testing.

mobile-security-coder

16
from diegosouzapw/awesome-omni-skill

Expert in secure mobile coding practices specializing in input validation, WebView security, and mobile-specific security patterns.

harness-coder

16
from diegosouzapw/awesome-omni-skill

Main coding agent for autonomous harness system. Continues work from previous sessions, implements one feature per session, coordinates with testing and review skills, and maintains clean handoffs via Archon. This is the workhorse of the harness system for multi-session development.

frontend-security-coder

16
from diegosouzapw/awesome-omni-skill

Expert in secure frontend coding practices specializing in XSS prevention, output sanitization, and client-side security patterns.

formula-decoder-skill

16
from diegosouzapw/awesome-omni-skill

Decodes mathematical and physical formulas using a 5-stage process: Confusion, Intuition, Symbol Mapping, Limit Testing, and Dimension Ascension. Combines the styles of Feynman, Sanderson, Euclid, and Victor for deep understanding.

atcoder-client

16
from diegosouzapw/awesome-omni-skill

Interface with AtCoder for Japanese competitive programming contests