Building with Toqan

A hands-on workshop for AI Accelerators.

🚀 accelerator.jetskibay.com

Today’s workshop

Short demos, then time to build.

01

Context files

Build persona.md from your own Slack history.

20 min
02

Weekly planning

Plan focus time with Calendar and Jira.

20 min
03

Reusable skills

Turn a finished task into a skill others can use.

40 min
04

VM and external tools

Try file sync, subagents, and API connections.

25 min
05

Build and demo

Connect your own service to Toqan.

45 min

Toqan: a distribution platform

Bring your work to colleagues across Prosus. Skills are one example.

The Toqan Marketplace on the Skills tab, showing skills published across Prosus with install buttons, version numbers and Prosus Group attribution

Toqan › Marketplace › Skills · published across Prosus Group and business units

01
Part one

Set up your
context files

20 minutes

What your agent needs to know

Your role, priorities, working rules, and past decisions.

everything public papers, code, docs, every framework ever shipped your world this week, this team, this quarter's decisions no bridge persona.md design.md decisions.md

Don’t write your persona. Let Toqan read it.

Slack already holds the evidence of how you work. Point the connector at it.

prompt · run this first
Using the slack connector, build my persona.md.

Cover what I am on the hook for, how I want you to talk to me, what you may do without asking, what “done” looks like, and the corrections I keep repeating to agents.

Push back if an answer is vague. Six sections, under 400 words. Then tell me the three things you still do not know.

The last line is the point: it hands you your homework.

Two lanes out of this room

Which one you are in depends on one thing: whether your Slack connector is live.

Connector live

Build the whole pack

Run the extract prompt, then point the same move at the rest of the files.

  • persona.md from how you actually work
  • voice.md from how you actually write
  • glossary.md and decisions.md from your threads
  • Leave with a pack your agent reads every session
Connector not live yet

Leave with persona.md

Grab one of us. We get the connection up, or you fall back to the interview.

  • Same six sections, same 400 words
  • You answer the questions instead of Slack answering them
  • Nobody leaves without persona.md
  • The rest of the pack is your homework
Full context pack or persona.md + homework

Exercise: build and break your persona

Start at 1 if your connector is live. Start at 2 if it is not, and raise a hand.

10minutes
1 · extract it
Using the slack connector, build my persona.md.

Six sections, under 400 words. Push back on anything vague. Then tell me what you still do not know.
2 · no connector?
My slack connector is not live. Interview me instead — one question at a time.

Same six sections, same 400 words. Same list of what is missing.
3 · break it
Read this as a colleague who has never met me.

Where would it make you produce the wrong thing? Which lines change no decision? Rewrite it.

Whatever it says it still does not know is the homework you leave with.

The context pack

Download the examples. Edit what you need.

context-pack.zip
all nine, ready to edit

Upload the whole folder into a Toqan chat once, and every session after it starts knowing where it is.

Same move, the rest of the pack

Slack is evidence for more than your persona. Swap the file, keep the method.

voice.md
Read what I actually wrote. How I open, how long my sentences run, how I say no.

Three real quotes per rule. Not the voice I wish I had.
glossary.md
Every acronym and internal name in my channels, defined the way my team uses it.

Flag the terms where usage conflicts and make me settle them.
decisions.md
Find the threads where something got settled. What was decided, by whom, what it rules out.

List what only looks decided, separately.

What the connector cannot see, you still have to type. That is the honest part of the pack.

Decide how much you need to type

Extract everything Slack can prove. Only type what is left.

Extract Interview Type Slack, Drive,your own threads It asks only aboutwhat it cannot see The homeworkit hands back
02
Part two

Plan your week
with AI

20 minutes

Schedule a weekly check-in

Friday, 16:00: review next week and approve a plan.

TODAY you agent it only helps on the days you remember to ask AFTER TODAY Friday 16:00 agent you "here is your week. say yes."

How focus-friday works

READS Jira what you owe, and when Calendar every hour already spent Slack + OKRs what people are waiting on your context pack the rules that win ties focus-friday 1 · doctor: are the connectors live? 2 · score: impact × urgency / effort 3 · blocked work scores zero 4 · find gaps ≥ 90 min 5 · protect Wednesday first plan_week.py does the arithmetic the proposal Wed 09:00–12:00 · TAL-14 Wed 13:00–15:30 · TAL-9 Tue 09:30–11:00 · PEO-3 did not fit: TAL-22 (blocked) worth challenging: Thu sync 6.0h of an 8h target you say yes nothing is written before this point your week held, with reasons WRITES calendar holds on your own calendar · a checklist in your Slack DM · nothing else, ever NEVER moves a meeting · declines an invite · touches anyone else's calendar · books outside your hours

Make room for focused work

Protect blocks of at least 90 minutes.

your week now after Friday 16:00 MTWTF MTWTF 14 gaps longest: 55 minutes enough time to start things never enough to finish one TAL-14 TAL-9 PEO-3 3 blocks 6 hours, unbroken

Edit the planning rules

Change your protected day and time limits in reference/rules.md.

focus-friday-skill.zip
SKILL.md, rules, scripts, doctor
reference/rules.md read on every run
## Blocks 90 minutes to 3 hours. 15-minute gaps either side. Keep lunch free. ## Timing Protected day first, then mornings. Before the deadline, not on it. No Monday before 10:30 or Friday after 16:00. ## Priorities Blocked or unclear tasks: score 0. At equal scores, finish work already started. Two blocks per task at most. ## Target 8 hours a week. Under 4 available: stop and ask.

Connect Calendar and Jira

Google Workspace is one OAuth click. Jira has no connector yet — bring it in as an MCP server. The own-calendar-only limit is a rule in the skill, not a setting. Run the doctor before planning.

first message
Run the focus-friday doctor. Show what passed, what failed, and how to fix it.
Toqan › Connections
Calendar *
Google Workspace › Connect
Grants
calendar, docs, sheets, mail — one OAuth approval
Jira *
no connector yet → Add MCP Server
Project keys
TAL, PEO
Schedule
Agents › Tasks › Manage automations › Schedule — every Friday 16:00 Europe/Amsterdam

Exercise: plan next week

Install focus-friday, check the setup, then review its proposal.

12minutes
prompt
Use my context files to plan next week.

Show proposed blocks, reasons, and work that did not fit. Wait for my approval before writing.

Save my corrections in reference/rules.md.
03
Part three

Build a
reusable skill

40 minutes

What goes in a skill folder

Skills are more than a description, a name, and an MD file.

focus-friday/ what actually ships
SKILL.md when to fire, what to do, what to never do README.md for the human deciding whether to install it ONBOARDING.md the first five minutes scripts/ plan_week.py gap-finding + scoring. arithmetic belongs in code, not in a prompt. doctor.py proves it can run before it promises anything reference/ rules.md the judgment, editable by a non-engineer examples.md real input, real output, including a failure faq.md the first 60 seconds of questions assets/ weekly-plan-template.md the output shape. ship it, do not describe it.

Scripts

Write the logic once. Run it whenever the skill needs it.

Agent calls the script Script runs the logic Result ready to use reuse on the next run Fewer tokens No repeated reasoning Repeatable results Same input, same output

Onboarding.md

Four steps. Step two runs on sample data, so nobody needs real access to see it work.

1 Install, then run the doctor it says what is missing before you start 0:00 2 First run, on sample data it works before it asks for anything real 0:01 3 Connect your own accounts one OAuth click, or one line in a config 0:03 4 Run it on your own work a real output, inside five minutes 0:04 Longer than five minutes is not onboarding. It is a project.

reference/

SKILL.md stays short. The rules, the examples and the FAQ get read only when they are needed.

SKILL.md short. read on every run. read only when needed rules.md the judgment calls, in plain sentences edited by anyone examples.md real input, real output and one failure faq.md the first sixty seconds of questions Change a rule edit one file Not the skill no rewrite, no republish

assets/

Do not describe the format in a prompt. Include the template and let the skill fill it in. Add brand assets such as LOGO.png too.

assets/plan-template.md # Week of {{week}} ## Focus blocks - {{block}} · {{why}} ## Did not fit - {{dropped}} ## Challenge these filled in week-of-14-oct.md # Week of 14 Oct ## Focus blocks - Tue 09:00 · pricing ## Did not fit - Q3 retro writeup ## Challenge these Described in words drifts a little every run Shipped as a file identical, every single run

Check the setup with a doctor

Check dependencies and connectors before the skill runs. Give a fix for each failure.

skill-product-template.zip
SKILL.md, ONBOARDING, FAQ, doctor.py, examples
$ python scripts/doctor.py before anything else runs
[ok ] python >= 3.9 [ok ] package: python-dateutil [FAIL] package: pyyaml fix: pip install pyyaml [FAIL] calendar connector fix: Toqan › Connections › Google Workspace › Connect, then approve calendar access [FAIL] jira connector fix: no Jira connector yet. Toqan › Connections › Add MCP Server › your Jira bridge [ok ] rules file [warn] slack (optional) fix: without it, the plan stays in chat [ok ] curl on PATH Blocked on 3 checks. Fix these first — a wrong answer costs more than a missing one. # exit 1, so the skill stops here instead of # confidently planning a week it cannot see.

Before you publish

A colleague ran it without help

The description uses familiar words

Errors explain what to fix

All required files and setup steps are included

Tested on two accounts

Owner and support channel listed

Build a skill from a finished task

Use the conversation, including your corrections, as the starting point.

TUESDAY · BY HAND do the thing first attempt no, always start from the template second attempt drop anything blocked, it wastes a slot third attempt yes. that one. every correction here is a rule you now own "write that back as a skill" NEXT TUESDAY /focus-friday right, first time

Save this session as a skill

Run this after finishing a task in chat.

prompt · run at the end of a session
List my corrections, repeatable steps, and failed guesses.

Build SKILL.md, scripts, rules, examples, and templates from this session.

Tell me what would break for a colleague.

Exercise: turn your work into a skill

Choose a task from this week that took more than one attempt.

15minutes
1 · build
Use a task from this week.

Turn the steps and corrections into a skill folder with scripts, rules, and examples.
2 · share
Add a setup check, quick start, FAQ, permissions, owner, and support channel.

Test it as a new colleague.
04
Part four

Use the VM
and external tools

25 minutes

What runs in a Toqan session

A Linux machine with files, runtimes, processes, and network access.

your session · a disposable Linux box filesystem read, write, unzip, mount runtimes python, node, pip, npm processes servers, workers, chromium network egress curl, git, any API you can reach $ pip install pandas && python analyse.py $ curl -s https://your-service.internal/report

API credentials through a proxy

It’s like a secret manager: store the credential once, and the proxy adds it to matching requests. The agent does not need to read it.

the agent GET /v1/headcount no auth header the proxy + Authorization: Bearer + X-Prosus-Actor injected here, not upstream secret store your API authenticated never in the prompt  ·  never in a file the agent can read never in the transcript  ·  never in a log, an error or a screenshot

Exercise: API auth injection

It’s like a secret manager: save the key in the connection, and Toqan adds it when calling the API.

Try it with fake-api
  1. In Toqan › Connections, add an API connection named fake-api for https://fake-api.boxd.sh/.
  2. Configure auth injection for this host: header name X-API-Key, secret value dummy. Save the connection.
  3. Ask Toqan: “Use the fake-api connection to GET https://fake-api.boxd.sh/ and show the response.” Keep the key out of the prompt.
  4. Success: 200 OK and Hello World. A direct request with a missing or incorrect key returns 401 Unauthorized.
Compare in your terminal (demo key):
curl https://fake-api.boxd.sh/ -H 'X-API-Key: dummy'
The demo API is already deployed and configured to start automatically after reboots.

Scheduling a task

Give Toqan the task, timing and expected result. Check the saved schedule and timezone, then test the task once.

Try in Toqan
Every Friday at 16:00, Europe/Amsterdam time, use focus-friday to review next week and draft a plan. Show the priorities, conflicts and proposed focus blocks. Ask for my approval before changing my calendar.

No mounting of
file storage?
Build one!

A skill tells the agent which CLI to use. The CLI fetches remote files via GET; the proxy injects the token.

remote-files/SKILL.md illustrative skill + CLI
## Read file Use the CLI to read the files in this skill ## Files folder / file1.txt file2.txt etc.
read-file-cli the skill names it GET file the proxy adds the token agent reads the new version, every time

Toqan is your playground

Context files
Skills
Scripts
Assets
MCP connectors
The VM
Apps with Databases
Header injection
Subagents
Virtual mounts
Your own MCP server
Tunnels
Scheduled triggers
The doctor pattern
Network egress
The marketplace

Use subagents to read and summarise

One feature I always forget exists

Each subagent reads a source and returns only what the main agent needs. Workflow-style agent chains are also supported, like in n8n, with one agent passing its output to the next.

orchestrator holds the decision, stays clean ticket-reader reads 40 issues 40k tokens of noise returns 3 keys calendar-scanner reads a full week every recurring hold returns 6 windows critic no context on purpose sees only the plan returns 2 objections 3 keys + 6 windows + 2 objections
05
Part five

Build an
external connection

45 minutes

Rules for external services

Read-only first, always A write you cannot roll back is not a demo, it is an incident. Aggregates leave, individuals do not Nothing about a named colleague goes to a service you host yourself. Close what you opened Tunnels outlive your attention. Kill it when the session ends. Think about the next person copying this pattern People copy the pattern. They copy the caution only if you write it down. Do not share to public Keep access limited to the intended people.

Anything that is not yet there,
you can build

Run a server on your laptop and connect it through a tunnel.

Toqan connector: MCP https + X-Bridge-Token ngrok public tunnel your laptop server.py 3 tools 40 lines FastMCP the system with no connector the tunnel is public. the token header is the only door. read-only first. kill it when you are done.

Add your server to Toqan

Start the server, open the tunnel, and add the URL and token header. Ask Toqan to list the tools.

terminal
$pip install "mcp[cli]" uvicorn export BRIDGE_TOKEN=$(openssl rand -hex 16) python server.py & ngrok http 8000
toqan-bridge.zip
server.py, SETUP.md, the troubleshooting table
Toqan › Connections › Add MCP Server
Name *
toqan-bridge
URL *
https://<your-id>.ngrok-free.app/mcp
Protocol *
Streamable HTTP (Recommended)
Approval policy *
All tool calls — asks before every call
Headers *
Add header → X-Bridge-Token: <your token>
Include /mcp at the end of the URL. Save is blocked until you tick both trust confirmations.

Create a skill to use your external service

Tell Toqan when to call it, what to send, and how to use the result.

my-service/SKILL.mdyour connection, made reusable
## When to use When the user asks for a report from our service. ## Steps 1. Check that the connection is available. 2. Ask for any missing inputs. 3. Call the service through its connected tool. 4. Summarise the result and cite the source. ## If the call fails Show the error and explain what to check. ## Example “Fetch this month's report and summarise it.”

Exercise: connect a service to Toqan

Choose a task

Build, in 45 minutes
  1. 0–5Choose a task that cost you an hour this month.
  2. 5–20Build a service: an MCP server, scraper, or API. Test it with curl.
  3. 20–30Connect it to Toqan. Check the tool list and test with real data.
  4. 30–40Add a Toqan skill, a setup check, and a quick-start example.
  5. 40–45Let a colleague run it without help.

After the workshop

  • Save your context pack and load it into every session from now on
  • Let the planner run on a real Friday and correct it once, in writing
  • Publish one skill with a doctor with your name and a channel on it

Questions and demos

Building skills in Toqan
01 / 40
← → or space to navigate