ConnectOnion is an open-source, template-first toolkit for building, debugging, deploying, and operating AI agents. Developers use its command-line tools and Python runtime to create agents, add tools, connect services, deploy them, and make them callable by other agents, while the catalogue entries are related agents, skills, and instructions.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add openonion/connectonion --skill rem-page-persongit clone --depth 1 https://github.com/openonion/connectonionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/openonion/connectonion/rem-page-person)<a href="https://agentmods.dev/skills/openonion/connectonion/rem-page-person"><img src="https://agentmods.dev/badge/skills/openonion/connectonion/rem-page-person/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/openonion/connectonion/rem-page-person"><img src="https://agentmods.dev/badge/skills/openonion/connectonion/rem-page-person.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00025 | $0.01486 |
| Opus 5.5 | $0.00010 | $0.00594 |
| Sonnet 5.5 | $0.00005 | $0.00297 |
| Haiku 4.5 | $0.00003 | $0.00149 |
Grade A, and why
rem-page-person scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.
A person's page
Read supplied page/material. Write, check, fix once, stop; use this format.
The user reads it top-down to decide what to do next: the lead and Open threads are the page, the rest is reference. Keep every section in this
order; missing evidence says Unknown or None as of <date>. Every factual
sentence cites [n] into Sources. Placeholders are not evidence.
# <observed name>
<lead>. Last contact: <date>.
## Facts
- Email: Unknown
- Phone: Unknown
- Company: Unknown
- Role: Unknown
- Location: Unknown
- Time zone: Unknown
- Links: Unknown
- How we know them: Unknown
- First contact: Unknown
- Last contact: Unknown
- Signing entity: Unknown
- Handles: Unknown
- Language: Unknown
- Also known as: Unknown
## Insight
## Who they are
## Why they are here
## Our relationship
## History
## Open threads
## How they communicate
## How the user writes to them
## Cadence
## Uncertainties
## Sources
Rules:
- Lead: three cited sentences, then
Last contact: <date>, <channel>.(1) Who they are to the user: role, organisation, the work or deal between them and its stakes (amount, term). (2) What is live: the most consequential open item, who owes whom, the ask as a short exact quote with its date and any due date; else how the last thread ended. (3) The user's next step (reply, decide, chase, wait until a date), orNothing open as of <date>with the closing evidence. Never open on a gap or a doubt. - One voice: the owner is
the userin every sentence, never their name,youorwe. Factsis data, written first. One line a field, these labels only and every one present; never add a label. A missing value is exactlyUnknown. Several values:;between, eachvalue (qualifier) [n](+61 2 5550 0142 (work) [3]; +61 400 555 019 (mobile) [5]). DatesYYYY-MM-DDin the notebook timezone; stated event dates stay separate. Every value is cited exceptEmail,Handles,Also known as. A contact detail never goes in a sentence instead of its field.Links: LinkedIn or a site.How we know them: who introduced whom, or the first thread.Insightis 2–4 cited bullets of at most 30 words, each startingNow:,Changed:,At stake:orPattern:: what reading the threads one by one would not show: what moved, what is at risk, a pattern over time (reply speed, topics, who chases whom). Never a copy of the lead or an open thread; never generic ("key stakeholder"); a single thread:- Unknown.Language: the language they write to the user in.How they communicatequotes how they ask to be reached (“WhatsApp me, not email”) and lists no channel they did not offer or use.Companyneeds stated employment; a student or mailbox domain proves none (Unknown).Why they are hereis notWho they are: how they entered the user's world, who approached whom, what each side wants.Our relationshipis a state, not a log: kind, where it stands, its terms, who owes what. A term (amount, ratio, date, condition) is quoted with its date:“<exact words>” (YYYY-MM-DD) [n]. Keep each local link with its citations and privacy markers. Separate events, separate lines.Historyis the short true story: one line per thread, at most sixteen, newest first,- YYYY-MM-DD: <what it was about> — <how it ended> [n]; older threads fold into one line a year; a thread that stopped saysno reply after <date>. Not a send or a newsletter.Open threadslists only what the user and this person still owe each other (another person's thread goes on their page), the user's debts first, then by due date:- The user owes <Name>: <what> — “<exact ask>” (YYYY-MM-DD) [n] — due <date>or- <Name> owes the user: …(once they agreed; unanswered, it is- The user asked <Name>: …), ending— open as of <date>when no due date was set. A later reply, a delivered item or a passed event date closes a thread: it moves toHistory. An ask with no movement for 60 days goes toHistoryaswent quiet, but only afterrgfor its people and object finds nothing later (an access grant came in another thread). Reports, optional offers, invitations, prerequisites and past events create none. Keep an explicit due date and any permission to proceed without a reply. Closure:Nothing open as of <date>.- Say each thing once, plainly. A fact lives in one section; the lead and
Insightpoint to it. Status is a dated fact (no reply since 2026-10-12), never "is not established", "unconfirmed" or "in the supplied mail". A doubt that changes the user's next step goes once inUncertainties(at most five), never where you searched; empty sections stayUnknown. - Keep what the map already knew.
Email,Handles,Also known asarrive filled; keep them, except relay addresses. Material about somebody else with the same name is left out and named inUncertainties. - Say their name or "they"; "he"/"she" only where their own words show it.
- Sources:
- [n] <source id> — <date>; claims stay in sentences. Never an assistant's memory file. List only cited sources.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +6 lines dd906c9ad55b
- 6d ago Changed a94d9e6ab52c
- 7d ago Changed · +1 lines d5fc5b59c4e8
- 14d ago Changed · +2 lines · -31 tokens per session 50b686a1943b
- 15d ago Changed · -19 lines 792c7dea0d45
- 16d ago Changed · +5 lines 6159204390a4
- 17d ago First seen · 123 lines · 56 tokens per session scan A 424b5b261d19
rem-page-person is a skill published in the GitHub repository openonion/connectonion (1,497 stars, last pushed today), licensed Apache-2.0. It adds 25 tokens to every session and 1,486 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-30.
Other skills, from other repositories
awm-rsi-toolkit
Run AWM (Agent Workflow Memory, Wang et al. 2024) on an agent - induce reusable workflows from its successful trajectories, online over a training stream or offline from supplied experiences, then freeze the workflow memory and measure it on a published Benchmark.
docx
Create, read, edit, review, redline, comment on, merge, audit, render, and verify .docx Word documents, including layout-sensitive and OOXML-level work.
update-setup
A one-time setup wizard for creating a personalised upgrade guide for a workspace. It checks for an existing guide, identifies the current version and installation clues, and requires confirmation of the installation method before writing a new guide.
skill-creator
Create, edit, improve, tidy, review, audit, or restructure memmy-agent skills and SKILL.md files.
computer-history
Answer questions about what the user recently did on their computer — who contacted them, what they were working on, where they left off — by reading the local Computer History summaries and raw event streams.
memmy-memory
Use the shared Memmy memory service to retrieve relevant prior context and persist durable Agent turns, facts, decisions, preferences, procedures, and follow-ups.