Agent skill

Deploy

by ambient-code in ambient-code/platform

Deploy, update manifests, and troubleshoot the ambient-ui component.

MITAuto-check passedDevOps & Cloud

Install Deploy

skills CLI
$ npx skills add ambient-code/platform --skill deploy -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ambient-code/platform deploy --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ambient-code/platform.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/deployments/ambient-ui .claude/skills/deploy && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deploy
GitHub stars
131
Token cost
~2.6k tokens
SKILL.md length
796 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Deploy, update manifests, and troubleshoot the ambient-ui component.

  • Works in 4 steps: Quay.io repository → OIDC client (REQUIRED for production) → Secrets → …
  • Modifying deployment manifests
  • SKILL.md covers User Input, Architecture, Manifest File Map and Docker Build, plus 7 more sections
  • Calls podman, openssl and curl; reaches ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com and keycloak-ambient-keycloak.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com; needs SSO_CLIENT_SECRET and SESSION_SECRET

What it does

Deploy is an agent skill from ambient-code/platform. Deploy, update manifests, and troubleshoot the ambient-ui component. Use when creating or modifying deployment manifests, adding ambient-ui to a new overlay, building images, or debugging cluster issues.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Deployment, Authentication and OAuth and OpenID Connect. It works with Docker. The repository describes itself as: Vision/Mission https://ambient-code.ai : Virtual team management and collaboration platform. User guides: https://ambient-code.github.io/platform/. The licence is MIT.

When your agent uses it

  • Modifying deployment manifests
  • Adding ambient-ui to a new overlay
  • Building images
  • Debugging cluster issues

Example prompts

  • “/deploy”

Requirements

  • Node.js
  • Docker
  • A credential in SSO_CLIENT_SECRET
  • A credential in SESSION_SECRET

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Quay.io repository
  2. OIDC client (REQUIRED for production)
  3. Secrets
  4. Route + TLS

What it can do on your machine

Read from SKILL.md and the folder at commit 57e8af8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • podman
    • openssl
    • curl
    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com
    • keycloak-ambient-keycloak.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com
    • sso.redhat.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • SSO_CLIENT_SECRET
    • SESSION_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deploy loads about 2.6k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 796 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ambient-code/platform at commit 57e8af8, republished under its MIT licence (© ambient-code). 796 words, ~2,555 tokens.

Download SKILL.mdSave it as .claude/skills/deploy/SKILL.md (or your agent's skills folder).
name
deploy
description
Deploy, update manifests, and troubleshoot the ambient-ui component. Use when creating or modifying deployment manifests, adding ambient-ui to a new overlay, building images, or debugging cluster issues.

Ambient UI Deployment

Instructions for deploying the ambient-ui component across environments.

User Input

text
$ARGUMENTS

Architecture

The ambient-ui is a Next.js BFF (Backend-for-Frontend) that handles OIDC authentication as a confidential client, manages server-side sessions, and proxies API requests to the ambient-api-server with JWT relay.

Route (port 443, TLS edge termination)
  → Service (port 3000)
    → Next.js BFF (port 3000)
      ├── OIDC auth (Authorization Code Flow + PKCE against Red Hat SSO)
      ├── Server-side session (iron-session, httpOnly cookie)
      ├── JWT relay to ambient-api-server (Authorization: Bearer <jwt>)
      └── ambient-api-server (port 8000, HTTPS, validates JWT against same issuer)

No sidecar proxy. The BFF IS the confidential OIDC client. The browser never receives a raw JWT — only an httpOnly session cookie.

Manifest File Map

FilePurpose
components/manifests/base/core/ambient-ui-deployment.yamlBase Deployment, ServiceAccount, Service
components/manifests/overlays/kind/kustomization.yamlKind overlay (Quay images, no auth)
components/manifests/overlays/kind-local/kustomization.yamlKind-local overlay (localhost images)
components/ambient-ui/DockerfileMulti-stage Docker build
.github/workflows/components-build-deploy.ymlCI build matrix entry
components/manifests/overlays/hcmais/kustomization.yamlHCMAIS overlay (ambient-api namespace, Keycloak SSO)

Production overlay files exist (ambient-ui-oauth-patch.yaml, etc.) but are disabled — they used origin-oauth-proxy which can't produce JWTs. See Auth section.

Docker Build

Build context is ./components (not ./components/ambient-ui), because the Dockerfile references ambient-sdk/ts-sdk as a sibling.

Critical details
  1. SDK dist/ is gitignored. The Dockerfile must build it:

    dockerfile
    COPY ambient-sdk/ts-sdk /ambient-sdk/ts-sdk
    RUN cd /ambient-sdk/ts-sdk && npm install --ignore-scripts && npm run build
  2. Standalone output path. outputFileTracingRoot: ../.. in next.config.js resolves to / in Docker (WORKDIR /app), so standalone nests under app/:

    dockerfile
    cp -r .next/standalone/app/. /app-output/

    Locally it nests under components/ambient-ui/. Always verify with:

    bash
    find .next/standalone -name server.js -not -path '*/node_modules/*'
  3. Webpack, not Turbopack. The build script is next build --webpack. Turbopack cannot resolve file: linked dependencies.

  4. OpenShift permissions. The builder stage must run:

    dockerfile
    chmod -R g=u /app-output && chgrp -R 0 /app-output

    The runner image (Red Hat Hardened Image) is distroless — no shell at runtime.

Local build & test
bash
podman build -t ambient-ui-test -f components/ambient-ui/Dockerfile components/
podman run --rm ambient-ui-test node -e 'require("fs").statSync("/app/server.js"); console.log("server.js found")'
podman run -d --name ambient-ui-test -e HOSTNAME=0.0.0.0 ambient-ui-test
podman exec ambient-ui-test node -e "require('http').get('http://localhost:3000/', r => { console.log(r.statusCode); r.on('data',()=>{}); r.on('end',()=>process.exit(0)); })"
podman stop ambient-ui-test && podman rm ambient-ui-test

Environment Configuration

Env Varkind / localProduction
API_SERVER_URLhttp://ambient-api-server:8000https://ambient-api-server:8000
NODE_EXTRA_CA_CERTS(unset)/etc/ssl/service-ca/service-ca.crt (from service-ca ConfigMap)
SSO_ISSUER_URLKeycloak realm URL (auto-generated by make dev COMPONENT=ambient-ui)https://sso.redhat.com/auth/realms/redhat-external
SSO_CLIENT_IDambient-frontend (Kind Keycloak)OIDC client ID
SSO_CLIENT_SECRETdev-secret-do-not-use-in-prod (Kind Keycloak)OIDC client secret (from Secret)
SESSION_SECRETauto-generated from cluster nameRandom 32+ byte string (from Secret)
NEXT_PUBLIC_PREVIEW_ALLOWED_HOSTS(unset, defaults localhost:*)target domains

Authentication

Native SSO (target architecture)

The BFF handles OIDC directly using Authorization Code Flow with PKCE:

  1. User visits ambient-ui → BFF redirects to SSO issuer authorize endpoint
  2. User authenticates at Red Hat SSO → redirected back with auth code
  3. BFF exchanges code for tokens (access token = JWT, refresh token, ID token)
  4. BFF stores tokens in an iron-session encrypted httpOnly cookie
  5. On API requests, BFF extracts JWT from session and forwards as Authorization: Bearer
  6. ambient-api-server validates JWT against sso.redhat.com JWKS endpoint

This is already implemented in:

  • src/lib/oidc.ts — OIDC discovery, auth URL, code exchange, token refresh
  • src/lib/session.ts — iron-session storage, token expiry, auto-refresh
  • src/lib/auth.ts — resolveAccessToken() extracts JWT from session
  • src/app/api/auth/sso/login/route.ts — initiates OIDC flow
  • src/app/api/auth/sso/callback/route.ts — handles callback, stores tokens
  • src/app/api/auth/sso/logout/route.ts — destroys session
What's needed to enable native SSO

An OIDC confidential client on sso.redhat.com/auth/realms/redhat-external:

  • Client protocol: openid-connect, access type: confidential
  • Valid redirect URI: https://<ambient-ui-route>/api/auth/sso/callback
  • Scopes: openid, email, profile

Then set the env vars: SSO_ISSUER_URL, SSO_CLIENT_ID, SSO_CLIENT_SECRET, SESSION_SECRET, and AUTH_MODE=native-sso.

Why origin-oauth-proxy doesn't work

The OpenShift origin-oauth-proxy issues opaque sha256~ tokens, not JWTs. The ambient-api-server requires Red Hat SSO JWTs (--enable-jwt=true). Confirmed via source code audit: origin-oauth-proxy has zero JWT support. The upstream OIDC id_token is decoded for claims and permanently discarded by the OpenShift OAuth server. No configuration can change this.

Production overlay files for oauth-proxy exist as reference but are disabled.

Show full SKILL.md (340 more words)Show less

Prerequisites (Manual Steps)

1. Quay.io repository

quay.io/ambient_code/vteam_ambient_ui with push access for vteamrobbit.

2. OIDC client (REQUIRED for production)

Create on sso.redhat.com/auth/realms/redhat-external:

  • Client protocol: openid-connect, access type: confidential
  • Redirect URI: https://<route>/api/auth/sso/callback
  • Scopes: openid, email, profile
3. Secrets
bash
oc create secret generic ambient-ui-config \
  --from-literal=sso-client-id=<client-id> \
  --from-literal=sso-client-secret=<client-secret> \
  --from-literal=session-secret="$(openssl rand -base64 32)"
4. Route + TLS

OpenShift Route with TLS edge termination, targeting the ambient-ui Service on port 3000.

Adding ambient-ui to a New Overlay

  1. Include base: resources: [../../base] (ambient-ui-deployment.yaml is in base/core)
  2. Add image entries for quay.io/ambient_code/vteam_ambient_ui
  3. Apply environment patches (auth mode, API URL, SSO config)
  4. If auth: create OIDC client and secrets per Prerequisites
  5. If OpenShift with HTTPS to ambient-api-server: trust the service-ca bundle. The API server TLS cert is signed by OpenShift service-ca, not the default SA CA. Create a ConfigMap with inject-cabundle annotation, mount it into the ambient-ui container, and set NODE_EXTRA_CA_CERTS=/etc/ssl/service-ca/service-ca.crt
  6. Add a Route if external access is needed
  7. Verify: kustomize build overlays/<target> | grep -A5 "name: ambient-ui"

HCMAIS Environment (ambient-api namespace)

The hcmais overlay deploys to ambient-api namespace on the HCMAIS ROSA cluster. It includes only: ambient-api-server, ambient-api-server-db, ambient-control-plane, ambient-ui, and postgresql.

Prerequisites
  1. Keycloak client — create ambient-ui client in the ambient-code realm at https://keycloak-ambient-keycloak.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com/admin:

    • Client authentication: ON (confidential)
    • Root URL: https://ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com
    • Valid redirect URIs: https://ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com/api/auth/sso/callback
    • Valid post logout redirect URIs: https://ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com/*
  2. Secrets (create in ambient-api namespace):

    bash
    # SSO credentials for ambient-ui
    oc create secret generic sso-credentials -n ambient-api \
      --from-literal=SSO_ISSUER_URL=https://keycloak-ambient-keycloak.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com/realms/ambient-code \
      --from-literal=SSO_CLIENT_ID=ambient-ui \
      --from-literal=SSO_CLIENT_SECRET=<from-keycloak> \
      --from-literal=SESSION_SECRET=$(head -c 32 /dev/urandom | base64 | head -c 32)
  3. Deploy:

    bash
    kustomize build components/manifests/overlays/hcmais | oc apply -n ambient-api -f -
  4. Verify:

    bash
    oc get pods -n ambient-api
    curl -s https://ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com/api/healthz

Troubleshooting

SymptomFix
Cannot find module '/app/server.js'Copy from .next/standalone/app/
Can't resolve 'ambient-sdk'Build SDK dist in Dockerfile deps stage
Liveness probe 401Use /api/healthz, not /
Client sent HTTP request to HTTPS serverUse https:// in API_SERVER_URL
401 text/plain from API serverToken format mismatch — ensure JWT, not opaque token
Turbopack build failsUse next build --webpack

Verification

  • kustomize build overlays/<target> valid YAML
  • Image references consistent across kustomization, CI, Makefile
  • Pod starts with 0 restarts
  • /api/healthz returns 200
  • API proxy returns data

© ambient-code, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/deployments/ambient-ui of ambient-code/platform.

Open the folder on GitHubat commit 57e8af8

Compare with similar skills

Deploy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deploy compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deploy this skillambient-code/platform131—~2.6kAutomated safety check: PassMIT
Os Usagegoinfinite/os361—~4.8kAutomated safety check: NotesGPL-2.0
AI ServerOpentrons/opentrons521—~2.5kAutomated safety check: NotesApache-2.0
Monstermq Broker Configvogler75/monster-mq143—~2.2kAutomated safety check: PassGPL-3.0
Access Protected Vercel Deploymentvercel/vercel-plugin301—~1.9kAutomated safety check: NotesCustom licence
Frontmcp Deploymentagentfront/frontmcp146—~9.2kAutomated safety check: NotesApache-2.0

Similar skills

  • Os Usage

    goinfinite/os

    A skill your agent uses when deploying or managing applications on an Infinite OS instance — maps the dashboard, CLI, and REST API, and gives the core deployment workflows.

    361 GitHub stars~4.8k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • AI Server

    Opentrons/opentrons

    Conventions for the opentrons-ai-server FastAPI service — project structure, uv dependency management, settings, testing, Docker, and deployment.

    521 GitHub stars~2.5k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Monstermq Broker Config

    vogler75/monster-mq

    Guide for configuring, deploying, and operating the MonsterMQ broker.

    143 GitHub stars~2.2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Official

    Access and test Vercel deployments protected by Vercel Authentication, SSO, or Deployment Protection.

    301 GitHub stars~1.9k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Frontmcp Deployment

    agentfront/frontmcp

    A skill your agent uses when deploying, building for production, packaging, or shipping a FrontMCP server.

    146 GitHub stars~9.2k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Deploy

    serithemage/serverless-openclaw

    Deploys Serverless OpenClaw CDK stacks to AWS. An agent skill from serithemage/serverless-openclaw.

    196 GitHub stars~898 tokensUpdated 6 mo ago
    DevOps & CloudAuto-check: notes

More from ambient-code/platform

All 18 skills in this repo
  • Align

    ambient-code/platform

    Run a convention alignment check across the codebase to measure adherence to documented standards.

    131 GitHub stars~754 tokensUpdated today
    Auto-check passed
  • Amber Review

    ambient-code/platform

    Perform a comprehensive code review using repository-specific standards.

    131 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Cypress Demo

    ambient-code/platform

    Create a Cypress-based video demo for a feature branch with cursor, click effects, and captions.

    131 GitHub stars~879 tokensUpdated today
    Auto-check: notes
  • Discover

    ambient-code/platform

    Discover domain-specific skills and context before starting any coding or spec work.

    131 GitHub stars~747 tokensUpdated today
    Auto-check passed
  • Frontend Development

    ambient-code/platform

    Required context for all frontend work. An agent skill from ambient-code/platform.

    131 GitHub stars~525 tokensUpdated today
    Auto-check passed
  • Gerrit Create

    ambient-code/platform

    A skill your agent uses when creating or updating Gerrit changes — pushing code for review, amending patch sets, setting reviewers and topics.

    131 GitHub stars~662 tokensUpdated today
    Auto-check passed

Works with

Questions about Deploy

What does Deploy do?

Deploy, update manifests, and troubleshoot the ambient-ui component. Deploy is an agent skill from ambient-code/platform. Deploy, update manifests, and troubleshoot the ambient-ui component.

When should I use Deploy?

Deploy fits situations like: modifying deployment manifests; adding ambient-ui to a new overlay; building images; debugging cluster issues.

How do I install Deploy in Claude Code?

Run `npx skills add ambient-code/platform --skill deploy -a claude-code`. Or copy the skill folder (skills/deployments/ambient-ui in ambient-code/platform) into .claude/skills/deploy in your project. Claude Code loads it when a task matches its description.

How do I install Deploy in Codex?

Run `npx skills add ambient-code/platform --skill deploy -a codex`. Or copy the skill folder (skills/deployments/ambient-ui in ambient-code/platform) into .agents/skills/deploy in your project. Codex loads it when a task matches its description.

Can I use Deploy in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ambient-code/platform --skill deploy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deploy, .gemini/skills/deploy, .github/skills/deploy and .opencode/skills/deploy in your project.

What does Deploy need to run?

Going by SKILL.md and its folder, Deploy needs the command-line tools its instructions call (podman, openssl, curl and make) and credentials named SSO_CLIENT_SECRET and SESSION_SECRET. Our summary lists: Node.js; Docker; A credential in SSO_CLIENT_SECRET; A credential in SESSION_SECRET.

Does Deploy access the network?

SKILL.md names 3 domains. In commands or code: ambient-ui-ambient-api.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com, keycloak-ambient-keycloak.apps.rosa.hcmais01ue1.s9m2.p3.openshiftapps.com and sso.redhat.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Deploy safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Deploy use?

Deploy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deploy use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deploy?

Skills that share tags, products or a category with Deploy: Os Usage (goinfinite/os, 361 stars), AI Server (Opentrons/opentrons, 521 stars), Monstermq Broker Config (vogler75/monster-mq, 143 stars) and Access Protected Vercel Deployment (vercel/vercel-plugin, 301 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deploy?

ambient-code (a GitHub organization) maintains it in ambient-code/platform, which has 131 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.

Source: ambient-code/platform on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.