Cloud Agents Starter
scalar/scalar
Minimal starter runbook for cloud agents to install dependencies, run packages, execute tests, and troubleshoot the Scalar monorepo quickly.
Land a PR that requires a coordinated ts-mono submodule change.
$ npx skills add UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UKGovernmentBEIS/inspect_ai land-ts-mono --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/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/land-ts-mono .claude/skills/land-ts-mono && 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 "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .claude/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-monoType 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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UKGovernmentBEIS/inspect_ai land-ts-mono --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/land-ts-mono .agents/skills/land-ts-mono && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .agents/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UKGovernmentBEIS/inspect_ai land-ts-mono --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/land-ts-mono .cursor/skills/land-ts-mono && 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 "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .cursor/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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/UKGovernmentBEIS/inspect_ai.git --path .agents/skills/land-ts-mono--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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UKGovernmentBEIS/inspect_ai land-ts-mono --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/land-ts-mono .gemini/skills/land-ts-mono && 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 "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .gemini/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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 UKGovernmentBEIS/inspect_ai land-ts-monoInstalls 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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/land-ts-mono .github/skills/land-ts-mono && 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 "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .github/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UKGovernmentBEIS/inspect_ai land-ts-mono --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UKGovernmentBEIS/inspect_ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/land-ts-mono .opencode/skills/land-ts-mono && 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 "land-ts-mono" agent skill from https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/.agents/skills/land-ts-mono into .opencode/skills/land-ts-mono/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "land-ts-mono", 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.
land-ts-monoLand a PR that requires a coordinated ts-mono submodule change.
Land TS Mono is an agent skill from UKGovernmentBEIS/inspect_ai. Land a PR that requires a coordinated ts-mono submodule change. Use when the check-schema-and-types CI job fails, when a Python model change requires regenerating the OpenAPI spec / TypeScript types, or when any change touches the ts-mono submodule and needs to be landed.
Its SKILL.md is about 3k 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 OpenAPI specifications and Type safety. It works with Python, OpenAPI and pnpm. The repository describes itself as: Inspect: A framework for large language model evaluations. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a1dbea8. 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:
gitpnpmghpythonuvFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom 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.
Land TS Mono loads about 3k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 1,700 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 UKGovernmentBEIS/inspect_ai at commit a1dbea8, republished under its MIT licence (© UKGovernmentBEIS). 1,700 words, ~3,039 tokens.
.claude/skills/land-ts-mono/SKILL.md (or your agent's skills folder).A change in this repo sometimes requires a matching change in the ts-mono submodule — most commonly because a Python model feeding the type-generation pipeline changed, which regenerates a file inside the submodule. Landing then requires a cross-repo dance: a ts-mono PR, a gitlink bump here, and a specific merge order. This skill is the sanctioned exception to the AGENTS.md rule against changing the submodule gitlink.
<!-- Porting this skill to another repo (e.g. inspect_scout): swap this
section's values; the procedure below is repo-agnostic. -->
src/inspect_ai/_view/ts-mono → https://github.com/meridianlabs-ai/ts-mono (branch main)python src/inspect_ai/_view/schema.py (from repo root, venv activated; requires pnpm install done in the submodule)src/inspect_ai/_view/inspect-openapi.json (this repo)packages/inspect-common/src/types/generated.ts (inside the submodule).github/workflows/log_viewer.yml):check-schema-and-types — artifacts must match the Python source (docstring-only drift tolerated) and each other (exactly)submodule-on-main — the gitlink SHA must be reachable from ts-mono maindist-validation — the checked-in viewer bundle src/inspect_ai/_view/dist must match pnpm --filter @meridianlabs/log-viewer build run at the pinned submodule commitpnpm typecheck and pnpm test from the ts-mono root (turbo), not per-package tscdesign/type-generation-pipeline.mdinspect_scout (also embeds ts-mono; its apps/scout/src/types/generated.ts duplicates the shared types). Its regen script scripts/export_openapi_schema.py regenerates its openapi.json from the installed inspect_ai and chains scout's types:generate.check-schema-and-types is red on your PR, orYour job is to reach the landed state from whatever state you find — you may be starting fresh or resuming mid-flight (possibly in a new session). First assess where things stand, then enter at the matching step:
| Observed state | Enter at |
|---|---|
| No ts-mono branch/PR yet | step 1 |
| Regeneration not done or stale | step 2 |
| ts-mono PR open; this repo's PR not yet gitlink-bumped/pushed | step 3 |
Both PRs open; this repo's PR behind main or conflicted | update the branch (see pitfalls), then step 4 |
| Both PRs in phase-1 state (green / green-except-gate) | step 4 |
| ts-mono PR merged; gate still red | step 4.2 |
Resumption relies on the PR cross-links (step 3) to find the paired PR, and any monitors/watches from a previous session are gone — re-arm them.
Finding the paired ts-mono branch: the submodule sits on a detached HEAD,
so the work branch isn't announced. The authoritative probes work whatever
the branch is named: git -C <submodule> branch -a --contains HEAD lists
every branch containing the gitlink commit, and the PR cross-links (step 3)
name the ts-mono PR's head branch. Branches are usually named the same as
this repo's branch (step 1's convention), which makes a good first guess —
but never a requirement. If nothing but main-ish refs contain HEAD, there's
no branch yet — that's the fresh-start case (step 1). Before committing in
the submodule, git checkout <branch> — a commit made on the detached HEAD
lands on no branch. A local branch may also lag its remote; trust
origin/<branch>, not the local ref.
In the submodule, git fetch origin and branch from origin/main — NOT the
local main ref, which lags arbitrarily far behind (submodules live on
detached HEADs; nothing routinely updates their local branches, and fetch
moves only origin/main). You must be current with ts-mono origin/main
before merging anyway, so get current before making changes. Name the new
branch after this repo's branch — a convention that makes the pairing obvious
at a glance (discovery doesn't depend on it; see "Finding the paired ts-mono
branch" above).
Sync this repo's branch with its origin/main (fetch first) before
regenerating — the schema that
lands is generated from the merged Python, so regenerating against a stale
branch bakes in a schema that drifts the moment you update the branch.
For type changes, run the regeneration command. It rewrites both generated
artifacts — one in this repo, one in the submodule. Docstring-only changes do
NOT require regeneration (CI tolerates description drift); only structural
changes do.
Run the submodule checks (see repo facts) before pushing. Expect fixture fallout: adding a required field means test/e2e fixtures constructing literals of that type need the new field.
scout#typecheck breaks: sync the sibling's duplicated typesThe sibling consumer's app in ts-mono carries its own generated duplicates of the shared types. TypeScript's structural typing keeps them interchangeable until the shape of an existing shared type changes incompatibly. Heuristic: would the change break a strict TS consumer or producer of the type?
When sync is needed, regenerate with the sibling's real tooling — do NOT hand-edit its generated file:
uv pip install -e <sibling worktree> -e <this repo checkout>
(so the sibling's regen sees your unmerged Python change).openapi.json (it can't land
there until it upgrades this package); commit only the ts-mono
generated.ts change to your ts-mono branch and push.Result: this repo's PR is green except submodule-on-main. That one red
gate is the expected signal meaning "waiting on ts-mono merge" — do not try
to fix it yet. Note: submodule-on-main is a job inside the "Validate
Embedded Viewer" workflow, so that whole workflow shows as failing in
rollup views — read job-level status before concluding anything else broke.
Why two-phase: once ts-mono merges, its main depends on Python changes
that aren't merged yet, blocking anyone else who pulls ts-mono main. The
goal is to make that window as short as possible: get everything else green
on both PRs first, and only then merge ts-mono.
Preconditions — ALL of these before anyone merges anything:
submodule-on-mainsubmodule-on-mainThe provisional approval matters: it puts review latency before the blocking window opens. Once ts-mono merges, the only remaining work should be re-running one gate — not waiting on a reviewer.
Auto-merge: NEVER enable it on the ts-mono PR — its merge is the deliberate,
human-timed act that opens the blocking window, and it must not fire just
because checks pass. The Python PR is the opposite: once ts-mono is merged,
enable auto-merge on it yourself (gh pr merge --auto) so it lands the
moment the gate clears.
gh pr view <n> --json state,mergeCommit); a human merges it (agents
cannot). React to the merge the moment it lands — the blocking window
opens at merge, so don't wait for the user to come back and tell you.origin/main:main SHA. The bump picks up every ts-mono main change since the
last bump, not just yours — so rebuild the viewer bundle at the new
commit (pnpm install --frozen-lockfile && pnpm --filter @meridianlabs/log-viewer build in the submodule) and commit the gitlink
together with any resulting dist/ changes (often none — type-only
deltas build identically — but dist-validation fails if you skip the
check and something did change). Push.submodule-on-main check.gh pr merge --auto) and tell the
user — the PR lands automatically the moment the gate clears. Watch until
it actually merges; if auto-merge is unavailable (repo settings), watch CI
and tell the user the instant it's mergeable instead.origin/main into your branch, check git status for
the gitlink: a merge can silently revert your intentional bump (the inverse
of the accidental-bump failure mode in AGENTS.md).main bumps the gitlink while your PR is open, GitHub reports a
submodule conflict and stops running CI on the PR. Fix: merge origin/main
into your branch; at the gitlink conflict, verify main's new pointer is an
ancestor of your ts-mono branch head
(git -C <submodule> merge-base --is-ancestor <main-ptr> <yours>) — it
will be if you branched from current ts-mono main — then keep yours
(git add <submodule>), commit, push. If it is NOT an ancestor, first
merge ts-mono origin/main into your ts-mono branch and push, then point
the gitlink at that. A gitlink-bumping main commit usually also rebuilds the
checked-in viewer dist/ — taking main's dist is correct when your ts-mono
delta is types/tests only (type erasure leaves the build output identical);
otherwise rebuild dist from your ts-mono branch.node_modules breaks the TypeScript half — pnpm install in the submodule
first.inspect-openapi.json stale against the branch's own source. When
resuming mid-flight, re-run the regeneration command and confirm it's a
no-op before entering the endgame.© UKGovernmentBEIS, MIT. 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 .agents/skills/land-ts-mono of UKGovernmentBEIS/inspect_ai.
Open the folder on GitHubat commit a1dbea8
Land TS Mono 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 |
|---|---|---|---|---|---|---|
| Land TS Mono this skillUKGovernmentBEIS/inspect_ai | 3k | — | ~3k | Automated safety check: Pass | MIT | |
| Cloud Agents Starterscalar/scalar | 16k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Assisted Service Dev Modeopenshift/assisted-service | 138 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Code Documenterzebbern/claude-code-guide | 4.7k | — | ~1k | Automated safety check: Pass | MIT | |
| Improving Drf EndpointsPostHog/posthog | 40k | — | ~3k | Automated safety check: Pass | Custom licence | |
| Running CI PreflightPostHog/posthog | 40k | — | ~1.5k | Automated safety check: Pass | Custom licence |
scalar/scalar
Minimal starter runbook for cloud agents to install dependencies, run packages, execute tests, and troubleshoot the Scalar monorepo quickly.
openshift/assisted-service
Build and code-generate assisted-service using skipper with podman.
zebbern/claude-code-guide
A skill your agent uses when adding docstrings, creating API documentation, or building documentation sites.
PostHog/posthog
A skill your agent uses when editing, reviewing, or auditing DRF viewsets and serializers in PostHog.
PostHog/posthog
Catch the deterministic CI failures reachable from your diff before pushing, with hogli ci:preflight.
jasonjgardner/blockbench-mcp-plugin
Zod schema validation best practices for type safety, parsing, and error handling.
UKGovernmentBEIS/inspect_ai
Measure PR CI speed, queue and execution time, slow tests, suite growth, and runner waste.
UKGovernmentBEIS/inspect_ai
Land a PR that requires new inspect-sandbox-tools injectable binaries to be built and published.
UKGovernmentBEIS/inspect_ai
Run the gated test classes that plain pytest skips (slow Docker/sandbox tests, live model-provider API tests, flaky tests, trio variants).
Categories
Land a PR that requires a coordinated ts-mono submodule change. Land TS Mono is an agent skill from UKGovernmentBEIS/inspect_ai. Land a PR that requires a coordinated ts-mono submodule change.
Land TS Mono fits situations like: the check-schema-and-types CI job fails; A Python model change requires regenerating the OpenAPI spec / TypeScript types; any change touches the ts-mono submodule and needs to be landed.
Run `npx skills add UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a claude-code`. Or copy the skill folder (.agents/skills/land-ts-mono in UKGovernmentBEIS/inspect_ai) into .claude/skills/land-ts-mono in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a codex`. Or copy the skill folder (.agents/skills/land-ts-mono in UKGovernmentBEIS/inspect_ai) into .agents/skills/land-ts-mono 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 UKGovernmentBEIS/inspect_ai --skill land-ts-mono -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/land-ts-mono, .gemini/skills/land-ts-mono, .github/skills/land-ts-mono and .opencode/skills/land-ts-mono in your project.
Going by SKILL.md and its folder, Land TS Mono needs the command-line tools its instructions call (git, pnpm, gh, python and uv). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: github.com. 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.
Land TS Mono is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k 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 Land TS Mono: Cloud Agents Starter (scalar/scalar, 16k stars), Assisted Service Dev Mode (openshift/assisted-service, 138 stars), Code Documenter (zebbern/claude-code-guide, 4.7k stars) and Improving Drf Endpoints (PostHog/posthog, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
UKGovernmentBEIS (a GitHub organization) maintains it in UKGovernmentBEIS/inspect_ai, which has 2,974 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.
Source: UKGovernmentBEIS/inspect_ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.