Agent skill

Scenario Team Admin

by scenario-labs in scenario-labs/skills

A skill your agent uses when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or…

MITAuto-check passedBackend & APIs

Install Scenario Team Admin

skills CLI
$ npx skills add scenario-labs/skills --skill scenario-team-admin -a claude-code

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

GitHub CLI
$ gh skill install scenario-labs/skills scenario-team-admin --agent claude-code

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

Manual copy
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/scenario-team-admin .claude/skills/scenario-team-admin && rm -rf skills-src

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

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

Facts

Skill name
scenario-team-admin
GitHub stars
946
Token cost
~3.3k tokens
SKILL.md length
1,716 words
Files
1
Skills in repo
146
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or…

  • Works in 6 steps: scenario_tools_search with query="model… → scenario_tool_execute_read with name:… → In allowlist mode, the team list first:… → …
  • Administering a Scenario team from an agent through MCP: restricting which models a team
  • SKILL.md covers Overview, Quick reference, Model access: read the mode… and Members and spend caps, plus 4 more sections
  • Calls npx

What it does

Scenario Team Admin is an agent skill from scenario-labs/skills. Use when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or removing team and project members, changing roles, capping a member's Creative Unit spend, auditing API keys and their roles or scopes, or attributing consumption per user or model. Keywords: governance, model control, consumption cap, spend limit, API key hygiene, team admin, enterprise.

Its SKILL.md is about 3.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 Authorization and RBAC. It works with Model Context Protocol. The repository describes itself as: Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through… The licence is MIT.

When your agent uses it

  • Administering a Scenario team from an agent through MCP: restricting which models a team
  • Project can run (model access control
  • Removing team and project members
  • Capping a members Creative Unit spend

Example prompts

  • “/scenario-team-admin”

Requirements

  • Node.js

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. scenario_tools_search with query="model access", then query="team members": schemas and lanes for the calls below.
  2. scenario_tool_execute_read with name: "model_access_get", parameters: {"team_id", "project_id"}. The team is in blocklist mode, so "only…
  3. In allowlist mode, the team list first: scenario_tool_execute_write with name: "model_access_update", parameters: {"team_id"…
  4. scenario_tool_execute_read with name: "team_members_list": the two contractors' member ids. scenario_tool_execute_write with name…
  5. scenario_tool_execute_read with name: "api_keys_list" for the project. A render-farm key running as admin is narrowed with api_key_update…
  6. Confirm: model_access_get with project_id shows the project list configured with the three ids; later in the period, usage with the date…

What it can do on your machine

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

  • Tool permissions

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

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Scenario Team Admin loads about 3.3k tokens when it runs. Until then it costs about 121 tokens; SKILL.md has 1,716 words of instructions outside code blocks.

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

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

Safety

Auto-check passed

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

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

SKILL.md

The full file from scenario-labs/skills at commit f6f8ab7, republished under its MIT licence (© scenario-labs). 1,716 words, ~3,324 tokens.

Download SKILL.mdSave it as .claude/skills/scenario-team-admin/SKILL.md (or your agent's skills folder).
name
scenario-team-admin
description
Use when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or removing team and project members, changing roles, capping a member's Creative Unit spend, auditing API keys and their roles or scopes, or attributing consumption per user or model. Keywords: governance, model control, consumption cap, spend limit, API key hygiene, team admin, enterprise.
license
MIT

Scenario Team Administration

Overview

Enterprise teams govern Scenario from the same agent that generates on it: which models anyone may run, who is on the team and in which projects, how much each member may spend, and which API keys exist with which roles. Every tool here is catalog-only: scenario_tools_search returns the schema and lane, and scenario_tool_execute_read / write / delete runs it with {name, parameters}, scope ids inside parameters (see the scenario skill). Two facts decide most failures before any argument does: the identity behind the call, since team-level writes need a human team admin over OAuth and refuse API keys, and the list mode the team runs, since the same model-access edit means the opposite thing in blocklist and allowlist mode. teams_list already tells you both: each team row carries modelsManagement, its model lists, plan, and context.userRole. A credential that reaches one team and one project has its scope; more than one is a stop-and-list, per the scenario skill. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.

Quick reference

TaskToolLaneNotes
Read model accessmodel_access_getreadMode plus the team's active list; project_id adds that project's list alongside it
Change model accessmodel_access_updatewritelevel team or project; exactly one of add_models, remove_models
Team rosterteam_members_listreadMembers and pending invitations
Inviteteam_members_addwrite1 to 32 emails, role, optional project_ids joined on acceptance
Roles and spend capsteam_members_updatewritemember_ids 1 to 32; role and/or max_consumption
Remove from the teamteam_members_removedeleteAlso withdraws invitations; access ends immediately
Project rosterproject_members_list, _add, _update, _removeread, write, deleteRoles admin (Owner), editor (Contributor), reader (Viewer)
API keysapi_keys_list, api_key_get, api_key_update, api_key_deleteread, write, deleteProject scope; api_key_create returns the portal link and nothing else
Who spent whatusageread (default tools)Per-user and per-model consumption in the default response

Model access: read the mode before editing

model_access_get returns models_management and only the mode's active list; the inactive stored list is never surfaced. In blocklist mode (the default) every catalog model is available except those on the team or project blocklist, and the two lists block as a union. In allowlist mode a model is available only when it sits on both the team and the project allowlist; a project with an empty allowlist denies every model, and a project with no allowlist configured falls back to the team list.

model_access_update edits whichever list the mode makes active, so add_models blocks in blocklist mode and allows in allowlist mode: read the mode first, every time. Switching the mode is not available through MCP; it lives in the web app's team settings, so locking a team down to an approved set starts with the user flipping to allowlist there. Unattended, that switch is a stop-and-report: log that the lock waits on it and the exact calls that follow, and take the blocklist-safe partial (blocking the named unwanted models at project level), saying that other projects stay open. Narrowing a list the credential can edit is in scope when the task states the target set: remove_models runs after the adds succeed, so the list never ends empty. level: "team" needs a team admin over OAuth, and the server refuses API keys on that endpoint. level: "project" takes the projects to edit in projects (1 to 200) and needs the admin role on every one of them: one unauthorized project fails the whole request and nothing updates, and a single-project key can only edit its own project's list. project_id on the call is tenant context for OAuth sessions, never the target. In allowlist mode a project admin can add only models already on the team allowlist (a project list narrows the catalog, never widens it), removing a base model from a team allowlist cascade-removes the trained models built on it, and a team-level add validates every id, one unknown id failing the whole call. updated: false means the diff was a no-op, not an error. A blocked model disappears from what members can run, and the error a member sees when running one anyway is a restriction, not moderation (see scenario-moderation).

Members and spend caps

team_members_update takes member_ids from team_members_list and sets role (admin or member), max_consumption, or both. The cap is in Creative Units over the current billing period: a value of zero or more caps, -1 is unlimited, and null clears the per-member override so the team-wide default applies. Roles can be set by a team admin over OAuth or a team-scoped API key with the team.members.manage scope; caps need a real team admin, and a key that tries is refused per member. Demoting the last admin fails server-side. The bulk member tools process one row at a time and report an outcome per member; a response with status: "partial" is finished by calling again with its remaining list.

team_members_add invites 1 to 32 emails at role (default member) and joins them to project_ids on acceptance; outcomes are invited, failed, or skipped with the reason (already a member, already invited, seat limit reached). project_id on the call grants nothing. Like role changes, inviting takes a team admin over OAuth or a team-scoped key with team.members.manage; a project-scoped key gets a permission error. A pending invitation carries no member id, so its cap waits for acceptance. project_members_add takes people already on the team, as user ids or emails (emails need team_id to resolve), with a required project role.

Removal is the delete lane and immediate: team_members_remove ends the person's access everywhere and withdraws pending invitations, project_members_remove leaves team membership and other projects untouched. List first, confirm the exact names with the user, then remove; unattended, remove only the members the task instructions name.

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

API keys

api_keys_list and api_key_get are project-scoped and return each key's id, api_key_id, name, status, scope, role, projects, and creation date, plus a manage_keys_url; team-scoped keys are not attached to projects and never appear here, only in the portal. api_key_update changes a key's role to admin, editor, reader, or a custom ;-separated scope list (the reference's example is assets.read;models.run); name, status, and usage limits are portal-only, and a limit takes an Enterprise plan and a human admin. Creation is deliberately not an MCP operation: api_key_create returns the portal link, the secret is shown once there, and it never passes through the conversation (the scenario skill's rule on secrets holds here). api_key_delete takes the key as key_id (either the id or the api_key_id from the listing), cannot be undone, needs a project admin, and refuses the key the current session is authenticated with: list, confirm the exact key with the user, then delete; unattended, delete only a key the task instructions name and exactly one key matches.

Who spent what

usage is in the default toolset and returns a summary by default: headline CU totals, per-user consumption, per-model CU and job counts sorted descending, and per-asset-kind counts, bounded by start_date and end_date (ISO dates); project_id filters the figures, so a single-project credential ranks spend inside that project, not across the team. An undated call returns project-lifetime figures, so always pass the range: totals and the per-user consumption rows (userId, total) follow start_date and end_date, and a member ranking comes from those rows. The per-day series (include: ["usages.daily"] per usage type, ["modelUsages.daily"] per model) carry no user dimension; nsfwUsages adds moderation totals and activity the raw event log. Never attribute spend by adding up your own calls. Read consumption before setting caps: both are in CU over the billing period, and a cap below what a member has already spent stops them at once.

Worked example: lock a project to approved models and cap the contractors

  1. scenario_tools_search with query="model access", then query="team members": schemas and lanes for the calls below.
  2. scenario_tool_execute_read with name: "model_access_get", parameters: {"team_id", "project_id"}. The team is in blocklist mode, so "only these three models" is not expressible: tell the user to switch the team to allowlist in the web app's team settings, then re-read; unattended, log the gap with the calls below and stop, blocking any models the task names as unwanted at project level in the meantime.
  3. In allowlist mode, the team list first: scenario_tool_execute_write with name: "model_access_update", parameters: {"team_id", "project_id", "level": "team", "add_models": [<the three ids>]}; this is the call that needs the caller to be a team admin over OAuth (context.userRole on the teams_list row says whether they are). Then the project: level: "project", projects: [<project id>], the same add_models, which succeeds only because the team list now carries them.
  4. scenario_tool_execute_read with name: "team_members_list": the two contractors' member ids. scenario_tool_execute_write with name: "team_members_update", parameters: {"team_id", "project_id", "member_ids": [<two ids>], "max_consumption": 2000}. On status: "partial", call again with remaining.
  5. scenario_tool_execute_read with name: "api_keys_list" for the project. A render-farm key running as admin is narrowed with api_key_update, role: "assets.read;models.run", and any key nobody can account for is deleted only after the user confirms it by name.
  6. Confirm: model_access_get with project_id shows the project list configured with the three ids; later in the period, usage with the date range and include: ["usages.daily"] shows the contractors' consumption against the cap.

Common mistakes

  • Editing model access without reading models_management: add_models blocks in one mode and allows in the other.
  • Trying to lock a team to a short list while in blocklist mode: that is an allowlist job, and the mode switch is a web-app setting.
  • Team-level writes through an API key: refused by design; the caller is a human team admin over OAuth.
  • arguments instead of parameters on the executor: dropped silently and surfaced as a scope error (see scenario).
  • Setting caps with a team.members.manage key: it can change roles, not caps.
  • Reading an undated usage call as the period's spend: its figures are project-lifetime. Pass start_date and end_date, rank members from the dated consumption rows, and use the per-day series only to cross-check a period total, since it carries no user dimension.
  • Expecting api_keys_list to show team-scoped keys: they exist only in the portal.
  • Passing project_id to team_members_add to grant project access: project_ids grants; project_id is tenant context.
  • Deleting a key or removing a member without listing and confirming first: the delete lane is irreversible, and api_key_delete refuses the session's own key.

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

Files

Just SKILL.md in skills/scenario-team-admin of scenario-labs/skills.

Open the folder on GitHubat commit f6f8ab7

Compare with similar skills

Scenario Team Admin 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.

Scenario Team Admin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Scenario Team Admin this skillscenario-labs/skills946—~3.3kAutomated safety check: PassMIT
Tenuo Agent Authorizationtenuo-ai/tenuo103—~2.3kAutomated safety check: PassApache-2.0
Frontmcp Auth UIagentfront/frontmcp146—~3.7kAutomated safety check: PassApache-2.0
Frontmcp Authoritiesagentfront/frontmcp146—~7.1kAutomated safety check: PassApache-2.0
Workosusenotra/notra256—~6.2kAutomated safety check: PassAGPL-3.0
Manage Dashboard WidgetsPostHog/posthog40k—~2.3kAutomated safety check: PassCustom licence

Similar skills

  • Add or retrofit Tenuo authorization for AI-agent tools and effects.

    103 GitHub stars~2.3k tokensUpdated today
    Backend & APIsAuto-check passed
  • Frontmcp Auth UI

    agentfront/frontmcp

    A skill your agent uses when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own…

    146 GitHub stars~3.7k tokensUpdated today
    Backend & APIsAuto-check passed
  • Frontmcp Authorities

    agentfront/frontmcp

    A skill your agent uses when implementing authorization and access control for FrontMCP tools, resources, prompts, or skills, deciding who may invoke what.

    146 GitHub stars~7.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Workos

    usenotra/notra

    A skill your agent uses when the user asks for a WorkOS docs URL, term, or dashboard field (Sign-in endpoint, initiateloginuri, Redirect URI, WORKOS env vars), or is implementing, debugging, or…

    256 GitHub stars~6.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Official

    Guides PostHog engineers through dashboard widget platform work — ship a new widgettype (WIDGETREGISTRY, catalog, runwidgets, WidgetCard) or update a shipped type (config, query, layout, RBAC, tile…

    40k GitHub stars~2.3k tokensUpdated today
    Backend & APIsAuto-check passed
  • Creating Data Lake Table

    aws/agent-toolkit-for-aws

    Official

    Create managed Iceberg tables using Amazon S3 Tables (s3tables API namespace) with automatic compaction and snapshot management.

    2.8k GitHub starsUsed in 1 repo~2.1k tokens
    Backend & APIsAuto-check passed

More from scenario-labs/skills

All 146 skills in this repo
  • Scenario Blender Grease Pencil

    scenario-labs/skills

    A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…

    946 GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Scenario Blender Hair

    scenario-labs/skills

    A skill your agent uses when grooming hair or fur in Blender with hair curves, such as a character hairstyle, animal fur, procedural fur in geometry nodes, or hair cards and mesh hair for games.

    946 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • A skill your agent uses when lighting, rendering or compositing in Blender: light a character, product or hero shot, interior at dusk or night, three-point or motivated lighting, sun and sky, HDRI…

    946 GitHub stars~5k tokensUpdated today
    Auto-check passed
  • Scenario Chatgpt Pet Create

    scenario-labs/skills

    A skill your agent uses when creating a ChatGPT pet or Codex pet with Scenario: hatching an animated companion from a text idea, a character, mascot or brand cue, or reference photos and art; making…

    946 GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Scenario Godot Animation

    scenario-labs/skills

    A skill your agent uses when animating characters or scenes in Godot 4.7: AnimationPlayer clips and RESET, AnimationTree state machines and blend spaces built in code, Mixamo or glTF import, loop…

    946 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Scenario Godot Audio

    scenario-labs/skills

    A skill your agent uses when adding or fixing sound in Godot 4.7: audio buses and effects, volume sliders, 'too many sounds', combat audio with hundreds of enemies, sounds clipping or distorting, 3D…

    946 GitHub stars~4.7k tokensUpdated today
    Auto-check passed

Categories

Questions about Scenario Team Admin

What does Scenario Team Admin do?

A skill your agent uses when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or…. Scenario Team Admin is an agent skill from scenario-labs/skills. Use when administering a Scenario team from an agent through MCP: restricting which models a team or project can run (model access control, allowlist, blocklist), inviting or removing team and project members, changing roles, capping a member's Creative Unit spend, auditing API keys and their roles or scopes, or attributing consumption per user or model.

When should I use Scenario Team Admin?

Scenario Team Admin fits situations like: administering a Scenario team from an agent through MCP: restricting which models a team; project can run (model access control; removing team and project members; capping a members Creative Unit spend.

How do I install Scenario Team Admin in Claude Code?

Run `npx skills add scenario-labs/skills --skill scenario-team-admin -a claude-code`. Or copy the skill folder (skills/scenario-team-admin in scenario-labs/skills) into .claude/skills/scenario-team-admin in your project. Claude Code loads it when a task matches its description.

How do I install Scenario Team Admin in Codex?

Run `npx skills add scenario-labs/skills --skill scenario-team-admin -a codex`. Or copy the skill folder (skills/scenario-team-admin in scenario-labs/skills) into .agents/skills/scenario-team-admin in your project. Codex loads it when a task matches its description.

Can I use Scenario Team Admin in Cursor, Gemini CLI or GitHub Copilot?

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

What does Scenario Team Admin need to run?

Going by SKILL.md and its folder, Scenario Team Admin needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Scenario Team Admin access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Scenario Team Admin safe to install?

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

What licence does Scenario Team Admin use?

Scenario Team Admin is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Scenario Team Admin use?

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

What are the alternatives to Scenario Team Admin?

Skills that share tags, products or a category with Scenario Team Admin: Tenuo Agent Authorization (tenuo-ai/tenuo, 103 stars), Frontmcp Auth UI (agentfront/frontmcp, 146 stars), Frontmcp Authorities (agentfront/frontmcp, 146 stars) and Workos (usenotra/notra, 256 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Scenario Team Admin?

scenario-labs (a GitHub organization) maintains it in scenario-labs/skills, which has 946 GitHub stars. The repository holds 146 skills in this directory. The repository was last updated on October 10, 2026.

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