Przejdź do treści
Biblioteka skilli
DevOps i chmura · Automatyzacja

maintainx-multi-env-setup

/maintainx-multi-env-setup

Konfiguruje wiele środowisk MaintainX (dev, staging, produkcja), w tym ustawienia specyficzne dla środowiska, wiele kont i promocję zmian między środowiskami.

Licencja
MIT
Ostatnia zmiana repozytorium
26.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
6
Przestarzałość

Brak sygnałów. Repozytorium zmienione 26.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Konfiguruje wiele środowisk MaintainX (dev, staging, produkcja), w tym ustawienia specyficzne dla środowiska, wiele kont i promocję zmian między środowiskami.

Wyzwalacze z opisu

maintainx environmentsmaintainx stagingmaintainx dev prodmaintainx multi-environmentmaintainx config
Oryginalny opis (EN)

Configure multiple MaintainX environments (dev, staging, production). Use when setting up environment-specific configurations, managing multiple MaintainX accounts, or implementing environment promotion. Trigger with phrases like "maintainx environments", "maintainx staging", "maintainx dev prod", "maintainx multi-environment", "maintainx config".

Jak działa

  1. Overview
  2. Prerequisites
  3. Instructions
  4. Output
  5. Error Handling
  6. Resources
  7. Next Steps
  8. Examples
Sekcje z nagłówków SKILL.md, w oryginale · 218 linii, 623 słów
Podgląd SKILL.md
---
name: maintainx-multi-env-setup
description: 'Configure multiple MaintainX environments (dev, staging, production).

  Use when setting up environment-specific configurations,

  managing multiple MaintainX accounts, or implementing environment promotion.

  Trigger with phrases like "maintainx environments", "maintainx staging",

  "maintainx dev prod", "maintainx multi-environment", "maintainx config".

  '
allowed-tools: Read, Write, Edit, Bash(npm:*)
version: 1.11.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- maintainx
- maintainx-multi
compatibility: Designed for Claude Code
---
# MaintainX Multi-Environment Setup

## Overview

Configure and manage multiple MaintainX environments for development, staging, and production with proper secret management and client isolation.

## Prerequisites

- Separate MaintainX accounts or organizations for each environment
- Secret management solution (environment variables, GCP Secret Manager, or AWS SSM)
- Node.js 18+

## Instructions

### Step 1: Environment Configuration

```typescript
// src/config/environments.ts

interface MaintainXEnvConfig {
  apiKey: string;
  orgId?: string;
  baseUrl: string;
  label: string;
  rateLimit: { requestsPerSecond: number };
}

type Environment = 'development' | 'staging' | 'production';

function getConfig(env: Environment): MaintainXEnvConfig {
  const configs: Record<Environment, () => MaintainXEnvConfig> = {
    development: () => ({
      apiKey: process.env.MAINTAINX_API_KEY_DEV!,
      orgId: process.env.MAINTAINX_ORG_ID_DEV,
      baseUrl: 'https://api.getmaintainx.com/v1',
      label: 'Development',
      rateLimit: { requestsPerSecond: 5 },
    }),
    staging: () => ({
      apiKey: process.env.MAINTAINX_API_KEY_STAGING!,
      orgId: process.env.MAINTAINX_ORG_ID_STAGING,
      baseUrl: 'https://api.getmaintainx.com/v1',
      label: 'Staging',
      rateLimit: { requestsPerSecond: 10 },
    }),
    production: () => ({
      apiKey: process.env.MAINTAINX_API_KEY_PROD!,
      orgId: process.env.MAINTAINX_ORG_ID_PROD,
      baseUrl: 'https://api.getmaintainx.com/v1',
      label: 'Production',
      rateLimit: { requestsPerSecond: 20 },
    }),
  };

  const config = configs[env]();
  if (!config.apiKey) {
    throw new Error(`Missing API key for ${env} environment`);
  }
  return config;
}

export const currentEnv = (process.env.MAINTAINX_ENV || 'development') as Environment;
export const config = getConfig(currentEnv);
```

### Step 2: Client Factory

```typescript
// src/client-factory.ts
import { MaintainXClient } from './client';

const clients = new Map<string, MaintainXClient>();

export function getClient(env?: Environment): MaintainXClient {
  const targetEnv = env || currentEnv;
  if (!clients.has(targetEnv)) {
    const cfg = getConfig(targetEnv);
    clients.set(targetEnv, new MaintainXClient(cfg.apiKey, cfg.orgId));
  }
  return clients.get(targetEnv)!;
}

// Usage
const devClient = getClient('development');
const prodClient = getClient('production');
```

### Step 3: Environment Files

```bash
# .env.development
MAINTAINX_ENV=development
MAINTAINX_API_KEY_DEV=dev-key-here
MAINTAINX_ORG_ID_DEV=org-dev-123

# .env.staging
MAINTAINX_ENV=staging
MAINTAINX_API_KEY_STAGING=staging-key-here
MAINTAINX_ORG_ID_STAGING=org-staging-456

# .env.production
MAINTAINX_ENV=production
MAINTAINX_API_KEY_PROD=prod-key-here
MAINTAINX_ORG_ID_PROD=org-prod-789
```

```bash
# .gitignore — never commit real keys
.env
.env.development
.env.staging
.env.production
```

### Step 4: GCP Secret Manager Integration

```typescript
// src/config/secrets.ts
import { SecretManagerServiceClient } from '@google-cloud/secret-manager';

const secretClient = new SecretManagerServiceClient();

async function getSecret(name: string): Promise<string> {
  const [version] = await secretClient.accessSecretVersion({
    name: `projects/your-project/secrets/${name}/versions/latest`,
  });
  return version.payload!.data!.toString();
}

async function loadProductionConfig(): Promise<MaintainXEnvConfig> {
  return {
    apiKey: await getSecret('maintainx-api-key-prod'),
    orgId: await getSecret('maintainx-org-id-prod'),
    baseUrl: 'https://api.getmaintainx.com/v1',
    label: 'Production',
    rateLimit: { requestsPerSecond: 20 },
  };
}
```

### Step 5: Validation Script

```typescript
// scripts/validate-environments.ts
import 'dotenv/config';

const envs: Environment[] = ['development', 'staging', 'production'];

async function validateAll() {
  for (const env of envs) {
    try {
      const cfg = getConfig(env);
      const client = new MaintainXClient(cfg.apiKey, cfg.orgId);
      const { data } = await client.getUsers({ limit: 1 });
      console.log(`${cfg.label}: OK (${data.users.length} user(s) found)`);
    } catch (err: any) {
      console.error(`${env}: FAILED - ${err.message}`);
    }
  }
}

validateAll();
```

```bash
# Run validation
npx tsx scripts/validate-environments.ts
# Development: OK (1 user(s) found)
# Staging: OK (1 user(s) found)
# Production: OK (1 user(s) found)
```

## Output

- Environment-specific configuration with type-safe config loader
- Client factory producing isolated clients per environment
- `.env.*` files with `.gitignore` protection
- GCP Secret Manager integration for production secrets
- Validation script to verify all environment credentials

## Error Handling

| Issue | Cause | Solution |
|-------|-------|----------|
| Missing API key | Environment variable not set | Check `.env.*` file for target environment |
| Wrong environment data | Using prod key in dev | Verify `MAINTAINX_ENV` is set correctly |
| Secret Manager 403 | Missing IAM permissions | Grant `secretmanager.secretAccessor` role |
| Config mismatch after deploy | Old secrets cached | Clear client cache, reload secrets |

## Resources

- MaintainX API Reference
- [12-Factor App: Config](https://12factor.net/config)
- [GCP Secret Manager](https://cloud.google.com/secret-manager/docs)

## Next Steps

For observability setup, see `maintainx-observability`.

## Examples

**GitHub Actions with per-environment secrets**:

```yaml
# .github/workflows/deploy.yml
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }}
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build
      - run: npm run validate-env
        env:
          MAINTAINX_ENV: ${{ vars.MAINTAINX_ENV }}
          MAINTAINX_API_KEY_PROD: ${{ secrets.MAINTAINX_API_KEY }}
```
Pliki w paczce (2)
  • SKILL.md 6 KB
  • references/implementation-guide.md 12 KB

Wersje

W bazie nie ma innych skilli o nazwie maintainx-multi-env-setup.

Identyczna treść występuje jeszcze w 1 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.

Migawka bazy z 28.10.2026 · wersja paczki 537285f2eaee (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100deepgram-multi-env-setup
    Konfiguruje Deepgram dla środowisk dev, staging i produkcja: ustawienia specyficzne dla środowisk, wiele projektów Deepgram i izolacja środowisk.
  • 100langchain-multi-env-setup
    Konfiguruje wielośrodowiskową konfigurację LangChain dla dev, staging i prod, w tym ustawienia specyficzne dla środowiska i przepływy promocji między środowiskami.
  • 100deepgram-multi-env-setup
    Konfiguruje Deepgram dla środowisk dev, staging i produkcja: ustawienia specyficzne dla środowisk, wiele projektów Deepgram i izolacja środowisk.
  • 100clerk-multi-env-setup
    Konfiguruje Clerk dla środowisk dev, staging i produkcja, zarządza wieloma instancjami i promocją między środowiskami.
  • 100environment-setup
    Konfiguruje środowiska development, staging i produkcyjne: zmienne środowiskowe, pliki .env, zarządzanie konfiguracją i ustawienia zależne od środowiska.
  • 100arn-infra-env
    Konfiguruje środowiska dev, staging i produkcja, ich izolację, konfigurację na środowisko (na przykład tfvars) i promocję między nimi.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.