DeepTutor CLI
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
Builds a Verifiers (PrimeIntellect) variant of an RL environment.
$ npx skills add adithya-s-k/FineEnvs --skill generate-verifiers-env -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-verifiers-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-verifiers-env .claude/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .claude/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-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-verifiers-env -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-verifiers-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-verifiers-env .agents/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .agents/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-env -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-verifiers-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-verifiers-env .cursor/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .cursor/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-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-verifiers-env -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adithya-s-k/FineEnvs generate-verifiers-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-verifiers-env .gemini/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .gemini/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-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-verifiers-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-verifiers-env .github/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .github/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-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-verifiers-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-verifiers-env .opencode/skills/generate-verifiers-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-verifiers-env" agent skill from https://github.com/adithya-s-k/FineEnvs/tree/main/.claude/skills/generate-verifiers-env into .opencode/skills/generate-verifiers-env/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-verifiers-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-verifiers-envBuilds a Verifiers (PrimeIntellect) variant of an RL environment.
Generate Verifiers Env is an agent skill from adithya-s-k/FineEnvs. Builds a Verifiers (PrimeIntellect) variant of an RL environment. Use whenever someone asks to scaffold a Verifiers env, port to Verifiers, build an in-process toolkit, set up a vf.ToolEnv with a Rubric, or wire up a TRL GRPOTrainer rollout. Verifiers is the right framework when the user wants in-process tools (no HTTP server), structured tool calling driven by plain Python functions, composable reward rubrics with multiple grader functions, fast iteration with no Docker, or the cleanest path from prototype to…
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 Education, covering Quizzes and assessments, Reinforcement learning and Structured output and tool calling. 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.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b0f4c2f. 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:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comdocs.primeintellect.aipypi.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generate Verifiers Env loads about 2.3k tokens when it runs, and up to ~3.6k if it reads all its reference files. Until then it costs about 207 tokens; SKILL.md has 629 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 adithya-s-k/FineEnvs at commit b0f4c2f, republished under its Apache-2.0 licence (© adithya-s-k). 629 words, ~2,322 tokens.
.claude/skills/generate-verifiers-env/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Build the Verifiers variant of an env. Verifiers is in-process — no HTTP server, no Docker, no HF Space. The trainer (or a manual rollout) imports tool functions directly from env.py.
PrimeIntellect Verifiers is a Python library — not a server framework. It provides vf.ToolEnv (multi-turn rollout), vf.Rubric (composable async graders), and adapters into TRL GRPOTrainer. The trainer or rollout owns the LLM client; the env owns the tools and the grader.
When the user has a shared domain module (<domain>.py) and wants a Verifiers variant, wrap it as a toolkit class plus standalone tool functions. Don't duplicate domain logic.
| Archetype | Hallmarks |
|---|---|
| Pure-Python game | One @tool-style function, terminal reward via rubric checking the trajectory. |
| Stateful sandbox in-process | Toolkit owns the sandbox (E2B, browser); initialize() is lazy; cleanup() is mandatory in finally. |
| Vision env | Drive the toolkit manually (skip vf.ToolEnv since vision content blocks aren't first-class in verifiers' rollout). Send the screenshot in the user message each turn. |
DesktopToolkit-style class (used by TRL adapter + manual rollout)class WordleToolkit:
def __init__(self): ...
def initialize(self): ... # lazy E2B / state init
def cleanup(self): ... # kill sandbox
def reset(self): ... # new episode
def guess(self, word: str) -> str:
"""Submit a 5-letter word guess. Returns colored feedback."""
...Public methods are introspected as tools by the TRL adapter. Docstrings become tool descriptions.
vf.ToolEnv for native verifiers env.evaluate(client, model)def create_verifiers_env():
import verifiers as vf
from datasets import Dataset
dataset = Dataset.from_list([{"question": t["task"], "answer": t["expected_output"]} for t in TASKS])
async def correctness(completion, answer, **kwargs) -> float:
# read from the completion trajectory; return 0.0–1.0
...
rubric = vf.Rubric(funcs=[correctness])
return vf.ToolEnv(tools=TOOL_FUNCTIONS, max_turns=8, dataset=dataset, rubric=rubric, system_prompt="...")TOOL_FUNCTIONS is a list of plain Python functions (not bound methods). They can share state via a module-level toolkit instance.
The user picks the actual paths. The canonical shape:
<env_dir>/verifiers/
├── pyproject.toml # verifiers + e2b-* + datasets + python-dotenv + openai
├── __init__.py
├── env.py # Toolkit class + standalone tool fns + create_verifiers_env()
├── rollout.py # Drives the toolkit manually with the openai client
└── README.md__init__ takes config (api_key="", app="firefox", etc.). Don't create the sandbox here — too eager.initialize() is the lazy creation hook. Always call it from each tool method.cleanup() kills the sandbox. Always call it from finally in the rollout.reset() calls cleanup() + reinitializes. Used between episodes by the TRL adapter.inspect)self.initialize() first, mutates state, returns a stringvf.ToolEnvModule-level shared toolkit, plus thin wrappers:
_shared: Optional[WordleToolkit] = None
def _kit():
global _shared
if _shared is None:
_shared = WordleToolkit()
return _shared
def guess(word: str) -> str:
"""Submit a 5-letter word guess."""
return _kit().guess(word)
TOOL_FUNCTIONS = [guess]Why both? The TRL adapter wants the toolkit class (per-rollout instance, isolated state). vf.ToolEnv wants free functions. Don't pick one — provide both.
Rubrics are composable graders. Each grader is async def func(completion, answer, **kwargs) -> float. Combine multiple in a vf.Rubric(funcs=[...]) and they're averaged (or weighted, see verifiers docs).
For a single-criterion env, one grader suffices:
async def correctness(completion, answer, **kwargs) -> float:
if not completion: return 0.0
last = completion[-1].get("content", "") if isinstance(completion[-1], dict) else str(completion[-1])
return 1.0 if answer.strip() in last.strip() else 0.0For multi-criterion (e.g. computer-use envs that need both terminate(success) AND a state check):
async def correctness(completion, answer, **kwargs) -> float:
seen_success = any("terminated: success" in str(m) for m in completion)
seen_expected = any(answer in str(m) for m in completion)
return 1.0 if (seen_success and seen_expected) else (0.5 if seen_success else 0.0)rollout.pyBuild OpenAI tool schemas from the function signatures + docstrings via inspect:
def func_to_openai_tool(fn):
sig = inspect.signature(fn)
hints = get_type_hints(fn)
doc = (fn.__doc__ or "").strip().split("\n\n")[0]
properties, required = {}, []
for name, p in sig.parameters.items():
ann = hints.get(name, str)
origin = get_origin(ann)
if origin in (list, "list"):
inner = get_args(ann)
properties[name] = {"type": "array", "items": {"type": "integer" if (inner and inner[0] is int) else "string"}}
elif ann is int: properties[name] = {"type": "integer"}
elif ann is float: properties[name] = {"type": "number"}
elif ann is bool: properties[name] = {"type": "boolean"}
else: properties[name] = {"type": "string"}
if p.default is inspect.Parameter.empty:
required.append(name)
return {"type": "function", "function": {
"name": fn.__name__, "description": doc,
"parameters": {"type": "object", "properties": properties, "required": required},
}}This pattern works for any toolkit. Use it as the standard adapter from Python signatures to OpenAI tool schemas.
For multimodal envs, drive the toolkit manually (don't use vf.ToolEnv since vision-content blocks aren't first-class in verifiers' rollout). Send the latest screenshot in the user message every turn:
text, b64 = kit._ctrl.screenshot() # if you exposed _ctrl
messages.append({"role": "user", "content": [
{"type": "text", "text": "Latest screenshot:"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
]})uv run python -c "from env import DesktopToolkit, TOOL_FUNCTIONS"vf.ToolEnv builds — uv run python -c "from env import create_verifiers_env; env = create_verifiers_env(); print(env)"MAX_TURNS=3 uv run python rollout.py runs end-to-end. Hits a real backend (E2B or whatever the env uses).ModuleNotFoundError: attrs — e2b-desktop transitively needs attrs but doesn't pin it. Add attrs>=23.0 to dependencies.**kwargs is forbidden — vLLM (used by some trainers) can't introspect **kwargs for JSON schema generation. Define explicit params, even if empty.references/architecture.md — vf.ToolEnv internals + Rubric composition + TRL adapter shapeToolEnv / StatefulToolEnv / MultiTurnEnv reference© 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-verifiers-env of adithya-s-k/FineEnvs.
Open the folder on GitHubat commit b0f4c2f
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in adithya-s-k/FineEnvs, which our catalogue first saw on October 7, 2026.
Generate Verifiers 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 Verifiers Env this skilladithya-s-k/FineEnvs | 421 | 1 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Agent Prompt Quality Barmastra-ai/mastra | 29k | — | ~2k | Automated safety check: Pass | Custom licence | |
| Auto Improvecrimeacs/auto-improve | 135 | — | ~651 | Automated safety check: Pass | MIT | |
| Pre Pushartcc/freelingo | 158 | — | ~732 | Automated safety check: Pass | AGPL-3.0 | |
| Sciatlas Idea Evaluatezjunlp/SciAtlas | 160 | — | ~2.2k | Automated safety check: Notes | MIT |
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
mastra-ai/mastra
Universal quality bar and final audit rubric for any agent system prompt.
crimeacs/auto-improve
GAN-style iterative improvement loop for any text artifact. An agent skill from crimeacs/auto-improve.
artcc/freelingo
A skill your agent uses when the user asks to check before pushing, pre-push, verificar antes de pushear, run all checks, or quiere validar que todo pasa antes de hacer push.
zjunlp/SciAtlas
Use only the current SciAtlas automated review workflow (reviewpipeline) to take a novice user from zero setup to a final automated review of a research idea or paper, including setup, registration…
ClawBio/ClawBio
Eval-driven skill tuning. An agent skill from ClawBio/ClawBio.
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
Builds an Open Reward Standard (ORS) variant of an RL environment using the official openreward Python package.
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 a Verifiers (PrimeIntellect) variant of an RL environment. Generate Verifiers Env is an agent skill from adithya-s-k/FineEnvs. Builds a Verifiers (PrimeIntellect) variant of an RL environment.
Generate Verifiers Env fits situations like: someone asks to scaffold a Verifiers env; port to Verifiers; build an in-process toolkit; set up a vf.ToolEnv with a Rubric.
Run `npx skills add adithya-s-k/FineEnvs --skill generate-verifiers-env -a claude-code`. Or copy the skill folder (.claude/skills/generate-verifiers-env in adithya-s-k/FineEnvs) into .claude/skills/generate-verifiers-env in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adithya-s-k/FineEnvs --skill generate-verifiers-env -a codex`. Or copy the skill folder (.claude/skills/generate-verifiers-env in adithya-s-k/FineEnvs) into .agents/skills/generate-verifiers-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-verifiers-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-verifiers-env, .gemini/skills/generate-verifiers-env, .github/skills/generate-verifiers-env and .opencode/skills/generate-verifiers-env in your project.
Going by SKILL.md and its folder, Generate Verifiers Env needs the command-line tools its instructions call (uv). Our summary lists: Python 3; Docker.
SKILL.md names 3 domains. As links in the text: github.com, docs.primeintellect.ai and pypi.org. 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.
Generate Verifiers 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.3k 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 Verifiers Env: DeepTutor CLI (HKUDS/DeepTutor, 41k stars), Agent Prompt Quality Bar (mastra-ai/mastra, 29k stars), Auto Improve (crimeacs/auto-improve, 135 stars) and Pre Push (artcc/freelingo, 158 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 421 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 6, 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.