tutor-book
Use when the learner has their OWN book or text in front of them and wants on-the-spot lookups of words, sentences, or passages they don't understand, or to…
Skill by artemVeduta
Chalk Labs
Need help deploying tutor-book?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/artemveduta-tutor-book
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/tutor-book
What's inside
- Skill name
tutor-book- Description
- Use when the learner has their OWN book or text in front of them and wants on-the-spot lookups of words, sentences, or passages they don't understand, or to ask about the text they are reading. Looked-up words are saved and added to vocabulary spaced-repetition review. tutor-reading is for comprehension Q&A on tutor-generated passages; tutor-vocab is for standalone vocab drills.
- License
- MIT
- Instructions
- 101 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
Use this when the learner is reading their own book (or any external text) and wants
help with something they don't understand in front of them — a word, a sentence, a
passage, or a question about the text. The learner types/pastes the text; this skill
does not ingest book files or generate passages.
Run only `tutor` for stateful work:
0. On the first stateful step of the conversation, mint a session BEFORE anything else:
`tutor session-start --json '{"host":"<host>"}'`. Capture the returned
`session_id` (e.g. `sess_ab12`) and thread `"session_id":"sess_..."` into every
later `tutor` payload this conversation. If you already have a `session_id`
from earlier in the conversation, reuse it — do not call `session-start` again.
1. Start a per-book reading session linked to the tutor session:
`tutor book start --json '{"session_id":"sess_...","title":"<title>","author":"<author>"}'`
(`author` is optional). Capture the returned `book_session_id` (e.g. `book_cd34`)
and thread `"book_session_id":"book_..."` into every `tutor book record` /
`tutor book log` / `tutor book close` payload this conversation. `book start` is
idempotent within the current tutor session for an open book of the same title —
re-calling it returns the existing book session.
2. BEFORE telling the learner the reading session is ready, checkpoint:
`tutor checkpoint --json '{"session_id":"sess_...","modality":"book","step_kind":"prompt_shown","summary":"Started reading <title>","state":{"book_session_id":"book_...","title":"<title>"}}'`.
Only after the checkpoint returns do you tell the learner the session is ready.
3. Lookup loop — for each thing the learner does not understand:
a. The learner types a `word`, `sentence`, `passage`, or `question` (optionally
with surrounding `context`). You generate the explanation:
If the learner pastes a whole chapter or an overly long excerpt, do not try to
process it as one lookup; ask them to choose a sentence/short passage or give a
bounded summary of the specific excerpt they selected. If the pasted content is
not in the learner's configured target language, reject it and ask for target-
language text before calling `tutor book record`.
- `word`: `{"translation":"<native-lang>","gloss"?:"<short gloss>"}` —
`translation` may be absent/empty (the word is still logged; it just feeds no
SRS card). A translation that is just the word echoed back is treated as
absent for SRS purposes.
- `sentence` / `passage`: `{"translation":"..."}` (or explanation).
- `question`: `{"answer":"..."}`.
b. Persist + render:
`tutor book record --json '{"book_session_id":"book_...","kind":"word","content":"<text>","context":"<optional>","explanation":{...}}'`.
The result is `{lookup_id, vocab_item_id?, deduped, created_at, rendered}`. The
lookup is always persisted; `deduped:true` means this normalized word already had
a lookup row in this book (no duplicate SRS card).
c. Checkpoint the recorded answer:
`tutor checkpoint --json '{"session_id":"sess_...","modality":"book","step_kind":"answer_recorded","summary":"Looked up <text>","state":{"book_session_id":"book_...","lookup_id":"lookup_...","kind":"word"}}'`.
d. Display the `rendered` markdown field returned by `tutor book record` to the
learner. Do not reformat it yourself — the CLI owns rendering.
If `tutor book record` returns `book_session_closed`, do not show the raw error.
Tell the learner the reading session is closed and offer to start a new session
with `tutor book start` or resume an open one with `tutor book list` / `tutor book resume`.
4. Review log — when the learner asks "what have I looked up?":
`tutor book log --json '{"book_session_id":"book_..."}'` returns all lookups ordered
by `created_at` ascending, each with its own `rendered` field. Display the
`rendered` field; do not reformat.
5. Resume in a new conversation — when the learner comes back to continue a book:
`tutor session-start` (new `session_id`) → optionally `tutor book list --json '{}'`
to propose open books (open first, each with `lookup_count`; disambiguate by
`author` / `started_at` when two open sessions share a title) →
`tutor book resume --json '{"title":"<title>"}'` finds the most recent open book
session for the title and returns its `book_session_id`. Reuse that
`book_session_id` for `tutor book record` / `tutor book log`; use the new
`session_id` for `tutor checkpoint`.
6. `tutor book close --json '{"book_session_id":"book_..."}'` marks a reading session
`closed`. NEVER call it automatically — only when the learner explicitly asks to
wrap up this book. Closing a book session does NOT close the parent tutor session,
and closing a tutor session does NOT close linked book sessions.
Never call `tutor session-close` (or the legacy `session-end`) automatically either —
only when the learner explicitly asks to wrap up the whole tutor session. Sessions stay
`open` between turns and are resumed by reusing the same id; a new conversation gets a
new session via another `session-start`.
The CLI owns validation, persistence, SRS card find-or-create, rendering, and
dedup. Do not invent explanations and persist them directly, render through another
LLM step, build SRS cards yourself, or imply book-file ingestion, page tracking, or
automatic unknown-word extraction.
## Discriminator vs `tutor-reading`
- `tutor-book`: the learner has their OWN book/text in front of them and wants an
on-the-spot meaning lookup of text they are reading (word/sentence/passage), or a
direct question about that text (`kind:"question"`/`passage`). The text is the
learner's; this skill explains it and logs the lookup.
- `tutor-reading`: the tutor generates a passage and the learner answers
comprehension questions (or reconstructs a transcript). The text is tutor-generated.
- Open-ended comprehension/analysis ("what's the main idea of this chapter?") routes
to `tutor-reading`, not `tutor-book`. On-the-spot "what does this sentence mean?"
of text in front of the learner stays in `tutor-book`.
## Payload schemas (build every request against these)
Read the referenced `schemas/*.schema.json` before constructing the payload; do not guess fields.
- `session-start` input: `{"host":"claude|codex|openclaw|hermes","host_conversation_id"?:str}` → output `schemas/boot_result.schema.json`.
- `book start` input: `{"session_id":"sess_...","title":str,"author"?:str}` → output `schemas/book_session.schema.json`.
- `checkpoint` input → `schemas/checkpoint.schema.json`. Required: `session_id`, `modality` (`book` for this skill), `step_kind`, `summary`. For this skill: `step_kind` is `prompt_shown` (step 2) or `answer_recorded` (step 3c). `state` also takes `book_session_id`, `lookup_id`, `kind`, `title`, `step_index`, `total_steps`, `labels` (≤16).
- `book record` input (`BookRecordInput`) → `schemas/book_record.schema.json`; `kind` ∈ `word|sentence|passage|question`; `explanation` shape per kind (see step 3a). Output → `schemas/book_lookup_result.schema.json` (`lookup_id`, `deduped`, `created_at`, `rendered`, optional `vocab_item_id`).
- `book log` input: `{"book_session_id":"book_..."}` → output `schemas/book_log.schema.json` (ordered `lookups[]`, each with `rendered`, plus a top-level `rendered` numbered list).
- `book list` input: `{}` → output `schemas/book_list.schema.json` (`sessions[]` open first, each with `lookup_count`).
- `book resume` input: `{"title":str}` → output `schemas/book_session.schema.json`.
- `book close` input: `{"book_session_id":"book_..."}` → output `schemas/book_session.schema.json` (`status:"closed"`).From artemVeduta/lingo-loop, MIT.
More from artemVeduta/lingo-loop
- 0.479score
tutor-progress
artemVeduta
Use when learner wants progress, exportable progress reports, next focus, due counts, weak patterns, maturity, local status, or cost status.
SkillCFreshness: CClaude Code +9 - 0.474score
tutor-lesson
artemVeduta
Use when the learner wants a guided micro-lesson on one weak tag or one chosen topic (one explanation plus one practice step).
SkillCFreshness: CClaude Code +9 - 0.474score
tutor-reading
artemVeduta
Use when the learner wants to read a passage and answer comprehension questions, or reconstruct a text transcript drill (text-only, no audio).
SkillCFreshness: CClaude Code +9 - 0.474score
docs-validate
artemVeduta
Validate the docs/ OKF bundle for conformance (parseable frontmatter + non-empty type) and report soft warnings.
SkillCFreshness: CClaude Code +9 - 0.474score
feature-flow
artemVeduta
Use when the user says "/feature <slug> '<intent>'", "start a feature", "new feature with spec", "feature flow", "spec-then-implement a feature", or otherwise…
SkillCFreshness: CClaude Code +9 - 0.474score
docs-add
artemVeduta
Scaffold a new OKF concept in the docs/ bundle (Decision, Specification, Convention, Glossary, Reference) or a subsystem index node, with conformant…
SkillCFreshness: CClaude Code +9 - 0.474score
hotfix
artemVeduta
Use when patching a bug in an already-released production version, hotfixing a shipped release, applying an emergency fix off the latest production tag, or…
SkillCFreshness: CClaude Code +9 - 0.470score
tutor-writing
artemVeduta
Free writing prompt and structured feedback orchestration.
SkillCFreshness: CClaude Code +9 - 0.470score
pre-release-checks
artemVeduta
Use when about to cut a release, tag a version, publish to PyPI, or the user says "/pre-release", "before I cut a release", "verify release readiness"…
SkillCFreshness: CClaude Code +9 - 0.470score
release-cut
artemVeduta
Use when the user says "cut release X.Y.Z", "/release-cut X.Y.Z", "open release PR", "prepare release branch", or otherwise asks to start a release of…
SkillCFreshness: CClaude Code +9 - 0.470score
tutor-vocab
artemVeduta
Practice due vocabulary through the local tutor CLI.
SkillCFreshness: CClaude Code +9 - 0.464score
tutor-setup
artemVeduta
Onboard or edit local language tutor profile and preferences.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 22, 2026 (4 months ago)
- Last release
- Jun 22, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/artemVeduta/lingo-loop
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from artemVeduta
- 0.479score
tutor-progress
artemVeduta
Use when learner wants progress, exportable progress reports, next focus, due counts, weak patterns, maturity, local status, or cost status.
SkillCFreshness: CClaude Code +9 - 0.474score
tutor-lesson
artemVeduta
Use when the learner wants a guided micro-lesson on one weak tag or one chosen topic (one explanation plus one practice step).
SkillCFreshness: CClaude Code +9 - 0.474score
hotfix
artemVeduta
Use when patching a bug in an already-released production version, hotfixing a shipped release, applying an emergency fix off the latest production tag, or…
SkillCFreshness: CClaude Code +9 - 0.474score
docs-validate
artemVeduta
Validate the docs/ OKF bundle for conformance (parseable frontmatter + non-empty type) and report soft warnings.
SkillCFreshness: CClaude Code +9 - 0.474score
feature-flow
artemVeduta
Use when the user says "/feature <slug> '<intent>'", "start a feature", "new feature with spec", "feature flow", "spec-then-implement a feature", or otherwise…
SkillCFreshness: CClaude Code +9 - 0.474score
docs-add
artemVeduta
Scaffold a new OKF concept in the docs/ bundle (Decision, Specification, Convention, Glossary, Reference) or a subsystem index node, with conformant…
SkillCFreshness: CClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get tutor-book running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
tutor-book skill. Agent Mart. https://agentmart.dev/skills/artemveduta-tutor-book (last updated 2026-10-24)