Agent skill

Openloomi Tour

by melandlabs in melandlabs/openloomi

Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed…

Apache-2.0Auto-check passedProductivity & Automation

Install Openloomi Tour

skills CLI
$ npx skills add melandlabs/openloomi --skill openloomi-tour -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install melandlabs/openloomi openloomi-tour --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/melandlabs/openloomi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/codex/skills/openloomi-tour .claude/skills/openloomi-tour && rm -rf skills-src

Use ~/.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/

Facts

Skill name
openloomi-tour
GitHub stars
1k
Token cost
~5.8k tokens
SKILL.md length
1,669 words
Files
1
Skills in repo
23
Repo updated
First seen
Licence
Apache-2.0

At a glance

Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed…

  • Works in 6 steps: Pre-flight → Pet reaction (always run) → Onboarding & input sources (interactive) → …
  • Productivity & Automation work in your project
  • SKILL.md covers Reference docs, Phase 0 — Pre-flight, Phase 1 — Pet reaction (always… and Phase 2 — Onboarding & input…, plus 5 more sections
  • Calls curl, node and jq

What it does

Openloomi Tour is an agent skill from melandlabs/openloomi. Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed Memory → optionally register a custom Loop channel / classifier rule / decision type. Triggers: openloomi tour, guided tour, walk me through openloomi, show me everything, end-to-end demo, 带我看一下, 体验一下, 一条龙, 一键体验, first time using openloomi, what's next after setup.

Its SKILL.md is about 5.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. 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.

When your agent uses it

  • Productivity & Automation work in your project

Example prompts

  • “/openloomi-tour”

Requirements

  • Pre-approved tools (allowed-tools): Bash(node $SKILL_DIR/../../scripts/loomi-bridge.mjs *), Bash(node $SKILL_DIR/../openloomi-connectors/scripts/openloomi-connectors.cjs *), Bash(node $SKILL_DIR/../openloomi-memory/scripts/openloomi-memory.cjs *), Bash(composio *), Bash(curl *), Bash(cat ~/.openloomi/token *), Bash(base64 -d *)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Pre-flight
  2. Pet reaction (always run)
  3. Onboarding & input sources (interactive)
  4. Run one Loop tick (only if a signal source exists)
  5. Seed Memory (always run, idempotent)
  6. Optional extensions (only on user request)

What it can do on your machine

Read from SKILL.md and the folder at commit 2aca101. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(node $SKILL_DIR/../../scripts/loomi-bridge.mjs *)
    • Bash(node $SKILL_DIR/../openloomi-connectors/scripts/openloomi-connectors.cjs *)
    • Bash(node $SKILL_DIR/../openloomi-memory/scripts/openloomi-memory.cjs *)
    • Bash(composio *)
    • Bash(curl *)
    • Bash(cat ~/.openloomi/token *)
    • Bash(base64 -d *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • node
    • jq
    • python3
    • codex

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • openloomi.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Openloomi Tour loads about 5.8k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 1,669 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~119
When it runs · the whole SKILL.md, loaded when a task matches
~5.8k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from melandlabs/openloomi at commit 2aca101, republished under its Apache-2.0 licence (© melandlabs). 1,669 words, ~5,785 tokens.

Download SKILL.mdSave it as .claude/skills/openloomi-tour/SKILL.md (or your agent's skills folder).
name
openloomi-tour
description
Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed Memory → optionally register a custom Loop channel / classifier rule / decision type. Triggers: openloomi tour, guided tour, walk me through openloomi, show me everything, end-to-end demo, 带我看一下, 体验一下, 一条龙, 一键体验, first time using openloomi, what's next after setup.
allowed-tools
Bash(node $SKILL_DIR/../../scripts/loomi-bridge.mjs *), Bash(node $SKILL_DIR/../openloomi-connectors/scripts/openloomi-connectors.cjs *), Bash(node $SKILL_DIR/../openloomi-memory/scripts/openloomi-memory.cjs *), Bash(composio *), Bash(curl *), Bash(cat ~/.openloomi/token *), Bash(base64 -d *)

OpenLoomi Tour — Hands-on Walkthrough

This skill is the canonical first-run experience. After openloomi-setup finishes and prints its post-ready walkthrough, the user can type @OpenLoomi tour (or any of the trigger phrases) and you'll run the same pipeline live, stopping between phases so the user can react.

The tour is interactive, idempotent, and skippable. Each phase checks its own prerequisite and lets the user move on with next / skip / back. Nothing is destructive — if the user already did a phase, you re-confirm it and move on.


Reference docs

Quick links to the OpenLoomi docs that this tour draws from. Every phase below cites the relevant entries inline.

TopicDoc
Getting started / install / one-time setuphttps://openloomi.ai/docs/getting-started
What OpenLoomi is (the pipeline in one page)https://openloomi.ai/docs/what-is-openloomi
Glossary — every term used here (Connector / Signal / Loop channel / Action Runner / etc.)https://openloomi.ai/docs/glossary
Loop engine — ticks, Decisions, cards, channels, classifier ruleshttps://openloomi.ai/docs/loop
Loop — Approve / Edit Draft / dry-run anatomy of a Cardhttps://openloomi.ai/docs/loop#approvals-and-dry-run
Memory — people / projects / notes / insights / Screen Capturehttps://openloomi.ai/docs/memory
Knowledge Base / Library — uploaded documents (PDF, DOCX, MD, …)https://openloomi.ai/docs/library
Connectors — Slack / Gmail / GitHub / Linear / Notion / HubSpot / …https://openloomi.ai/docs/connectors
Native messaging bots — Telegram / WhatsApp / iMessage / Feishu / DingTalk / QQ / WeChathttps://openloomi.ai/docs/messaging-apps
Composio / Loop channel — OAuth broker for 1000+ appshttps://openloomi.ai/docs/glossary#composio--loop-channel
Attention Agent — Loomi the fox, card bubbles, sprite stateshttps://openloomi.ai/docs/attention-agent
Agent Runtimes — Claude / Codex / OpenCode / Hermes / OpenClawhttps://openloomi.ai/docs/reference/agent-runtimes
Plugins — bridge from Claude Code / Codex into OpenLoomihttps://openloomi.ai/docs/plugins
Automation / Proactive Tasks — recurring scheduled workhttps://openloomi.ai/docs/automation
Chat — conversational entry point (not Loop)https://openloomi.ai/docs/chat
Skills — reusable capabilities inside OpenLoomihttps://openloomi.ai/docs/skills
Audit Log — every consequential moment recordedhttps://openloomi.ai/docs/privacy-security#audit-logs
Privacy & Security — local-first, AES-256, what's stored wherehttps://openloomi.ai/docs/privacy-security
Changelog — what's new in each releasehttps://openloomi.ai/docs/changelog

Phase 0 — Pre-flight

Before running any phase, do three things in this exact order:

bash
# 1. Readiness (sandbox-aware)
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" setup-status

# 2. If loopbackAccessAmbiguous: true, refresh host probe outside sandbox
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" run-host-probe

# 3. Confirm Codex runtime is the active default agent
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" codex-runtime-info

Decision tree:

Pre-flight outcomeTour action
ready: true, defaultAgent: codexProceed straight to Phase 1
ready: false, nextAction: setupTell the user setup hasn't run yet. Offer to invoke openloomi-setup first, then return to tour
ready: false, OPENLOOMI_API_UNREACHABLERe-run run-host-probe outside the sandbox; if still unreachable, surface the bridge's hints[] and stop
defaultAgent != codexAsk the user whether to switch to Codex runtime or tour anyway with the current provider

Print the user's current state in one line (mode, installed, default agent) before announcing Phase 1.


Phase 1 — Pet reaction (always run)

The pet is the fastest, cheapest, safest proof that the desktop is listening. Run all four "sight" states in sequence so the user sees the sprite set:

bash
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" pet happy
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" pet thinking
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" pet working
node "$SKILL_DIR/../../scripts/loomi-bridge.mjs" pet juggling

After each, say "Loomi just showed the <state> sprite — that proves the desktop is watching the pet watcher and accepting state changes from Codex." End by leaving the pet at happy (success-state feel).

For the full state taxonomy, see the Attention Agent doc; for the broader pipeline see the Glossary.

If POST /api/pet/state returns "would have set state to X — pending OpenLoomi endpoint", note that the runtime is older than the bridge expects; the pet widget will catch up via the ~/.openloomi/loop/ file watcher anyway.


Phase 2 — Onboarding & input sources (interactive)

This is the first real action and the first place the user may have to do something in another window. There are three input paths; offer them all and let the user pick:

A. Native bot (Telegram / WhatsApp / iMessage / Feishu / DingTalk / QQ / WeChat) — fastest, no browser OAuth. Best if you already use one of those.

B. Composio OAuth (Gmail / Slack / GitHub / Google Calendar / Notion / Linear / HubSpot / LinkedIn / Jira / Asana / Discord / X) — one browser click, works for the apps most people already have. Full list at Connectors.

C. Screen memory (macOS only) — right-click the Loomi pet on the desktop → Open Settings → enable Screen Capture. The global capture shortcut (configurable in the same panel) summarises the frontmost window and stores the result directly as a Memory record. Important: screen memories go to Memory directly and do not flow through Signals — Loop will not tick on them. So screen memory alone is not enough to drive Phase 3.

Suggested first picks by user profile:

  • New to OpenLoomi, just want a feel → Gmail via composio link gmail (richest signal)
  • Wants something offline-friendly → Telegram via the native CLI
  • Wants a work tool → Slack or Linear via Composio
  • Privacy-conscious / wants everything local → enable screen memory + skip Phase 3

After the user picks, run the right command and then verify:

bash
# Native:
node "$SKILL_DIR/../openloomi-connectors/scripts/openloomi-connectors.cjs" list-accounts

# Composio:
composio execute GMAIL_GET_PROFILE -d '{}'  # or toolkit-specific probe

# Screen memory: verify via the Memory surfaces after the first capture
# (no list-accounts equivalent — captures land in ~/.openloomi/data/memory/)

If the OAuth window never opened (silent exit), note that composio link returns immediately when the toolkit is already authorised — re-check list-accounts first before assuming failure.

Skipping this phase

Phase 2 is optional. If the user says skip:

  • Skip + nothing enabled → also skip Phase 3 (Loop tick) — Loop has no signal sources to poll. Move directly to Phase 4 (Seed Memory), which is still valuable for grounding.
  • Skip + only screen memory enabled → also skip Phase 3 — screen memory doesn't flow through Signals/Loop. Still move to Phase 4, and tell the user their screen captures will start appearing in Memory immediately.
  • Skip + a Connector is already connected from a previous session → run Phase 3 anyway, the existing connector will feed signals.

If the user picks screen memory only (option C), Phase 3 is skipped but Phase 4 becomes the centrepiece — the user will see their screen captures appear in Memory directly.


Show full SKILL.md (813 more words)Show less

Phase 3 — Run one Loop tick (only if a signal source exists)

This phase is the heart of the tour when there's something for Loop to tick on (Loop engine). Skip it if Phase 2 was skipped and no Connector is connected — Loop would have nothing to pull. Screen memory also does not count here: it bypasses Signals entirely and writes to Memory directly, so it doesn't drive Loop.

Important runtime note. A Loop tick is a long-running agentic call — the desktop spawns a subprocess (codex exec for Codex, the native Claude CLI for Claude Code) and the HTTP POST /api/loop/tick blocks until that subprocess finishes. A cold tick on a fresh inbox typically takes 30–90s; subsequent ticks 10–30s; very large inboxes 2–3 min. Do not block the tour on it. Fire the tick in the background and poll for completion.

When at least one signal-source Connector is connected, run the following — the user sees the full pipeline move for the first time.

bash
TOKEN=$(cat ~/.openloomi/token | base64 -d)
BASE="http://localhost:3414"

# 1. Capture baseline lastTickAt so we can detect when the tick lands.
BEFORE=$(curl -sS "$BASE/api/loop/state" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.lastTickAt // "1970-01-01T00:00:00.000Z"')

# 2. (Optional) Force-refresh connector probes. May hang on the Composio
#    cold path — fall back to the cached snapshot if it times out.
curl -sS --max-time 15 "$BASE/api/loop/connectors?refresh=1" \
  -H "Authorization: Bearer $TOKEN" | jq . \
  || echo "(probe refresh timed out — using cached snapshot)"

# 3. Fire the tick in the BACKGROUND with a short HTTP timeout.
#    The desktop accepts the request, spawns the agentic subprocess,
#    and curl returns after --max-time even though the tick keeps
#    running server-side. We then poll state.lastTickAt for completion.
curl -sS --max-time 5 -X POST "$BASE/api/loop/tick" \
  -H "Authorization: Bearer $TOKEN" > /tmp/openloomi-tick.out 2>&1 &
TICK_PID=$!
echo "tick dispatched (HTTP pid=$TICK_PID); agentic subprocess continues server-side"

# 4. While the tick runs, USE THIS TIME TO TALK TO THE USER.
#    Explain the architecture: signals → classifier → decisions →
#    cards → Approve. Ask about their typical day. Preview the
#    card-shape JSON. Do not sit in silence — this is a 1–3 minute
#    window depending on inbox size.

# 5. Poll for completion (lastTickAt advances past $BEFORE).
#    Default max wait: 3 minutes. Raise to 5 if the user has a large inbox.
DEADLINE=$((SECONDS + 180))
while [ $SECONDS -lt $DEADLINE ]; do
  AFTER=$(curl -sS "$BASE/api/loop/state" \
    -H "Authorization: Bearer $TOKEN" | jq -r '.lastTickAt // "1970-01-01T00:00:00.000Z"')
  if [ "$AFTER" != "$BEFORE" ]; then
    echo "tick completed at $AFTER (was $BEFORE)"
    break
  fi
  sleep 5
done

# 6. Inspect the tick output and any decisions it produced.
cat /tmp/openloomi-tick.out
curl -sS "$BASE/api/loop/decisions?status=pending" \
  -H "Authorization: Bearer $TOKEN" | jq .

If the poll loop times out without lastTickAt advancing, the agentic subprocess is still running on the desktop (very large inboxes, slow LLM, or composio connections endpoint unreachable). Surface what the user can do: tell them the tick is still running in the background, that the next time they run a tick it will be faster (warm cache), and that they can keep going with Phase 4 — Memory seeding — while the tick finishes asynchronously.

If no pending decisions appear after a successful tick:

  • If no Connectors are connected yet → tell the user that's why, point back to Phase 2.
  • If Connectors ARE connected but no signals → tell the user Loop hasn't accumulated history yet, suggest re-running the tick in a minute, or seeding Memory (Phase 4) to give Loop something to reason over.

If at least one decision appears, show the Card shape so the user sees what the pet would surface:

bash
DEC_ID=$(curl -sS "$BASE/api/loop/decisions?status=pending" \
  -H "Authorization: Bearer $TOKEN" | python3 -c "import sys,json; print(json.load(sys.stdin)['items'][0]['id'])")

curl -sS "$BASE/api/loop/card/$DEC_ID" \
  -H "Authorization: Bearer $TOKEN" | python3 -m json.tool

Then approve it (the one-tap path the pet bubble would normally trigger):

bash
curl -sS -X POST "$BASE/api/loop/action/schedule" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d "{\"decision_id\":\"$DEC_ID\",\"action\":\"run\"}"

Note: the action fires ~30s later via the scheduler. Tell the user to check the pet bubble — it'll flip to presenting and then done.


Phase 4 — Seed Memory (always run, idempotent)

Memory is what makes Chat grounded and Loop sharper. Even with no Connectors, seeding three canonical files gives the next Loop tick real grounding. The Library / Knowledge Base sits alongside — explicit user-uploaded documents that RAG-search over.

bash
MEM="$SKILL_DIR/../openloomi-memory/scripts/openloomi-memory.cjs"

# The required Memory commands are known. Do not run discovery/help probes
# such as `node "$MEM" --help`, `node "$MEM" -h`, or `node "$MEM" help`
# before this phase; go directly to add-memory and search-all.

# Tour seed files are tour-owned demo artifacts. Reruns may overwrite
# these tour/*.md files, but must not write to user-authored memory paths.

# 1. Tour / about me
node "$MEM" add-memory "About me: <one-line role + timezone + how I prefer to work>" \
  --file=tour/about-me.md

# 2. Tour / current project
node "$MEM" add-memory "Current project: <name + goal + next milestone>" \
  --file=tour/current-project.md

# 3. Tour / values
node "$MEM" add-memory "What I optimise for: <signal vs noise, deep work vs responsiveness, etc.>" \
  --file=tour/values.md

# 4. Search-all to prove the new files are indexed
node "$MEM" search-all "<a keyword from the file you just wrote>"

If the user is shy, do step 1 only and let them fill the rest later. The point is to prove add-memory writes tour-owned files under ~/.openloomi/data/memory/tour/ and search-all returns them.

After this phase, peek at the Memory surfaces (see Insights and Library):

bash
node "$MEM" list-insights --days=7
curl -sS "$BASE/api/rag/documents?limit=5" \
  -H "Authorization: Bearer $TOKEN" | python3 -m json.tool

Phase 5 — Optional extensions (only on user request)

These are the power-user surfaces. Skip unless the user says "show me how to extend it" or similar.

5a. Custom Loop channel (Composio-backed signal source)

Show the user how to register their own signal source — anything Composio has a toolkit for becomes a Loop signal with one PUT. Full reference: Loop.

bash
TOKEN=$(cat ~/.openloomi/token | base64 -d)
curl -sS -X PUT "http://localhost:3414/api/loop/channels" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "id": "demo_stripe_charges",
    "label": "Demo: Stripe charges",
    "toolkit": "stripe",
    "toolSlug": "STRIPE_LIST_CHARGES",
    "pollIntervalSec": 900,
    "signalType": "stripe_charge"
  }'

# Re-list to confirm
curl -sS "http://localhost:3414/api/loop/channels" \
  -H "Authorization: Bearer $TOKEN" | python3 -m json.tool

# 1. Confirmation card — fetch the registered channel back so the user
#    sees the entity they just created, named and labeled.
echo "=== confirmation card: registered channel ==="
curl -sS "http://localhost:3414/api/loop/channels" \
  -H "Authorization: Bearer $TOKEN" | \
  jq '.items[] | select(.id == "demo_stripe_charges")'

# 2. Inject a decision-style insight into the inbox so the user can see
#    the registration event surface in OpenLoomi Memory > Insights. The
#    user can later filter by `groups: ["openloomi-tour"]` to find every
#    registration card the tour produced.
echo "=== injecting registration insight into inbox ==="
curl -sS -X POST "http://localhost:3414/api/insights" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "type": "decision",
    "content": "Custom Loop channel registered: demo_stripe_charges (toolkit=stripe, toolSlug=STRIPE_LIST_CHARGES, pollIntervalSec=900). Next Loop tick will poll and surface stripe_charge signals.",
    "groups": ["openloomi-tour", "loop"],
    "people": []
  }' | python3 -m json.tool

Tell the user: this channel will start polling on the next Loop tick and any returned records become stripe_charge signals that Loop classifies normally.

5b. Classifier rule (deterministic override)

For known signal patterns, force a specific decision type without relying on the LLM classifier. See Loop — classifier rules.

bash
curl -sS -X PUT "http://localhost:3414/api/loop/classifier-rules" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "id": "force_email_reply_high_urgency",
    "when":[
      {"field":"signal.type","op":"eq","value":"gmail_message"},
      {"field":"signal.payload.urgency","op":"eq","value":"high"}
    ],
    "then":{"type":"email_reply","actionKind":"email_reply","confidence":0.95}
  }'

# Dry-run to confirm it matches
curl -sS -X POST "http://localhost:3414/api/loop/classifier-rules/dry-run" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{"signal":{"type":"gmail_message","payload":{"urgency":"high","subject":"URGENT: outage"}}}'

# 1. Confirmation card — fetch the registered rule back
echo "=== confirmation card: registered rule ==="
curl -sS "http://localhost:3414/api/loop/classifier-rules" \
  -H "Authorization: Bearer $TOKEN" | \
  jq '.items[] | select(.id == "force_email_reply_high_urgency")'

# 2. Inject a decision-style insight into the inbox
echo "=== injecting registration insight into inbox ==="
curl -sS -X POST "http://localhost:3414/api/insights" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "type": "decision",
    "content": "Classifier rule registered: force_email_reply_high_urgency — gmail_message + payload.urgency=high → email_reply (confidence 0.95). Overrides the LLM classifier for matching signals.",
    "groups": ["openloomi-tour", "loop"],
    "people": []
  }' | python3 -m json.tool
5c. Custom decision type

For a card style that doesn't exist yet (see Loop — custom DecisionTypes):

bash
curl -sS -X PUT "http://localhost:3414/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"
  }'

# 1. Confirmation card — fetch the registered type back
echo "=== confirmation card: registered decision type ==="
curl -sS "http://localhost:3414/api/loop/types" \
  -H "Authorization: Bearer $TOKEN" | \
  jq '.items[] | select(.id == "birthday_wish")'

# 2. Inject a decision-style insight into the inbox
echo "=== injecting registration insight into inbox ==="
curl -sS -X POST "http://localhost:3414/api/insights" \
  -H "Authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "type": "decision",
    "content": "Custom DecisionType registered: birthday_wish (icon=ri-cake-2-line, actionKind=email_reply). Future Loop ticks can surface decisions with this card style.",
    "groups": ["openloomi-tour", "loop"],
    "people": []
  }' | python3 -m json.tool
5d. Inventory dump — what did we just register?

After running any of 5a / 5b / 5c, list everything that's now registered so the user sees the full picture at once:

bash
echo "=== all registered channels ==="
curl -sS "http://localhost:3414/api/loop/channels" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.items[].id'

echo "=== all registered classifier rules ==="
curl -sS "http://localhost:3414/api/loop/classifier-rules" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.items[].id'

echo "=== all registered decision types ==="
curl -sS "http://localhost:3414/api/loop/types" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.items[].id'

echo "=== registration insights in inbox (last 24h) ==="
curl -sS "http://localhost:3414/api/insights?days=1&limit=10" \
  -H "Authorization: Bearer $TOKEN" | python3 -m json.tool

After any of 5a/5b/5c, you can also re-run the tick from Phase 3 to see the new channel/rule/type in action — the inbox will now also contain the three registration cards pushed above so the user can list-insights --channel=openloomi-tour or filter by groups: ["openloomi-tour"] in the desktop UI.


Hand-off

When the tour finishes (user says done, exit, or all five phases are complete), print the quick reference card from the openloomi-setup post-ready walkthrough (the closed follow-up command list) and remind the user:

The tour is over. OpenLoomi is now wired up — Connectors will keep pulling, Loop will keep ticking, and the pet will surface new decisions as cards. Approve a card to run an action; dismiss to archive it; type @OpenLoomi tour to walk through this again.

Every consequential moment is recorded in the Audit Log. The whole reason this tour was possible in the first place is the Plugin bridge that exposes OpenLoomi to your shell.


Sandbox and network

All API calls in this skill (/api/loop/*, /api/rag/*, /api/integrations/*) target http://localhost:3414 from the user's host. If any call fails with ECONNREFUSED / ETIMEDOUT / "unreachable", request approval and retry outside the sandbox — Codex network sandboxing can block loopback to the host even when the desktop API is listening. Do not declare OpenLoomi unhealthy until an outside-sandbox retry also fails. See the bridge's loopbackAccess.verification.commands for the manual probe.

© 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

Files

Just SKILL.md in plugins/codex/skills/openloomi-tour of melandlabs/openloomi.

Open the folder on GitHubat commit 2aca101

Compare with similar skills

Openloomi Tour 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.

Openloomi Tour compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Openloomi Tour this skillmelandlabs/openloomi1k—~5.8kAutomated safety check: PassApache-2.0
Agent Browserquran/quran.com-frontend-next1.9k40 repos~3.3kAutomated safety check: PassNone
Dependency Watchtelegramdesktop/tdesktop33k1 repos~2.2kAutomated safety check: PassGPL-3.0
Perform Tasktelegramdesktop/tdesktop33k2 repos~3kAutomated safety check: PassGPL-3.0
Brave Searchbadlogic/pi-skills2.6k5 repos~592Automated safety check: PassMIT
Garden Inboxpaperclipai/paperclip100k—~1.1kAutomated safety check: PassMIT

Similar skills

  • Agent Browser

    quran/quran.com-frontend-next

    Automates browser interactions for web testing, form filling, screenshots, and data extraction.

    1.9k GitHub starsUsed in 40 repos~3.3k tokens
    Productivity & AutomationAuto-check passed
  • Dependency Watch

    telegramdesktop/tdesktop

    Audit Telegram Desktop dependencies on freshly fetched origin/dev for releases and security fixes, including upstream lag and backport candidates in patched forks.

    33k GitHub starsUsed in 1 repo~2.2k tokens
    Productivity & AutomationAuto-check passed
  • Perform Task

    telegramdesktop/tdesktop

    Resolve, start or resume, implement, review, test, and publish exactly one existing ai-tdesktop task by short slug or full dated id, including rare blocked retries and split-required results.

    33k GitHub starsUsed in 2 repos~3k tokens
    Productivity & AutomationAuto-check passed
  • Brave Search

    badlogic/pi-skills

    Web search and content extraction via Brave Search API. An agent skill from badlogic/pi-skills.

    2.6k GitHub starsUsed in 5 repos~592 tokens
    Productivity & AutomationAuto-check passed
  • Garden Inbox

    paperclipai/paperclip

    Scan a Paperclip user's Mine inbox, classify reversible archive candidates, request checkbox confirmation, and archive only accepted selections.

    100k GitHub stars~1.1k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Continue

    telegramdesktop/tdesktop

    Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.

    33k GitHub starsUsed in 2 repos~9.4k tokens
    Productivity & AutomationAuto-check passed

More from melandlabs/openloomi

All 23 skills in this repo
  • Openloomi Connectors

    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…

    1k GitHub stars~3.3k tokensUpdated 17 days ago
    Auto-check passed
  • Create Task

    melandlabs/openloomi

    Create an end-to-end Continual Learning Bench task. An agent skill from melandlabs/openloomi.

    1k GitHub stars~4.6k tokensUpdated 17 days ago
    Auto-check passed
  • Openloomi Memory

    melandlabs/openloomi

    openloomi Memory tools - search and manage the holistic context (people, projects, decisions, knowledge base, chat insights).

    1k GitHub stars~6k tokensUpdated 17 days ago
    Auto-check passed
  • Openloomi Setup

    melandlabs/openloomi

    OpenLoomi first-use setup and readiness guidance for skill-only agent runtimes.

    1k GitHub stars~420 tokensUpdated 17 days ago
    Auto-check passed
  • Find Skills

    melandlabs/openloomi

    Discover and install skills from the open agent skills ecosystem.

    1k GitHub stars~892 tokensUpdated 17 days ago
    Auto-check passed
  • Openloomi

    melandlabs/openloomi

    OpenLoomi runtime integration for Claude Code. An agent skill from melandlabs/openloomi.

    1k GitHub stars~1.4k tokensUpdated 17 days ago
    Auto-check passed

Questions about Openloomi Tour

What does Openloomi Tour do?

Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed…. Openloomi Tour is an agent skill from melandlabs/openloomi. Walk a brand-new OpenLoomi user through the entire pipeline in one guided session: setup health → pet reaction → connector onboarding → run a Loop tick → inspect & approve a decision card → seed Memory → optionally register a custom Loop channel / classifier rule / decision type.

When should I use Openloomi Tour?

Openloomi Tour fits situations like: productivity & Automation work in your project.

How do I install Openloomi Tour in Claude Code?

Run `npx skills add melandlabs/openloomi --skill openloomi-tour -a claude-code`. Or copy the skill folder (plugins/codex/skills/openloomi-tour in melandlabs/openloomi) into .claude/skills/openloomi-tour in your project. Claude Code loads it when a task matches its description.

How do I install Openloomi Tour in Codex?

Run `npx skills add melandlabs/openloomi --skill openloomi-tour -a codex`. Or copy the skill folder (plugins/codex/skills/openloomi-tour in melandlabs/openloomi) into .agents/skills/openloomi-tour in your project. Codex loads it when a task matches its description.

Can I use Openloomi Tour in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add melandlabs/openloomi --skill openloomi-tour -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-tour, .gemini/skills/openloomi-tour, .github/skills/openloomi-tour and .opencode/skills/openloomi-tour in your project.

What does Openloomi Tour need to run?

Going by SKILL.md and its folder, Openloomi Tour needs the command-line tools its instructions call (curl, node, jq, python3 and codex). Its frontmatter pre-approves these tools: Bash(node $SKILL_DIR/../../scripts/loomi-bridge.mjs *), Bash(node $SKILL_DIR/../openloomi-connectors/scripts/openloomi-connectors.cjs *), Bash(node $SKILL_DIR/../openloomi-memory/scripts/openloomi-memory.cjs *), Bash(composio *), Bash(curl *), Bash(cat ~/.openloomi/token *), Bash(base64 -d *).

Does Openloomi Tour access the network?

SKILL.md names 1 domain. As links in the text: openloomi.ai. This is read from the text; nothing was executed.

Is Openloomi Tour safe to install?

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.

What licence does Openloomi Tour use?

Openloomi Tour 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.

How many tokens does Openloomi Tour use?

About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Openloomi Tour?

Skills that share tags, products or a category with Openloomi Tour: Agent Browser (quran/quran.com-frontend-next, 1.9k stars), Dependency Watch (telegramdesktop/tdesktop, 33k stars), Perform Task (telegramdesktop/tdesktop, 33k stars) and Brave Search (badlogic/pi-skills, 2.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Openloomi Tour?

melandlabs (a GitHub organization) maintains it in melandlabs/openloomi, which has 1,038 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.