You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: skills/a0-create-plugin/SKILL.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -282,6 +282,7 @@ If your plugin needs framework-internal hook points, add a `hooks.py` file at th
282
282
- Current built-in usage:
283
283
- the plugin installer calls `install()` in `hooks.py` after placing a plugin in `usr/plugins/`
284
284
- the plugin updater calls `pre_update()` in `hooks.py` immediately before pulling new plugin code into place
285
+
- the plugin uninstaller calls `uninstall()` in `hooks.py` before deleting the plugin directory — use this to clean up any dependencies or state created by `install()`
285
286
- Hook functions may be sync or async.
286
287
- Hooks should be reversible and cleanup-safe. Prefer framework-managed state and plugin-owned paths over permanent system modifications.
Copy file name to clipboardExpand all lines: skills/a0-debug-plugin/SKILL.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,6 +138,21 @@ print('Done')
138
138
"
139
139
```
140
140
141
+
If the `uninstall()` hook is not running when the plugin is removed:
142
+
- Check the function is named exactly `uninstall` (not `on_uninstall` or similar)
143
+
- Check for exceptions in the function
144
+
- The `uninstall()` hook is called by `uninstall_plugin()` in `helpers/plugins.py` before the plugin directory is deleted. If the user removed the plugin manually (`rm -rf`), the hook was bypassed — always use the API or UI to uninstall.
145
+
- Manually trigger it in the **framework runtime** the same way:
Copy file name to clipboardExpand all lines: skills/a0-review-plugin/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,7 @@ Inspect the plugin directory layout:
52
52
-[ ] If `agents/` exists: agent profiles with `<profile>/agent.yaml` (standard directory)
53
53
-[ ] If `conf/` exists: configuration files such as `model_providers.yaml` (standard directory)
54
54
-[ ] If `webui/config.html` exists: plugin must declare at least one `settings_sections` entry
55
-
-[ ] If `hooks.py` exists: review whether it defines the lifecycle hook functions the plugin appears to rely on, especially `install`and `pre_update` when the plugin needs install-time or update-timebehavior
55
+
-[ ] If `hooks.py` exists: review whether it defines the lifecycle hook functions the plugin appears to rely on, especially `install`, `pre_update`, and `uninstall` when the plugin needs install-time, update-time, or cleanup behavior — if `install()` adds dependencies, flag a missing `uninstall()` as WARN
56
56
-[ ] If `execute.py` exists: check it has a `main()` function and `if __name__ == "__main__": sys.exit(main())`
57
57
-[ ]`LICENSE` at plugin root: Agent Zero does not require it for local plugins, but it is **required** at the repo root before submitting to the Plugin Index. If missing → **WARN** — `LICENSE absent — required for community contribution (Plugin Index); optional for local-only use`
Copy file name to clipboardExpand all lines: skills/a0-setup-cli/SKILL.md
+13-3Lines changed: 13 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
name: a0-setup-cli
3
3
description: Guide the user through installing and connecting the A0 CLI on the host machine so Dockerized Agent Zero can work on real local files. Use when asked to install A0, set up the CLI connector, connect Agent Zero to local files, or troubleshoot host-vs-container setup confusion.
@@ -106,7 +106,10 @@ Tell the user what to expect:
106
106
107
107
-`a0` opens the host picker first.
108
108
- If Agent Zero is running locally, `a0` may discover it automatically.
109
-
- If not, the user can enter the Agent Zero web URL manually.
109
+
- If not, the user can enter the Agent Zero web URL manually in the custom URL field.
110
+
- The custom URL can be either a normal address with a port, such as `http://localhost:50001`, or a tunnel URL.
111
+
- For Flare Tunnel, tell the user to open `Settings > External Services > Flare Tunnel`, click `Create Tunnel`, then copy and paste the HTTPS URL into `a0` exactly as shown.
112
+
- Tunnel URLs such as `https://example.trycloudflare.com` do not need a port appended.
110
113
-`AGENT_ZERO_HOST` can prefill the target host without bypassing the picker.
@@ -130,7 +140,7 @@ Successful setup looks like this:
130
140
- If the user says they installed inside Docker or shows `/a0` paths, redirect them to the host-machine install.
131
141
- If `a0` gets a connector `404`, explain that the running Agent Zero build likely does not include the builtin `_a0_connector` support yet and should be updated.
132
142
- If the browser UI works but `a0` does not, remind them the web UI can run without connector support but the CLI cannot.
133
-
- If Docker discovery does not find the instance, have them enter the exact Agent Zero URL or set `AGENT_ZERO_HOST`.
143
+
- If Docker discovery does not find the instance, have them enter the exact Agent Zero URL with `host:port`, or create a Flare Tunnel in `Settings > External Services > Flare Tunnel` and paste that HTTPS URL directly.
0 commit comments