A lightweight hotkey daemon that fires Python skills on demand — capturing clipboard, selection, active app, and mouse position at the moment you press a key.
git clone <repository-url> # your fork or upstream checkout
cd <repository-directory>
pip install -e .
nimble startRight after nimble start, you should see a notification titled Nimble with the body Nimble daemon running. (startup confirmation, FR41).
To stop:
nimble stopnimble add ctrl+shift+d https://github.com/user/nimble-log-diagnosisNimble fetches manifest.yaml, displays the declared permissions, and prompts for confirmation before installing anything. Dependencies are isolated in .nimble/skills/<name>/.venv/. The binding is appended to config.yaml and the daemon picks it up without a restart.
See COMMUNITY_SKILLS.md for a list of known community skills.
Create a Python file anywhere under skills/, then add a binding in config.yaml. No imports needed — Nimble injects context and tools at call time.
For full authoring guidance see .ai/skill-build.md.
# skills/greet/skill.py
class GreetSkill:
def run(self, context, tools):
app = context.active_app or "your app"
tools.popup.show(f"Hello from {app}!")Matching config.yaml entry:
skills:
- name: greet
source: local
path: skills/greet/skill.py
class_name: GreetSkill
binding: "ctrl+shift+g"Restart the daemon (nimble restart) and press ctrl+shift+g.
Note:
contextandtoolsmust have no type annotations in the method signature — skills run in a subprocess that may not havenimbleinstalled.
- The daemon runs as the current user with no elevated privileges
- Context data is captured only at hotkey-fire time
- No background monitoring of any context field
- No telemetry, usage data, or diagnostic information is transmitted anywhere
permissionsinmanifest.yamlare declarative and displayed at install time (before any installation)
# Edit autostart/nimble.service — set <NIMBLE_BIN> and <REPO_ROOT>
# `enable` stores a symlink; pass an absolute unit path so the unit still resolves if you change directories later.
systemctl --user enable "$(realpath autostart/nimble.service)"
systemctl --user start nimble1. Edit autostart\nimble.xml — set <NIMBLE_BIN> and <REPO_ROOT>
2. Open taskschd.msc → Action → Import Task → select autostart\nimble.xml
See autostart/nimble.service and autostart/nimble.xml for the full setup instructions embedded in those files.
