1The 90-second how-to
- Install once. Drag the BotsKit bookmarklet from the install page onto your bookmarks bar.
- Visit the page you want a lesson to attach to (e.g. a product manual, a docs page, a Wikipedia article).
- Click the bookmarklet. A small chat panel opens.
- Type a TEACH-family message (see verbs below). Send.
- Anyone who visits that URL afterwards and opens BotsKit gets your note pre-loaded as the chat's running context.
That's it. There is no separate teacher mode, no login, no admin panel. The role of teacher is conferred per-message by the keyword you used.
2The five verbs
Case-insensitive, must lead the message line. Anything else is treated as a normal chat turn.
TEACH: teacher
Author or amend the running lesson for this URL.
TEACH: When students ask about pairing this device, point them at section 4 of the manual. Common confusion: the LED blinks blue during pairing, not green.
The model rephrases your note into a clean instruction set, swaps it in as the canonical lesson for this URL, and keeps the prior version in append-only history.
TEACH_VIEW: teacher
Show the current lesson without editing it. No body needed.
TEACH_VIEW:
TEACH_SCOPE: teacher
Broaden (or narrow) the URL the next TEACH: writes against.
Combinable as a leading line before TEACH: or LEARNED:.
TEACH_SCOPE: /devices/* TEACH: All device pages share the same pairing flow โ see manual ยง4.
Default scope is the exact path you're on. /devices/* applies to every page under /devices/.
A page-level TEACH: will still win over a broader prefix when both exist (most-specific wins).
QUESTION: student
Park an open question for a teacher to review later. Does not change the lesson.
QUESTION: The pairing LED is purple on my unit, not blue. Same flow?
Lands in the inbox attached to this URL key. Teachers see queued questions when they next
TEACH_VIEW: here.
LEARNED: student
Student-authored amendment. Same rewrite path as TEACH:; differs only in attribution intent.
LEARNED: If the LED is purple instead of blue, hold the button for 10s to reset, then start the pairing flow.
Use this when you, as a learner, discovered something the lesson should know โ without claiming the teacher role.
3How URL scoping works
Lessons attach to a URL key, not a topic. The lookup escalates from most-specific to most-general.
When a student visits a page and types a chat message, BotsKit walks:
- Exact path โ
https://example.com/devices/widget-pro/setup - Path prefixes set by
TEACH_SCOPE:โ e.g./devices/widget-pro/*, then/devices/* - Origin-wide โ
https://example.com/* - Fall through to "no lesson" โ generic chat.
The first match wins. So a page-specific TEACH: always overrides a broader scoped one.
Local IPs and loopback
On http://localhost / http://192.168.x.x, BotsKit also folds in a
content-hash salt โ a short hash of the first ~N characters of the page text โ to disambiguate
same-URL-different-machine collisions. It's a heuristic, not a guarantee. See
ADR 0002.
4What the chat sees
Lessons are pre-injected as system context. Page text rides along when you grant the chip.
Every chat turn that's not a TEACH/STUDENT verb runs through the orchestrator, which:
- Looks up the lesson for your URL key.
- If the read-page grant chip is on, snapshots the host page text and includes it.
- If the share URL chip is on, includes
origin + path + #hash(no query string โ that's where PII lives). - Sends the LLM the lesson + the snapshot + your message.
Conversation continuity is keyed by a session cookie (botskit_session) โ opaque, not auth, just a routing key
so multiple turns on the same page share state. Each URL navigation in a session = its own conversation
(ADR 0003).
5Trust caveats โ read this once
TEACH: and rewrite the lesson for a URL. This is fine for classrooms,
teams, and private deployments โ it is not fine for hostile multi-tenant. See
ADR 0001
for the reasoning and the upgrade path.If you need real teacher/student separation, the path is documented but not built: invite-code rooms or per-install bookmarklet tokens. Both add a tenancy primitive. Until then, only deploy teachkit somewhere the audience is cooperative.
6Worked example โ leaving a lesson for a Wikipedia article
- Visit
https://en.wikipedia.org/wiki/Bookmarklet. - Click your BotsKit bookmark; the chat panel attaches.
- Flip the read page chip on (so the lesson can reference what's on the page).
- Type:
TEACH_SCOPE: /wiki/Bookmarklet TEACH: For students new to bookmarklets: focus on the "Security" and "Browser support" sections. Skip "History" โ interesting but not on the test.
- Send. The next student who visits the same URL and opens BotsKit gets that as their running context โ they don't need to know it's there.
To check it later, open BotsKit on the same URL and type TEACH_VIEW: โ the canonical lesson echoes back.
7Going deeper
- CONTEXT.md โ canonical glossary (roles, keyword families, URL keying, sessions, entities).
- ADR 0001 โ why the role is keyword-conferred, not identity-based.
- ADR 0002 โ URL scoping and the escalating lookup.
- ADR 0003 โ why conversations are keyed by session cookie.
- hooks_README.md โ URL-fragment hooks (bare form vs
bk=form).