Skip to content
Back to skills

Holix Extensions

ASecurity

Author and manage Holix agent drop-in extensions so the agent can extend itself without editing Holix core. Use when the user asks to write an extension, add tools, register slash commands, list extensions, disable a broken extension, or self-modify agent capabilities. Invoke via /holix-extensions.

  • 16 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentspythonbashapi

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 20, 2026

npx -y skills add javded-itres/Holix --skill holix-extensions --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Holix Extensions?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Holix Extensions
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/javded-itres-holix-extensions/badge)](https://www.skillsdirectory.com/skills/javded-itres-holix-extensions)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: holix-extensions
description: >
  Author and manage Holix agent drop-in extensions so the agent can extend itself
  without editing Holix core. Use when the user asks to write an extension, add tools,
  register slash commands, list extensions, disable a broken extension, or self-modify
  agent capabilities. Invoke via /holix-extensions.
tags:
  - extensions
  - agent
  - scaffold
  - self-extension
  - tools
  - slash
  - holix
user-invocable: true
---

## When to use

The user wants the agent to **grow new capabilities** safely:

- add a custom tool or slash command
- “напиши расширение”, “допиши себя”, “добавь skill/tool”
- list what extensions are loaded
- disable something that breaks the agent

**Never edit Holix core** (`core/`, `cli/`, `integrations/`, package source).
Only create **profile-local drop-in extensions**.

## Who may change extensions (important)

**create / enable / disable / reload / settings_get / settings_set** are **operator** actions:

| Actor | Allowed |
|------|---------|
| CLI, TUI, `holix run` | **Yes** (local operator) |
| Telegram / MAX **bot admin** | **Yes** |
| Telegram / MAX regular user | **No** (`self_extensions_denied`) |

Regular users may only `list` and `registered`.
Override (not for shared bots): `HOLIX_SELF_EXTENSIONS=1`. If denied, tell a non-admin to ask the bot admin — do not try to bypass.

## Architecture (safe zone)

```text
~/.holix/profiles/<profile>/extensions/<name>/
  agent.py              # get_agent_extension()
  holix.plugin.json
  settings.default.yaml
  README.md
```

- Discovered on agent start **and** via **hot-reload** after `create` / `reload` (local mode).
- Does **not** require pip install.
- Same profile only (unless user copies to `~/.holix/extensions/`).

## Primary tool

Use **`manage_agent_extensions`**:

| action | Purpose | Local only? |
|--------|---------|-------------|
| `list` | Folders + blocked status | No |
| `registered` | Settings + slash commands | No |
| `create` | Scaffold + **hot-reload** into this session | **Yes** |
| `disable` | Kill-switch; hot-unload when local | Prefer anytime |
| `enable` | Re-enable + hot-reload | **Yes** |
| `quarantine_clear` | Clear auto-quarantine + reload | **Yes** |
| `reload` | Re-scan extensions / reimport modules | **Yes** |
| `show_control` | Show `agent_extensions_control.yaml` | Operator |
| `settings_get` | Read `extension_settings/<name>.yaml` | Operator |
| `settings_set` | Merge JSON into extension settings + reload | Operator |

### Create (local)

```text
manage_agent_extensions(
  action=create,
  name=my_helper,
  description=Short helper tools for this project
)
```

The tool **hot-reloads** the agent: new tools and slash specs appear in the **current** session.
If you edit `agent.py` further, call `manage_agent_extensions(action=reload)`.

### List / inspect

```text
manage_agent_extensions(action=list)
manage_agent_extensions(action=registered)
manage_agent_extensions(action=reload)   # after manual agent.py edits
```

## Editing an extension

1. Prefer `manage_agent_extensions(action=create, …)` then edit `agent.py` with `write_file` / `edit`.
2. Call `manage_agent_extensions(action=reload)` so code changes load without restart.
3. Keep API surface small: `BaseTool` + optional `register_slash_commands` + optional prompt fragment.
4. Always set `default_settings()` → `{"enabled": True}`.
5. Never import private Holix internals beyond:
   - `core.extensions.agent_base.AgentExtensionBase`
   - `core.tools.base.BaseTool`
   - `holix_sdk.agent.SlashCommandSpec`

### Minimal tool pattern

```python
class MyTool(BaseTool):
    def __init__(self):
        super().__init__()
        self.name = "my_tool"
        self.description = "…"
        self.risk_level = "no"  # or low/medium/high
        self.parameters = {
            "type": "object",
            "properties": {"text": {"type": "string"}},
            "required": ["text"],
        }

    async def execute(self, text: str = "", **kwargs) -> str:
        return text
```

## Kill-switch (if extension breaks the agent)

### A. Soft disable (preferred)

```text
manage_agent_extensions(action=disable, name=broken_ext, reason=causes crash)
```

Or CLI:

```bash
holix extensions agent-disable broken_ext -p <profile>
```

File: `~/.holix/profiles/<profile>/agent_extensions_control.yaml`

```yaml
disabled:
  - broken_ext
quarantine:
  broken_ext: "TypeError: ..."
```

### B. Auto-quarantine

If `register_tools` / middleware **raises** on load, Holix records quarantine automatically.
Fix code → `manage_agent_extensions(action=quarantine_clear, name=…)` → auto-reload (local).

### C. Emergency (process env)

```bash
export HOLIX_AGENT_EXTENSIONS_OFF=1          # disable ALL agent drop-ins
export HOLIX_AGENT_EXTENSIONS_DISABLED=a,b  # disable listed names
holix gateway restart   # or restart bot
```

Core Holix + built-in tools (including `manage_agent_extensions`) still load.

## CLI cheat sheet

```bash
holix extensions agent-list -p default
holix extensions agent-create my_helper -d "…" -p default
holix extensions agent-disable my_helper -p default
holix extensions agent-enable my_helper -p default
holix extensions agent-control -p default
```

CLI create is an operator action. On Telegram/MAX the **bot admin** can do the same via `manage_agent_extensions`; regular users cannot.

## Slash / skill

- Skill: `/holix-extensions` (this file)
- Extension-defined slashes: after create/reload, e.g. `/my-helper` from scaffold

## Workflow for “extend yourself”

1. Confirm you are the **local operator** or the **Telegram/MAX bot admin**.
2. `manage_agent_extensions(action=create, name=…, description=…)`.
3. Edit `agent.py` if needed; then `action=reload`.
4. Verify with `manage_agent_extensions(action=registered)` and a test call.
5. If broken → **disable** immediately; do not patch core.

## Do NOT

- Modify Holix `core/`, `cli/`, `integrations/` for product features.
- Let a regular Telegram/MAX user change system extensions or settings.
- Install random packages system-wide without user approval.
- Leave a crashing extension enabled — use disable/quarantine.

## Quick reference

```text
manage_agent_extensions action=list
manage_agent_extensions action=create name=notes description=Save short notes
manage_agent_extensions action=reload
manage_agent_extensions action=disable name=notes reason=syntax error
manage_agent_extensions action=show_control
manage_agent_extensions action=settings_get name=media
manage_agent_extensions action=settings_set name=media settings={"auto_send": true}
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.