Skip to content
Back to skills

Mittwald

ASecurity

Read and inspect mittwald mStudio projects, apps, runtimes, databases, domains, mail, backups, files, containers, and access users through SecretRef-backed API requests.

  • 157 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 28, 2026
ai-agentspythongobashsqlnodeterraformtestingapidatabase

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 28, 2026

npx -y skills add HybridAIOne/hybridclaw --skill mittwald --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mittwald?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mittwald
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hybridaione-mittwald/badge)](https://www.skillsdirectory.com/skills/hybridaione-mittwald)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mittwald
description: "Read and inspect mittwald mStudio projects, apps, runtimes, databases, domains, mail, backups, files, containers, and access users through SecretRef-backed API requests."
user-invocable: true
requires:
  bins:
    - node
credentials:
  - id: mittwald-api-token
    kind: bearer
    required: true
    secret_ref:
      source: store
      id: MITTWALD_API_TOKEN
    scope: "https://api.mittwald.de Authorization bearer"
    how_to_obtain: |
      Create an API token in mittwald mStudio under the user profile API token
      settings, then store it with
      `hybridclaw secret set MITTWALD_API_TOKEN "<token>"`.
metadata:
  hybridclaw:
    category: infrastructure
    short_description: "mittwald mStudio read operations and guarded production planning."
    tags:
      - mittwald
      - mstudio
      - hosting
      - infrastructure
      - production
    related_roadmap:
      - R21.104
    issue: 1068
    stakes_tiers:
      green:
        - whoami
        - projects
        - project
        - apps
        - app
        - app-status
        - app-system-software
        - databases
        - mysql-databases
        - redis-databases
        - domains
        - dns-zones
        - ingresses
        - backups
        - backup
        - backup-path
        - backup-database-dumps
        - cronjobs
        - ssh-users
        - sftp-users
        - mail-addresses
        - delivery-boxes
        - mail-settings
        - stacks
        - services
        - service
        - volumes
        - registries
        - service-logs
        - file-info
        - directory
        - disk-usage
        - extension-orders
        - extension-instances
        - extension-instance
        - licenses
        - check-domain-availability
      amber:
        - create-redis-database
        - create-mysql-database
        - create-app-installation
        - create-cronjob
        - change-domain-project
        - update-domain-nameservers
        - cancel-domain-deletion
        - validate-license-key
        - create-delivery-box
      red:
        - service-action
        - restore-backup
        - restore-backup-path
        - schedule-domain-deletion
        - order-extension
    escalation:
      writes: confirm-each
      route: f14
    cost_measurement:
      system: UsageTotals
      sub_limit_key: mittwald
---

# mittwald

Use this skill for mittwald mStudio / Kundencenter production-platform work:
project inventory, app/runtime inspection, deployment readiness, databases,
domains/DNS/SSL/ingress, mail resources, backups, files, containers, SSH/SFTP
users, and marketplace/license readouts.

## Default Workflow

1. Read first. Use `mittwald.cjs` to generate allowlisted `http_request`
   payloads and pass only the emitted `httpRequest` value to the built-in
   `http_request` tool.
2. Treat `MITTWALD_API_TOKEN` as a SecretRef only. The helper sets
   `bearerSecretName: "MITTWALD_API_TOKEN"` so the gateway injects
   `Authorization: Bearer ...` server-side. Never ask the user to paste the
   token, inspect it, or write raw `Authorization` headers.
3. For prompt/user testing, stop after `plan` or helper `http-request` payload
   generation. Do not call `http_request` unless live mittwald data is needed
   for the user's request.
4. For live calls, stop after the first 401 or 403. Report a credential or API
   role setup problem and ask the operator to verify:
   `hybridclaw secret set MITTWALD_API_TOKEN "<mittwald-api-token>"`.
5. For 429 responses, report rate-limit guidance from `Retry-After`,
   `X-RateLimit-Reset`, `X-RateLimit-Remaining`, and `X-RateLimit-Limit` when
   present. Do not start retry loops.
6. For guarded writes, require exact F8/F14 operator approval for the named
   target and pass `--operator-grant` only after that approval. The helper
   includes the target resource id in `approval.requiredGrant`.
7. Account for eventual consistency after writes: mutating responses may return
   an `etag` event id. Run the emitted `event-follow-up` command with
   `--event-id <etag>` so the read uses `if-event-reached` before reporting
   completion.
8. Do not use `curl` as the normal execution path when `http_request` is
   available.

The helper is read-first. Guarded write operations exist only for allowlisted
mittwald API shapes and require exact F8/F14 approval: service actions, database
creation, app installation creation, cronjob creation, domain
project/nameserver/deletion changes, backup restore, delivery box creation,
license-key validation, and extension ordering. App installation runtime actions
are intentionally not exposed because the current mittwald OpenAPI marks that
endpoint deprecated and non-functional. Do not create API tokens or use unlisted
marketplace mutations.

## Command Contract

```bash
node skills/mittwald/mittwald.cjs --help
```

Build core read requests:

```bash
node skills/mittwald/mittwald.cjs --format json http-request whoami
node skills/mittwald/mittwald.cjs --format json http-request projects --limit 50
node skills/mittwald/mittwald.cjs --format json http-request project --project-id <project-id>
node skills/mittwald/mittwald.cjs --format json http-request apps --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request domains --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request backups --project-id <project-id> --limit 50
```

Build database and runtime requests:

```bash
node skills/mittwald/mittwald.cjs --format json http-request databases --project-id <project-id>
node skills/mittwald/mittwald.cjs --format json http-request app-status --app-installation-id <app-installation-id>
node skills/mittwald/mittwald.cjs --format json http-request services --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request service-logs --stack-id <stack-id> --service-id <service-id> --tail 200
```

Build operational inventory requests:

```bash
node skills/mittwald/mittwald.cjs --format json http-request dns-zones --project-id <project-id>
node skills/mittwald/mittwald.cjs --format json http-request ingresses --project-id <project-id>
node skills/mittwald/mittwald.cjs --format json http-request cronjobs --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request mail-addresses --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request ssh-users --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request sftp-users --project-id <project-id> --limit 50
node skills/mittwald/mittwald.cjs --format json http-request directory --project-id <project-id> --directory /html --max-depth 1
```

Plan a deployment readiness sweep:

```bash
node skills/mittwald/mittwald.cjs --format json plan deploy-check --project-id <project-id>
```

Build guarded write requests after exact operator approval:

```bash
node skills/mittwald/mittwald.cjs --format json http-request create-redis-database \
  --project-id <project-id> --description cache-prod --version 7.0 --operator-grant

node skills/mittwald/mittwald.cjs --format json http-request create-mysql-database \
  --project-id <project-id> --description app-prod --version 8.4 \
  --password-secret MITTWALD_MYSQL_PASSWORD --operator-grant

node skills/mittwald/mittwald.cjs --format json http-request service-action \
  --stack-id <stack-id> --service-id <service-id> --action restart --operator-grant

node skills/mittwald/mittwald.cjs --format json http-request update-domain-nameservers \
  --domain-id <domain-id> --nameserver ns1.example.com --nameserver ns2.example.com \
  --operator-grant

node skills/mittwald/mittwald.cjs --format json http-request restore-backup-path \
  --backup-id <backup-id> --source-path /html --target-path /html-restore \
  --operator-grant

node skills/mittwald/mittwald.cjs --format json http-request order-extension \
  --extension-id <extension-id> \
  --body-json '{"projectId":"<project-id>","consentedScopes":[]}' \
  --operator-grant
```

After a live write returns an `etag` header, build the consistency read:

```bash
node skills/mittwald/mittwald.cjs --format json event-follow-up service-action \
  --stack-id <stack-id> --service-id <service-id> --event-id <etag>
```

Classify saved or live `http_request` failures:

```bash
node skills/mittwald/mittwald.cjs --format json classify-response \
  --status 429 \
  --headers-json '{"X-RateLimit-Remaining":"0","X-RateLimit-Reset":"10"}'
```

## Working Rules

- The mStudio v2 API base URL is `https://api.mittwald.de/v2/`.
- The helper only builds allowlisted endpoint shapes. Do not add arbitrary path
  passthrough for operator convenience.
- `databases` emits two `httpRequests` items: MySQL databases and Redis
  databases. Send each item through `http_request`, then merge the results in
  the response.
- Use `domains`, `dns-zones`, and `ingresses` together when checking
  domain/DNS/SSL/ingress state.
- Use `apps`, `app-status`, `app-system-software`, `services`, `stacks`, and
  `service-logs` to summarize runtime health. Keep logs bounded with `--tail`.
- Use `backups`, `backup-path`, and `backup-database-dumps` for backup
  readiness. Backup restore operations are red and require exact target approval.
- Use `extension-orders`, `extension-instances`, and `licenses` for marketplace
  and license visibility. `order-extension` and license-key validation are
  guarded mutations and require exact F8/F14 approval.
- For mutating operations that need complex request bodies, use `--body-json`
  only on that allowlisted operation. `create-app-installation` requires
  `appVersionId`, `description`, `updatePolicy`, and `userInputs[]`.
  `create-cronjob` requires `description`, `interval`, and `target`.
  `restore-backup` requires `pathRestore` or `databaseRestores[]`.
  `order-extension` requires `consentedScopes[]` plus exactly one of
  `projectId` or `customerId`.
- Use `<secret:NAME>`-style placeholders via flags such as `--password-secret`
  and `--license-key-secret`; never put raw credentials in command arguments.
- Optional companion workflows: the official mittwald CLI, SDKs, Terraform
  provider, and mittwald MCP docs can inform operator guidance, but they are
  not runtime dependencies for this bundled skill.

## Validation

```bash
python3 skills/skill-creator/scripts/quick_validate.py skills/mittwald
node skills/mittwald/mittwald.cjs --help
```

Files in this skill

  • SKILL.md10.3 KB
  • mittwald.cjs41.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.