Connect Apps with Composio
ComposioHQ/awesome-claude-skills
Connects an agent to 1000+ external apps through the Composio Tool Router plugin, so it can actually send emails, create issues and post messages instead of only drafting them.
openloomi's Loop — the proactive execution brain that runs inside the OpenLoomi desktop app.
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install melandlabs/openloomi openloomi-loop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .claude/skills/openloomi-loop && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .claude/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install melandlabs/openloomi openloomi-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .agents/skills/openloomi-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .agents/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install melandlabs/openloomi openloomi-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .cursor/skills/openloomi-loop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .cursor/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/melandlabs/openloomi.git --path plugins/codex/skills/openloomi-loop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install melandlabs/openloomi openloomi-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .gemini/skills/openloomi-loop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .gemini/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install melandlabs/openloomi openloomi-loopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .github/skills/openloomi-loop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .github/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add melandlabs/openloomi --skill openloomi-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install melandlabs/openloomi openloomi-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/codex/skills/openloomi-loop .opencode/skills/openloomi-loop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "openloomi-loop" agent skill from https://github.com/melandlabs/openloomi/tree/main/plugins/codex/skills/openloomi-loop into .opencode/skills/openloomi-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openloomi-loop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
openloomi-loopopenloomi's Loop — the proactive execution brain that runs inside the OpenLoomi desktop app.
Openloomi Loop is an agent skill from melandlabs/openloomi. openloomi's Loop — the proactive execution brain that runs inside the OpenLoomi desktop app. Use this skill to inspect state, force-refresh connector health, run a tick, schedule / cancel decision actions, tune preferences, and extend Loop with user-defined decision types, Composio-backed signal channels, or deterministic classifier rules. Triggers: 'openloomi loop', 'loop tick', 'loop schedule', 'loop inbox', 'loop run', 'loop refresh', 'refresh connectors', 'force refresh connectors', 'check connections'…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering App automation through connectors and Email management. It works with Composio and Tauri. The repository describes itself as: OpenLoomi is an open-source AI coworker. It connects your work tools, understands what you’re working on, and tells you what needs your attention, why it matters, and what to do… The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2aca101. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(curl *)Bash(jq *)Bash(cat ~/.openloomi/token *)Bash(base64 -d *)Bash(ls ~/.openloomi/loop/*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curljqpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
openloomi.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Openloomi Loop loads about 3.8k tokens when it runs. Until then it costs about 228 tokens; SKILL.md has 1,188 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from melandlabs/openloomi at commit 2aca101, republished under its Apache-2.0 licence (© melandlabs). 1,188 words, ~3,828 tokens.
.claude/skills/openloomi-loop/SKILL.md (or your agent's skills folder).Note: If you haven't downloaded or installed openloomi yet, please refer to Getting Started for installation instructions.
Loop pulls signals from connected integrations, classifies them into typed decisions, and lets the user approve execution from the pet or the web UI. This skill is a thin Codex-side wrapper around Loop's HTTP API.
| Concern | Location |
|---|---|
| Business logic | Loop's TypeScript core (closed DecisionType + classifier + scheduler) |
| HTTP API | /api/loop/* — state, decisions, decision/[id], card/[id], connectors, brief, wrap, tick, preferences, action/*, types, types/[id], channels, channels/[id], classifier-rules, classifier-rules/[id], classifier-rules/dry-run |
| Persistence | ~/.openloomi/loop/{signals.jsonl,decisions.json,status.json,connectors.json,config.json} |
| Scheduler | Three ScheduledJob rows: loop.tick, loop.brief, loop.wrap (registered by the loop scheduler) |
| Pet surface | Tauri Rust thread loomi-pet-decision-watcher polls decisions.json mtime every 2s and emits loop:state / loop:decision to bubble + card webviews. The widget supports two built-in themes (fox, capybara) and a presenting state surfaced when a decision moves to done before the user has reviewed it — click the bubble to flip back to happy. User-editable theme config lives at ~/.openloomi/pet-config.json. |
| Environment | Base |
|---|---|
| Local desktop (Tauri) — default | http://localhost:3414 |
Dev server (pnpm dev, pnpm tauri:dev) | http://localhost:3515 |
If unsure, start with http://localhost:3414. Loop ships inside the
desktop bundle; the dev port is only relevant when you're running
the web app standalone.
Per-user routes (/tick, /decision/[id] POST, /preferences,
/action/*) require the same auth as the rest of the app. Token is
the base64-encoded JWT stored at ~/.openloomi/token — decode it
before use:
TOKEN=$(cat ~/.openloomi/token | base64 -d)Then pass -H "Authorization: Bearer $TOKEN" on every call below.
If setup-status, Loop API calls, or any local curl to the OpenLoomi
desktop API fail with network errors (ECONNREFUSED, ETIMEDOUT,
"unreachable"), check whether Codex is running inside a sandbox before
concluding Loop or the OpenLoomi desktop is stopped. Codex network
sandboxing can block:
localhost (e.g. http://localhost:3414).Request approval and retry the same call outside the sandbox. If the
outside-sandbox retry succeeds, treat the in-sandbox failure as a sandbox
artifact and continue. Do not declare Loop unhealthy until the
outside-sandbox retry also fails. See openloomi for the canonical
loopbackAccess.verification.commands probe.
| Verb | Path | Use |
|---|---|---|
| GET | /api/loop/state | dashboard payload (prefs + counts + connectors + lastTickAt) |
| GET | /api/loop/decisions?status=pending|done|dismissed | inbox |
| GET | /api/loop/decision/[id] | full decision JSON |
| GET | /api/loop/card/[id] | card-shaped JSON (why / source_chain / dialogue / nextStep) |
| POST | /api/loop/tick | run one tick (signals → classify → enqueue) |
| POST | /api/loop/action/schedule | {decision_id, action:"run|dry|dismiss|promote"} → {action_id, fire_at}. Job fires ~30s later; cancellable. |
| DELETE | /api/loop/action/[id] | cancel a not-yet-fired scheduled action (409 if already fired) |
| GET | /api/loop/action/by-decision/[id] | look up action_id for a decision (pet "Open" button) |
| POST | /api/loop/brief {force?} | build morning brief + enqueue card |
| GET | /api/loop/brief/content | render the morning brief as text without enqueuing |
| POST | /api/loop/wrap {force?} | build evening wrap + enqueue card |
| GET | /api/loop/wrap/content | render the evening wrap as text without enqueuing |
| GET | /api/loop/preferences | read prefs |
| PUT | /api/loop/preferences {...patch} | write prefs + sync the 3 ScheduledJob rows |
| GET | /api/loop/connectors?refresh=1 | list integration health |
| GET | /api/loop/types | list user-defined decision types |
| PUT | /api/loop/types {id,label,icon,actionKind,description?} | upsert a custom decision type |
| DELETE | /api/loop/types/[id] | remove a custom decision type |
| GET | /api/loop/channels | list user-defined signal channels |
| PUT | /api/loop/channels {id,label,toolkit,toolSlug,pollIntervalSec,signalType,payloadShape?,eventFilter?} | upsert a custom channel |
| DELETE | /api/loop/channels/[id] | remove a custom signal channel |
| GET | /api/loop/classifier-rules | list user-defined deterministic classifier rules (force type / actionKind / confidence floor when when predicates match) |
| PUT | /api/loop/classifier-rules {id,label?,when[],then{type,actionKind?,confidence?},description?} | upsert a rule. when is up to 8 {field,op,value?|pattern?} predicates; signal.type / signal.payload.* paths; ops eq neq contains matches startsWith endsWith gt lt gte lte exists absent. then.type can be a built-in/custom DecisionType or "noop" (suppress). |
| DELETE | /api/loop/classifier-rules/[id] | remove a rule |
| POST | /api/loop/classifier-rules/dry-run {signal} | preview which rules would match a given signal (read-only). Returns {matches,trace,totalRules}. |
agent_goal is opt-in for an explicit user custom type or classifier rule.
After the user approves its pending decision with Run, the visible decision
title becomes a durable Goal objective. Ordinary todos are never upgraded.
BASE="http://localhost:3414" # or http://localhost:3515
TOKEN=$(cat ~/.openloomi/token | base64 -d)
# Dashboard snapshot
curl -sS "$BASE/api/loop/state" -H "Authorization: Bearer $TOKEN" | jq .
# Run one tick
curl -sS -X POST "$BASE/api/loop/tick" -H "Authorization: Bearer $TOKEN"
# List pending decisions
curl -sS "$BASE/api/loop/decisions?status=pending" \
-H "Authorization: Bearer $TOKEN" | jq .
# Read a single decision / card
curl -sS "$BASE/api/loop/decision/dec_xxx" -H "Authorization: Bearer $TOKEN"
curl -sS "$BASE/api/loop/card/dec_xxx" -H "Authorization: Bearer $TOKEN"
# Run a decision (returns action_id; cron fires it ~30s later)
curl -sS -X POST "$BASE/api/loop/action/schedule" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"decision_id":"dec_xxx","action":"run"}'
# Cancel before it fires
curl -sS -X DELETE "$BASE/api/loop/action/<action_id>" \
-H "Authorization: Bearer $TOKEN"
# Force a brief / wrap card now
curl -sS -X POST "$BASE/api/loop/brief" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"force":true}'
# Tune preferences (intervalSec, briefTime, timezone, ...)
curl -sS -X PUT "$BASE/api/loop/preferences" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"intervalSec":300,"briefTime":"08:30","wrapTime":"22:30","timezone":"Asia/Shanghai"}'
# Refresh connector probes
curl -sS "$BASE/api/loop/connectors?refresh=1" -H "Authorization: Bearer $TOKEN"
# Register a custom decision type
curl -sS -X PUT "$BASE/api/loop/types" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"id":"birthday_wish","label":"Birthday wish","icon":"ri-cake-2-line","actionKind":"email_reply"}'
# Register a Composio-backed channel
curl -sS -X PUT "$BASE/api/loop/channels" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"id":"stripe_charges","label":"Stripe charges","toolkit":"stripe","toolSlug":"STRIPE_LIST_CHARGES","pollIntervalSec":900,"signalType":"stripe_charge"}'
# Register a deterministic classifier rule — forces same-day birthdays
# into the `birthday_wish` type even if the LLM drifts
curl -sS -X PUT "$BASE/api/loop/classifier-rules" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{
"id":"force_birthday_today",
"when":[
{"field":"signal.type","op":"eq","value":"contact_birthday"},
{"field":"signal.payload.daysUntilNext","op":"eq","value":0}
],
"then":{"type":"birthday_wish","actionKind":"email_reply","confidence":0.9}
}'
# Preview which rules match a signal without running a tick
curl -sS -X POST "$BASE/api/loop/classifier-rules/dry-run" \
-H "Authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"signal":{"type":"contact_birthday","payload":{"daysUntilNext":0}}}'The dashboard reads a cached connector snapshot
(~/.openloomi/loop/connectors.json), written by the agent's last
probe. When the cache is stale — every connector reports
connected: false with lastError: "no composio surface reachable"
even though composio connections list shows the toolkits active —
GET /api/loop/connectors?refresh=1 forces a fresh probe now and
persists the result. This is read-only: nothing is created,
scheduled, sent, or deleted.
curl -sS "$BASE/api/loop/connectors?refresh=1" \
-H "Authorization: Bearer $TOKEN" | jq .Response shape: {items: ConnectorHealth[], lastProbeError?: string | {kind, message, at}}.
Each ConnectorHealth:
| Field | Meaning |
|---|---|
id | stable connector id (e.g. gmail, slack, linear) |
label | human-readable name |
connected | true iff the most recent probe succeeded |
lastError | string when probe failed (null/undefined on success) |
fetchedAt | ISO timestamp of the most recent probe — proves refresh fired |
probed | true if at least one probe has ever run for this connector |
accountCount | number of connected accounts at probe time |
After the call:
fetchedAt should
share the same timestamp from "just now" (within ~30s). If they're
empty ("") or older, the cache wasn't invalidated — re-check the
URL ends in ?refresh=1 (not ?refresh=true). On a 401 inside
lastProbeError, the route fired correctly but the server-side
agent failed to call its own backend — the refresh endpoint itself
worked; the bug is downstream.gmail ✅ / slack ❌ lastError=.... Group healthy ones first.lastError verbatim when something is still red. Do
not invent reasons — quote what the API returned./api/loop/state calls read the new state without further action.| Symptom | What to surface |
|---|---|
Connection refused on :3414 and :3515 | Loop isn't running. Re-run /openloomi:setup / check /openloomi:status first. |
401 Unauthorized | Token is stale or missing. Re-run /openloomi:setup to mint a fresh guest bearer. |
404 on /api/loop/connectors | Runtime is older than Loop. Update OpenLoomi Desktop — the route ships in the desktop bundle. |
| Probe ran but every connector still red | Real probe failure. Cross-check composio connections list; if those are healthy but Loop still fails, surface the gap. |
fetchedAt stayed empty / old | The ?refresh=1 query didn't reach the route. Re-run with the exact URL above; flag as a regression. |
lastProbeError.kind == "agent_http_error" | The server agent itself failed reaching its own backend. Read kind and message; surface the 401/5xx verbatim — refresh endpoint is fine. |
ScheduledJob whose
handler is loop.tick and next_run_at <= now, it dispatches the
tick handler.signals.jsonl, runs
hard-skip rules + the classifier, and persists surviving
candidates via decisions.add().decisions.json mtime every 2s; on
change it emits loop:state / loop:decision to the bubble +
card webviews./api/loop/action/schedule; cron handler loop.action
fires the underlying applyDecisionAction ~30s later./api/loop/action/by-decision/[id] to resolve action_id, then
navigates to /scheduled-jobs/<action_id>.Memory is openloomi-memory's job, not the loop's. The Loop stores decisions and signals only. When a decision runs, the agent already has the full openloomi-memory context via the standard native-agent endpoint.
/api/loop/action/schedule.© melandlabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/codex/skills/openloomi-loop of melandlabs/openloomi.
Open the folder on GitHubat commit 2aca101
Openloomi Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Openloomi Loop this skillmelandlabs/openloomi | 1k | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Connect Apps with ComposioComposioHQ/awesome-claude-skills | 77k | 3 repos | ~557 | Automated safety check: Pass | None | |
| Composio Cloud Toolsquarqlabs/argus | 277 | — | ~543 | Automated safety check: Pass | Apache-2.0 | |
| Composio Byodrewnekota/cetus | 146 | — | ~627 | Automated safety check: Pass | MIT | |
| Benchmark Email AutomationComposioHQ/awesome-claude-skills | 77k | 3 repos | ~760 | Automated safety check: Pass | None | |
| Gmail Automationdavepoon/buildwithclaude | 3.6k | 4 repos | ~2.7k | Automated safety check: Pass | MIT |
ComposioHQ/awesome-claude-skills
Connects an agent to 1000+ external apps through the Composio Tool Router plugin, so it can actually send emails, create issues and post messages instead of only drafting them.
quarqlabs/argus
Routes requests to external SaaS apps such as GitHub, Gmail, Google Calendar, Slack, Notion and Linear through cloud tools, with safeguards on irreversible actions.
drewnekota/cetus
Connect and use a user-owned Composio MCP server in Cetus. An agent skill from drewnekota/cetus.
ComposioHQ/awesome-claude-skills
Automate Benchmark Email tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.
davepoon/buildwithclaude
Automate Gmail tasks via Rube MCP (Composio): send/reply, search, labels, drafts, attachments.
ComposioHQ/awesome-claude-skills
Automate Cloudflare API tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.
melandlabs/openloomi
openloomi Connectors tools - manage the native 7 messaging integrations and pair with the composio skill for the 1000+ apps OAuth layer (Slack, Discord, X, Gmail, Outlook, Google…
melandlabs/openloomi
Create an end-to-end Continual Learning Bench task. An agent skill from melandlabs/openloomi.
melandlabs/openloomi
openloomi Memory tools - search and manage the holistic context (people, projects, decisions, knowledge base, chat insights).
melandlabs/openloomi
OpenLoomi first-use setup and readiness guidance for skill-only agent runtimes.
melandlabs/openloomi
Discover and install skills from the open agent skills ecosystem.
melandlabs/openloomi
OpenLoomi runtime integration for Claude Code. An agent skill from melandlabs/openloomi.
Categories
openloomi's Loop — the proactive execution brain that runs inside the OpenLoomi desktop app. Openloomi Loop is an agent skill from melandlabs/openloomi. openloomi's Loop — the proactive execution brain that runs inside the OpenLoomi desktop app.
Openloomi Loop fits situations like: force-refresh connector health; schedule / cancel decision actions; tune preferences; extend Loop with user-defined decision types.
Run `npx skills add melandlabs/openloomi --skill openloomi-loop -a claude-code`. Or copy the skill folder (plugins/codex/skills/openloomi-loop in melandlabs/openloomi) into .claude/skills/openloomi-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add melandlabs/openloomi --skill openloomi-loop -a codex`. Or copy the skill folder (plugins/codex/skills/openloomi-loop in melandlabs/openloomi) into .agents/skills/openloomi-loop in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add melandlabs/openloomi --skill openloomi-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/openloomi-loop, .gemini/skills/openloomi-loop, .github/skills/openloomi-loop and .opencode/skills/openloomi-loop in your project.
Going by SKILL.md and its folder, Openloomi Loop needs the command-line tools its instructions call (curl, jq and pnpm). Its frontmatter pre-approves these tools: Bash(curl *), Bash(jq *), Bash(cat ~/.openloomi/token *), Bash(base64 -d *), Bash(ls ~/.openloomi/loop/*).
SKILL.md names 1 domain. As links in the text: openloomi.ai. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Openloomi Loop is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Openloomi Loop: Connect Apps with Composio (ComposioHQ/awesome-claude-skills, 77k stars), Composio Cloud Tools (quarqlabs/argus, 277 stars), Composio Byo (drewnekota/cetus, 146 stars) and Benchmark Email Automation (ComposioHQ/awesome-claude-skills, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
melandlabs (a GitHub organization) maintains it in melandlabs/openloomi, which has 1,037 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on September 24, 2026.
Source: melandlabs/openloomi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.