DDNS Build and Release Maintenance
NewFuture/DDNS
Maintains the DDNS project's GitHub Actions, Docker and Nuitka builds, packaging and release preparation without touching publishing credentials.
Builds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package.
$ npx skills add adithya-s-k/FineEnvs --skill generate-ors-env -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-ors-env --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/adithya-s-k/FineEnvs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/generate-ors-env .claude/skills/generate-ors-env && 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 "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .claude/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-envType 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 adithya-s-k/FineEnvs --skill generate-ors-env -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-ors-env --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adithya-s-k/FineEnvs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/generate-ors-env .agents/skills/generate-ors-env && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .agents/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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 adithya-s-k/FineEnvs --skill generate-ors-env -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-ors-env --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adithya-s-k/FineEnvs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/generate-ors-env .cursor/skills/generate-ors-env && 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 "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .cursor/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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/adithya-s-k/FineEnvs.git --path .claude/skills/generate-ors-env--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 adithya-s-k/FineEnvs --skill generate-ors-env -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-ors-env --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adithya-s-k/FineEnvs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/generate-ors-env .gemini/skills/generate-ors-env && 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 "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .gemini/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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 adithya-s-k/FineEnvs generate-ors-envInstalls 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 adithya-s-k/FineEnvs --skill generate-ors-env -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/adithya-s-k/FineEnvs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/generate-ors-env .github/skills/generate-ors-env && 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 "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .github/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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 adithya-s-k/FineEnvs --skill generate-ors-env -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-ors-env --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adithya-s-k/FineEnvs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/generate-ors-env .opencode/skills/generate-ors-env && 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 "generate-ors-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-ors-env into .opencode/skills/generate-ors-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-ors-env", 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.
generate-ors-envBuilds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package.
Generate Ors Env is an agent skill from adithya-s-k/FineEnvs. Builds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package. Use whenever someone asks to scaffold an ORS env, port to OpenReward, add per-tool-call rewards, deploy to OpenReward.ai, or wrap an existing env in the ORS protocol. ORS is the right framework when the user wants HTTP+REST+SSE, rewards arriving inline with each tool call (not post-episode), task-spec-driven sessions, splits (train/val/test), or deployment to OpenReward.ai or HF Spaces. Output is a…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/architecture.md`).
It sits in DevOps & Cloud, covering Reinforcement learning, Containers and Deployment. It works with Python and Docker. The repository describes itself as: FineEnvs — RL Environments 101: building and scaling RL environments in the age of LLMs. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5e0b46e. 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:
uvcurljqFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
openrewardstandard.iodocs.openreward.aipypi.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
E2B_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generate Ors Env loads about 2.3k tokens when it runs, and up to ~3.5k if it reads all its reference files. Until then it costs about 191 tokens; SKILL.md has 580 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 noted patterns worth knowing about, such as sudo or a known installer.
bles — they survive rebuilds. The local `.env` file should not be uploaded.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 adithya-s-k/FineEnvs at commit 5e0b46e, republished under its Apache-2.0 licence (© adithya-s-k). 580 words, ~2,288 tokens.
.claude/skills/generate-ors-env/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Build the ORS variant of an env using the official openreward >= 0.1.33 package (the ors-sdk name is a common mistake — it does not exist on PyPI).
ORS is the Open Reward Standard (openrewardstandard.io) — an HTTP REST + Server-Sent Events protocol for agent envs. Reward arrives inline with every ToolOutput, which is the framework's defining feature compared to OpenEnv (external/post-hoc reward) and NeMo Gym (post-episode /verify).
When the user has a shared domain module (<domain>.py) and wants an ORS variant, never duplicate domain logic into the framework folder — wrap it.
| Archetype | Hallmarks |
|---|---|
| Pure-Python game | Single @tool, tasks.py with N task dicts forming the train split, terminal reward via finished=True. |
| Stateful sandbox | setup() allocates resources from task_spec; teardown() frees them; per-tool reward stubs. |
| Vision / computer-use | ImageBlock(data=<base64>, mimeType="image/png") returns; terminate(status) tool emits the terminal reward. |
Server side:
from openreward.environments import (
Environment, Server, tool, ToolOutput, TextBlock, Split, ImageBlock,
)Client side (rollouts):
from openreward import EnvironmentsAPI
api = EnvironmentsAPI(base_url=URL, api_key="")
env = api.get(ENV_NAME)Don't use
OpenReward(api_key=..., base_url=...)even though it's the high-level client. It prependsmatrix./api./construct.subdomains to the base URL — that breaks HF Space URLs.EnvironmentsAPItalks tobase_urlverbatim.
<env_dir>/ors/
├── pyproject.toml # openreward>=0.1.33 + e2b-* (if needed) + pydantic
├── __init__.py
├── Dockerfile # local dev image
├── Dockerfile.spaces # HF Space (port 7860, single-stage pip install)
├── README.spaces.md # HF Space frontmatter
├── server.py # the Environment subclass + main()
├── tasks.py # list of dicts (task_spec for each task)
├── rollout.py # or rollout_openai.py + rollout_qwen.py
└── README.md # one-page dev READMEtasks.pyA list of plain dicts. Each dict becomes a task_spec per session. ORS auto-wraps these into Task objects on list_tasks().
TASKS = [
{"answer": "apple", "task": "Guess the 5-letter word."},
# ...
]server.pyfrom pydantic import BaseModel
from openreward.environments import Environment, Server, tool, ToolOutput, TextBlock, Split
class GuessInput(BaseModel):
word: str
class WordleORS(Environment):
def __init__(self, task_spec=None, secrets=None, **kw):
super().__init__(task_spec=task_spec or {}, secrets=secrets or {})
self._game = None
def setup(self): # called on first tool invocation
self._game = WordleGame(self.task_spec.get("answer"))
def teardown(self): # called on session delete
self._game = None
@classmethod
def list_splits(cls): return [Split(name="train", type="train")]
@classmethod
def list_tasks(cls, split): return TASKS
def get_prompt(self):
return [TextBlock(text="Play Wordle. Guess the 5-letter word.")]
@tool
def guess(self, params: GuessInput) -> ToolOutput:
feedback = self._game.guess(params.word)
return ToolOutput(
blocks=[TextBlock(text=feedback)],
reward=self._game.reward,
finished=self._game.done,
)Key contracts:
params: PydanticModel as the second arg. ORS uses the model's JSON schema as the tool's input_schema.class _Empty(BaseModel): pass). Don't omit the param.ToolOutput.blocks is [TextBlock | ImageBlock]. For images: ImageBlock(data=<base64>, mimeType="image/png"). Vision models actually see this.reward is float | None. None means "no reward this step"; 0.0 means "stepped, scored zero". For pure terminal reward, return None everywhere except in the last ToolOutput.finished=True ends the session. Pair with reward=1.0 (or whatever) to give the rollout a clean stop.task_spec is a dict you read from self.task_spec — no schema validation. If you want validation, do it in setup().server.py maindef main():
parser = argparse.ArgumentParser()
parser.add_argument("--port", type=int, default=8080)
parser.add_argument("--host", type=str, default="0.0.0.0")
args = parser.parse_args()
Server([WordleORS]).run(host=args.host, port=args.port)The endpoint name is auto-derived from the class name lowercased — WordleORS → wordleors. Tell the user this so they know what ENV_NAME to pass.
Always discover tools and tasks from the env. Don't hardcode names:
api = EnvironmentsAPI(base_url=ENV_URL, api_key="")
env = api.get("wordleors")
tasks = env.list_tasks("train")
tools = env.list_tools(format="openai") # built-in OpenAI tool-schema converter
with env.session(task=tasks[0]) as session:
prompt = session.get_prompt()
result = session.call_tool("guess", {"word": "crane"})
# result.blocks, result.reward, result.finishedFor vision envs, the screenshot tool returns an ImageBlock — read it as b.data (already base64). Pass that into the model's image content.
Dockerfile.spaces is the HF Space deploy image. Keep it minimal:
FROM python:3.11-slim
RUN useradd -m -u 1000 user
RUN pip install --no-cache-dir openreward pydantic <other-deps>
USER user
ENV HOME=/home/user PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app
COPY --chown=user . $HOME/app
EXPOSE 7860
CMD ["python", "server.py", "--host", "0.0.0.0", "--port", "7860"]README.spaces.md:
---
title: My Env ORS
emoji: 🎯
colorFrom: pink
colorTo: indigo
sdk: docker
app_port: 7860
tags: [ors, openreward]
---Create a Space named <owner>/<env_name>-ors. Set E2B_API_KEY (and any other secrets) as Space secrets, not environment variables — they survive rebuilds. The local .env file should not be uploaded.
api.add_space_secret(repo_id="<owner>/<env>-ors", key="E2B_API_KEY", value="...")
api.upload_file(path_or_fileobj="Dockerfile.spaces", path_in_repo="Dockerfile", repo_id=...)
api.upload_file(path_or_fileobj="README.spaces.md", path_in_repo="README.md", repo_id=...)
# upload server.py, tasks.py, __init__.py, pyproject.tomluv run python server.py --port 8772 then curl http://localhost:8772/list_environments returns ["<envname>"].curl http://localhost:8772/<envname>/tools | jq '.tools | length' matches the number of @tool methods.MAX_TURNS=3 uv run python rollout.py drives the model through at least one tool call without errors.from openreward.environments.types import Task — wrong; Task is in openreward.api.environments.types and you usually don't import it. list_tasks can return plain dicts; ORS wraps them.OpenReward(base_url=URL) rewrites the URL — prepends matrix. / api. / construct. subdomains. For HF Spaces, use EnvironmentsAPI(base_url=URL, api_key="") directly.e2b-desktop without e2b — e2b-desktop imports from e2b, but doesn't pin it. Add both to dependencies.MyEnvORS becomes myenvors. Tell users this explicitly so their ENV_NAME env var is right.references/architecture.md — protocol shape + Server / Environment / Session lifecycle© adithya-s-k, 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
SKILL.md and 1 other file (references) in .claude/skills/generate-ors-env of adithya-s-k/FineEnvs.
Open the folder on GitHubat commit 5e0b46e
Generate Ors Env 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 |
|---|---|---|---|---|---|---|
| Generate Ors Env this skilladithya-s-k/FineEnvs | 461 | — | ~2.3k | Automated safety check: Notes | Apache-2.0 | |
| DDNS Build and Release MaintenanceNewFuture/DDNS | 4.7k | — | ~444 | Automated safety check: Pass | MIT | |
| Oci Functions Deployoracle/skills | 877 | — | ~4.6k | Automated safety check: Pass | UPL-1.0 | |
| Deploy To Tempsgotempsh/temps | 831 | — | ~1.3k | Automated safety check: Notes | Apache-2.0 | |
| Devops Deploysickn33/agentic-awesome-skills | 47k | 2 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Deploymentericrisco/rsc-harness | 180 | — | ~4.2k | Automated safety check: Notes | MIT |
NewFuture/DDNS
Maintains the DDNS project's GitHub Actions, Docker and Nuitka builds, packaging and release preparation without touching publishing credentials.
oracle/skills
Build, configure, scaffold, and deploy OCI Functions from a local machine using a dependency-first, Fn-context-guided flow with argv-safe mutation execution, nonce-scoped confirmations, and a…
gotempsh/temps
Deploy applications to the Temps platform with automatic framework detection, Dockerfile generation, and container orchestration.
sickn33/agentic-awesome-skills
DevOps e deploy de aplicacoes — Docker, CI/CD com GitHub Actions, AWS Lambda, SAM, Terraform, infraestrutura como codigo e monitoramento.
ericrisco/rsc-harness
A skill your agent uses when taking an app from source to live: choosing the deploy target from requirements (Hetzner+Coolify vs Vercel vs a third), then wiring container → CI → registry → host with…
NVIDIA/cosmos-framework
Diagnose and fix Cosmos3 environment, installation, and runtime errors.
adithya-s-k/FineEnvs
Builds a Verifiers (PrimeIntellect) variant of an RL environment.
adithya-s-k/FineEnvs
Builds a NeMo Gym (NVIDIA) variant of an RL environment. An agent skill from adithya-s-k/FineEnvs.
adithya-s-k/FineEnvs
Builds an OpenEnv (Hugging Face) variant of an RL environment.
adithya-s-k/FineEnvs
Turns a user's plain-English description of an RL training environment into runnable code across the four target frameworks — OpenEnv, OpenReward (ORS), Verifiers, and NeMo Gym.
adithya-s-k/FineEnvs
Configure article metadata via MDX frontmatter. An agent skill from adithya-s-k/FineEnvs.
adithya-s-k/FineEnvs
Create self-contained D3 HTML embed charts for the research article template.
Categories
Builds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package. Generate Ors Env is an agent skill from adithya-s-k/FineEnvs. Builds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package.
Generate Ors Env fits situations like: someone asks to scaffold an ORS env; port to OpenReward; add per-tool-call rewards; deploy to OpenReward.ai.
Run `npx skills add adithya-s-k/FineEnvs --skill generate-ors-env -a claude-code`. Or copy the skill folder (.claude/skills/generate-ors-env in adithya-s-k/FineEnvs) into .claude/skills/generate-ors-env in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adithya-s-k/FineEnvs --skill generate-ors-env -a codex`. Or copy the skill folder (.claude/skills/generate-ors-env in adithya-s-k/FineEnvs) into .agents/skills/generate-ors-env 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 adithya-s-k/FineEnvs --skill generate-ors-env -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-ors-env, .gemini/skills/generate-ors-env, .github/skills/generate-ors-env and .opencode/skills/generate-ors-env in your project.
Going by SKILL.md and its folder, Generate Ors Env needs the command-line tools its instructions call (uv, curl and jq) and credentials named E2B_API_KEY. Our summary lists: Python 3; Docker; A credential in E2B_API_KEY.
SKILL.md names 4 domains. As links in the text: openrewardstandard.io, docs.openreward.ai, pypi.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Generate Ors Env 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 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Generate Ors Env: DDNS Build and Release Maintenance (NewFuture/DDNS, 4.7k stars), Oci Functions Deploy (oracle/skills, 877 stars), Deploy To Temps (gotempsh/temps, 831 stars) and Devops Deploy (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
adithya-s-k (a GitHub user) maintains it in adithya-s-k/FineEnvs, which has 461 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 8, 2026.
Source: adithya-s-k/FineEnvs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.