Modular AI Tools With Human Approvals: A Walkthrough of aiFetchly AI Skills

How aiFetchly AI Skills let chat call modular tools: zip import, permission categories, and approval prompts that always re-ask for shell.

If your AI assistant can only talk, you keep doing the boring parts yourself: fetch a page, read a local file, run a one-liner, scrape a table. AI Skills in aiFetchly turn those actions into modular tools the AI can call during chat — while you keep a clear say over what runs.

This guide covers what a skill is, built-in vs user-installed, permission categories, how import and enable/disable work, and how approval prompts behave (including why shell always asks again).

What is a skill?

A skill is a packaged tool with:

  • A unique name and version
  • A source: Built-in (ships with aiFetchly) or User Installed (you imported it, or a plugin bundled it)
  • A permission category derived from the skill’s declared permissions
  • An enable/disable state

When a skill is enabled, the AI can decide to use it when your request needs that capability. You usually don’t invoke it by name — though you can ask explicitly, for example “use the web scraper on this URL”.

Where to manage skills

  1. Open System Setting in the left navigation.
  2. Click Manage Skills (or AI Skills).

The table lists every installed skill with name, source badge, category, version, status, and — for user-installed skills only — enable/disable and uninstall actions.

Built-in skills stay on: they show neither the toggle nor uninstall. That is intentional.

Permission categories

Each skill’s category is its first declared permission in the manifest, or pure if none is declared:

Category What it can do
pure Text, calculations, formatting — no special access
network Outbound HTTP / API calls
filesystem Local file read/write
automation Browser automation, scraping, scripted posting, similar actions
shell System shell commands (built-in shell_execute only — never importable)

The table shows the category lowercase and raw (network, automation, and so on).

Importing a skill

Skills arrive as .zip packages:

  1. Click Import (top-right upload icon).
  2. Choose a skill .zip.
  3. aiFetchly validates the package (manifest, permissions, entry file) and installs it.

Only .zip is supported. The package must contain a valid manifest.json. Plugin-bundled skills do not need a separate import — they appear when the plugin is installed, with a “via plugin: …” chip. Advanced users can also drop skills under ~/.aifetchly/skills/<name>/ for auto-discovery.

Enable, disable, uninstall

For user-installed skills:

  • Enable / disable — toggle in the Actions column.
  • Uninstall — trash icon, then confirm. Permanent; re-import the zip to get it back.

If a skill never shows up in chat, check that it is enabled — and for plugin skills, that the owning plugin is enabled in the Plugin Manager.

Approval prompts in chat

When the AI calls a skill, aiFetchly may ask before it runs. Behavior depends on category and your chat tool-approval mode:

Category Approval
pure Always auto-approved
shell Always prompts on every command — never auto-approved
network / filesystem / automation Prompted under default “ask for approval”; auto-approved under “approve for me” or “full access”

The approval card offers:

  • Allow Once — this call only
  • Always Allow — remember for future calls to this skill
  • Deny — block this call

For shell, the card is titled “Shell Command Execution”, previews command / working directory / shell / timeout, and the third button is “Always Allow (This Session)”. Important safety detail: for shell, “Always Allow” is not honored for later commands. Each shell command prompts again on purpose — shell can do anything on your machine. Only non-shell categories truly remember permanent Always Allow.

Skill package format (minimum)

A zip must contain manifest.json at the root. Required fields: name, version, description (the AI reads this to decide when to use the skill), runtime (javascript or python), entry (e.g. index.js / main.py), and parameters (JSON Schema for inputs).

Optional permissions may only be network, filesystem, or automation. The first entry sets the category. Values like shell or invented names are rejected at import. There is no separate category field.

Packaging tip: zip the contents, not a wrapping folder, and name the file skill-name.zip.

A practical setup order

  1. Open Manage Skills and skim built-ins so you know what already exists.
  2. Import one small network or pure skill first — easiest to reason about approvals.
  3. Leave chat in “ask for approval” until you trust the skill, then use Always Allow for that skill if you want fewer prompts.
  4. Keep shell for moments you are watching the preview; do not expect it to stay quiet.
  5. Prefer plugin-bundled skills when a plugin already ships what you need, so updates stay with the plugin.

Docs and product

aiFetchly is a desktop AI business agent. Skills sit next to plugins, subagents, and AI Chat — the idea is simple: give the model tools, keep the human in the approval loop where it matters.


If you try it, start with one small network skill and leave chat on ask-for-approval.


Write a comment