Campaign Analyst
Attribution, cohort analysis, and dashboard assembly for campaigns.
Sample agents in this repo
one.ie/web/ai/agents/
Attribution, cohort analysis, and dashboard assembly for campaigns.
Unified front door for the BOQ Empire — PT Corp fiber install, BOQ local ISP, and the strategic JV. New project, existing client, or partnership inquiry.
AI guide for Hanoi, Vietnam — weather, SIM cards, top places, day trips, food, and digital-nomad logistics.
The right rail on `/`. Answers every "Show me" seed with the best UI we ship — cards over prose, every reply ≤ 2 sentences of framing then one emit_card.
Opinionated AI partner. Drafts copy, picks angles, builds calendars. Ships artifacts, not hedges.
B2B fiber and telecom lead qualifier for Poirier Technical Solutions Corp — Quinte West, Ontario. Routes new inquiries to sales and existing clients to service with context pre-loaded.
B2B fiber and telecom scoping for Poirier Technical Solutions Corp. Quotes ranges, scopes jobs, recommends catalog items. No residential.
24/7 service dispatch for Poirier Technical Solutions Corp existing clients. Triage → dispatch → done.
B2B fiber and network infrastructure. FTTH/FTTX, MDU, structured cabling, security systems. Quinte West, Ontario — serving nationally.
Let's find the right plan for you.
Here to help you solve problems quickly.
The grid fetched nothing. The build opened one.ie/web/ai/agents/, parsed each agent.md, and handed the result straight to the component. These are the sample agents that ship with the repo, not customer deployments.
That list is server-rendered HTML — it is there before any JavaScript runs, and a crawler reads it. The card grid under it is the same data, mounted as a component once the section is on screen.
That string is the title: line in that agent's frontmatter, and the sentence under it is description:. Nothing on a card was written for this page. Edit the file, rebuild, the card changes.
An agent file lists skills by name. The build resolves each name against ai/skills/<name>/skill.md, and the chips are the tags those skill files declare. Cards with no chips name no skills.
Cards, list, graph. The graph draws a line between two agents that share a tag, so it is a picture of which agents share skills. Most of these sample files name no skills, so most nodes stand alone — that is the tree, not a rendering fault.
It opens /api/agents/<id> — the JSON the site itself reads for that agent. The page and the API are looking at one file.
The tree below is the directory the grid above was built from. The file beside it is printed from disk at build time, whole.
one.ie/web/ai/ — 11 agent files, 7 skill files
one.ie/web/ai/agents/support/agent.md
---
name: support
title: Customer Support
description: Here to help you solve problems quickly.
starters:
- My order hasn't arrived
- I need to request a refund
- How do I reset my password?
- I'm having trouble logging in
skills: [handle-complaint, escalate]
tools: [crawl]
---
You are a Customer Support agent. Help users solve problems quickly and leave them feeling heard.
## How you work
- **Listen first** — summarise the problem back before offering a fix
- **One solution at a time** — don't overwhelm with options
- **Escalate clearly** — if you can't resolve it, say so and offer a next step
## Tone
Calm, warm, direct. Never robotic. Never over-apologetic.
## Boundaries
- Don't make promises you can't keep
- Don't guess — say "I'm not sure, let me check"
- Don't close without confirming the problem is solved That is the whole agent. The card titled Customer Support at the top of this page is this file.
src/components/agents/AgentGrid.tsx
| Prop | Type | Default | Notes |
|---|---|---|---|
| agents | AgentMeta[] | required | The array this page passes is listAgentsMeta() — the parsed agent.md files, at build time. src/components/agents/AgentGrid.tsx:9 |
| initialView | 'cards' | 'list' | 'graph' | 'cards' | The three buttons above the grid switch it. The graph joins agents that share a tag. src/components/agents/AgentGrid.tsx:10 |
src/lib/agents-meta.ts
| Prop | Type | Default | Notes |
|---|---|---|---|
| id | string | required | The folder name. Also the ?agent= value in chat. src/lib/agents-meta.ts:15 |
| name | string | required | The name: line of the frontmatter. src/lib/agents-meta.ts:16 |
| title | string | required | The heading on each card. src/lib/agents-meta.ts:17 |
| description | string | required | The sentence under it. src/lib/agents-meta.ts:18 |
| starters | string[] | required | The opening chips a visitor sees in chat. src/lib/agents-meta.ts:19 |
| tags | string[] | required | Not authored per agent — collected from the tags of every skill it names. src/lib/agents-meta.ts:20 |
| skillNames | string[] | required | The skills that resolved against ai/skills/. src/lib/agents-meta.ts:21 |
Four steps, each one a path you can check.
Step 1 of 4
publish parses the frontmatter and refuses to upload a file with errors.
oneie agent validate support/agent.md
Step 2 of 4
The whole markdown file, frontmatter and prompt, goes to your workspace.
POST /api/agents/publish
Step 3 of 4
One object per agent, and the previous version is archived beside it.
{slug}/agents/{name}.md
Step 4 of 4
Ask chat for that agent by name and the published file is what answers.
/chat?agent={name}
Three numbers, and the command that produced each one.
11
agent definitions in this repo
ls one.ie/web/ai/agents/*/agent.md | wc -l
7
shared skill definitions
ls one.ie/web/ai/skills/*/skill.md | wc -l
6
compile targets for one file
packages/cli/src/agent.ts:53 — oneie agent compile --target
The first two numbers above are the output of these two commands, run at the repository root.
$ ls one.ie/web/ai/agents/*/agent.md | wc -l11$ ls one.ie/web/ai/skills/*/skill.md | wc -l7Five commands. The first is an npm install; the last turns the same file into an MCP tool definition.
$ npm install -g @oneie/cli$ oneie agent new support$ oneie agent validate support/agent.md$ oneie agent publish support/agent.md --slug your-workspace$ oneie agent compile support/agent.md --target mcpThree rows here are things ONE does not do, or does worse. They are the rows that make the other five worth reading.
| Feature | ONE | Chatbot builders | Build on model APIs |
|---|---|---|---|
| The agent is a file you can open, diff and commit | |||
| Publish without writing code | |||
| Every publish archives the previous version, and one command restores it | |||
| One file compiles to MCP, uAgents, SKILL.md, web, A2A and ERC-8004 | |||
| Publish the same file into as many client workspaces as you have | |||
| The prompt improves itself while you sleepNothing on this page rewrites a prompt. You edit the file and publish again. oneie agent eval runs the evals declared in the frontmatter, but the edit is yours. | |||
| Full control of the runtimeBuilding straight on the model APIs wins here. You get every knob, and you also get to build the publishing, the versioning and the channels yourself. | |||
| Drag-and-drop builder with no file to learnThe agent is a markdown file, and you will open one. If you want a product where you never see a file, a builder is the better fit. |
Pay for what your agents consume. Annual billing pre-selected.
Up to 10 agents · 3 channels
Unlimited agents across every client
Custom architecture · dedicated team
Write one of your own. It is a markdown file, and it stays in your repository.
The CLI is an npm package. No developer required.