Use Sealos
hashgraph-online/awesome-codex-plugins
Deploy and operate apps on Sealos Cloud: sign in to a Sealos account, deploy any project or self-hosted app (from the template store, an official Docker image, or project source code), provision…
Create a new Whirl environment in the envs/ directory. An agent skill from godatadriven/whirl.
$ npx skills add godatadriven/whirl --skill create-environment -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install godatadriven/whirl create-environment --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/create-environment .claude/skills/create-environment && rm -rf skills-srcUse ~/.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/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .claude/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add godatadriven/whirl --skill create-environment -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install godatadriven/whirl create-environment --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/create-environment .agents/skills/create-environment && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .agents/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add godatadriven/whirl --skill create-environment -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install godatadriven/whirl create-environment --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/create-environment .cursor/skills/create-environment && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .cursor/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/godatadriven/whirl.git --path .claude/skills/create-environment--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add godatadriven/whirl --skill create-environment -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install godatadriven/whirl create-environment --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/create-environment .gemini/skills/create-environment && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .gemini/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install godatadriven/whirl create-environmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add godatadriven/whirl --skill create-environment -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/create-environment .github/skills/create-environment && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .github/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add godatadriven/whirl --skill create-environment -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install godatadriven/whirl create-environment --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/godatadriven/whirl.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/create-environment .opencode/skills/create-environment && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-environment" agent skill from https://github.com/godatadriven/whirl/tree/master/.claude/skills/create-environment into .opencode/skills/create-environment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-environment", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-environmentCreate a new Whirl environment in the envs/ directory. An agent skill from godatadriven/whirl.
Create Environment is an agent skill from godatadriven/whirl. Create a new Whirl environment in the envs/ directory. Use when the user wants to add, scaffold, or create a new Docker Compose environment for the Whirl local Airflow development tool. Also invoked by the create-example skill when the user needs a custom environment. Triggers on requests like "create a new environment", "add an environment for Kafka", "I need an environment with Redis and S3".
Its SKILL.md is about 1.9k 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 Backend & APIs, covering Containers, Data pipelines and ETL and File uploads and storage. It works with Docker, Apache Airflow, Redis and Apache Kafka. The repository describes itself as: Fast iterative local development and testing of Apache Airflow workflows. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f085d57. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
airflowpipcurlawsFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, curl and aws, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
POSTGRES_PASSWORDAIRFLOW__API_AUTH__JWT_SECRETAIRFLOW__API__SECRET_KEYAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAIRFLOW__CORE__FERNET_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Environment loads about 1.9k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 454 words of instructions outside code blocks.
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.
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.
The full file from godatadriven/whirl at commit f085d57, republished under its Apache-2.0 licence (© godatadriven). 454 words, ~1,894 tokens.
.claude/skills/create-environment/SKILL.md (or your agent's skills folder).Scaffold a new Whirl environment in envs/. Gather requirements interactively, then generate all files.
Ask the user for:
postgres-s3-spark, sftp-mysql-example)localstack/localstack:3.0.2, port 4566)postgres:16, port 5432)mysql:8, port 3306)mockserver/mockserver:5.15.0, port 1080)atmoz/sftp, port 22)maildev/maildev:2.0.5, ports 1080/1025)singlemachine (default) - scheduler + webserver in one container, simplest setupapi-server, scheduler, dag-processor, triggerer containers (for testing HA or distributed setups)Create envs/<name>/ with these files:
docker-compose.yml (required)Follow these patterns:
Airflow service (singlemachine mode):
services:
airflow:
image: docker-whirl-airflow:py-${PYTHON_VERSION}-local
command: ["singlemachine"]
ports:
- '5000:5000'
env_file:
- .whirl.env
environment:
- WHIRL_SETUP_FOLDER
- AIRFLOW__FAB__AUTH_BACKENDS
- AIRFLOW__CORE__EXECUTION_API_SERVER_URL
- AIRFLOW__API_AUTH__JWT_SECRET
volumes:
- ${DAG_FOLDER}:/opt/airflow/dags/$PROJECTNAME
- ${ENVIRONMENT_FOLDER}/whirl.setup.d:${WHIRL_SETUP_FOLDER}/env.d/
- ${DAG_FOLDER}/whirl.setup.d:${WHIRL_SETUP_FOLDER}/dag.d/Adding service dependencies:
depends_on:
- s3server
- postgresdb
links:
- s3server:${DEMO_BUCKET}.s3server # Only for S3 virtual-host style accessCommon service definitions:
S3 (LocalStack):
s3server:
image: localstack/localstack:3.0.2
ports:
- "4566:4566"
environment:
- SERVICES=s3
env_file:
- .whirl.envPostgreSQL:
postgresdb:
image: postgres:16
ports:
- 5432:5432
environment:
- POSTGRES_HOST=postgresdb
- POSTGRES_PORT=5432
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}MockServer:
mockserver:
image: mockserver/mockserver:5.15.0
ports:
- 1080:1080
environment:
- LOG_LEVEL=ERROR
- SERVER_PORT=1080MySQL:
mysql:
image: mysql:8
ports:
- 3306:3306
env_file:
- mysql.envSMTP (MailDev):
smtp-server:
image: maildev/maildev:2.0.5
ports:
- "1080:1080"
- "1025:1025"Mock data volume (when needed): Add to the airflow service volumes:
- ${MOCK_DATA_FOLDER}:/mock-data.whirl.env (required)Standard variables always included:
AIRFLOW_VERSION=3.3.2
AIRFLOW__CORE__EXPOSE_CONFIG=True
AIRFLOW__API__EXPOSE_CONFIG=True
AIRFLOW__API__SECRET_KEY=webser_secret_key
AIRFLOW__DATABASE__LOAD_DEFAULT_CONNECTIONS=False
AIRFLOW__CORE__LOAD_EXAMPLES=FalseAdd service-specific variables based on chosen services:
For S3:
AWS_ACCESS_KEY_ID=bar
AWS_SECRET_ACCESS_KEY=foo
DEMO_BUCKET=demo-s3-output
AWS_SERVER=s3server
AWS_PORT=4566For PostgreSQL:
POSTGRES_HOST=postgresdb
POSTGRES_PORT=5432
POSTGRES_PASSWORD=p@ssw0rd
POSTGRES_USER=postgres
POSTGRES_DB=postgresdbFor SMTP:
AIRFLOW__SMTP__SMTP_HOST=smtp-server
AIRFLOW__SMTP__SMTP_PORT=2525
AIRFLOW__SMTP__SMTP_MAIL_FROM=sender@example.comFor distributed Airflow (add fernet key and DB connection):
AIRFLOW__CORE__FERNET_KEY=YlCImzjge_TeZc7jPJ7Jz2pgOtb4yTssA1pVyqIADWg=
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}whirl.setup.d/ scripts (optional but typical)Create numbered shell scripts for environment initialization. Common scripts:
S3 connection setup (01_add_connection_s3.sh):
#!/usr/bin/env bash
echo "=========================="
echo "== Configure S3 =========="
echo "=========================="
pip install awscli
export AWS_ENDPOINT_URL="http://${AWS_SERVER}:${AWS_PORT}"
while [[ "$(curl -s -o /dev/null -w '%{http_code}' ${AWS_ENDPOINT_URL})" != "200" ]]; do
echo "Waiting for S3 server..."
sleep 2
done
aws s3 mb s3://${DEMO_BUCKET}
airflow connections add aws_default \
--conn-type aws \
--conn-extra "{\"endpoint_url\": \"http://${AWS_SERVER}:${AWS_PORT}\"}"PostgreSQL connection setup (02_add_connection_postgres.sh):
#!/usr/bin/env bash
echo "=============================="
echo "== Configure PostgreSQL ======"
echo "=============================="
airflow connections add postgres_default \
--conn-type postgres \
--conn-host ${POSTGRES_HOST} \
--conn-port ${POSTGRES_PORT} \
--conn-login ${POSTGRES_USER} \
--conn-password ${POSTGRES_PASSWORD} \
--conn-schema ${POSTGRES_DB}Scripts must use #!/usr/bin/env bash and include wait loops for service readiness when needed.
compose.setup.d/ scripts (optional)Host-side scripts executed before Docker Compose starts. Use for:
.pgdata/)For services needing separate env files (e.g., mysql.env, sftp.env).
README.md (required)Every environment in envs/ has one. Keep to the shape the existing ones use
(see envs/postgres-s3-external-spark/README.md for a typical example):
compose.setup.d/) rather than in the container..whirl.env values worth knowing, and any that
deviate from the repo defaults (a pinned PYTHON_VERSION, non-default
Postgres credentials, an unusual port).whirl -x <example> -e <env> command that exercises it, and say if CI runs it.
Note any CI exclusion and why (memory, missing upstream artifact).After creating files:
docker-compose.yml is valid YAML.whirl.env variable names match service names in docker-compose.ymlchmod +x envs/<name>/whirl.setup.d/*.sh© godatadriven, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/create-environment of godatadriven/whirl.
Open the folder on GitHubat commit f085d57
Create Environment 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Environment this skillgodatadriven/whirl | 205 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Use Sealoshashgraph-online/awesome-codex-plugins | 1.2k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Monstermq Broker Configvogler75/monster-mq | 143 | — | ~2.2k | Automated safety check: Pass | GPL-3.0 | |
| Cloudrun DevelopmentTencentCloudBase/CloudBase-AI-Toolkit | 1.1k | 1 repos | ~7.2k | Automated safety check: Pass | MIT | |
| CloudbaseTencentCloudBase/CloudBase-AI-Toolkit | 1.1k | 1 repos | ~4.7k | Automated safety check: Pass | MIT | |
| Stripe Projectsfossasia/eventyay | 1.7k | 5 repos | ~2k | Automated safety check: Notes | Apache-2.0 |
hashgraph-online/awesome-codex-plugins
Deploy and operate apps on Sealos Cloud: sign in to a Sealos account, deploy any project or self-hosted app (from the template store, an official Docker image, or project source code), provision…
vogler75/monster-mq
Guide for configuring, deploying, and operating the MonsterMQ broker.
TencentCloudBase/CloudBase-AI-Toolkit
CloudBase Run backend development rules (Function mode/Container mode).
TencentCloudBase/CloudBase-AI-Toolkit
A skill your agent uses when you develop, design, build, deploy, debug, migrate, or troubleshoot CloudBase (腾讯云开发, 云开发, TCB, 微信云开发) projects — Web, 微信小程序, 小程序, uni-app, mobile (iOS, Android…
fossasia/eventyay
A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.
FoundatioFx/Foundatio
A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.
godatadriven/whirl
Before committing, work out which Whirl examples need a CI run to verify changes still work, then run them after confirming with the user.
godatadriven/whirl
Create a new Whirl example project in the examples/ directory.
godatadriven/whirl
Bump the Airflow or Python version across all project files.
Categories
Create a new Whirl environment in the envs/ directory. An agent skill from godatadriven/whirl. Create Environment is an agent skill from godatadriven/whirl. Create a new Whirl environment in the envs/ directory.
Create Environment fits situations like: the user wants to add; create a new Docker Compose environment for the Whirl local Airflow development tool; needs a custom environment; requests like create a new environment.
Run `npx skills add godatadriven/whirl --skill create-environment -a claude-code`. Or copy the skill folder (.claude/skills/create-environment in godatadriven/whirl) into .claude/skills/create-environment in your project. Claude Code loads it when a task matches its description.
Run `npx skills add godatadriven/whirl --skill create-environment -a codex`. Or copy the skill folder (.claude/skills/create-environment in godatadriven/whirl) into .agents/skills/create-environment in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add godatadriven/whirl --skill create-environment -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-environment, .gemini/skills/create-environment, .github/skills/create-environment and .opencode/skills/create-environment in your project.
Going by SKILL.md and its folder, Create Environment needs the command-line tools its instructions call (airflow, pip, curl and aws) and credentials named POSTGRES_PASSWORD, AIRFLOW__API_AUTH__JWT_SECRET, AIRFLOW__API__SECRET_KEY and AWS_ACCESS_KEY_ID. Our summary lists: Python 3; Docker; A credential in AIRFLOW__API_AUTH__JWT_SECRET; A credential in AIRFLOW__API__SECRET_KEY.
SKILL.md contains no URLs. Its commands use pip and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Create Environment is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Environment: Use Sealos (hashgraph-online/awesome-codex-plugins, 1.2k stars), Monstermq Broker Config (vogler75/monster-mq, 143 stars), Cloudrun Development (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars) and Cloudbase (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
godatadriven (a GitHub organization) maintains it in godatadriven/whirl, which has 205 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 1, 2026.
Source: godatadriven/whirl on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.