> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genesiscomputing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Skill Admin Tools

> Manage skill packages, assignments, and governance for customer-visible Genesis skills.

## Overview

`skill_admin_tools` cover the administrative side of skill management: package visibility, assignment workflows, and governance actions around skill availability.

Approved self-add packages now register in the same managed `agent_skills` Git repository as imported skills, so administrators review one shared Git-backed catalog instead of separate imported and filesystem-only entries.

Self-add request review reads are intentionally bounded by a smaller default page size so oversized submitted `SKILL.md` files are obvious during review; when truncated, the response includes paging metadata and a continuation hint.

<img src="https://mintcdn.com/genesiscomputing/veD1H6lmZZSkMTgm/images/skills_library_actual.png?fit=max&auto=format&n=veD1H6lmZZSkMTgm&q=85&s=4f67622edd3083e6960b0477e943d955" alt="Actual Genesis Skills page showing importable skills and assign-to-agent actions." width="1440" height="1024" data-path="images/skills_library_actual.png" />

## Typical customer-facing uses

* reviewing available skill packages,
* assigning skills to agents,
* removing or restricting skill access,
* supporting controlled rollout of reusable skills.

## Primary tool surfaces

| Tool | Purpose |
| - | - |
| `list_skill_catalog` | Browse the full available catalog of customer-visible skills. |
| `set_skill_assignment` | Assign a catalog skill to a bot or explicitly disable that assignment. |
| `set_agentskills_self_add_mode_override` | Set the self-add policy for a target bot to `allow`, `deny`, or `require_approval`. |
| `list_agentskill_requests` | Review pending or historical self-add requests. |
| `read_agentskill_request_skill_md` | Page through a submitted `SKILL.md` during request review. |
| `approve_agentskill_request` / `reject_agentskill_request` | Finalize an approval-gated self-add request. |

### `set_skill_assignment`

Use `set_skill_assignment` to assign a skill from the catalog to a bot, or to
disable an existing assignment without deleting the package itself.

| Parameter | Type | Default | Notes |
| - | - | - | - |
| `bot_id_target` | string or null | current bot | Target bot ID. If omitted, Genesis falls back to the implicit bot in tool context. |
| `skill_name` | string | none | Required skill name from the catalog. |
| `version` | string or null | latest/published resolution | Optional version to assign. |
| `enabled` | boolean, integer, string, or null | `true` when both `enabled` and `assigned` are omitted | Accepted boolean-shaped values are `true`/`false`, `yes`/`no`, `y`/`n`, `on`/`off`, and `1`/`0`. |
| `assigned` | boolean, integer, string, or null | `null` | Alias for `enabled`. Use one or the other; conflicting values return an error. |
| `action` | string or null | `null` | Legacy field. If supplied, Genesis returns a corrective error telling you to use `enabled=false` or `assigned=false`. |

**Examples**

```python theme={null}
set_skill_assignment(
    bot_id_target="eve",
    skill_name="run-genesis-tests",
)

set_skill_assignment(
    bot_id_target="eve",
    skill_name="run-genesis-tests",
    assigned="no",
)
```

Successful responses include the normalized `enabled_after` value plus a short
`message` such as `Assignment enabled` or `Assignment disabled`.

Genesis rejects caller-supplied arguments that are not in the documented
signature, but it ignores runtime-injected context kwargs (`bot_id`, `run_id`,
`session_id`, `thread_id`, `thread_purpose`, `source_message_id`,
`input_metadata`, `parent_thread_id`, `inherited_use_fast_model`, `user_id`,
`user_email`) that Genesis adds automatically for context and bookkeeping. Pass
only the documented fields above; any other unrecognized extra returns a
corrective error listing the valid args.

### `skill_management`

Manage Git-backed Skill repositories and workspace pushes. Requires
`manage_skills`.

| Action | Purpose |
| - | - |
| `REGISTER_MANAGED_SOURCE` | Register or update a managed repo (`repo_id`, `remote_url?`, `connection?`, `release_ref?`, `skills_root?`). |
| `SYNC_FROM_REPO` | Pull and hydrate skills from a source (`source_id` or `repo_id`). |
| `PUSH_TO_REPO` | Open an MR/PR for the current skill workspace (`skill_name`, `title?`, `body?`, `commit_message?`). |
| `EXPORT_PREVIEW` | List files that would be copied from a local `SKILL.md` package (`skill_name` or `name`). |
| `EXPORT_COMMIT` | Write a local package into the managed worktree and open an MR/PR (`skill_name` or `name`, `source_id?` or `repo_id?`, `artifact_path?`, `title?`, `body?`, `commit_message?`). |

For assigning catalog skills to bots, use `set_skill_assignment` instead. For
generic clone/branch Git work, use `git_action`.

Managed source scan types can be added later, but removing an enabled scan type
from an existing source is not supported. Delete and recreate the source with
the desired scan types. When a PATCH would remove scan types, the API returns
`error_code` `SCAN_TYPE_REMOVAL_NOT_SUPPORTED` with `current_scan_types`,
`attempted_scan_types`, `removed_scan_types`, `recovery` (`delete_and_recreate`),
and `remediation`. `skill_management` copies those fields to the tool result when
present (including when nested under `detail`).

`include` and `exclude` on a managed source narrow which skill packages sync
enables. On `SYNC_FROM_REPO`, skills that no longer match are retired: Genesis
removes the managed registration only when the stored row matches this source's
`repo_id` and artifact path (not merely the skill name), so a local package with
the same name is left registered. If `skill_sources.yaml` is unreadable, sync
surfaces the error instead of treating the skill as "not ours" and leaving a
stale registration in place.

`SKILL.md` frontmatter must be valid YAML. Quote values that contain a colon,
for example `description: "Global policy: all X"`. Genesis may recover common
malformed-description patterns via a lenient parser, but flags the skill as
degraded (`hydrate.skills.degraded_artifacts` with a `reason` such as
`frontmatter_recovered_lenient: ...`). If a sync reports fewer skills than
expected, inspect `sync.partial_success`, `hydrate` `skipped`, and
`degraded_artifacts` for the exact remediation — do not assume a stale clone
when `success` is still `true`.

<Note>
  `REGISTER_MANAGED_SOURCE`, `SYNC_FROM_REPO`, and managed-source removal update
  the shared `skill_sources.yaml` registry and mark the capability registry
  dirty. `list_skill_catalog`, `set_skill_assignment`, and
  `manage_context(action="SEARCH_CONTEXT", search_scope="skills")` reflect new
  or removed packages on the next reconcile (typically within seconds).
</Note>

### `app_management`

Manage Git-backed App repositories and workspace pushes. Requires
`manage_apps`.

| Action | Purpose |
| - | - |
| `REGISTER_MANAGED_SOURCE` | Register or update a managed repo (`repo_id` or `source_id`, `remote_url?`, `branch?`, `apps_root?`, `scan_types_enabled?`, `auth_type?`, `secret_name?`, `ssh_key_secret?`, `enabled?`). Pass `delete: true` to remove a source. |
| `SYNC_FROM_REPO` | Pull and hydrate apps from a source (`source_id`). |
| `PUSH_TO_REPO` | Open an MR/PR for edits in an already-managed app workspace (`app_id`, `title?`, `body?`, `commit_message?`). |
| `EXPORT_PREVIEW` | Preview files that would be copied when exporting a standalone app bundle (`app_id`). |
| `EXPORT_COMMIT` | One-shot conversion of a standalone app into the managed repo — copies files into a worktree and opens an MR/PR (`app_id`, `source_id?` or `repo_id?`, `artifact_path?`, `title?`, `body?`, `commit_message?`). For subsequent edits on an already-managed app, use `PUSH_TO_REPO` instead. |
| `REPAIR_WORKSPACE_PATH` | Restore a standalone app whose `workspace_path` was moved into a managed-repo clone after a failed `EXPORT_COMMIT` (`app_id`, `workspace_path?` — auto-derived when omitted). Refuses apps owned by managed sync (`created_by` starts with `managed_sync:`). |

Registering or updating a source whose `scan_types_enabled` includes `roles`
also requires `manage_users`; otherwise the tool refuses the source change.

The Apps Library **Push to managed repo** wizard drives the same export flow over HTTP:
`POST /api/apps/{app_id}/export-to-managed/preview` then `.../commit` (requires `manage_git`
plus app-level `manage`; see [Genesis Apps](/docs/genesis-apps)).

For building and running apps in chat, use `apps_action` in
[GenesisApps Tools](/docs/Genbot-Toolkit/GenesisApps-Tools). For dependency
wiring after sync or export, use `dependency_action` rather than this tool.

`include` and `exclude` on a managed apps source follow the same selector rules
as skills. On `SYNC_FROM_REPO`, apps that no longer match are retired when their
`workspace_path` lives inside this source's checkout; Genesis removes the app
record but preserves workspace files so a later re-include can register the app
again. Apps outside the checkout (for example a local app that shares the id)
are left unchanged.

### `dependency_action`

Inspect and bind missing dependencies for managed Skills, Flows, and Apps.
Requires `manage_git` (same permission family as Git repository administration).

| Action | Purpose |
| - | - |
| `CHECK_SOURCE_DEPENDENCIES` | Summarize dependency health for a `source_id` (`include_resolved?`, `include_candidates?`). |
| `LIST_UNBOUND_DEPENDENCIES` | List unresolved slots (`source_id?`, `artifact_type?`, `artifact_id?`, `kind?`). For Skills, only `tool_group` rows from `required-tools` / `required_tools` frontmatter are emitted (advisory, not blocking). |
| `BIND_ARTIFACT_DEPENDENCY` | Save a binding (`scope`: `artifact`, `source_default`, or `bulk_artifacts`; `source_id`; `kind`; `slot_id` or `slot_id_or_role` or `role`; `target`; plus `artifact_type` / `artifact_id` when `scope` is `artifact`). |
| `LIST_DEPENDENCY_TARGETS` | List local resources that can satisfy a dependency (`kind`, `query?`, `provider?`). |
| `CHECK_ARTIFACT_DEPENDENCIES` | Recheck one artifact (`source_id`, `artifact_type`, `artifact_id`). |

Use `skill_management`, `flow_action`, or `app_management` to register sources
and sync artifacts; use this tool only to wire logical refs after sync.

## Related pages

* [Agents Center and Skills](/docs/User-Guide/Agents-Center-And-Skills)
* [Context Tools](/docs/Genbot-Toolkit/Context-Tools)
