# Samurai Scribe docs > How to use Samurai Scribe, every page in one file. Each page says which version it was checked with. The pages one by one: https://samuraiscribe.com/llms.txt Current version: 0.65.0 (November 2026) --- # How Samurai Scribe works > The path a meeting takes in Samurai Scribe, from recording or import to transcript, speakers, summary, your vault and the assistant. - Page: https://samuraiscribe.com/docs/how-it-works/ - Checked with Samurai Scribe 0.65.0 Samurai Scribe turns the audio of a meeting into Markdown files on your computer, and then answers questions about everything you have recorded. Every meeting takes the same path, described below. The rest of the docs go into each part. New to the app? [Your first meeting](https://samuraiscribe.com/docs/first-meeting/) walks through setup, the downloads and a first recording. ![The path a meeting takes in four stages. First, get the audio in: record, import a file or import a link. Second, a run follows the meeting's processing profile: Transcription writes down what was said and works out who spoke, on your computer, then Summarization runs the script and skill steps in order. Third, everything lands in your vault as a meeting folder holding the meeting note, transcript, summary and recordings. Fourth, the assistant, skills and AI apps work from the vault.](https://samuraiscribe.com/images/docs/how-it-works/meeting-path.svg "From audio to a meeting folder in your vault, and everything that works from it.") ## Getting the audio in - **Record.** Samurai Scribe records your microphone and your computer's sound (the other side of a call) as separate tracks. No bot joins the call, so it works with Zoom, Google Meet, Teams and anything else that plays sound on your computer. - **Import a file.** Drop a recording you already have onto a meeting, or pick it from your files. Common audio formats work, and for a video file the app uses its sound. - **Import a link.** Paste a link to a video or recording, such as one on YouTube, and the app fetches its audio into the meeting. The first time, it downloads the video downloader it uses for this. **Import Bulk Recordings** brings in a folder or several recordings, each as its own meeting. One recording at a time imports free; importing more than one at a time needs Pro. ## Running the meeting Processing a meeting is called a [run](https://samuraiscribe.com/docs/glossary/#run). Press **Run** on the meeting, or let it start by itself: - **Settings → Mic & Audio → Process automatically when a recording stops** decides which recordings run on their own. - The default, **Calendar meetings**, runs recordings you started from a calendar meeting. - **All recordings** runs every recording. **Never** leaves every run to you. A single file or link you import waits for you to press **Run**. **Import Bulk Recordings** runs each meeting with the profile you pick, unless you choose **Import only, don't process**. Samurai Scribe has to be open for a run. A run follows the meeting's [processing profile](https://samuraiscribe.com/docs/glossary/#processing-profile), which has two parts, shown on the meeting as **Transcribe** and **Summarize**: 1. **Transcription** writes down what was said and works out who spoke, on your computer. - The transcript is made the same way whether it was transcribed as you spoke, when you pressed **Run**, or uploaded. - Voices are always told apart, as "Speaker 2" and so on. With **Recognise people by voice** on (in the profile's Transcription settings, under **Advanced**), each line can be named on its own: a line that sounds like you, someone invited to the meeting, or someone you added with **Add someone**, gets their name. Anyone else the app knows is suggested, never named automatically. The app knows a person's voice once you have confirmed their name in an earlier meeting. - Your [Dictionary](https://samuraiscribe.com/docs/dictionary/) fixes the spelling of your names and terms here, as it does wherever speech becomes text: meetings, live transcripts and dictation. - The language and model are set in **Settings → AI Models**, and it runs on your computer's graphics card or its processor: see [Transcription](https://samuraiscribe.com/docs/transcription/). 2. **Summarization** runs the profile's steps in order. A step can be a script, a skill, or **Name the meeting**. The built-in profiles write a summary with the built-in script. If the meeting was transcribed as you spoke (the [live transcript](https://samuraiscribe.com/docs/glossary/#live-transcript), with the mode **As you speak**), it was already finished with your meetings model as you recorded, speakers and all. The run keeps that transcript and goes straight to summarization, and **Transcribe** reads **Done**. Click it to transcribe the meeting again from its audio when you run. Each part needs its model. If one isn't ready, the run stops and says why: **Models Not Ready** (download it), **Models Downloading** (wait for it), or **Model Not Set Up** (add a hosted model's key or address in **Settings → AI Models**). See [Your first meeting](https://samuraiscribe.com/docs/first-meeting/#download-the-models-before-your-first-run). New meetings use the built-in **General Meeting** profile unless you choose another one, or make your own: see [Processing profiles](https://samuraiscribe.com/docs/profiles/). Summaries use the built-in model on your computer unless you choose another in **Settings → AI Models**: - Ollama or LM Studio; - a hosted model from Anthropic, OpenAI, Google Gemini or OpenRouter; - a server at an address of your own. Without Pro, one meeting runs at a time: start the next one when the first is done. With Pro, meetings you run while another is processing wait in a queue. ### Running a meeting again You can run a meeting again, for example with another profile or a better model. If the run would replace something the meeting already has, such as its transcript or summary, the app asks first: **Rerun & Overwrite Meeting Data?** names what will be replaced. **Overwrite & Process** goes ahead. > [!WARNING] > Running again replaces what it rewrites, including any edits you made to it, and can't be undone. Copy out anything you want to keep first. ## Everything lands in your vault Each meeting becomes a folder of Markdown and audio in your [vault](https://samuraiscribe.com/docs/vault/), a folder you choose. A meeting's folder holds: - a meeting note; - the transcript, with a heading for each line of speech giving its time and speaker; - the summary and any other documents the steps wrote; - the recordings. You can open, edit, sync and back up these files with any tool, and edits you make outside the app are picked up. Leave the files whose names start with `_`, and the vault's `.samurai/` folder, as they are: they are the app's. People you name get a note of their own, and transcripts link to them. [The vault](https://samuraiscribe.com/docs/vault/) explains the layout and what you can change. ## Asking the assistant The assistant answers questions about your meetings and notes. Open it: - in a panel beside any meeting, with Cmd+J on a Mac or Ctrl+J on Windows; - full width in the **Projects** tab of the sidebar. Its answers cite what they draw on. Click a citation to open the meeting at that moment, or the note it came from. The assistant can also write notes and suggest edits. By default every change waits for you to keep or discard it: see [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). The assistant is free. [The assistant](https://samuraiscribe.com/docs/assistant/) covers what it reads and how to point it at a meeting, and [Projects and chats](https://samuraiscribe.com/docs/projects/) how its chats are kept. ## Doing more - **[Skills](https://samuraiscribe.com/docs/skills/)** are plain-English instructions for a task you repeat, such as "turn this meeting into a follow-up email". Run one from the **Skills** page in the sidebar, type / in a chat, or add it as a step of a profile. Skills are free, and you can [write your own](https://samuraiscribe.com/docs/skills/writing/). - **[Automations](https://samuraiscribe.com/docs/automations/)** run a skill by itself after each meeting is processed, before calendar meetings, or on a schedule, while the app is open. Automations need Pro. - **[Scripts](https://samuraiscribe.com/docs/scripting/)** decide exactly how a profile writes up a meeting. They are short programs in the Rhai language, and they are free. - **Connections** (beta) let the assistant and skills work in services such as Linear, Notion, Jira & Confluence, Todoist, monday.com, ClickUp and Attio, and **Labs: add a custom server…** adds others. Connections are free; a connection acting in an automation needs Pro. - **AI apps** let Claude Desktop, Claude Code, Codex, Cursor and Gemini CLI search and read your meetings while Samurai Scribe is open. Set them up in **Settings → AI Apps**, or see [AI Apps](https://samuraiscribe.com/ai-apps). AI apps are free. ## What leaves your computer - Transcription, including telling speakers apart and recognising them, always runs on your computer. - With the built-in model, the default, your recordings, transcripts, summaries and notes stay on your computer. The exceptions are ones you choose: including a meeting in a bug report, or sending recordings with **Contribute recordings…**. - A hosted model, a connection or an AI app sends what it needs to the service you picked, and nowhere else. - Once a day the app checks for updates and sends anonymous usage data: its version and your OS, nothing about your meetings. You can turn off either one in **Settings → Updates**: **Check for updates automatically** and **Send anonymous usage data**. The [network disclosure](https://samuraiscribe.com/network) lists every request the app can make. For what Pro adds, see [pricing](https://samuraiscribe.com/#pricing). --- # Your first meeting > From first launch to a transcript, named speakers, a summary and a first question to the assistant. The setup steps, the downloads, and what to press. - Page: https://samuraiscribe.com/docs/first-meeting/ - Checked with Samurai Scribe 0.65.0 This page takes you from opening Samurai Scribe for the first time to a meeting with a transcript, named speakers and a summary. It works the same on a Mac and on Windows; where the two differ, it says so. Allow time for the downloads: the app runs its models on your computer, so it fetches them once. ## Setup, on first launch Setup opens by itself the first time. It has five steps, and you can leave it at any point with **Finish later**. Until everything is done, an amber **Finish setup** chip at the foot of the sidebar shows what's left and opens setup at the first step that still needs something. You can also run it again from **Settings → Help & Setup → Open Setup**. 1. **Welcome.** Pick what you want the app for: **Meeting Notetaker**, **Dictation**, or both. - The page also shows where your meetings will be saved. The app makes a folder for you, called a [vault](https://samuraiscribe.com/docs/vault/): `Samurai Scribe` in your Documents folder. - **Change…** opens your list of vaults, where you can create one or open a folder you already have. 2. **Audio.** Let the app hear your meetings. - **On a Mac**, press **Enable microphone** and **Enable system audio**, and allow each when macOS asks. System audio is the other side of a call. macOS files it under Screen Recording, though no video is captured. On macOS 14.4 and later, macOS may ask once more the first time the app records your computer's sound. - **On Windows**, there is nothing to allow for system audio. Press **Check microphone**. - Once the microphone is allowed, a check starts by itself: say something and watch the bar move. 3. **About you.** Type your name under **Your name** and press **Save**, so transcripts spell it your way. If you picked Meeting Notetaker, **Teach it your voice** asks you to read three sentences aloud: press **Start reading**, read them, then **Done**. From then on the app can name you in your first meeting. This step is optional; the **Speakers** page asks once more if you skip it. 4. **Downloads.** The models the app runs. See the next section: this step matters. 5. **Ready.** A summary of what's set up, and **Take the tour**: a short walkthrough of the window, then of the assistant, and of Dictation if you picked it. ## Download the models before your first run The app runs its models on your computer, so it downloads each one once. Two download by themselves on first launch: - **Transcription.** The model is picked from your computer's language: Parakeet v2 for English, Parakeet v3 for the other European languages Parakeet knows, and Whisper Small for any other language. Parakeet is about 0.67 GB, Whisper Small about 0.47 GB. All three are free. **Other…** beside it on the Downloads step picks another; [Transcription](https://samuraiscribe.com/docs/transcription/) explains the models, where they run, and how to compare them. - **The speaker voice model**, which tells voices apart and recognises the people you've named. It's small, and it comes with the app's other small core models. One you start yourself: - **Summaries**, the built-in AI model, about 3 GB. Press **Download** beside it on the Downloads step. The assistant uses the same model. Already use Ollama, or a hosted model? You can pick that in **Settings → AI Models** instead. The Downloads step also offers two optional extras. **Find your names and terms in the sound** checks the recording itself when a word looks like a name or term you use, so it comes out spelled your way. **Read images in your notes** lets the summary read the images you add to a meeting's notes. Downloads carry on in the background while you use the app. Their progress shows on the Downloads step and in **Settings → AI Models**. > [!IMPORTANT] > If a model is missing, **Run** stops with **Models Not Ready** and lists what to download. Press **Open AI Models**, download it there, then run again. **Live transcription** writes the transcript while you record. It's on to begin with: **Mode** reads **As you speak** in **Settings → AI Models → Transcription**. It needs one more model, the captions model, of about 0.7 GB, listed on the Downloads step as **Live · … (draft)**: it shows what is being said as people speak. Each finished turn is then written by your transcription model, the same one a **Run** uses, so the live transcript is the meeting's transcript. Until the captions model is downloaded, a recording is transcribed when you press **Run**. **Transcribe when I finish instead** on the Downloads step turns live transcription off; **When you finish**, in the same setting, does the same later. ## Record a meeting The app opens on an empty meeting. To start one later, choose **New Meeting**, the first row in the sidebar. Then use the card at the bottom of the window, "Drop audio here, or record it": - **Mic** and **System** decide what is recorded. Both are on to begin with, so the app records your voice and the other side of the call. - Press the round **Start Recording** button. Press it again (**Stop Recording**) when the meeting ends. Other ways to start: - **Quick Record.** Hover **New Meeting** in the sidebar and click the record icon beside it. Its shortcut, **Record New Meeting** in **Settings → Hotkeys** (Option+Shift+R on a Mac, Alt+Shift+R on Windows), works only while Dictation is on. - **From your calendar.** With a calendar connected, a reminder appears as a meeting starts; press **Record**. - **When a call starts.** On Windows, and on macOS 14 and later, the app notices a call app using the microphone and asks "Record it with Samurai Scribe?"; press **Record**. - **A recording you already have.** Drop the file onto the card instead of recording. Recordings started from your calendar or a call stop by themselves. ## Run it A recording you start yourself waits for you. To process it, press **Run**: the round button with an upward arrow at the right end of the bar under the card. Its tooltip reads "Process the audio with the selected settings". - The **Transcript** tab opens and the bar fills as the run goes. You can keep using the app meanwhile. - If the meeting was transcribed as you spoke, the run keeps that transcript and its speakers and writes the summary. The **Transcribe** stage on the bar then reads **Done**. Click it before **Run** to transcribe the meeting again from its audio, telling its speakers apart again. - Recordings started from a calendar meeting run by themselves. To have every recording run when it stops, set **Settings → Mic & Audio → Process automatically when a recording stops** to **All recordings**. - Without Pro, one meeting runs at a time. [How Samurai Scribe works](https://samuraiscribe.com/docs/how-it-works/#running-the-meeting) explains what a run does, and what running a meeting again replaces. ## Read the results Results arrive as tabs on the meeting: **Transcript**, and one tab per document, normally **Summary**. A **Notes** tab appears when you write notes of your own. Speaking-time charts are in the Transcript tab too: switch its view, in the toolbar at its top, from **Segments** to **Analytics**. The meeting is also a folder of ordinary files. To see it, click **⋯** in the meeting's title bar (its tooltip reads "Meeting actions") and choose **Reveal in Finder** (**Reveal in Explorer** on Windows). The same menu opens from the meeting's row in the sidebar. ### While you record With live transcription on, the Transcript tab fills in as people speak. Finished lines appear as rows, and what is still being said shows below them until it's done. A long turn is split into sentences. A line can be edited once its words are final, a few seconds after the speaker stops. ### Fix the transcript Click into a line to change its words. Edits save as you make them: there is nothing to save or discard. To take one back, use the undo and redo arrows in the transcript's toolbar, or press Cmd+Z and Cmd+Shift+Z on a Mac, Ctrl+Z and Ctrl+Y on Windows. Undo also takes back a change to the speakers, such as a rename or a merge. The toolbar's **⋮** menu has more: - **Polish transcript…** and **Translate transcript…** ask the assistant, which proposes the new text for you to review. - **Restore as transcribed…** puts back the transcript as the app first wrote it. - **Re-transcribe…**, for a meeting transcribed as you spoke, makes the transcript again from the audio. ### Name the speakers Beside the transcript, the **Speakers** card lists everyone who spoke, under placeholder names: - in a recording, **Mic Speaker** for your side and **Sys Speaker**, **Sys Speaker 2** and so on for the call, under two headings: **Your microphone** and **The call**; - in an imported file, **Speaker**, **Speaker 2** and so on. The app names a speaker by itself only when they clearly sound like someone the meeting expects: you, someone on its calendar invite, or someone you added. Anyone else you've named before is only suggested. To name them: - On a speaker's card, click **Who is this?** and pick a name: people on the meeting's invite come first, then people the app knows. Or type a name and press Enter (or choose **New person: …**). The name replaces the placeholder throughout the transcript. - Some cards ask instead. **Is this you?** has **Yes, it's me**. "Sounds like …" suggests a person you've named before, and "Probably …" the only person on the invite not yet heard: **Yes** accepts, **Someone else** picks another. - The card's **⋯** menu has **Rename…**, **Merge into** (for two speakers who are the same person), **Change colour…** and **Clear name**. You can also drag one card onto another to merge them. - **Invited**, under the cards, lists the people on the meeting's invite and whether they were heard. Drag someone not heard onto a card, or click them and pick the speaker. Dropping them on a card that already has a name gives that person the invite's email address; if the app knows that address as someone else, it asks first whether the two are the same person. - **Find names…**, in the transcript's **⋮** menu while someone is unnamed, asks the assistant to suggest names from what was said. Each suggestion waits on its card, "Assistant thinks: …", for **Yes** or **No**. - Clicking the speaker's name on one line of the transcript changes that line. Choose a person and the other lines in the meeting that still have a placeholder name and clearly sound like them take that name too. - **Add someone**, under the cards, adds a person the card doesn't list: someone you know, someone on the meeting's invite, or a new name. It names no lines by itself: it puts them on the list you choose from when you name a speaker, and the next **Run** can recognise them if the app knows their voice. Once you confirm a name, the app keeps a [voice print](https://samuraiscribe.com/docs/glossary/#voice-print) and recognises that person in later meetings. It also makes them a note in your vault's `People/` folder. It keeps up to three clips of each person's voice, each from a meeting where you confirmed them, so a headset voice and a room voice can both be known. On the **Speakers** page in the sidebar, a person's **Voice learned from** lists the clips: play one, or remove one the app learned wrongly. ### Show, hide and play the speakers - **Speakers are shown on the transcript's lines.** The switch at the top of the Speakers card hides them, and folds the card, for the meeting you're looking at. The default for every meeting is **Settings → Meetings → Speaker names in the transcript**: **Always show speakers** to begin with, or **Auto (hide if one unnamed speaker)**, or **Always hide speakers**. - **Collapse speakers** (») folds the card into a narrow strip of each speaker's mark; click a mark to open the card at that speaker. A dot on the strip means someone is still unnamed. In a narrow window the card folds into the strip by itself. - **Play all their lines**, in a card's **⋯** menu, plays only that speaker's lines, one after another. The playbar then reads "Only …"; **Play everyone** goes back to the whole meeting. The play button on a card plays a few seconds of that speaker. ### Lock a track to its people A recording keeps your microphone and the call as separate tracks; an imported file is one. When you know who was on a track, **Lock** gives every line on it to them, whatever voices the run heard. It's on each heading in the Speakers card: **Your microphone** and **The call** in a recording, and **Everyone** in an imported file, which appears once someone is named or added. - It locks the track to the people named under its heading, by you or by the app, and anyone added with **Add someone**. Speakers still under a placeholder name don't count. On a heading with nobody named or added, **Lock** is greyed out. - With one person, every line on the track becomes theirs. - With several, each line goes to whichever of them it sounds most like, even a line that sounds like none of them. Telling them apart needs the speaker voice model, which downloads by itself; a line the app can't match keeps its name. - The lock is kept. Every **Run** applies it again. - A lock doesn't teach the app anyone's voice. Once locked, the heading lists its people ("Only Dana and Bob") and its button becomes **Unlock**. Adding someone to a locked track adds them to the lock. Removing them takes them off it, and removing the last one unlocks the track. When the call had one voice and the invite names one other person the app knows, the card asks "Only Dana on the call?". **Yes** locks the call to them; **Not now** hides the question. **Someone whose voice the app doesn't know**, with no voice print and no line in this meeting named for them, gets no lines when several people are locked. The heading shows "Bob: no voice yet". Find a line they said, click the speaker's name on it and choose them: their other lines follow at the next **Run**. **Unlock** puts the track's lines back under its placeholder name, including lines that had those names before you locked: **Mic Speaker**, **Sys Speaker**, or **Speaker 1** in an imported file. The next **Run** tells the voices apart again. Lines you named one at a time keep their person, locked or not. **While you record**, the speakers' cards can't be changed, but **Lock**, **Unlock** and **Add someone** work. Lines on a locked track follow the lock as you record, earlier ones included, and when you stop, the lock covers the whole recording, as after a **Run**. ## Ask the assistant Open the assistant with the round button at the far right of the meeting's title bar, or with Cmd+J on a Mac or Ctrl+J on Windows. It suggests questions to start with, such as "What did we decide in this meeting?". Clicking one puts it in the box; press Enter to send it. Answers cite the moments they draw on: click one to jump there. If the assistant suggests a change to your notes, it waits for you to keep or discard it. Once the assistant, an AI app or a skill has changed something in a meeting, **All changes** appears in the meeting's title bar, before **⋯**: it lists each change and opens its review. The assistant runs on the same built-in AI model as summaries. [The assistant](https://samuraiscribe.com/docs/assistant/) has the rest. ## Free, and what Pro adds A new install starts on the free version, with no account, no card and no trial. Recording, transcribing, telling speakers apart, summaries and dictation are free, with no limits. Pro adds extras, and you can buy it any time in **Settings → Pro License**. The glossary lists [what Pro adds](https://samuraiscribe.com/docs/glossary/#pro). If you installed before version 0.65 and your 10-day Pro trial is still running, it runs to its end: - Two days before the end, a reminder offers to download the free transcription model you'll move to. - When the trial ends, transcription moves to a free model: Parakeet Ultra to Parakeet v3, or a larger Whisper model to Whisper Small. Everything you made is kept. ## Replay the walkthroughs **Settings → Help & Setup** has the **Meeting Notetaker walkthrough**, the **Dictation walkthrough** and the **Assistant & Projects walkthrough**, and **Open Setup** to go through setup again. ## If something doesn't work - **The other side of the call is silent, on a Mac.** Open **System Settings → Privacy & Security → Screen & System Audio Recording**, turn on Samurai Scribe, then quit the app and open it again. macOS applies this permission only when the app starts. - **The other side of the call is silent, on Windows.** The app normally hears whichever output your call plays through. If the system audio check (in setup, or in **Settings → Mic & Audio**) says only one device is being captured, make your call app's device the default output in Windows sound settings. - **"Microphone access is blocked."** On a Mac, allow Samurai Scribe in **System Settings → Privacy & Security → Microphone**. On Windows, turn on "Let desktop apps access your microphone" in **Windows Settings → Privacy & security → Microphone**. - **Models Not Ready.** A model isn't downloaded: press **Open AI Models**, download it there, then run again. **Models Downloading** means wait for it to finish. **Model Not Set Up** means a hosted or custom model has no key or address yet: add it in **Settings → AI Models**. - **"Another meeting is processing."** Without Pro, start the next run when the current one is done. - **The Quick Record shortcut does nothing.** It works only while Dictation is on: **Settings → Hotkeys → Turn on Dictation**. --- # Transcription > Choose the language and model Samurai Scribe transcribes with, try two models side by side, and pick whether it runs on your graphics card or processor. - Page: https://samuraiscribe.com/docs/transcription/ - Checked with Samurai Scribe 0.65.0 Samurai Scribe turns speech into text on your computer, for meetings, live captions and dictation. Everything about it is set in one place, the **Transcription** card in **Settings → AI Models**: the language spoken, the model that writes the text, the captions you see while someone speaks, and whether the work runs on your graphics card (the GPU) or your processor (the CPU). Running on the GPU is free on every plan. ## The Transcription card **Settings → AI Models** opens on the **Transcription** card. It has two columns, **Meetings** and **Dictation**, and reads from top to bottom in the order the choices depend on each other: 1. **Language**: what is spoken in meetings, and what you dictate in. 2. **Translate to English**, which only Whisper models can do. 3. **Mode**: **As you speak** or **When you finish**. 4. **Model**: the model that writes the text. Click it to open **Transcription models**, the list to download and choose from. 5. **Compare models…**, to try two models on the same audio. 6. **Advanced**, which holds **Run transcription on**. 7. **Captions**, in a block of their own, while either column is set to **As you speak**. Each row's ⓘ says what it does. **Link** and **Unlink**, at the end of the **Model** row, decide whether meetings and dictation share one model or each have their own. Below the Transcription card, the **Dictionary** card lists the models that listen for your own terms in the audio, with **Open Dictionary**. See [the Dictionary](https://samuraiscribe.com/docs/dictionary/). ## Two languages: meetings and dictation Speech-to-text has two languages, set side by side on the **Language** row: - **Meeting language** is used for recordings, live captions and uploaded audio. **Auto-detect** usually works. Name the language when your meetings open with small talk in another one. - **Dictation language** is used for both kinds of dictation. The two are never linked, so you can meet in French and dictate in English with the same model. Every language is listed, whatever model you have. If the model can't transcribe the language you chose, a line under the model says so, such as "Parakeet v2 (English) only transcribes English", with a button to use or download one that can. Nothing changes until you click it. Until you do: - a meeting's **Run** says why it can't start; - a dictation says so on screen, and names **Settings → AI Models**, instead of typing words in the wrong language or quietly switching to **Auto-detect**. ## Which models are free Choose a model in **Transcription models**, which opens when you click the model in the **Meetings** or **Dictation** column. **NVIDIA Parakeet** models are the most accurate, and can't translate. **Whisper** models cover 99 languages and can translate into English. ### Free and Pro models | Model | Plan | |---|---| | Parakeet v2 (English), Parakeet v3 (Multilingual) | Free | | Whisper Tiny, Base and Small | Free | | The captions models, English and Multilingual | Free | | Parakeet Ultra (Multilingual) | Pro | | Whisper Medium, Large V3 Turbo and Large V3 | Pro | On first run the app picks Parakeet v2 if you speak English, Parakeet v3 for its other languages, and Whisper Small for any other language. On the free plan, a Pro model can still be downloaded and tried. Its row offers **Download to try**, and once it is downloaded, **Try it**, which opens [Compare models](#compare-models) with that model beside your meetings model. Using it for meetings or dictation needs Pro. ### When a download fails A model whose download failed says why under its name, with **Try again**. ### Parakeet's new engine Since version 0.65, Parakeet can use your graphics card. A Parakeet model downloaded before 0.65 needs one more file for this. The first time you open the new version, **Update Parakeet to its new engine** lists the models that need it: - **Update** downloads the files in the background, one after another. Each model keeps working as it is until its file is ready. - **Not now** closes it, and it doesn't ask again. Each model's row in **Transcription models** still offers **Get the GPU file**, with its size. Until it is updated, that model runs on the CPU only. ## Captions While a column is set to **As you speak**, the **Captions** block shows what the captions model puts on screen while someone speaks. Each caption is replaced by what your transcription model writes once the turn is over. Nobody chooses the captions model; the language does. English uses the English captions model once it is downloaded, and any other language the multilingual one. While English captions use the multilingual model, a line under them offers the English one. **Captions memory**, inside the block, sets when the captions models are loaded into memory and released. ## Run transcription on Open **Settings → AI Models**, then **Advanced** in the **Transcription** card. **Run transcription on** has three choices: - **Automatic**, the default. The app checks each transcription model you use on both the CPU and the GPU, and uses whichever was faster for that model. - **GPU** always uses the graphics card, for every model that can run there. - **CPU only** always uses the processor. Choose it if transcription fails, or if the computer misbehaves while it runs. Most of the time the GPU is faster, but not always: some graphics cards, such as the ones built into the processor, are slower than the processor itself. That is why Automatic checks. Until a model has been checked, Automatic runs it on the GPU, except on an Intel Mac, or a Windows PC whose only graphics are built into the processor, where it starts on the CPU. The words in the transcript are the same on either one; only the time it takes changes. The setting applies everywhere the app transcribes: meetings, the text that replaces live captions, and dictation. While **Advanced** is open with **Automatic** chosen, a line for each model in use says where it runs and when it was checked, or that it has not been checked yet. **Check again** times them again, for example after a driver update. The check runs only while nothing is recording or processing, and once more after each app update. If you choose **GPU** or **CPU only**, **Advanced** stays open, so the choice is always in sight. If no model you use can run on the GPU, **GPU** can't be chosen, and says "Your models run on the CPU on this computer". ### On Windows Whisper and Parakeet both run on the GPU on Windows, or on the CPU. On a PC with both built-in graphics and a separate graphics card, the app uses the separate card. On an older processor that Whisper models can't run on, Parakeet still works, on the CPU. ## Compare models **Compare models** runs the same audio through two models, or one model on the CPU and on the GPU, one after the other on your computer. Open it with **Compare models…** in the **Transcription** card, or **Compare models** at the top of **Transcription models**. 1. Under **Audio**, choose what to run on: - **Sample meeting**, a short real meeting that comes with the app, with a transcript of what was said; - one of your meetings; - **Read a passage aloud…**, which records you reading a passage shown on screen. 2. Choose **Meeting** or **Dictation**, to test the model the way a meeting or a dictation uses it. 3. In each column, pick a model, and **CPU** or **GPU** when it can run on both. 4. Press **Run**. Each column shows how long its model took, and on the sample or a passage you read, how many words it got wrong. On one of your meetings there is nothing to score against, so the columns are compared with each other. A line under both says which was faster and which got fewer words wrong, and **Where they differ** lists the places their text differs. Nothing is saved. When the two columns are the same model on the CPU and on the GPU, and one is clearly faster, **Use the faster one** keeps that device for the model and sets **Run transcription on** to **Automatic**. On the free plan, a Pro model can be compared on the sample as often as you like. On your own meetings or a passage, it gets a shorter stretch of audio and a few comparisons each time you open the app. --- # The Dictionary > Your own spellings of names, products and jargon, used wherever speech becomes text in Samurai Scribe, in meeting transcripts, live captions and dictation. - Page: https://samuraiscribe.com/docs/dictionary/ - Checked with Samurai Scribe 0.65.0 - Plan: some of it needs Pro The Dictionary is where you tell Samurai Scribe how you spell the words it can't know: colleagues' names, clients, products, project codes and jargon. Add Kubernetes, Siobhán or ACME-42 once, and from then on they come out spelled your way in [meeting](https://samuraiscribe.com/docs/glossary/#meeting) transcripts, live captions and [dictation](https://samuraiscribe.com/docs/glossary/#dictation). Open it with **Dictionary** in the sidebar. Your lists are Markdown notes in the vault's `Dictionary/` folder, so you can also edit them in Obsidian or any other editor. The first ten entries are free; more apply with [Pro](https://samuraiscribe.com/docs/glossary/#pro). ## What the Dictionary changes - **Transcripts, live captions and dictation** write each of your terms as you spelled it. - **The AI is given your spellings** when it writes a summary, polishes a dictation or answers in the [assistant](https://samuraiscribe.com/docs/assistant/), so it spells them your way too. - **A new entry applies straight away**, even during a recording: what is said after you add it is spelled your way. - **Meetings you already have** don't change by themselves. You can fix them in one go: see [Fixing earlier meetings](#fixing-earlier-meetings). Everything the Dictionary does runs on your computer. ## Terms and how they get misheard An entry is a **term**, the word, name or phrase spelled your way, with, if you like, what the transcript writes instead. - **A term with how it gets misheard**, such as Kubernetes heard as "cooper netties", replaces those words wherever they appear. Add as many misheard forms as you see. - **A term on its own** is corrected only when it looks like one of your names: a capital inside it, a digit, an accent, or more than one word. Ordinary words are left alone, so a plain-looking term needs its misheard forms to be corrected. ## The Dictionary page **Dictionary** in the sidebar opens the page. From the top: - **The list switcher.** Click **Dictionary ▾** for your lists, each with how many terms it has, or **Off**. **New list…** makes another; more than one list needs Pro. Under **Notes in the folder**, **Use … as a list** turns a note already in the `Dictionary/` folder into a list. - **Open in editor** shows the list as the note it is. **More** has **Rename**, **Switch off** (or **Switch on**) and **Delete list**, which moves the note to the vault's trash. - **The add box.** Type a term in **Add a word, name or phrase** and press **Add**. **How it gets misheard ›** opens a second field for what the transcript writes instead, separated by commas: `cooper netties, kuber nettis`. - **Names you use** suggests names from your [people notes](https://samuraiscribe.com/docs/glossary/#people-note) and recent calendar invites. Click one to add it, **Add all** to add every one, or × (**Don't suggest this**) to stop suggesting it. - **Terms** lists the list's entries. Click a term to change its spelling. Hover it for + (**Add how it gets misheard**) and **Delete**; the × on a misheard form removes it. **Undo**, in the message after a delete, puts the term back. A long list gets a **Find a term** box. - **Sound check** shows the two models that [listen for your terms in the audio](#hearing-your-terms-in-the-audio). - **Meetings** has **Add each meeting's names**: see [Each meeting's names](#each-meetings-names). If a line of the note can't be read as an entry, the page says how many, with **Show** to list them and why, and **Open in editor** to fix them. ## Adding a word from where it went wrong You don't have to open the Dictionary page to add a word. Add it where you saw it go wrong: - **Replace All in a transcript.** Press Cmd+F on a Mac or Ctrl+F on Windows in a meeting's transcript, fix a word everywhere with **Replace All**, and the app asks "Always write … for …?". Press **Add to Dictionary** to make the fix one the Dictionary makes from now on. - **A selected word in a transcript.** Select the word or words in a transcript line, right-click, and choose **Add to Dictionary…**. - **A dictation in your history.** On the **Dictation** page, hover a dictation and click **Add to Dictionary…**. **Add to Dictionary…** opens a small window: **Write it as** is the spelling you want, and **Heard as (optional)** is what was written instead. Press **Add**. Words added this way go into your Main list. ## Fixing earlier meetings When you add or change an entry, the app looks through your earlier transcripts for what it fixes. If it finds any, it says so, such as "Added Kubernetes. Fix 6 mentions in 3 meetings?". Press **Review…**: - The window lists each line it would change, by meeting, newest first, with what the line was. Untick a line to leave it as it is. - A meeting that can't be changed right now, such as one being processed, says why. - **Review 6 changes** turns your choice into [changes](https://samuraiscribe.com/docs/glossary/#change) that wait for you, like any change from the assistant: nothing is written until you keep it, and you can undo it afterwards. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). Only an entry that applies can fix earlier meetings: without Pro, an entry past the first ten waits, and so does its fix. ## Each meeting's names With **Add each meeting's names** on, which it is unless you switch it off, every meeting gets its own names as terms: yours and those of everyone on its calendar invite, spelled as their people notes spell them. They apply to that meeting only, and they never count toward the free entries. ## Hearing your terms in the audio The **sound check** finds your terms in the sound, not only in the text. When a word looks like one of your terms, or one of the meeting's names, the recording under it is checked. So "Shivon" becomes Siobhán when Siobhán is on your list, even with nothing listed as misheard. It has two models, and the language of what is said picks which one listens: - **English** for English meetings and dictation. - **Other languages** for 17 more: Bulgarian, Croatian, Czech, Danish, Dutch, Estonian, German, Greek, Latvian, Lithuanian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish and Ukrainian. Until the model for a language is downloaded, your terms in that language are found by their spelling only. The sound check is free. **Downloading it.** Each model is a one-time download, offered: - in setup, as the optional **Find your names and terms in the sound**, for the language your meetings are in; - on the Dictionary page, under **Sound check**, and as **No sound check yet** under the add box while the model for your meeting language is missing; - in **Settings → AI Models**, on the **Dictionary** card. Both models run on your computer and send nothing anywhere. To remove one, open its **More** menu and choose **Remove from this computer…**; your terms are then fixed by their spelling only in its languages. What downloading a model sends is on [the network page](https://samuraiscribe.com/network). ## Lists are notes in your vault Each list is a Markdown note in the `Dictionary/` folder of your [vault](https://samuraiscribe.com/docs/vault/). The first list is `Main.md`, made when you add your first term. A list looks like this: ```markdown --- samurai_kind: dictionary enabled: true --- - Samurai Scribe - cooper netties, kuber nettis -> Kubernetes - [[Dana Ruiz]] ``` - **Each entry is a bullet** at the start of a line (`-`, `*` or `+`). - **A bullet on its own** is a term, spelled as written. - **What it is misheard as comes first**, separated by commas, then `->` (or `→`), then the one way to write it. - **A link**, such as `[[Dana Ruiz]]`, counts as its text, so you can link people notes. - **Backticks** keep a part exactly as written: use them for a misheard form with a comma in it, or a term with an arrow, `{`, `}` or `|` in it. - **Everything else is yours.** Headings, paragraphs and comments are never read, so you can explain the list in it. - **`samurai_kind: dictionary`** is what makes a note a list. A note in the folder without it is left alone, so notes of your own can sit there too. - **`enabled: false`** switches the list off, as **Switch off** on the Dictionary page does. Some lines aren't read as entries: an indented bullet, a task (`- [ ]`), a second arrow on one line, and `{`, `}` or `|` outside backticks or a link. The Dictionary page lists them under **Show**. **Edits in either place.** The page changes only the line you edit, and keeps the rest of the note as you wrote it. A change you make in another editor applies the next time the Dictionary is used. If the note changed since the page opened it, an edit on the page isn't made: the page reads the note again and says so. **Several lists**, such as Clients or Medical, need Pro. Your Main list comes first, then the others by name. If two lists say different things about the same misheard words, the first one wins, and the page marks the entry that loses. **Moving the folder.** **Settings → Vault → Folders** has a **Dictionary** row: press **Change…** to put it somewhere else in the vault. See [moving the app's folders](https://samuraiscribe.com/docs/vault/#what-is-in-the-vault). ## What is free and what needs Pro **Free:** - your Main list, and the first ten entries in it, everywhere speech becomes text; - each meeting's names, which never count toward the ten; - the sound check, in every language it hears; - fixing earlier meetings with an entry that applies. **With Pro**, every entry applies, and you can keep more lists, each switched on and off on its own. Without Pro you can still add as many entries as you like: the page shows how many of the ten free entries you have used ("6 of 10 free entries", or "14 entries · the first 10 apply free" past ten), and the entries after the tenth sit under **Below here applies with Pro**. They are kept, and apply the moment Pro does. --- # Glossary > What Samurai Scribe means by vault, meeting, run, profile, step, script, skill, automation, project, notebook, Dictionary, AI app and its other words. - Page: https://samuraiscribe.com/docs/glossary/ - Checked with Samurai Scribe 0.65.0 The words Samurai Scribe uses in the app and in these docs, grouped by what they're about. Each one has its own anchor, so a link like `/docs/glossary/#vault` goes straight to it. ## Meetings and runs ### Meeting One recording or imported file, and everything made from it: its transcript, notes, other documents and audio. Each meeting is a folder in your vault named after its date and title, such as `2026-08-01 Design Review`. ### Calendar meeting An event from a calendar you have connected. You can start recording it from its banner; with Pro, it can also start recording by itself. You can run a skill on a calendar meeting by hand before it starts, and with Pro an automation can do that for you. ### Run Processing a meeting with its profile, in two parts: **Transcribe**, which writes down what was said and tells the voices apart, then **Summarize**, which runs the summarization steps. Press **Run** on a meeting, or let recordings run when they stop (**Settings → Mic & Audio → Process automatically when a recording stops**). ### Processing profile The settings for a run: - whether to transcribe; - how to tell speakers apart; - which summarization steps to run. The built-in profiles, such as **General Meeting**, the one new meetings start with, aren't files. A profile you make, or a template you save as new, is saved as a file in the vault's `Profiles/` folder. A profile doesn't choose models: those are set in **Settings → AI Models**. See [Processing profiles](https://samuraiscribe.com/docs/profiles/). ### Step One item in a profile's summarization: a script, a skill, or **Name the meeting**. Steps run in order, and each step can read what the steps before it wrote. See [Steps](https://samuraiscribe.com/docs/profiles/#steps). ### Transcript `Transcript.md` in a meeting's folder: what was said, with a heading for each line of speech giving its start and end time and the speaker. ### Live transcript The transcript written while you record, when meetings are transcribed **As you speak**, the default: captions show while people speak, and each finished turn is written by your meetings' transcription model. **When you finish** records only, and the transcript is made when you press **Run**. Choose between them under **Mode** in **Settings → AI Models → Transcription**, or in a profile's Transcription panel; either way it applies to every meeting. The captions model is set in the **Captions** part of the same card. Live captions need their own model; until it is downloaded, a recording is transcribed when you press **Run**. The rest of the site also calls it live subtitles. ### Speaker ID Working out who spoke when, as part of transcribing a meeting, on your computer. Voices are always told apart. With **Recognise people by voice** on, in a profile's Transcription panel, people whose name you have confirmed before are also named by their voice. Anyone else keeps a placeholder name until you name them: **Mic Speaker**, **Mic Speaker 2** on your microphone and **Sys Speaker**, **Sys Speaker 2** on the call in a recording, or **Speaker**, **Speaker 2** in an imported file. On a call, the meeting's speakers panel lists them by track, **Your microphone** and **The call**. See [Transcription](https://samuraiscribe.com/docs/transcription/). ### Voice print What the app keeps of a person's voice once you confirm their name, so it can recognise them in later meetings. It is learned as up to three voice clips, such as one on a headset and one in a room, and the Speakers page lets you hear and remove each clip. It is stored in your vault, never in an account. **Forget voice**, on the Speakers page, clears a person's voice print and keeps the person. ### Track lock On a call, a meeting's speakers are listed by track: **Your microphone** and **The call**. **Lock** a track to one or several people and every line on it goes to them, after every **Run** too; with several, each line goes to whichever of them it sounds most like. **Unlock** tells its voices apart again. You can lock a track during a recording too. ### Dictionary Your own spellings of names, products and jargon, which transcripts, live captions and dictation use. The lists are Markdown notes in the vault's `Dictionary/` folder, edited on the **Dictionary** page in the sidebar. The first ten entries are free; more need Pro. See [The Dictionary](https://samuraiscribe.com/docs/dictionary/). ## Your files ### Vault The folder where Samurai Scribe keeps everything, as Markdown and audio files. You choose it in **Settings → Vault**. See [The vault](https://samuraiscribe.com/docs/vault/). ### Meeting note The note named after a meeting's folder, such as `2026-08-01 Design Review.md`. Its `title`, `date` and `tags` properties are the meeting's, and `[[2026-08-01 Design Review]]` links to the meeting. ### Document Any other note in a meeting's folder, such as `Summary.md`, written by a script, a skill, the assistant or you. ### People note A note in the vault's `People/` folder for each person you name. Transcripts link speakers to their note, so its backlinks list every meeting the person spoke in. ### Notebook A folder in the vault's `Notebooks/` folder that groups meetings about one client, project or series. The note inside it with the same name lists the meetings in its `sources` property, and the folder can hold notes of its own. You can ask the assistant about a whole notebook. See [Notebooks](https://samuraiscribe.com/docs/files/#notebooks). ### AGENTS.md A file the app writes at the top of the vault. It tells AI coding tools how the vault is laid out and what not to touch. In Settings it is called the **Agent Guide**. ### Folder access What the assistant, the skills and automations it runs, and connected AI apps may do in each folder of the vault: **Can edit**, **Read only** or **Hidden**. Set it in **Settings → AI Apps → Folder Access**, or from a folder's menu in Files. See [Folder access](https://samuraiscribe.com/docs/folder-access/). ## The assistant ### Assistant The chat built into Samurai Scribe. It answers from your meetings and notes and cites what each answer draws on. It can also write notes and suggest edits. It is free. See [The assistant](https://samuraiscribe.com/docs/assistant/). ### Mode What the assistant may do without asking you. Pick it from the mode button in the chat box: - **Ask** reads and answers, and changes nothing. - **Review**, the default, makes every change wait for you. - **Accept edits** applies edits and new notes, but moves and deletes wait. - **Auto** applies everything, and it can all be undone. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/#the-four-modes). ### Change A new note, an edit, a move or a delete proposed by the assistant, a skill or an AI app. A change that waits for you has **Keep** and **Discard**. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). ### Project A group of assistant chats with its own memory, in the **Projects** tab of the sidebar. Projects reach every computer that has the vault; their chats stay on the computer they were held on. See [Projects and chats](https://samuraiscribe.com/docs/projects/). ### Home The project a chat belongs to, unless you start it in another project or move it there. See [Home](https://samuraiscribe.com/docs/projects/#home). ### Memory What the assistant remembers: - **About You**, which every chat reads, is in **Settings → AI Apps → Memory**. - Each project's memory is under **Memory** in that project's menu in the sidebar. A chat starts with the first 2,000 characters of each. See [Memory](https://samuraiscribe.com/docs/assistant/#memory). ### Live meeting help Needs Pro. While you record with the live transcript on, four one-click actions: **Catch me up**, **Help me answer**, **Ask a good question** and **Add something useful**. It answers when you ask, and never interrupts. See [Live meeting help](https://samuraiscribe.com/docs/assistant/live-help/). ### Companion window A small window that floats over your other apps for the meeting being recorded, or the one on screen. Open it from any app with Ctrl+Option+N on a Mac or Win+Alt+N on Windows. It is hidden from screen sharing by default. See [The companion window](https://samuraiscribe.com/docs/assistant/live-help/#the-companion-window). ## Doing more ### Skill Plain-English instructions for a task you repeat, kept as `Skills//SKILL.md` in the vault, in the Agent Skills format other AI apps read too. Run a skill: - by hand from the **Skills** page in the sidebar; - with / in a chat; - as a step of a profile. The assistant also uses one when its description fits your question. Skills are free. See [Skills](https://samuraiscribe.com/docs/skills/) and [Writing a skill](https://samuraiscribe.com/docs/skills/writing/). ### Automation Needs Pro. A skill that runs by itself after each meeting is processed, before calendar meetings, or on a schedule. Automations run only while the app is open. See [Automations](https://samuraiscribe.com/docs/automations/). ### Script A `.rhai` file in the vault's `Scripts/` folder that decides exactly how a profile writes up a meeting. It is written in the Rhai language, runs as a profile's **Script** step, and is free. See [Scripting](https://samuraiscribe.com/docs/scripting/). ### Connection Beta. A service the assistant and skills can work in, such as Linear, Notion, Jira & Confluence, Todoist, monday.com, ClickUp or Attio; **Labs: add a custom server…** adds others. For each action you choose **Off**, **Ask**, **Allow** or **Allow in automatic runs**; automatic runs need Pro. See [Connections in skills](https://samuraiscribe.com/docs/skills/#connections-in-skills). ### AI app An AI app on your computer that can search and read your meetings through Samurai Scribe while it is open: Claude Desktop, Claude Code, Codex, Cursor or Gemini CLI. Set it up in **Settings → AI Apps**. ### Built-in model The AI model Samurai Scribe downloads and runs on your computer. It is the default for summaries, dictation polish and the assistant. You can switch to another in **Settings → AI Models**. ### Dictation Speaking into any app: hold fn on a Mac, or Ctrl+Win on Windows, and the words are typed where your cursor is. Speech is transcribed on your computer. The **Clean up** polish is free; the other polish prompts, and prompts of your own, need Pro. ### Pro The paid upgrade. Features that need it say so, in the app and in these docs. Pro adds: - [live meeting help](https://samuraiscribe.com/docs/assistant/live-help/); - [automations](https://samuraiscribe.com/docs/automations/), skills that run by themselves; - the larger Whisper models (Medium, Large V3 Turbo and Large V3) and Parakeet Ultra. Without Pro you can download one and try it in **Compare models**; - the dictation polish prompts beyond **Clean up**, and prompts of your own; - automatic recording of calendar meetings, and of calls that aren't on your calendar; - the processing queue: a meeting waits its turn while another is processing, and the bulk importer takes several recordings at once. Without Pro it imports one at a time; - every [Dictionary](https://samuraiscribe.com/docs/dictionary/) entry past the first ten, and more than one Dictionary list. Skills, the assistant, Speaker ID and Parakeet on your graphics card are free. New installs start on the free version, without a Pro trial; a trial that was already running finishes its ten days. Buy Pro in **Settings → Pro License**. For prices, see [pricing](https://samuraiscribe.com/#pricing). --- # The assistant > Ask Samurai Scribe about your meetings and notes. Where to open the assistant, what it reads, citations, images, saving answers, memory and which model answers. - Page: https://samuraiscribe.com/docs/assistant/ - Checked with Samurai Scribe 0.65.0 The assistant is the chat built into Samurai Scribe. Ask it about your meetings and notes, and it answers with the moments it drew on, each one a click away. It can also write notes, fix transcripts and draft emails. What it changes follows its [mode](https://samuraiscribe.com/docs/glossary/#mode): by default every change waits for you to keep or discard it (see [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/)). The assistant is free. Reading a meeting while it is being recorded needs Pro: see [Live meeting help](https://samuraiscribe.com/docs/assistant/live-help/). ## Opening the assistant - **Beside a meeting.** Press the round copper button at the right end of the meeting's title bar (its tooltip reads "Ask the assistant"), or press Cmd+J on a Mac, Ctrl+J on Windows. The same keys hide it again. You can change them in **Settings → Hotkeys**, under **Show or hide the assistant**. - **Full width, in the Projects tab** of the sidebar, where chats are grouped into [projects](https://samuraiscribe.com/docs/projects/). Beside a meeting, the project name above the chat has **Open in Projects view**. - **In the companion window**, the small window that floats over your call: its **Assistant** tab. See [the companion window](https://samuraiscribe.com/docs/assistant/live-help/#the-companion-window). Other places start a chat for you: - **Ask about this notebook**, in a notebook's menu in the Files tree, opens a question with the notebook attached. - **Find names…**, in a transcript's ⋮ menu when a meeting has unnamed speakers, asks the assistant who they are. - **Polish transcript…** and **Translate transcript…**, in the same menu, have the assistant correct the transcript or translate it into a language you name (see [Translate a transcript](https://samuraiscribe.com/docs/skills/#translate-a-transcript)). - Running a skill from the **Skills** page shows the run in the assistant (see [Skills](https://samuraiscribe.com/docs/skills/)). New to it? **Settings → Help & Setup → Assistant & Projects walkthrough** shows you around. ## What it answers from The assistant searches everything it may read in your [vault](https://samuraiscribe.com/docs/vault/), and quotes what it finds: - **Meetings:** transcripts, summaries and other documents, and files attached to a meeting. - **Notes:** Markdown notes anywhere in the vault, such as your notebooks and people notes. - **Other files:** PDFs, Word documents (`.docx`), PowerPoint decks (`.pptx`, speaker notes included) and plain-text files, read as text. - **Your calendar,** when one is connected, so "Prepare me for my next meeting with this team" works. - **Its memory** of you and of the project the chat is in (see [Memory](#memory)). It never reads a folder set to **Hidden** in **Settings → AI Apps → Folder Access**, nor hidden folders such as `.obsidian` or `.samurai`. If your vault sits inside another notes folder, **Include Parent Folder** in the same place lets it read the notes around the vault too. [Folder access](https://samuraiscribe.com/docs/folder-access/) explains the rules. Limits you may run into: - PDFs and text files over 100 MB are not read. - Notes and text files over 2 MB are found by name, but what's in them isn't searched. - Only the first 200,000 characters of a file's text are read. - A file whose contents are only in the cloud, such as a OneDrive file that's online-only, isn't downloaded for searching. It is read when you attach it or ask for it by name. Name the time when it matters. "My open action items from this week" or "what came up about pricing last month" looks at the meetings from then. ## Pointing it at a meeting, note or notebook **What's on screen comes along.** Beside a meeting, a chip with an eye icon above the message box names that meeting. In the Projects view, it names the note open in the viewer. The assistant reads it first and knows what "this meeting" means, and it still searches everything else. To ask about everything instead, remove the chip with its × (**Leave it out**). **Add more with @.** Type @ in the box, or press **+** ("Add a meeting, notebook or note (@)"), then start typing a name: - meetings, by title; - notebooks; - notes and files, by name. Use the arrow keys and Enter (or Tab) to pick one; it becomes a chip, read and searched first. Backspace in an empty box removes the last chip. **Images.** Paste an image (Cmd+V on a Mac, Ctrl+V on Windows) or drop it onto the box, up to 20 MB each. Only images can be dropped there; add notes and meetings with @. - An image is read into text when you send the question. Hover its chip before sending: it says what will read it. - On this computer, images are read by the built-in model's image reading: an optional download, **Image reading**, listed under the built-in model in **Settings → AI Models** once the model itself is downloaded. Without it, an Ollama or LM Studio model that can see images reads them, if it is the assistant's model. - A hosted model is sent an image only if you allow it: **Let cloud models read images?** (**Send images**) allows it for every image, and **Send this picture to be read?** for one. Both are off until you say yes. - On a computer without a graphics chip the built-in model can use, an image sent while a meeting is recording isn't read: the question goes without it, so reading can't make the live transcript skip. - Images stay with the chat on this computer, not in your vault. One reaches the vault only if you ask the assistant to put it in a note. ## Citations Answers cite their sources inline, as small chips: a time such as `12:13` for a moment in a transcript, a document's name such as **Summary**, or a note's name. Hover a chip to see the passage it quotes. Click it to open the meeting at that moment, the document, or the note. Under your question, the steps the assistant took, such as searching meetings and reading notes, fold into one line. Click it to see each step. ## What else it can do Ask in plain words. The assistant can: - write a new note, or edit, move or delete one; - make a [notebook](https://samuraiscribe.com/docs/glossary/#notebook), or add a meeting to one; - fix a transcript: correct words, move a line to another speaker, name a speaker, split or merge lines, or remove lines you ask it to; - translate a transcript into another language, as one change, with every line keeping its time and speaker; - rename a person in every meeting they speak in; - draft an email; - remember something about you or the project; - run a [skill](https://samuraiscribe.com/docs/glossary/#skill), or draft a new one for you; - work in a [connection](https://samuraiscribe.com/docs/glossary/#connection) such as Linear or Notion (beta). It changes Markdown notes only, and only in folders set to **Can edit**. Every change follows the mode under the message box: **Ask**, **Review** (the default), **Accept edits** or **Auto**. [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/) explains each, and how to undo. ### Saving an answer Hover an answer for its buttons (they stay faintly visible under the latest one): **Copy** copies it, and **Save as note** saves it as a note of your own. You choose the name; it starts as your question. New notes go to your Notes folder (`Notebooks/Unfiled` unless you moved it), or to the folder a chat is about, when the button reads **Save to** that folder. The note is written at once, without a review, since you asked for it. Its citations become footnotes that link to what they cite. ### Email drafts Ask for a follow-up or a recap and the assistant writes it in a card under its answer, marked **Email draft · not sent**. You can edit **To**, **Subject** and the text. **Open in Mail** opens it in your mail app, **Open in Gmail** in Gmail, and **Copy** copies it. Nothing is sent from Samurai Scribe: you send it from your own mail. ### Skills in a chat Type / at the start of a message to see your skills, each with its description. A skill that takes an argument shows what it takes after its name, such as `/translate-transcript [language]`. Pick one, type the argument or anything else it needs, and send: the skill runs in this chat. The assistant also uses a skill by itself when your request matches that skill's description. See [Skills](https://samuraiscribe.com/docs/skills/). ### Connections in a chat Once a service is connected, a puzzle-piece button appears beside **+** ("Use a connection in this chat"). Tick the connections this chat may use; a connection marked **(every chat)** is offered in all of them. When the assistant wants to act in a service and that action is set to **Ask**, a card shows what it will send, with **Approve** and **Deny**. Connections are in beta. ## Memory The assistant keeps two memories, both plain text you can read and change: - **About You** is read in every chat. Open it in **Settings → AI Apps → Memory → About You → Open**. - **Each project's memory** is read in that project's chats. Open it from the project's ⋮ menu in the Projects tab: **Memory**. The assistant adds to them when you tell it something worth knowing next time, such as your role, the people you work with, or how you like things written. Each addition is a change like any other, so it follows the mode. In the memory window you can change or delete anything, then **Save**. If the assistant remembered something while you had it open, **The memory changed** offers **Reload** or **Keep mine**. - A chat starts with the first 2,000 characters of each memory. The rest is kept, and the assistant reads it when it needs to, so put what matters most at the top. - A skill running by itself never changes a memory without asking: its additions wait for you. - Both memories live in your vault's hidden `.samurai/` folder, so they reach your other computers if you sync hidden folders too (see [Syncing and backing up](https://samuraiscribe.com/docs/vault/#syncing-and-backing-up)). ## Which model answers The assistant uses the [built-in model](https://samuraiscribe.com/docs/glossary/#built-in-model) on your computer unless you choose another. It is the same model that writes summaries, so download it first (see [Your first meeting](https://samuraiscribe.com/docs/first-meeting/#download-the-models-before-your-first-run)). The model's name is under the message box, with a computer icon for a model on this computer or a cloud icon for a hosted one. Click it and choose **Open Model Manager** to change it. That opens **Settings → AI Models** at the **Summarization** card's **Assistant** row. Pick the built-in model, Ollama, LM Studio, a hosted model from Anthropic, OpenAI, Google Gemini or OpenRouter, or a server at your own address. The link button beside it ("Use the meetings model for the Assistant, and change with it") makes the assistant follow whichever model writes your summaries; the line under the picker says which it does: **A model of its own** or **Same as meetings model**. A warning icon beside the name means "A small model: a larger one is recommended for the assistant". A model that writes good summaries can still be too small for the assistant, which often takes several steps to answer. The first question after the app starts may show "Loading the model…" for a moment. ## What leaves your computer - **With a model on your computer** (the built-in model, Ollama or LM Studio on this machine), nothing you ask, and nothing it reads, leaves your computer. - **With a hosted model**, your question, the chat so far, and what the assistant reads to answer it are sent to that provider. That includes passages from your meetings and notes, its memory, and the text read from your images. If you let cloud models read images, the images themselves go to that provider too. - **A connection** sends the service only what an action needs. The [network disclosure](https://samuraiscribe.com/network) lists every request the app can make. ## Your chats Chats are kept on this computer, separately for each vault, and they don't sync. [Projects](https://samuraiscribe.com/docs/projects/) reach your other computers with the vault; their chats stay where they were held. - **Beside a meeting**, **Conversations** in the assistant's header lists your past chats: those about the meeting on screen first, under **About this meeting**, then **Everything else**. **New chat** starts afresh. - **In the Projects view**, the sidebar lists the chats in each project and starts new ones. - The chat's title menu has **Rename…**, **Move to project…** and **Delete**. Deleting a chat also removes images that only it used. - While the assistant is working, **Stop** ends its turn. - To take a chat back to an earlier question and undo what came after, hover the question and choose **Rewind to here**. See [Rewind a chat](https://samuraiscribe.com/docs/assistant/changes/#rewind-a-chat). --- # Changes, modes and undo > What the assistant, skills and AI apps may change without asking. The four modes, reviewing a change, a meeting's changes, undo, rewind and deleted notes. - Page: https://samuraiscribe.com/docs/assistant/changes/ - Checked with Samurai Scribe 0.65.0 Nothing the assistant, a skill or an AI app writes reaches your vault until it is allowed to. Each write it proposes is a [change](https://samuraiscribe.com/docs/glossary/#change): a new note, an edit, a move, a delete, a fix to a transcript or a translation of it, a renamed person, or something added to memory. Whether a change applies at once or waits for you depends on the assistant's mode, or, for a skill running as a step or an automation, on that step's or automation's own settings. A change that applied can be undone, and undo keeps anything you wrote since. ## The four modes Pick the mode from the button under the assistant's message box. Its tooltip reads "What the assistant may do without asking". - **Ask**: "Reads and answers; changes nothing". In this mode the assistant can't propose changes at all. - **Review**, the default: "Every change waits for you". - **Accept edits**: "Edits and new notes apply; moves and deletes wait". - **Auto**: "Everything applies, and stays undoable". A delete moves the note to the Trash. The mode you pick stays for every chat on this computer until you change it. ![A table of what applies without asking in each mode. New notes and edits, memory and transcripts included: Ask proposes none, Review waits, Accept edits applies, Auto applies. Moves and deletes: Ask proposes none, Review waits, Accept edits waits, Auto applies, and deletes go to the Trash. Changes to the Skills, Scripts and Dictionary folders: Ask proposes none, and every other mode waits. Applies means at once, and Undo takes it back. Waits means until you press Keep or Discard. Not set by the mode: AI apps follow Settings, AI Apps, Apply Changes Without Asking, and a skill running as a profile step or an automation follows that step's or automation's own two settings. Skills you start yourself from the Skills page follow the mode.](https://samuraiscribe.com/images/docs/assistant/changes/modes.svg "What applies at once, and what waits for you, in each mode.") Some changes wait whatever the mode: - **Changes to your Skills, Scripts and Dictionary folders.** A skill or a script goes on running long after anyone looked at it, and the Dictionary changes every transcript made after it, so a change to one always waits, even in Auto. - **Moves and deletes outside a meeting from a skill running as a step or an automation.** Who else decides: - **A skill you start yourself**, from the **Skills** page or with **Find names…**, **Polish transcript…** or **Translate transcript…** in a transcript's ⋮ menu, follows the mode, as a chat does. - **A skill running as a step of a [processing profile](https://samuraiscribe.com/docs/profiles/#what-a-step-may-change), or from an [automation](https://samuraiscribe.com/docs/automations/#what-it-may-change)**, follows that step's or automation's two settings: **This meeting** (**Its meeting** for an automation), which starts on **Auto**, and **Elsewhere**, which starts on **Review**. - **AI apps** such as Claude Desktop, Claude Code or Cursor follow **Settings → AI Apps → Changes from AI Apps → Apply Changes Without Asking**. It is off by default, so every change waits. Turned on, edits and new notes from AI apps apply at once; moves and deletes still ask. ## What can be changed - **Markdown notes** (`.md`) only. PDFs, Word files, decks and images are read, never changed. - **Only in folders set to Can edit** in **Settings → AI Apps → Folder Access**. Folders set to **Read only** can be read and searched, and **Hidden** ones are never seen. See [Folder access](https://samuraiscribe.com/docs/folder-access/). - **Inside the vault's hidden `.samurai/` folder**, only the assistant's memory: About You and each project's memory. - **Transcripts and people** change through the app, not as files: fixing words, translating, moving a line to another speaker, or renaming a person in every meeting they speak in. A change to a transcript can't be kept while its meeting is processing: "Can be kept once processing finishes." Folder access is checked again when you keep a change. If the folder is no longer **Can edit** by then, the change isn't applied and says "AI apps may no longer change this folder." ## The change card In a chat, each change appears as a card under the step that proposed it. The card shows the file's name and where the change stands, with how many places it adds and removes text (such as `+3 −1`), or where a move goes. - While it waits: **Keep** applies it, **Discard** drops it. - Once applied: **Undo**. - Click the card to open the change in place, line by line. - The **⋯** menu has **Review…**, the full review, and, once the change is applied, **Open**, which opens the note. A change to memory is named for what it is: "What it remembers about you" or "What it remembers for this project". What the card's status means: | Status | Meaning | |---|---| | **Waiting for you** | Nothing is written yet. | | **Applied** | It's in your vault. **Undo** is offered. | | **Applied, merged with your edits** | The note had changed since the assistant read it; the change went in around your edits. | | **Discarded** | You dropped it, or the assistant withdrew it. | | **Not applied** | It couldn't go in without overwriting something; the reason is given. | | **Undone** | It was applied, then undone. | | **Could not undo** | Undoing it would have overwritten something you wrote since. | | **Changed again below** | The assistant reworked it before you decided. The later card holds the whole change: decide that one. | ## Reviewing a change **Review…** opens the full review. Its title says who wants to do what, such as "Assistant wants to edit Project plan". - **An edit** shows the note's Markdown with the changed words marked. Each changed region, labelled **Line 12** or **Lines 12–15**, has its own **Keep** and **Discard**. Everything starts kept: discard the parts you don't want. - **A new note, or one being deleted,** is shown whole, as it reads. **Preview** and **Source** switch between the formatted note and its text. - **A change to several files** lists them on the left. Keep or discard each one. - **A transcript change** may say "Times on 3 lines are estimated from the text, not heard in the recording." Check those times against the audio. The main button names what it will do: **Create Note**, **Apply Edit**, **Move to Trash**, **Move**, **Apply to Transcript**, **Rename**, or **Apply 2 Changes** for several. Cmd+Enter on a Mac, or Ctrl+Enter on Windows, presses it. **Discard** (**Discard All** for several files) drops the whole change. Once you decide, the review offers **Undo** (**Undo All**) and **Done**. When more changes are waiting, **Next Change** takes you to the next one, so you can go through them in one sitting. ## All changes to a meeting When the assistant, an AI app or a skill has changed a meeting, or anything from it, **All changes** appears in the meeting's title bar, beside ⋯. Its tooltip says how many, such as "All changes (3 changes)", or "All changes — one waits for you". - Click it for the list: who changed what, how long ago, and where it stands. Click one to open its review, where you can keep, discard or undo it. - **Full history…**, at the end of the list, opens **All changes to this meeting**. It groups them under **Waiting** and **Done**, with those to the meeting itself under **This meeting** and those to other notes under **Elsewhere, from this meeting**. It also lists the documents the meeting's steps wrote, each with **How this was made**, which opens the conversation the step ran in. While a change to a meeting waits, a bar above the meeting's tabs says so, such as "Assistant wants to edit Summary", with **Review…**, **Discard**, **Keep** and **All changes ›**. When a step of the meeting's processing is waiting on it, the bar starts "Processing waits for you:" (see [Processing profiles](https://samuraiscribe.com/docs/profiles/#when-a-step-waits-for-your-review)). When a step applied changes by itself, the bar says what it changed, with **Review** and **Undo**. ## Changes from skills, automations and AI apps Changes you can't see on screen announce themselves in a card at the bottom right of the window. Changes to the meeting on screen show in its own bar instead (see [All changes to a meeting](#all-changes-to-a-meeting)). The card shows changes from: - an AI app waiting for your answer, which says "Claude Code is waiting"; - a skill that ran by itself; - a chat that isn't on screen. The card reads, for example, "Claude Code wants to edit Project plan", with the lines it changes and how many more are waiting. It has **Review…**, **Discard** and **Keep**. A delete has no **Keep** there: review it first. The card's × folds it into a small "2 changes waiting" pill until something new arrives. An AI app that proposes a change waits up to about a minute for your answer. After that it carries on, and the change waits for you. A skill's run is a chat in the assistant, so you can open it later and see what it did. **Settings → AI Apps → Changes from AI Apps** lists recent changes, each with **Review** while it waits, or **View** afterwards, where you can undo it. ## When the note changed in the meantime You may edit a note, in Samurai Scribe or another editor, or a sync tool may change it, after the assistant read it and before you keep its change. Nothing you wrote is silently overwritten: - When your edits and the change touch different lines, keeping the change merges it in: **Applied, merged with your edits**. - When they touch the same place, the change is **Not applied**, with the reason, such as "The note was edited since, in the same place." Ask again, and the assistant works from the note as it is now. - A delete or a move doesn't go ahead if the note changed since it was proposed: "The note was edited since; it was not deleted." ## Undo Undo a change from its card, from the review (**Undo** or **Undo All**), from a meeting's **All changes**, or from the list in **Settings → AI Apps → Changes from AI Apps**. - **An edit** goes back to the text before, keeping what you wrote since. If your later edit is in the same place, the undo stops: **Could not undo**. - **A new note** moves to the Trash. If you edited it since, it is kept. - **A delete** puts the note back where it was. - **A move** moves the note back. The record of changes is kept on this computer, with the chats, so undo a change on the computer where it was made. ## Rewind a chat To take a chat back to an earlier point, hover over a question you asked and click **Rewind to here** ("undo what came after, and edit this"). **Rewind to here?** says what will happen: - the question and everything after it are removed from the chat; - changes the assistant made from there on are undone, and any still waiting are discarded; - anything you wrote since is kept; - your question goes back in the box, to change and send again. If a change couldn't be undone because you edited the same place since, a message names the note it kept. Rewind reaches your vault only. Something a [connection](https://samuraiscribe.com/docs/glossary/#connection) already did in another service, such as an issue created in Linear, stays done, and so does an email you opened and sent from your mail app. ## Deleted notes A note the assistant deletes goes to your computer's Trash (the Recycle Bin on Windows), so you can restore it from there as well as with **Undo**. Where there's no system Trash, as on some network drives, it goes to a trash folder inside the vault's hidden `.samurai/` folder instead. ## Who may change which folders What the assistant and AI apps may change is set folder by folder in **Settings → AI Apps → Folder Access**: **Can edit**, **Read only** or **Hidden**. The mode decides whether a change waits; folder access decides whether it can be proposed at all. A rule applies to its folder and everything in it. [Folder access](https://samuraiscribe.com/docs/folder-access/) has the defaults and how to change them. --- # Live meeting help > With Pro, ask the assistant about the meeting you're in while it's recorded. The four quick actions, your own questions, running notes and the companion window. - Page: https://samuraiscribe.com/docs/assistant/live-help/ - Checked with Samurai Scribe 0.65.0 - Plan: needs Pro While a meeting is being recorded, the assistant can read what has been said so far and help you in the moment. It can catch you up, suggest what to say or ask, or find a fact from your notes and past meetings. It answers only when you ask and never interrupts the call. Live meeting help needs Pro. Without Pro, the assistant still answers about your past meetings and notes during a recording; it just can't see the meeting in progress. ## What you need - **Pro**. A Pro trial that was already running when you updated to 0.65 counts until it ends; new installs start without a trial. - **A recording in progress, with the [live transcript](https://samuraiscribe.com/docs/glossary/#live-transcript) on.** The assistant follows the meeting through it. The live transcript needs **Mode** in **Settings → AI Models → Transcription** set to **As you speak**, the default, and the captions model downloaded (see [Your first meeting](https://samuraiscribe.com/docs/first-meeting/#download-the-models-before-your-first-run)). If it's off for this recording, the assistant says "The assistant follows a meeting through its live transcript, which is off for this recording." - **The assistant beside the meeting being recorded**, opened with Cmd+J on a Mac or Ctrl+J on Windows, or the **Assistant** tab of the [companion window](#the-companion-window). Open the assistant beside the meeting early: the model gets ready as soon as it's on screen beside a recording, so your first question doesn't wait for it to load. ## The four quick actions In an empty chat beside the meeting being recorded, the actions are listed with what each does. Once the chat has started, they sit as buttons above the message box. One click asks; there's no question to type. - **Catch me up**: "What was discussed, decided and asked so far" - **Help me answer**: "Points to say, from your notes and past meetings" - **Ask a good question**: "Questions worth asking right now" - **Add something useful**: "A fact or earlier decision worth saying" Answers are kept short, to read during a call. They draw on the meeting so far and, where it helps, your notes and past meetings. Without Pro, the buttons carry the Pro badge ("Help during a meeting is part of Samurai Scribe Pro"), and clicking one opens the upgrade page. ## Asking your own questions You can also type any question about the meeting so far, such as "What did Priya say about the launch date?" or "Has anyone agreed a budget yet?". With Pro, the answer reads the transcript so far as well as your notes and past meetings. An empty chat beside the recording says so: "Answers come from what has been said so far, your notes and past meetings." While the recording runs, each line of the live transcript is labelled with its side, your microphone or the call, or with the name of a person it recognises by [voice](https://samuraiscribe.com/docs/glossary/#voice-print), when the profile's **Recognise people by voice** is on. When the recording stops, the voices on each side are told apart. A label can be wrong, and the live transcript can mishear words, so check a figure before you repeat it. ## Running notes **Settings → Meeting Settings → Keep running notes during meetings** needs Pro and is off until you turn it on. While a meeting is recorded with the live transcript, the assistant keeps short notes on what has been discussed, decided and agreed. **Catch me up** can then answer at once, however long the meeting has run. - It uses the assistant's model in the background as the meeting goes, and never holds up a question or a dictation. - With a hosted model, the live transcript is sent to it as the meeting goes. ## The companion window The companion window is a small window that floats over your other apps, so your notes and the assistant stay in reach during a call. The companion window itself is free; live meeting help in its **Assistant** tab needs Pro. **Opening it.** From any app, press **Open Companion Window**: Ctrl+Option+N on a Mac, Win+Alt+N on Windows. Press it again to put the window away. You can change the keys in **Settings → Hotkeys**. - It opens the meeting being recorded, or else the meeting on screen. - With neither, the keys bring Samurai Scribe to the front. - If Samurai Scribe's window is full screen, the meeting's **Notes** open in it instead. **What it shows.** The meeting's name and its tabs: the transcript, its documents, and **Notes**, which the window makes if the meeting has none yet. Then an **Assistant** tab, with the quick actions while the meeting records. **Its buttons**, in the title bar: - **Mark this moment in your notes**, while recording: puts a link to the current moment of the transcript into the Notes, at your cursor if you're typing there. Clicking the link later opens the meeting at that moment. - **The eye**: hides the window from screen sharing, or shows it again. It is hidden by default. Some sharing apps don't honour this, so check before relying on it. A hidden window is also missing from your own screenshots and screen recordings. **Settings → Appearance → Hide the companion window from screen sharing** is the same switch. - **The pin**: **Keep on top of other apps**. Unpinned, the window goes away when you click into another app; the keys bring it back. - **Open the meeting**: the full window, on this meeting. - **Close**. ## Which model answers, and what is sent Live meeting help uses the assistant's model, chosen in **Settings → AI Models**, in the **Summarization** card's **Assistant** row (see [Which model answers](https://samuraiscribe.com/docs/assistant/#which-model-answers)). - **With a model on your computer**, the transcript and your notes stay on your computer. - **With a hosted model**, each question sends that provider the most recent part of the live transcript (and earlier parts if the assistant reads them), the running notes if they're on, the start of the meeting's **Notes**, and what it reads from your notes and past meetings to answer. With running notes on, the live transcript is also sent as the meeting goes. The [network disclosure](https://samuraiscribe.com/network) lists every request the app can make. --- # Projects and chats > How the assistant's chats are kept. Projects and Home, starting, moving and finding chats, a project's memory, and what reaches your other computers. - Page: https://samuraiscribe.com/docs/projects/ - Checked with Samurai Scribe 0.65.0 Every chat with the [assistant](https://samuraiscribe.com/docs/glossary/#assistant) belongs to a [project](https://samuraiscribe.com/docs/glossary/#project): a group of chats with a memory of its own. Make one for a client, a team, hiring, or anything you keep coming back to. Projects are in the **Projects** view: click the **Projects** tab in the sidebar, and the sidebar lists every project, Home first and then by name, each with its chats, most recent first. The chat on screen fills the window, with [Files](https://samuraiscribe.com/docs/files/) beside it. The same chats are reachable beside a meeting too, in the assistant's panel. [The assistant](https://samuraiscribe.com/docs/assistant/) explains asking questions; this page is about keeping the chats in order. Projects are part of the assistant, and free. ## Projects and notebooks The two group different things: - **A project groups chats.** It isn't a folder you see in your vault, and it holds no notes. - **A [notebook](https://samuraiscribe.com/docs/glossary/#notebook) groups meetings and notes**, as a folder in your vault's `Notebooks/` folder. See [Files and the editor](https://samuraiscribe.com/docs/files/#notebooks). A chat in any project can ask about any meeting, notebook or note. Use a project to keep the conversations about one subject together, and a notebook to keep the material together. ## Home [Home](https://samuraiscribe.com/docs/glossary/#home) is where a chat goes until you move it. **New chat** in the panel beside a meeting starts a chat in Home. Home can't be renamed or deleted, but it has a memory like any project. ## Making, renaming and deleting a project - **Make one** with **New project**, under the last project in the sidebar. Give it a name under 80 characters that no other project has. - **Hover a project** for its buttons: **Rename** (the pencil), **New chat in** the project (the +), and **More**, which has **Memory**, **Rename…** and **Delete…**. - **Delete…** asks first. The project's memory goes to the vault's trash. If the project has chats on this computer, choose **Move chats to Home** or **Delete chats too**. > [!WARNING] > If you sync the vault between computers, deleting a project deletes it on all of them, but only this computer's chats are moved or deleted. On each of the other computers, move the project's chats to another project before you delete it. ## Starting a chat in a project - **From the sidebar:** hover the project and click **+**. - **In the Projects view:** **New Chat**, at the top of the sidebar, starts a chat in the project you are in. - **Beside a meeting:** **New chat** in the panel's header starts one in Home. The project's name in the header has **New chat in this project**, and **Open in Projects view** to see the chat full size. - **About a notebook:** in Files, a notebook's menu has **Ask about this notebook**, which starts a chat in the project you are in with the notebook attached. ## Renaming, moving and deleting chats Hover a chat in the sidebar for **Rename** (the pencil) and **More**: **Rename…**, **Move to project…** and **Delete**. The chat's title, at the top of the chat, has the same three. - **Move to project…** lists your projects; pick the one it should be in. - **Delete** removes the chat from this computer. Changes it made to your notes stay. A chat's row shows what it is doing: a spinner while the assistant is answering, a dot when there's an answer you haven't seen, and a lightning bolt when a [skill](https://samuraiscribe.com/docs/skills/) started it. ## Finding a chat - **Search Chats**, near the top of the sidebar in the Projects view, or Cmd+K on a Mac and Ctrl+K on Windows. It finds chats by their title and by what was said in them, newest first, and shows each one's project and date. - **Beside a meeting**, the **Conversations** button (the clock) in the panel's header lists the chats about the meeting on screen first, then the others. ## A project's memory Each project has a [memory](https://samuraiscribe.com/docs/glossary/#memory): what the assistant knows about that project, read in every chat in it, alongside **About You**, which every chat reads. [The assistant](https://samuraiscribe.com/docs/assistant/) explains memory in full. - **Open it** from the project's **More** menu → **Memory**. It is plain text: change or delete anything, then **Save**. - **The assistant adds to it** when you tell it something worth remembering for the project. Each addition is a [change](https://samuraiscribe.com/docs/glossary/#change), so it follows the assistant's [mode](https://samuraiscribe.com/docs/glossary/#mode) like any other. - **The first 2,000 characters** are what the assistant reads at the start of a chat. Keep what matters most at the top. - If the assistant remembered something while you had the memory open, saving asks: **Reload** to see it, or **Keep mine** to replace it with your text. ## What reaches your other computers The sidebar says it under the list: projects reach every computer with this vault, and their chats stay on the computer they were held on. - **Projects travel**, with their names and memories, in the vault's hidden `.samurai/` folder. A tool that syncs the whole folder, hidden files included, carries them. See [syncing and backing up](https://samuraiscribe.com/docs/vault/#syncing-and-backing-up). - **Chats stay.** On another computer you see the same projects, with none of this computer's chats in them. - **Obsidian Sync skips hidden folders**, so with it, projects and their memories don't reach your other computers at all. --- # Files and the editor > The Files pane shows your vault as a tree beside the assistant. Open files in tabs, make, move and delete notes and folders, and write in the note editor. - Page: https://samuraiscribe.com/docs/files/ - Checked with Samurai Scribe 0.65.0 Files shows your [vault](https://samuraiscribe.com/docs/vault/) as a tree, with the files you open as tabs beside it. Notes open in an editor that writes plain Markdown: the same files Obsidian, or any other editor, sees. Files sits at the right of the Projects view, so a note and a chat about it can be side by side. ## Opening Files - **The Files button**, the grey circle at the top right of a chat, opens it. So does Cmd+\ on a Mac or Ctrl+\ on Windows. - **From the Meetings view**, the same button or keys open Files and switch to the Projects view. - **Opening a note from anywhere** opens it in Files: a link, a citation in an answer, or **Open** after the assistant saves a note. Along the top of the pane: - ≡ hides or shows the tree; - **Search in files** searches inside your notes and meetings; - **More** has **New note**, **New folder**, **Refresh** and **Show the vault folder**; - **Fill the window** spreads Files over everything but the sidebar, for reading or writing at length, and **Back beside the chat** undoes it; - **Close Files** closes the pane. ## What the tree shows The Meetings folder starts open, with each meeting as a folder of its files. Beside it are your other folders and notes: Notebooks, Skills, People, Dictionary and your own. A Dictionary list opens in the editor like any note; the **Dictionary** page in the sidebar is the easier way to edit it (see [The Dictionary](https://samuraiscribe.com/docs/dictionary/)). - **Listed:** folders, Markdown notes, PDFs, Word files (`.docx`), PowerPoint decks (`.pptx`), plain-text files such as `.txt`, `.csv` or `.json`, and pictures. - **Not listed:** - folders whose names start with a dot, such as `.obsidian`, `.git` and `.samurai`; - the Profiles and Scripts folders, which have their own editors; - in a meeting's folder, the files whose names start with `_`: the recordings and the app's record of the meeting. If your vault is a folder inside another notes folder, such as your Obsidian vault, **Include Parent Folder** in **Settings → AI Apps → Folder Access** makes Files show the folder around it too. See [Folder access](https://samuraiscribe.com/docs/folder-access/#include-parent-folder). ## Opening files and tabs - **One click** opens a file as the preview tab, in italics. The next single click replaces it. - **A double click**, or editing the file, keeps the tab open. A preview tab's right-click menu also has **Keep open**. - **A tab's right-click menu** has **Close** and **Close others**, and, for a meeting's files, **Open in the meeting**. A middle click or the × closes a tab. - **Your tabs come back** when you next open the app. What opens where: - **A note** opens in the editor. - **A meeting's transcript and documents** open as the meeting shows them, editable there. - **A meeting's folder**, hovered, shows an arrow, **Open the meeting**. - **PDFs, Word files, decks, text files and pictures** open in their own app on your computer. **With the keyboard**, once you've clicked in the tree: - ↑ and ↓ move through it, → opens a folder and ← closes it; - Enter opens a file and keeps its tab; - F2 renames; - Delete deletes. On a Mac, Backspace and Cmd+Backspace do too. ## Filtering and searching The box above the tree reads "Filter, ? to search, # for a tag". - **Type a name** to list the files, and the meetings, whose names contain it. - **Start with `?`** to search inside your notes and meetings. - **Start with `#`** to list the notes and meetings with a tag. Nested tags count: `#client` also finds `client/acme`. - A note's tags are its `tags` property and any `#tags` in its text. - A meeting's tags are only those in its meeting note's `tags` property. Clicking a `#tag` in a note open in Files fills in the filter for you. ## Making notes and folders The buttons under the filter box are **New note**, **New folder**, **Refresh** and **Collapse all folders**, and, at the right, **Show what AI may do here**, which marks each row with its [folder access](https://samuraiscribe.com/docs/folder-access/). - **New note** asks for a name and makes the note in `Notebooks/Unfiled`, the folder for notes that belong nowhere yet, then opens it. - **New note here**, in a folder's menu, makes the note in that folder. - **New folder** makes a folder at the top of the vault; **New folder here** makes one inside a folder. ## Moving, renaming and deleting - **Rename** a note or folder with **Rename** in its menu, or F2. The name becomes a field: Enter keeps the new name, Esc puts the old one back. A note's name in its header renames it too. - **Move** by dragging a note or folder onto another folder, or with **Move to…** in its menu. Dropping in the space under the last row moves it to the top of the vault. - **Links follow.** When you rename or move a note or folder yourself, in Files or in a note's header, links to it in your other notes are updated, as Obsidian does. A move the assistant makes doesn't update links. - **Delete** with **Delete note** or **Delete folder**. It goes to your computer's Trash (the Recycle Bin on Windows), where you can get it back. On a Mac, drag it out of the Trash: Finder's **Put Back** doesn't work for it. Where the system trash can't be used, such as on some network drives, it goes to a trash folder inside the vault's hidden `.samurai/` folder instead. Some things don't move, rename or delete from the tree: - **The app's own folders**, such as Meetings, Notebooks, Skills, People and Dictionary, and any folder that holds one. Move them in **Settings → Vault → Folders**, or People under **Settings → Vault → People notes**; see [moving the app's folders](https://samuraiscribe.com/docs/vault/#what-is-in-the-vault). - **A meeting's files** stay in its folder. A meeting's whole folder can be filed in any folder inside Meetings, by dragging or **Move to…**, but not outside it. It keeps its name, which follows the meeting's title. It can't move while the meeting is recording, processing or importing. - **Meetings are deleted from the meeting itself**, not the tree. A meeting's own note has no **Delete**; one of its documents has **Delete document**. - **PDFs, Word files, decks, text files and pictures** don't move, rename or delete on their own. Move the folder they're in, and they stay with the notes that use them. ## What each row's menu has Right-click a row, or use its **More** button. Every menu starts with **Reveal in Finder** (**Reveal in Explorer** on Windows) and **Copy path**. Then: - **A note:** **Export**, **Rename**, **Move to…**, **Delete note**. - **A meeting's note:** **Export**. - **A transcript:** **Export**, **Export analytics csv**, **Open in the meeting**. - **A meeting's document:** - **Export**; - **Attach to prompt** (or **Remove from prompt**), which decides whether the meeting's next run reads it; - **How this was made**, when the assistant or a skill wrote it, which opens the chat that did; - **Open in the meeting**; - **Delete document**. - **A PDF, Word file, deck or text file:** **Open in its app**. - **A picture:** **Open in its app**, **View reading**, **Read now** (**Read again** once read) and **Read with…**. Reading a picture turns what is in it into text the assistant can search and quote. - **A folder of yours:** **New note here**, **New folder here**, **Rename**, **Move to…**, **What AI may do here** (see [Folder access](https://samuraiscribe.com/docs/folder-access/)) and **Delete folder**. A notebook's folder adds **Ask about this notebook**. - **One of the app's folders**, such as Meetings or Skills: **New note here**, **New folder here** and **What AI may do here**. - **A meeting's folder:** **Open the meeting**, **Move to…** and **What AI may do here**. **Export** saves the file as PDF, Word (`.docx`), Markdown or Plain Text, or copies it. A transcript's **Export** also offers CSV, JSON, SRT Subtitles and WebVTT. ## The note editor Notes format as you type: headings, bold, links, tables, tasks and pictures show as they will read, and a line's Markdown marks appear while your cursor is on it. - **Live Preview and Source.** The toggle in the note's header switches between the formatted view and the raw Markdown. - **Properties.** A note's properties show as a panel at the top, one field per property: text, a checkbox, a date, or a list. Editing a field changes only that property, and leaves your comments and their order alone. The panel's `` shows them as written. - **The / menu.** Type / at the start of a line or after a space to insert: - **Heading 1**, **Heading 2**, **Heading 3**; - **Bulleted list**, **Numbered list**, **Task**; - **Table** (also Cmd+Option+T on a Mac, Ctrl+Alt+T on Windows); - **Quote**, **Callout**, **Divider**, **Code block**; - **Link to a note**, **Image or file**, **Properties**. - **The selection bar.** Select some text for a bar with **Bold** (Cmd+B or Ctrl+B), **Italic** (Cmd+I or Ctrl+I), **Strikethrough** (Cmd+Shift+X or Ctrl+Shift+X), **Highlight**, **Code**, **Link** (Cmd+K or Ctrl+K) and **[[ ]]**, a link to a note or meeting. - **Links.** Type `[[` and pick a meeting or note from the suggestions. Or drag a file, or a meeting's folder, from the tree into the note to link it. - **Pictures and files.** Paste or drop one into a note, or use / → **Image or file**. The file is saved beside the note, and the note gets an embed. Embeds written in Obsidian, `![[shot.png]]` or `![](shot.png)`, show too. Audio and video embeds get a player. - **Find** with Cmd+F on a Mac or Ctrl+F on Windows. - **Saving** happens as you type. The header shows **Edited**, then **Saving…**. - **Dictation** types into the note when it has the cursor. - **Size.** A note over 4 MB doesn't open in the editor. If notes or documents show blank, turn off **Settings → Appearance → Formatted editor**. Notes then open in a simpler editor that still styles Markdown as you type and saves exactly what you write, without rendered tables, the Properties panel, pictures or the / menu. ## When a note changes somewhere else A note can change while it's open: you edit it in Obsidian, a sync tool brings a new version, or you keep a change the assistant suggested. The open note shows the change within a couple of seconds. - **No unsaved edit:** the new version simply shows. - **An unsaved edit:** the app stops and says the note changed on disk since you opened it. Choose **Reload** to take the new version, or **Keep mine** to save yours over it. - **Moved or deleted elsewhere:** with nothing unsaved, the tab follows a moved note, and closes for a deleted one. With an unsaved edit, choose **Put it back** to save your text where it was, or **Discard**. Nothing in Files saves over a newer version without asking. ## Notebooks A [notebook](https://samuraiscribe.com/docs/glossary/#notebook) groups the meetings and notes about one client, project or series. It is a folder in `Notebooks/` holding a note of the same name, whose `sources` property lists its meetings. The folder can hold notes of your own too. - **Make one, or add a meeting to one:** on a meeting's menu choose **Add to notebook…**. Tick the notebooks it belongs in, or type a name under **New notebook** and press **Create and add**. - **Ask about one:** in Files, a notebook's menu has **Ask about this notebook**, which starts a chat about its notes and meetings. - **Edit the list by hand:** add or remove links in `sources`, in the app or in Obsidian. See [Using Samurai Scribe with Obsidian](https://samuraiscribe.com/docs/vault/obsidian/#people-and-notebooks). `Notebooks/Unfiled` isn't a notebook: it holds notes that belong nowhere yet. ## Files and the assistant The note open in Files is the one the assistant's context chip names: ask a question and it reads that note first. [The assistant](https://samuraiscribe.com/docs/assistant/) explains asking. To see or change what AI may do in each folder, click **Show what AI may do here** under the filter box; [Folder access](https://samuraiscribe.com/docs/folder-access/) explains the marks. --- # Folder access > What the assistant and connected AI apps may do in each folder of your vault, Can edit, Read only or Hidden. The defaults, how rules apply, and what each guarantees. - Page: https://samuraiscribe.com/docs/folder-access/ - Checked with Samurai Scribe 0.65.0 Folder access decides what AI may do in each folder of your [vault](https://samuraiscribe.com/docs/vault/): the [assistant](https://samuraiscribe.com/docs/glossary/#assistant) in Samurai Scribe, the [skills](https://samuraiscribe.com/docs/glossary/#skill) and [automations](https://samuraiscribe.com/docs/glossary/#automation) it runs, the [scripts](https://samuraiscribe.com/docs/glossary/#script) in your processing profiles, and the [AI apps](https://samuraiscribe.com/docs/glossary/#ai-app) you connect. Every folder has one of three levels. It is about AI only: nothing is locked or encrypted, and you, Obsidian and any other app can still open every file. ## The three levels - **Can edit.** AI can search and read the folder, and can propose new notes, edits, moves and deletes there. Whether a change waits for you is up to the assistant's [mode](https://samuraiscribe.com/docs/glossary/#mode), or the settings of the profile step or automation making it; see [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). - **Read only.** AI can search and read the folder, and can't change anything in it. - **Hidden.** AI never lists, searches or reads the folder. To AI it doesn't exist: asking for something in it gets the same answer as asking for a file that isn't there. ## The defaults - **Every folder in your vault starts as Can edit**, your own folders as well as Samurai Scribe's: Meetings, Notebooks (with `Unfiled` in it), People, Skills, Dictionary, Profiles and Scripts. So do notes at the very top of the vault, outside any folder. By default AI's changes there wait for you, apart from what a profile step or automation changes in its own meeting, and a change that applies can be undone. Set a folder to Read only if it holds notes you want left alone. - **Folders beside your vault**, which AI sees only with [Include Parent Folder](#include-parent-folder) on, start as Read only. - **Folders whose names start with a dot**, such as `.obsidian`, `.git`, `.trash` and `.samurai`, are always Hidden. Up to 0.64.1, your own folders, and notes at the top of the vault, started as Read only. A level you chose yourself is kept. ## How a rule applies A rule applies to its folder and everything in it, and the deepest rule wins. A file follows its folder. ![A vault as a folder tree, each folder marked with its level. Meetings, Notebooks with its Acme notebook inside, and People are Can edit, the default for the app's folders. Daily is Read only, the default for a folder of yours. Work is Read only, but its subfolder Drafts has a rule of its own, Can edit, and the deeper rule wins. Journal has the rule Hidden, so its subfolder 2026 is Hidden too. .obsidian is always Hidden, as every folder starting with a dot is.](https://samuraiscribe.com/images/docs/folder-access/levels.svg "A rule covers everything inside its folder, and the deepest rule wins.") One exception keeps the app working: **an app folder keeps its own level against a rule on a folder above it.** If your Meetings folder is at `Work/Meetings`, hiding `Work` hides your notes in it but not your meetings. To change Meetings, set a rule on Meetings itself. Rules inside Meetings work like any other: set a folder inside Meetings, or one meeting's folder, to Hidden, and AI can't find, list or read the meetings in it. Asking about one gets the same answer as asking about a meeting that doesn't exist. To hide every meeting, set the Meetings folder itself to Hidden. With Meetings set to Hidden, the assistant, skills, automations and AI apps can't find, read or change any meeting, and a Hidden folder inside it does the same for the meetings in it. A skill run on a hidden meeting can't read its transcript or documents, though it is still told the meeting's title, date, speakers and the names of its documents. A script in a [processing profile](https://samuraiscribe.com/docs/glossary/#processing-profile) still gets the meeting it is run on, but what it reads elsewhere in the vault follows these rules like everything else. ## Where to set it **In Settings.** **Settings → AI Apps → Folder Access** lists the app's folders first, marked **Samurai Scribe**, then each folder at the top of the vault, then any other folder with a rule. Pick **Can edit**, **Read only** or **Hidden** for each. **In Files**, for any folder, however deep: - Click **Show what AI may do here**, the crest under the filter box. Each row gets a mark: a pencil for **AI can edit**, an eye for **AI can view**, a crossed-out eye for **Hidden from AI**. - Click a folder's mark, or open its menu, for **What AI may do here**: **Can edit**, **Read only**, **Hidden**, or **Use the default**. A change takes effect at once, for the next thing the assistant or an AI app looks up. ## Who it applies to - **The assistant in Samurai Scribe**, in every chat, and the skills and automations it runs. - **The steps of your processing profiles**: a skill step, and a script reading or changing notes outside its meeting. See [Notes outside the meeting](https://samuraiscribe.com/docs/scripting/#notes-outside-the-meeting). - **AI apps connected through Samurai Scribe** with **Settings → AI Apps → Connect an App**: Claude Desktop, Claude Code, Codex, Cursor and Gemini CLI. Samurai Scribe applies the same rules to whatever they ask for. - **AI tools that open your vault's files directly**, such as Claude Code started in your vault's folder, don't go through Samurai Scribe, so it can't stop them. Instead, [AGENTS.md](https://samuraiscribe.com/docs/vault/#agentsmd-and-ai-tools) lists your Hidden folders under **Private folders** and asks AI tools not to open them. That is a request: most tools read the file, but none is forced to follow it. > [!NOTE] > Once you edit `AGENTS.md`, the app stops updating it, so folders you hide later aren't added to its list. Add them yourself, or put the app's version back with **Settings → AI Apps → Agent Guide → Restore Default**. ## Read only, Can edit and the assistant's modes The mode decides *when* a change applies; folder access decides *whether* it can happen at all. - **Even in Auto mode**, the assistant can't change a Read only folder. Set the folder to Can edit first. - **A skill you start yourself from the Skills page** follows the assistant's mode, as a chat does. - **A step of a processing profile** follows its own two settings, **This meeting** and **Elsewhere**, and an automation its **Its meeting** and **Elsewhere**. Whatever they say, a step or an automation changes only folders set to Can edit. - **For AI apps**, **Apply Changes Without Asking**, under **Changes from AI Apps** in **Settings → AI Apps**, does the mode's job. Off, the default, every change waits for you. On, edits and new notes apply at once and can be undone. Moves and deletes always ask. - **A waiting change** to a folder you've since made Read only or Hidden can no longer be kept: the app says AI apps may no longer change that folder. - **Changes to the Scripts, Skills and [Dictionary](https://samuraiscribe.com/docs/dictionary/) folders always wait for you**, whatever the mode or setting: a script or skill runs again long after anyone looked at it, and the Dictionary changes how every later transcript is spelled. - **Whatever the level**, AI changes only Markdown notes. It never changes PDFs, Word files, decks or pictures, or any file whose name starts with `_`. ## Include Parent Folder If your vault is a folder inside another notes folder, such as a `Samurai Scribe` folder inside your Obsidian vault, AI sees only the vault at first. **Include Parent Folder**, in **Settings → AI Apps → Folder Access**, lets AI see the rest of the folder around it, so it can read your other notes beside your meetings. [Files](https://samuraiscribe.com/docs/files/) then shows that folder too. - Your notes there start as Read only, unlike the folders in your vault. - It isn't offered when your vault sits directly in your home folder. - Turning it on or off puts every folder choice back to its default. If you've made choices, the app asks first. ## If every folder shows as Hidden If **Folder Access** says every folder is hidden from AI apps because the vault's folder rules could not be read, the rules kept in the vault's `.samurai/` folder may have been written by a newer version of Samurai Scribe on another computer, or caught in the middle of a sync. AI sees nothing until they can be read, and nothing is changed meanwhile. Update Samurai Scribe on this computer, or wait for the sync to finish. The message names the file: if neither helps, restore it from your sync tool's history or move it aside. --- # The vault > Where Samurai Scribe keeps your meetings, a folder of Markdown and audio you own. What is in it, what you can edit, what to leave alone, and how to sync it. - Page: https://samuraiscribe.com/docs/vault/ - Checked with Samurai Scribe 0.65.0 The vault is an ordinary folder on your computer where Samurai Scribe keeps your meetings, people, notebooks, skills, profiles, scripts and Dictionary lists. Almost everything in it is a Markdown file, an audio file or a small settings file, along with scripts and any files you attach to meetings. So you can open it in Obsidian or any other editor, back it up, or sync it between computers. ## Choosing the vault On first launch the app makes a vault for you: a folder called `Samurai Scribe` in your Documents folder. To use another folder, open **Settings → Vault** and press **Change…** (**Choose folder…** if no folder is set). Whichever folder you pick, you choose how to use it: - **The button named after your folder**, such as **Use "Second Brain"**, makes that folder the vault. Meetings go straight into it, next to what you keep there, in `Meetings/`, `People/` and so on. Folders you already have with those names are used as they are. - **Make a Samurai Scribe folder inside** makes a `Samurai Scribe/` subfolder the vault. Everything the app writes, including `AGENTS.md` and `.samurai/`, stays inside it, and the rest of your folder stays as it was. If the folder is the top of an Obsidian vault, using it as it is is the suggested choice. For any other folder, the subfolder is. Obsidian links and searches across the whole vault either way. Using it as it is suits you if you link meetings from daily notes or project pages. [Using Samurai Scribe with Obsidian](https://samuraiscribe.com/docs/vault/obsidian/) has more. ## What is in the vault ``` Your vault/ ├── AGENTS.md a guide for AI coding tools, written by the app ├── Meetings/ one folder per meeting ├── People/ a note for each person you name ├── Notebooks/ notebooks, plus Unfiled/ for loose notes ├── Skills/ one folder per skill ├── Profiles/ processing profiles you made or changed ├── Scripts/ scripts for writing up meetings ├── Dictionary/ your spellings of names and jargon, Main.md first └── .samurai/ the app's settings for this vault ``` `People/`, `Notebooks/`, `Skills/` and `Dictionary/` appear the first time something is written there. Each Dictionary list is a note you can edit by hand: [The Dictionary](https://samuraiscribe.com/docs/dictionary/#lists-are-notes-in-your-vault) describes the format. **Moving the app's folders.** You can move or rename them inside the vault: - **Settings → Vault → Folders** has Meetings, Profiles, Scripts, Skills, Notebooks and Dictionary. Press **Change…** beside one and pick where it should be. - The People folder is set under **Settings → Vault → People notes**. If you pick an empty folder, or one that isn't there yet, the whole folder moves there. If you pick a folder you already keep things in, the app's files move in beside yours. Links to them in your notes follow. When a move can't be made, the app says why: - something there has the same name as one of the app's files, and nothing moves at all; - the folder you picked is another of the app's folders, sits inside one, or holds one; - a recording is in progress, or a meeting is being processed. Try again once it's done. Moving the Dictionary folder into one of yours moves only the Dictionary's lists. Other notes there stay as they are. **People notes.** Everyone you name gets a note in `People/`. You can turn this off in **Settings → Vault → People notes**. Turned off, people are known by voice and name only. ## One meeting's folder Each [meeting](https://samuraiscribe.com/docs/glossary/#meeting) is a folder named after its date and title. The folder is renamed when the meeting's title changes. ``` Meetings/2026-08-01 Design Review/ ├── 2026-08-01 Design Review.md the meeting note ├── Transcript.md what was said ├── Summary.md written by a script or a skill ├── Notes.md your own notes ├── _meeting.json the app's record of the meeting ├── _mic_audio.wav your microphone ├── _system_audio.wav your computer's sound └── _playback.m4a the recording you play back ``` Other documents a skill, a script or you add to the meeting sit beside these, and so do files you attach. A meeting made from an imported file has that file instead of the two `.wav` files, under its own name. **The meeting note** is named after its folder, so `[[2026-08-01 Design Review]]` links to the meeting. Its properties: ```yaml samurai_id: … # don't change samurai_kind: meeting # don't change title: Design Review date: 2026-08-01 audio: "[[2026-08-01 Design Review/_playback.m4a]]" tags: [client/acme] ``` - Change `title` or `date` and the app renames or re-dates the meeting to match. - `tags` are the meeting's tags in the app: add and remove them freely. - Write anything you like below the properties. **The transcript** has one heading per line of speech, giving its start and end time and the speaker: ```markdown ### 12:13.4-12:15.0 [[Bob Ruiz]] Let's ship the redesign on Friday. ``` - Speakers link to their people notes, so a person's backlinks list every meeting they spoke in. - To link to a moment in Obsidian, type `[[2026-08-01 Design Review/Transcript#` and pick the line from the suggestions. Clicking such a link in Samurai Scribe opens the meeting at that point. The transcript and the documents the app, a script or a skill writes all have a `meeting` property linking back to the meeting note, so the note's backlinks list them. A file you add yourself is left as you wrote it. ## What you can edit, and what to leave alone You can edit: - a meeting note's `title`, `date` and `tags`, and anything below its properties; - the wording of a transcript, keeping the `### start-end` part of each heading as it is; - the summary, your notes and any other document; - people notes: rename the file to rename the person everywhere, and add addresses under `emails` so the app recognises them on calendar invites. Leave these alone: - **Files that start with `_`**, and an imported recording with its `.wav` copy. They are the app's record of the meeting and its recordings. - **The `.samurai/` folder.** It holds the app's settings for this vault. - **The properties `samurai_id`, `samurai_kind` and `meeting`**, and a meeting note's `audio`. They are how the app knows which files belong to which meeting. Adding properties of your own is fine. - **A meeting's files belong in its folder.** Don't move single files out of it. - **Create meetings in the app**, not by making folders by hand. ### The recordings and disk space - **A recording** has `_mic_audio.wav`, `_system_audio.wav` or both, one per track recorded, uncompressed. - **An imported file** keeps its own name, with a `.wav` copy beside it if it isn't one already. - **`_playback.m4a`** is a smaller copy made for playing back, and the app can make it again. Nothing removes recordings by itself. If you need the space, delete them in the app: the menu on a meeting's recording has **Delete** and **Delete all recordings**. The transcript and notes are kept. > [!WARNING] > Recordings are the one part of a meeting that can't be made again. Deleting one can't be undone, and without it the meeting can't be transcribed again. Don't change or delete them by hand. ## Changes you make outside the app Edits you make in Obsidian or any other editor are picked up while Samurai Scribe is running. Edits made while it was closed are picked up the next time it starts. If the app ever seems out of step with the files, press **Rescan Vault** in **Settings → Vault**, or in the vault switcher at the foot of the sidebar. Either one reads the vault again. ## Filing meetings in subfolders You can file meeting folders anywhere inside `Meetings/`, such as `Meetings/2026/08/` or `Meetings/Acme/`, and the app keeps track of them. A meeting folder can't live outside `Meetings/`. New meetings start at the top of `Meetings/`. Always move a meeting's whole folder, never single files from it. If you sync the vault between computers, update Samurai Scribe on all of them first: versions before 0.61 only look at the top level of `Meetings/`. ## Several vaults You can keep more than one vault, for example one for work and one for personal meetings. Open the vault switcher at the foot of the sidebar and choose **Manage vaults…**: - **Create new vault** makes a new folder. - **Open folder as vault** uses a folder you already have. Each vault's menu has **Rename vault…**, **Move vault…**, **Reveal vault in Finder** (**Reveal vault in Explorer** on Windows) and **Remove from list**. Removing a vault from the list leaves the folder and every meeting in it on disk. ## Syncing and backing up **Use a tool that syncs the whole folder, hidden files included**, such as iCloud Drive, Dropbox, Syncthing or git. Sync the hidden `.samurai/` folder along with the rest. Dictionary lists are ordinary notes, so they travel with any sync tool. The vault's projects, assistant memory, people's voice prints, folder access, automations, and its lists of calendars and connections travel in it. ![Two columns. Travels with the vault: meetings, people notes and notebooks; skills, profiles and scripts; Dictionary lists; AGENTS.md; and in the hidden .samurai folder, projects, assistant memory, voice prints, folder access, automations, and the lists of calendars and connections. Stays on each computer: your licence; assistant chats, since projects travel but their chats don't; and sign-ins to connections and calendars, which each computer makes once. Below: Obsidian Sync skips hidden folders, so with it everything in .samurai stays behind too.](https://samuraiscribe.com/images/docs/vault/what-syncs.svg "What a sync tool carries to your other computers, and what each computer keeps to itself.") > [!WARNING] > **Obsidian Sync skips hidden folders**, so it doesn't carry `.samurai/`. Your meetings and people notes arrive on the other computer, but projects, assistant memory, voice prints, folder access, automations and the lists of calendars and connections stay behind. People aren't recognised by voice there. See [Using Samurai Scribe with Obsidian](https://samuraiscribe.com/docs/vault/obsidian/#syncing). These stay on each computer, whatever you sync with: - your licence; - assistant chats: projects travel, but their chats stay on the computer they were held on; - sign-ins to connections and calendars: the lists travel, and each computer signs in once. ## AGENTS.md and AI tools `AGENTS.md` tells AI coding tools such as Claude Code, Codex and Cursor how the vault is laid out and what not to touch. It also lists any folders set to **Hidden** in **Settings → AI Apps → Folder Access**, for tools that read files directly: see [Folder access](https://samuraiscribe.com/docs/folder-access/). The app keeps it up to date; in Settings it is called the **Agent Guide**. - You can edit `AGENTS.md`. Once you do, the app stops updating it. **Settings → AI Apps → Agent Guide → Restore Default** brings the app's version back. - If you keep your own `CLAUDE.md`, add the line `@AGENTS.md` to it. - To let an AI app search and read your meetings through Samurai Scribe, use **Settings → AI Apps → Connect an App**. [AI Apps](https://samuraiscribe.com/ai-apps) has the steps for each app. --- # Using Samurai Scribe with Obsidian > Keep your meetings in your Obsidian vault. Which folder choice to make, what meetings look like in Obsidian, links, tags, Dataview queries, plugins and syncing. - Page: https://samuraiscribe.com/docs/vault/obsidian/ - Checked with Samurai Scribe 0.65.0 Samurai Scribe writes the way Obsidian writes Markdown: wikilinks, embedded images and properties. Point it at your Obsidian vault and every meeting shows up there as ordinary notes, linked to the people in it, and edits you make in either app reach the other. [The vault](https://samuraiscribe.com/docs/vault/) describes the files themselves; this page is about working with them in Obsidian. ## Use your Obsidian vault as the vault In **Settings → Vault**, press **Change…** and pick a folder. See [choosing the vault](https://samuraiscribe.com/docs/vault/#choosing-the-vault). Samurai Scribe then asks how to use it: - **Use "Second Brain"** (named after your folder) makes your Obsidian vault the vault. Meetings go in next to your notes, in `Meetings/`, `People/`, `Notebooks/` and so on, and folders you already have with those names are used as they are. The app's `.samurai/` folder sits next to `.obsidian/`. This is the highlighted choice when the folder you picked is the top of an Obsidian vault. - **Make a Samurai Scribe folder inside** keeps everything the app writes in one `Samurai Scribe/` folder, and the rest of your vault looks the way it did. This is the highlighted choice for any other folder, including one inside an Obsidian vault. ``` Use "Second Brain" Make a Samurai Scribe folder inside Second Brain/ Second Brain/ ├── .obsidian/ ├── .obsidian/ ├── .samurai/ ├── Daily/ ├── AGENTS.md ├── Projects/ ├── Daily/ └── Samurai Scribe/ ├── Projects/ ├── .samurai/ ├── Meetings/ ├── AGENTS.md ├── People/ ├── Meetings/ └── Notebooks/ ├── People/ └── Notebooks/ ``` Obsidian links and searches across the whole vault either way. Using it as it is suits you if you link meetings from daily notes or project pages, or already keep a `People/` folder. **Filing the app's folders under your own.** You can also use the vault as it is and then move the app's folders where you'd look for them, such as `Work/Meetings` and `Work/People`, in **Settings → Vault → Folders** and **Settings → Vault → People notes**. See [moving the app's folders](https://samuraiscribe.com/docs/vault/#what-is-in-the-vault). > [!TIP] > With the Samurai Scribe folder inside your vault, the assistant and connected AI apps see only that folder at first. To let them read the rest of your Obsidian vault too, turn on **Include Parent Folder** in **Settings → AI Apps → Folder Access**. See [Folder access](https://samuraiscribe.com/docs/folder-access/#include-parent-folder). ## What you'll see in Obsidian Each meeting is a folder in `Meetings/`, named after its date and title, holding: - **the meeting note**, named after the folder, such as `2026-08-01 Design Review.md`. It holds the meeting's properties, and below them is yours to write in; - **`Transcript.md`**, one heading per line of speech, each linking its speaker; - **`Summary.md`** and any other documents a script, a skill or you wrote; - **the recordings and the app's record of the meeting**, whose names start with `_`. An imported file keeps its own name. [One meeting's folder](https://samuraiscribe.com/docs/vault/#one-meetings-folder) lists every file and property. The transcript and every document the app, a script or a skill writes have a `meeting` property linking the meeting note, and the transcript links people, so the links fit together like this: ![How a meeting's files link. The meeting note, named after the meeting's folder, is the hub. A notebook links to it from its sources property, and a daily note of yours links to it with an ordinary link. The transcript and the summary each link up to it from their meeting property. The meeting note links to the playback recording from its audio property. The transcript's speaker headings link each speaker to their people note.](https://samuraiscribe.com/images/docs/vault-obsidian/links.svg "Every arrow is a link Obsidian sees, so backlinks and the graph show how a meeting connects.") So, in Obsidian: - **A meeting note's backlinks** list its transcript, the documents the app wrote, the notebooks it's in, and every note of yours that links to it. - **A person's backlinks** list the transcripts of every meeting they spoke in. - **The graph** shows meetings clustered around the people in them and the notebooks they belong to. ## Linking to meetings, people and moments - **A meeting:** `[[2026-08-01 Design Review]]` links to its meeting note. Obsidian suggests it as you type. - **A document in it:** `[[2026-08-01 Design Review/Summary]]`, or embed it in a daily note with `![[2026-08-01 Design Review/Summary]]`. - **A person:** `[[Bob Ruiz]]` links to their people note. - **A moment:** type `[[2026-08-01 Design Review/Transcript#` and pick the line from Obsidian's suggestions. Clicking such a link in Samurai Scribe opens the meeting at that moment. - **The recording:** the meeting note's `audio` property links the playback copy. Open it to play the meeting in Obsidian, or embed it with `![[2026-08-01 Design Review/_playback.m4a]]`. ## Properties and tags A meeting note's properties are `title`, `date` and `tags`, which are yours to change, and `samurai_id`, `samurai_kind` and `audio`, which you leave alone. - **Change `title`** and the app renames the meeting, its folder and the links to it. A title you set yourself is kept: later runs don't rename the meeting. - **Change `date`** and the app files the meeting under that day. - **`tags`** are the meeting's tags in the app, both ways. Nested tags such as `client/acme` show as a tree in the app's meeting filter, as Obsidian's Tags view shows them. - **Only the `tags` property counts for a meeting.** A `#tag` written in a meeting's text isn't one of the meeting's tags in the app, though Obsidian still lists it. - **Properties of your own** are fine on any of the app's files, and a run that rewrites a document keeps them. The transcript and documents have `samurai_kind: transcript` or `samurai_kind: document`, and a `meeting` property linking the meeting note. People notes have `samurai_kind: person`. ## Dataview queries The properties above are enough for [Dataview](https://blacksmithgu.github.io/obsidian-dataview/). These examples assume the meetings folder is called `Meetings`. Every meeting, newest first: ````markdown ```dataview TABLE date, tags FROM "Meetings" WHERE samurai_kind = "meeting" SORT date DESC ``` ```` Meetings in the last week: ````markdown ```dataview LIST FROM "Meetings" WHERE samurai_kind = "meeting" AND date >= date(today) - dur(7 days) SORT date DESC ``` ```` Every meeting tagged `client/acme`: ````markdown ```dataview LIST FROM #client/acme WHERE samurai_kind = "meeting" ``` ```` This also finds a meeting whose note has `#client/acme` written in its text, which the app doesn't count as one of the meeting's tags. Every meeting Bob Ruiz spoke in, from the transcripts that link him: ````markdown ```dataview TABLE WITHOUT ID meeting AS "Meeting" FROM [[Bob Ruiz]] WHERE samurai_kind = "transcript" SORT meeting DESC ``` ```` Obsidian's own Bases can filter on the same properties, such as `samurai_kind` is `meeting`. ## People and notebooks **People.** When you name a speaker, they get a note in `People/`. If exactly one note in your vault already has that name, the app uses it rather than making another, adding its `samurai_id` and `samurai_kind` properties. - Rename the note in Obsidian and the person is renamed in the app. - Add email addresses under its `emails` property, and the app recognises the person on calendar invites. - Write anything you like in the note's body; the app never changes it. - Don't want the notes? Turn them off in **Settings → Vault → People notes**. **Notebooks.** A notebook is a folder in `Notebooks/` holding a note of the same name, whose `sources` property lists its meetings: ```yaml sources: - "[[2026-08-01 Design Review]]" - "[[2026-08-08 Design Review]]" ``` Add a meeting with **Add to notebook…** on its menu in the app, or by adding a link to `sources` in Obsidian. In the app, **Ask about this notebook** on the notebook's folder in [Files](https://samuraiscribe.com/docs/files/#notebooks) asks the assistant across all of it. ## Dictionary lists The [Dictionary](https://samuraiscribe.com/docs/dictionary/), your spellings of names and jargon, keeps its lists as notes in `Dictionary/`, starting with `Main.md`. Edit them in Obsidian as freely as in the app: each entry is a bullet, with what it is misheard as before an arrow. ```markdown --- samurai_kind: dictionary enabled: true --- - cooper netties, kuber nettis -> Kubernetes - [[Dana Ruiz]] ``` - **Only notes with `samurai_kind: dictionary` are lists.** If you already keep a `Dictionary/` folder, say of vocabulary you're learning, the app uses it, but its notes stay yours and never change a transcript. - **Links count as their text**, so linking a people note adds that person's name. - **Write notes around the entries.** Headings, paragraphs and comments are ignored. [Lists are notes in your vault](https://samuraiscribe.com/docs/dictionary/#lists-are-notes-in-your-vault) has the whole format. ## Editing in both apps - **Edits in Obsidian reach the app** while it's running, and the next time it starts if it was closed. If it ever seems out of step, press **Rescan Vault** in **Settings → Vault**. - **A note open in both apps:** if you change a note in Obsidian while it's open in Samurai Scribe, the app shows the new version within a couple of seconds. If you had unsaved typing there, it asks: **Reload** or **Keep mine**. It never saves over a newer version without asking. - **Transcripts:** fix wording freely, but keep the `### start-end` part of each heading as it is. - **Renaming and moving a note yourself in the app** updates links to it in your other notes, as Obsidian does. - **Leave alone** the files whose names start with `_`, the `.samurai/` folder, and the `samurai_id`, `samurai_kind`, `meeting` and `audio` properties. Move a meeting's whole folder, never single files out of it. See [what you can edit, and what to leave alone](https://samuraiscribe.com/docs/vault/#what-you-can-edit-and-what-to-leave-alone). **Plugins.** Plugins that move, rename or rewrite files on their own can work against a meeting's files: auto-filers, linters that rewrite properties, or templates applied to every new file in a folder. Leave the Meetings folder out of them. If something renames a meeting note away from its folder's name, the app renames it back. Pictures work both ways too. One you paste in Samurai Scribe is saved beside the note, and an embed you wrote in Obsidian, such as `![[diagram.png]]`, shows in Samurai Scribe. ## Syncing **Obsidian Sync skips hidden folders, so it doesn't carry `.samurai/`.** Your meetings, people notes and Dictionary lists arrive on your other computer, but projects, assistant memory, voice prints, folder access, automations and the lists of calendars and connections stay behind, and people aren't recognised by voice there. To keep all of it, sync the vault with a tool that carries the whole folder, hidden files included, such as iCloud Drive, Dropbox, Syncthing or git. [Syncing and backing up](https://samuraiscribe.com/docs/vault/#syncing-and-backing-up) shows what travels and what stays on each computer. If you file meetings in subfolders of `Meetings/`, update Samurai Scribe on every computer first: versions before 0.61 only look at the top level. ## AI tools in your vault `AGENTS.md`, at the top of the vault, tells AI coding tools such as Claude Code, Codex and Cursor how the vault is laid out and what not to touch. If you keep your own `CLAUDE.md`, add the line `@AGENTS.md` to it. See [AGENTS.md and AI tools](https://samuraiscribe.com/docs/vault/#agentsmd-and-ai-tools), and [Folder access](https://samuraiscribe.com/docs/folder-access/) for what AI may read and change in each folder. --- # Skills > Plain-English instructions for tasks you repeat. The built-in skills, translating a transcript, running a skill, the shared library and what a skill may change. - Page: https://samuraiscribe.com/docs/skills/ - Checked with Samurai Scribe 0.65.0 A [skill](https://samuraiscribe.com/docs/glossary/#skill) is a set of instructions, in plain English, that the [assistant](https://samuraiscribe.com/docs/glossary/#assistant) follows to do a task you repeat: write a follow-up email, keep a log of decisions, brief you before a call. Each skill is a folder in your vault's `Skills/` folder holding a `SKILL.md` file, in the open Agent Skills format that other AI apps read too. Skills are free to write, install and run, anywhere. Having one run by itself, after meetings or on a schedule, is an [automation](https://samuraiscribe.com/docs/automations/), and automations need Pro. ## Skill or script? Both can write up a meeting as a step of a [processing profile](https://samuraiscribe.com/docs/profiles/). - **A skill** says what to do in plain English, and the AI works out how. It can search your other meetings, read notes and files, propose notes and edits, and work in services through [connections](https://samuraiscribe.com/docs/glossary/#connection). Writing one needs no code. - **A [script](https://samuraiscribe.com/docs/scripting/)** is a short program in the Rhai language. It decides exactly what is asked of the model and what is written, the same way every time. Choose a skill when describing the task is the easy part. Choose a script when you want precise control over the output. ## The Skills page Open **Skills** in the sidebar. The page has four tabs: - **Skills**: your own skills under **Your skills**, and the shared library under **Shared skills**. - **Automations**: when skills run by themselves. Without Pro, this tab carries the Pro mark; nothing else on the page does. See [Automations](https://samuraiscribe.com/docs/automations/). - **Connections** (beta): the services the assistant and skills can work in. - **Log**: every run started from the Skills page, with **Find names…**, **Polish transcript…** or **Translate transcript…**, or by an automation. Click one to open its conversation in the assistant. Each skill is a card with its name and the first sentence of its description. Click a card to open the skill in the editor. Hover over it for its actions: - ▶ **Run now**, or **Run on…** for a skill that works on a meeting, a calendar meeting or a note; - **Run it by itself…**, which makes an automation for it; - **Restore default**, on a built-in skill you have changed; - **Delete**, which moves the skill's folder, files and all, to the trash. Conversations it ran are kept. A card that reads **Needs fixing:** names what is wrong with the skill's file. [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#test-and-fix-a-skill) lists the usual causes. ## The built-in skills Four skills come with Samurai Scribe. The app writes them into your Skills folder the first time you open Skills or use the assistant, as ordinary `SKILL.md` files you can read and change. - **Meeting summary** writes a meeting's Summary: an overview, the discussion, decisions, action items and open questions. A processing profile can run it as a step. - **Name speakers** works out who a meeting's unnamed speakers are, from what they say and the calendar invite, and proposes their names in the transcript. In a transcript with unnamed speakers, ⋮ → **Find names…** runs it. Each name it gives waits for you to confirm it. - **Polish transcript** corrects a transcript's misheard words, names and terms, punctuation and capitals, without changing what was said. In a transcript, ⋮ → **Polish transcript…** runs it. Your Dictionary already applies to it. To teach it other words, add them to the **Glossary** list at the end of its `SKILL.md`, one per line, written `- Term`. - **Translate transcript** puts a meeting's transcript into another language. Every line keeps its time and speaker. See [Translate a transcript](#translate-a-transcript). A built-in skill's card says **Built-in**, and it updates with the app until you change it. Once you do, the card says **Built-in · changed** and the app leaves your version alone. **Restore default** puts the app's version back, and your version goes to the trash. If you delete a built-in skill, it stays deleted. **Find names…**, **Polish transcript…** and **Translate transcript…** still work: they use the app's own copy. ### Translate a transcript 1. Open the meeting's transcript, and choose ⋮ → **Translate transcript…**. 2. Type the language, such as German, and press **Translate**. The field starts on the language you used last time. 3. The assistant opens and translates the transcript a part at a time. The translation arrives as a [change](https://samuraiscribe.com/docs/glossary/#change): review it line by line, then keep or discard it. Nothing changes until the change is kept, unless the assistant's [mode](https://samuraiscribe.com/docs/glossary/#mode) lets changes apply by themselves. The original is kept: undo the change, or use ⋮ → **Restore as transcribed…**, which puts back the transcript as it was first made, replacing every edit since. (A meeting transcribed with a version before 0.65 has no such copy, so use undo.) A part the model couldn't translate is left as it was, and the assistant says which. In a chat, `/translate-transcript German` does the same for the meeting the chat is about, and so does asking "translate this transcript into German". ## Running a skill There are five ways to run one: - **From the Skills page.** Press ▶ on its card. A skill that works on nothing in particular runs at once. Otherwise a menu asks what to run it on, under **Calendar**, **Meetings** and **Notes** headings, as the skill allows: upcoming calendar meetings; recent meetings, marked **Not transcribed** or **Recording now** where that's so; the note open now, or **Choose a note…**; and **On its own** if the skill can run without any. A skill that takes an argument then asks for it, such as **Language**. - **In a chat.** Type / at the start of a message and pick the skill from the list. Anything you type after its name is the skill's argument for that run, for example `/client-recap keep it under 150 words`. - **By asking.** The assistant reads your skills' descriptions and follows a skill when your question fits it. That is why a good description says when to use the skill. - **As a step of a processing profile.** In the Profile Manager's **Summarization** panel, **Add a step** lists your skills under **SKILLS**. The skill then runs on every meeting that profile processes, and its reply is saved in the meeting as a document. This is free. See [Processing profiles](https://samuraiscribe.com/docs/profiles/). - **By itself**, after each meeting is processed, before calendar meetings or on a schedule. That is an [automation](https://samuraiscribe.com/docs/automations/) and needs Pro. A skill does the same things in each of these places. [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#arguments) explains arguments, and how a skill asks for one. AI apps you connect in **Settings → AI Apps**, such as Claude Desktop or Claude Code, can also list your skills and follow one. See [AI apps](https://samuraiscribe.com/docs/glossary/#ai-app). A skill runs on the assistant's model, unless it runs as a profile step: then it uses the model set for summaries. A small model follows a skill best when its steps are short and numbered; [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#writing-instructions-that-work) has more tips. ## What a run gives you A run you start from the Skills page opens in the assistant as a conversation of its own, named after the skill and what it ran on. What it gives back depends on the skill: - **An answer** in that conversation. Keep it with **Save as note**, or copy it. - **Changes**: a new note, an edit, transcript corrections or a renamed person. Each one is a [change](https://samuraiscribe.com/docs/glossary/#change) you keep or discard, as with anything the assistant proposes. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). - **An email draft**, which you open in your mail app or in Gmail. The app sends nothing itself. - **Actions in a connected service**, such as an issue in Linear, as each action's permission allows. Run as a step of a processing profile, a skill writes its documents into the meeting as the step's **This meeting** setting allows: straight away by default, because you pressed **Run**. The document's ⋮ menu then has **How this was made**, which opens the conversation the step ran in. ### What waits for your review A skill may change notes wherever **Settings → AI Apps → Folder Access** lets AI edit. Who approves its changes depends on how it runs: - **In a chat, or started by you**, from the **Skills** page or with **Find names…**, **Polish transcript…** or **Translate transcript…**: changes follow the assistant's [mode](https://samuraiscribe.com/docs/glossary/#mode). In the default mode, **Review**, every change waits for you. - **As a step of a processing profile**: the step's two settings, **This meeting** and **Elsewhere**. See [Processing profiles](https://samuraiscribe.com/docs/profiles/#what-a-step-may-change). - **From an automation**: the same two settings, in the automation's editor. See [Automations](https://samuraiscribe.com/docs/automations/#what-it-may-change). Actions in a connected service follow their own permission. - **Always waiting**, however it runs: moves and deletes outside a meeting, a new skill, and any change to your Skills, Scripts or Dictionary folders. A skill goes on running long after anyone read it. Whatever a skill changed in a meeting is listed under **All changes** in the meeting's title bar. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/#all-changes-to-a-meeting). ## Shared skills: the library **Shared skills**, under your own skills on the Skills tab, lists the skills published in the public library, [github.com/samuraiscribe/skills](https://github.com/samuraiscribe/skills), that you haven't installed. Installed ones are under **Your skills**. Opening the Skills page fetches that list from the internet; the [network disclosure](https://samuraiscribe.com/network) lists the request. Click a shared skill to read it before you install it. The view shows its instructions and what it works on, and under **FROM THE LIBRARY**: - **Tested on the built-in model**, when its author checked it on the app's own model; - each connection it needs, as **Needs Linear — Connect** until you have connected that service; - the actions it uses in those services; - any other files it brings. **Install** writes the skill into your Skills folder exactly as published. Installing never makes a skill run. If its author suggests when to run it, such as after each meeting, the app asks **Run it automatically?**: **Make an automation** opens a new automation for it, already filled in, and **Not now** leaves it. **Updates.** When a newer version is published, the skill's card shows **Update**. Once you change an installed skill, it stops updating from the library and its card shows **Update…** instead. That opens the published version with **Replace mine**, which puts it in place of yours; your version goes to the trash. **Name taken** means you already have a skill of your own with that name. Rename yours to install the shared one beside it. To share a skill of your own, see [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#share-it-in-the-library). ## Skills from elsewhere A skill is just a folder, so you can also copy one into your vault's `Skills/` folder by hand, from a colleague or from another app that uses the Agent Skills format, and it appears on the Skills page. If its card says **Needs fixing:**, open it to see why: the folder's name must match the skill's `name`, and the app reads its settings in a simple form. [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#skills-from-other-apps) has the details. ## Connections in skills A skill can work in services such as Linear, Notion or Jira & Confluence through a [connection](https://samuraiscribe.com/docs/glossary/#connection). A skill that needs one says so, and you connect the service on the **Connections** tab of the Skills page. You choose for each of the service's actions whether it is **Off**, asks you first (**Ask**), is allowed (**Allow**), or is allowed even when nobody is watching (**Allow in automatic runs**). Connections are free; an automation acting through one with nobody watching needs Pro. See [Automations](https://samuraiscribe.com/docs/automations/#connections-in-automatic-runs). --- # Writing a skill > Make your own skill in the app's editor or as a SKILL.md file. The fields, the settings the app reads, arguments, what a skill can do, and how to make it work well. - Page: https://samuraiscribe.com/docs/skills/writing/ - Checked with Samurai Scribe 0.65.0 A [skill](https://samuraiscribe.com/docs/glossary/#skill) is instructions in plain English, saved as a `SKILL.md` file in a folder of its own in your vault's `Skills/` folder. You can write one in the app's editor or in any text editor, and the two are the same file. This page covers both, then what a skill can do and how to make one that works every time. For running skills and the built-in ones, see [Skills](https://samuraiscribe.com/docs/skills/). ## Make a skill in the app On the **Skills** page, press **New Skill**, or the **New skill** card after your skills. A profile's **Add a step** menu has **New skill…** too. The editor has four parts: - **The name**, across the top (**Name your skill**). Type it as you would say it, such as "Client recap". It is saved as the folder name `client-recap`: lowercase letters, digits and hyphens, at most 64 characters. The line under the name shows where the file is, such as `Skills/client-recap/SKILL.md`. - **INSTRUCTIONS**: the steps, in plain English. It is the same editor notes use: type / for headings, lists and more, and switch between **Live Preview** and **Source** with the toggle beside the label. - **DESCRIPTION**: what the skill does, and when to use it. The assistant reads it to decide when the skill fits a question, so it is required. - **WORKS ON**: what the skill runs on. - **Meetings**: a meeting's transcript, notes and documents, recorded or not. - **Calendar events**: a meeting on your calendar, usually one coming up, with its time, people and invite. - **Notes**: a note in your vault, such as a weekly to-do list: its text, and changing it. - **Also without one**: optional, so it can run with none of them. The box under them says what that means: what **Run on…** offers, and which [automations](https://samuraiscribe.com/docs/automations/) suit the skill. A new skill starts on **Meetings** and **Also without one**. Press **Create Skill** (**Save** for a skill you are changing). Closing with unsaved changes asks first. **Renaming a skill** renames its folder, with every file in it. Automations and profile steps that run the skill still look for the old name: an automation's card then says **Will not run:**, and the profile step says the skill is not in your Skills folder. Edit them to pick the new name. You can also ask the assistant to write a skill for you. It proposes the new skill as a [change](https://samuraiscribe.com/docs/glossary/#change), which always waits for you to keep or discard, whatever the assistant's mode. ## The SKILL.md file A skill is a folder whose name is the skill's name: ``` Skills/ └── client-recap/ ├── SKILL.md required └── examples/ optional: anything the instructions point to ``` `SKILL.md` is in the open Agent Skills format: a header between `---` lines, then the instructions in Markdown. ```markdown --- name: client-recap description: Writes a short recap of a client call. Use it after a call with a client. metadata: accepts: "meeting" document: "Client recap" --- Write a recap of this client call. 1. … ``` ### The header - **`name`**: the same as the folder's name. Lowercase letters, digits and single hyphens, at most 64 characters. - **`description`**: what it does, then when to use it, in one or two sentences. The skill's card shows the first sentence. - **`metadata`**: the settings Samurai Scribe reads, below. Write `metadata:` on a line of its own, then one level of `key: "value"` lines, indented, with each value in quotes. Other keys, such as `license`, and other `metadata` keys are kept exactly as written. ### The settings under metadata | Key | What it does | |---|---| | `accepts` | What the skill runs on: `meeting`, `calendar_event`, `note` or `none`, comma-separated, in the order **Run on…** offers them. `none` beside another word makes that one optional: `"meeting, none"` runs on a meeting or on nothing. The editor's **WORKS ON** sets it. Without it, the app guesses: a meeting if the skill has a `document` or suggests `after_meeting`, otherwise nothing. | | `document` | When the skill runs as a step of a [processing profile](https://samuraiscribe.com/docs/profiles/), the name of the document its reply is saved as, such as `"Summary"`. Without it, the document is named after the skill, such as "Client recap". It never writes over a document of yours: if you have one of that name, the skill's goes beside it as "Client recap 2". The editor doesn't show this setting; a save keeps it. | | `suggested_trigger` | When you suggest running it. It only fills in a new automation for whoever installs the skill; nothing runs because of it. `after_meeting`; `before_meeting`, or `before_meeting 15` for 15 minutes before; or `schedule` and a time: `schedule daily 08:00`, `schedule weekdays 08:00`, `schedule monday 09:00` or `schedule hourly`, in local time. Change it in the file: the editor keeps it as it is. | | `requires` | The [connections](https://samuraiscribe.com/docs/glossary/#connection) the skill needs, comma-separated, by the ids the shared library uses: `linear`, `atlassian` (Jira & Confluence), `notion`, `todoist`, `monday`, `clickup`, `attio`. An automation doesn't run the skill until each one is connected. | | `argument-hint` | What a run takes besides what it runs on, such as `"[language]"`. The skill then gets a field wherever it runs, labelled from the hint ("Language"). See [Arguments](#arguments). The editor doesn't show it; a save keeps it. | | `tools` | The tools it uses, comma-separated: the app's own by name (`"digest_transcript, write_document"`), and a connection's actions as `__` (`"linear__list_teams, linear__save_issue"`). A skill that lists any of the app's own tools is offered only those, wherever it runs; one that lists none is offered all of them. Of a connection, a run is offered only the actions listed, not the service's others, and each must belong to a connection in `requires`. | | `category` | A short label the shared library groups skills by: `Preparation`, `Follow-up`, `Review`, `Sales`, `Learning`. | | `tested_with` | `local`, `cloud` or `local, cloud`: the kinds of model the author checked it on. The library shows **Tested on the built-in model** for `local`. | | `version`, `spec` | Your own version of the skill, and the version of the format it was written for (`"1"`). | ### The instructions Everything after the header is the instructions: the steps the skill follows, in Markdown. A skill with no instructions can't run. [Writing instructions that work](#writing-instructions-that-work) has tips. ### Other files Files beside `SKILL.md`, such as examples or reference notes, are material the instructions can point to, and they travel with the skill when it is shared. A skill reads one with `read_note` and its path in the vault, such as `Skills/client-recap/examples/good-recap.md`. ## Arguments A skill can take something besides what it runs on: a language, an audience, a tone. It works as in Claude Code's skills. Give the skill an `argument-hint` under `metadata`, and write `$ARGUMENTS` in its instructions where the value goes: ```markdown --- name: brief-for description: Writes a short brief of a meeting for one audience. Use it when someone asks for a meeting summed up for a particular group. metadata: accepts: "meeting" argument-hint: "[audience]" --- Write a short brief of this meeting for this audience: $ARGUMENTS 1. If no audience is given above, ask the user who the brief is for, and stop. 2. … ``` What the run is given replaces `$ARGUMENTS`. It is given the same way wherever the skill runs: - **In a chat**, as the text you type after its name: `/brief-for the sales team`. The list of skills after / shows the hint beside the name, such as `/brief-for [audience]`. - **From the Skills page**, in a field named after the hint (**Audience**) that opens when you press ▶. It starts on what you gave last time. - **As a step of a [processing profile](https://samuraiscribe.com/docs/profiles/#steps)**, in the same field on the step's card, given every time the step runs. - **From an [automation](https://samuraiscribe.com/docs/automations/)**, in the same field in the automation's editor ("What the skill is given each time it runs."). - **When the assistant follows the skill itself**, it fills the value in from your request. Some rules: - With nothing given, `$ARGUMENTS` is left empty, so say what to do then, as step 1 above does. - Instructions without `$ARGUMENTS` get what was given at the end, as "For this run: …". - Only `$ARGUMENTS` is replaced. Claude Code's `$0`, `$1` and named arguments are not. - The value is free text: there are no types or lists of choices. The built-in **Translate transcript** skill works this way: its hint is `[language]`, so the transcript's ⋮ → **Translate transcript…** asks for a language, and `/translate-transcript German` in a chat does the same. ## What a skill can do A skill acts through tools. Name the tools in the instructions: a model follows "read the Summary with read_document" far better than "look at the summary". A skill does the same things wherever it runs; where it runs only changes a few tools: - **App**: the assistant, including skills you run from the Skills page and automations. - **AI apps**: Claude Desktop, Claude Code, Codex, Cursor or Gemini CLI, connected in **Settings → AI Apps**. - **Steps**: the skill as a step of a processing profile. Anywhere, a skill can also follow another of your skills, or propose a new one. A skill meant for AI apps as well as the app should read meetings with `read_transcript`: AI apps don't have `digest_transcript`. A skill may change notes anywhere in the vault that AI may edit (**Settings → AI Apps → Folder Access**). Who approves a change is your choice, never the skill's: - **In a chat, or run from the Skills page**: the assistant's [mode](https://samuraiscribe.com/docs/assistant/changes/#the-four-modes). - **As a profile step**: the step's two settings, **This meeting** and **Elsewhere**. See [Processing profiles](https://samuraiscribe.com/docs/profiles/#what-a-step-may-change). - **From an automation**: the same two settings, in the automation's editor. See [Automations](https://samuraiscribe.com/docs/automations/#what-it-may-change). Moves and deletes outside a meeting always wait for you, and so does any change to your Skills, Scripts and Dictionary folders. **As a profile step**, a skill's reply is saved as the document named by `document`, and it may write at most 8 documents in one run with `write_document`. It can't write a document called Transcript or Notes, which are the meeting's own; it changes the transcript with `edit_transcript`, `rewrite_transcript` or `translate_transcript` instead. A step that changes the transcript or notes and writes no document ends with a sentence or two on what it changed, kept with that change rather than saved as a document. **A skill that works on one note** says `accepts: "note"`. Run from the Skills page it asks which note; in a chat it takes the note you attached with @, or the one open. Name a note by its path in the vault, with no leading slash, such as `Weekly/W1_log.md`. Read it with `read_note` first, then change it with `edit_note`. ### Tools that read | Tool | What it does | Where | |---|---|---| | `search` | Searches transcripts, meeting notes, titles, speakers and your other notes, or one meeting. | App · AI apps · Steps | | `list_meetings` | Meetings by date or title, newest first. | App · AI apps · Steps | | `upcoming_meetings` | Calendar meetings in the next two days, with who is invited. | App · AI apps · Steps | | `get_meeting` | One meeting: its title, date, speakers, notes and folder, and its invite's attendees with their addresses, you marked `(you)`. | App · AI apps · Steps | | `read_transcript` | A meeting's transcript, a stretch at a time. | App · AI apps · Steps | | `digest_transcript` | Reads a whole meeting for one instruction and returns the notes. The way to read a long meeting on a small model. | App · Steps | | `speaker_stats` | How the talking was shared: each speaker's share, turns, longest stretch, pace and questions, and which speaker is you. | App · AI apps · Steps | | `read_document` | One of a meeting's documents by name, such as `Summary` or `Notes`, or a file attached to it. | App · AI apps · Steps | | `list_folder` | What a folder in the vault holds. | App · AI apps · Steps | | `read_note` | Any note by its path in the vault. PDFs, Word files and PowerPoint decks are read as text, without their pictures. | App · AI apps · Steps | | `list_notebooks` | Your notebooks and the meetings in each. | App · AI apps · Steps | | `read_memory` | What you asked the assistant to remember about you. | App · AI apps · Steps | | `list_skills` | Your skills. | App · AI apps · Steps | ### Tools that propose changes Each change is one you keep or discard, unless the mode or the setting where it runs lets it apply by itself, with undo. | Tool | What it does | Where | |---|---|---| | `create_note`, `edit_note` | A new note, or changes to one. | App · AI apps · Steps\* | | `move_note`, `delete_note` | Moving a note, or moving it to the trash. Outside a meeting they wait for you unless the assistant's mode is **Auto**; from an AI app, a step or an automation they always wait. | App · AI apps · Steps\* | | `create_notebook`, `add_to_notebook` | A new notebook, or meetings added to one. | App · AI apps · Steps\* | | `edit_transcript` | Corrections to a transcript: a word fixed everywhere, a line moved to another speaker, a speaker named, lines split or merged. | App · AI apps · Steps | | `rewrite_transcript` | One correction run over a whole transcript, however long, as one change. It can also remove lines you asked to have removed. | App · Steps | | `translate_transcript` | A whole transcript in another language, as one change. Every line keeps its time and speaker. | App · Steps | | `rename_person` | A person renamed in every meeting they speak in. | App · AI apps · Steps\* | | `remember`, `edit_memory` | A line added to what the assistant remembers about you, or changes to it. | App | | `check_change` | Whether a change it proposed was kept. | App · AI apps | \* A step is offered these unless its **Elsewhere** setting is **Ask**: they change something outside the meeting. ### Other tools | Tool | What it does | Where | |---|---|---| | `draft_email` | Offers an email draft (to, subject, body) that you open in your mail app or Gmail. Nothing is sent. A draft still holding a `[placeholder]`, or addressed to you, is refused. | App | | `write_document` | Writes a document into the meeting being processed. | Steps | | `set_title` | Names the meeting being processed, unless you named it yourself or it is linked to a calendar event. | Steps | ## Connections in a skill A skill that works in a service lists the connection in `requires` and the actions it uses in `tools`, and its instructions name those actions: ```markdown --- name: action-items-to-linear description: Files a meeting's action items in Linear, one issue per task. Use it after a meeting whose tasks your team tracks in Linear. metadata: accepts: "meeting" requires: "linear" tools: "linear__list_teams, linear__save_issue" --- 1. Read the meeting's Summary with read_document and find its action items. 2. Find the team with linear__list_teams. 3. For each action item, create an issue with linear__save_issue. … ``` What each action may do is yours to decide, on the **Connections** tab of the Skills page: **Off**, **Ask**, **Allow** or **Allow in automatic runs**. A skill can't change that. In a run nobody is watching, an action that changes something waits for your approval unless you chose **Allow in automatic runs**; see [Automations](https://samuraiscribe.com/docs/automations/#connections-in-automatic-runs). ## Writing instructions that work The built-in model is small, and a skill also runs on whatever model you choose. These habits make a skill reliable on all of them: - **Short, numbered steps.** One action each, naming the tool to use. - **Say what the output looks like**: its sections in order, the form of a line, roughly how long. - **Say what to do when the material isn't there.** "If the meeting has no transcript yet, say so in one line and stop." A meeting can have notes, documents or a calendar invite and still no transcript. - **Use only what was said.** Tell it not to invent names, dates or numbers. A skill that makes up a decision is worse than none. - **For long meetings**, read with `digest_transcript` rather than paging through `read_transcript`. - **Name the language.** "Write in the same language as the meeting." - **For a profile step, the reply is the document.** Tell it to begin with the first heading, with no title or preamble. - **Say what not to touch.** "Do not change anything else in the transcript." - **Keep it portable** if you will share it: no folder names, people or clients of your own. Let the tools find things. - **When it runs is not in the skill.** That is an automation, which belongs to whoever uses the skill. `suggested_trigger` is only a hint. ## An example A complete skill that writes a recap of a client call: ```markdown --- name: client-recap description: Writes a short recap of a client call — what the client asked for, what was agreed and who does what next. Use it after a call with a client. metadata: accepts: "meeting" document: "Client recap" category: "Follow-up" --- Write a recap of this client call. 1. If the meeting has no transcript yet, say so in one line and stop. 2. Read the whole meeting with digest_transcript. Ask it for: what the client asked for or worried about; anything both sides agreed; and each next step, with who owns it and any date that was said. 3. Reply with the recap itself, in Markdown, beginning with the first heading. Use these sections, and leave out any that would be empty: ## What they asked for Short bullet points, in the client's own terms. ## What was agreed Each agreement, stated plainly. ## Next steps One line each: `- [ ] **Owner** — step`. Add a date only if one was said. Rules: - Use only what was said. Never invent a name, a date or a number. - Call people by name when the name is known. - Write in the same language as the meeting. ``` Run it from the Skills page on a few meetings to try it. Then add it as a step of a processing profile, and every meeting that profile processes gets a **Client recap** document. As a profile step it is free, and it writes into the meeting directly; an [automation](https://samuraiscribe.com/docs/automations/) suits work outside the meeting, such as a running log or issues in a tracker. ## Test and fix a skill 1. **Run it by hand** from the Skills page on at least three meetings: a short one, a long one, and one where the material it looks for isn't there. 2. **Read what it did.** The run's conversation shows each step and the answer. The **Log** tab on the Skills page keeps every run. 3. **Fix the instructions** where it went wrong, and run it again. Most problems are a step that is vague, or a missing "if there is none, stop". A card or the editor that says **Needs fixing:** names a problem with the file: - **its name says "…" but its folder is "…"**: make the `name` match the folder's name. - **it has no description saying what it does and when to use it**: add a `description`. - **it has no instructions**: write the steps after the header. - **its metadata is written in a form the app cannot edit**: write `metadata` as one level of `key: "value"` lines, without nesting, lists or `{…}`. - **its suggested_trigger cannot be read**: use one of the forms in the table above. - **its tools list names …, which is neither an app tool nor a tool of a connection it requires**: fix the tool's name, add its connection to `requires`, or remove it. You can still run a skill that needs fixing by hand, as long as it has instructions. No automation runs it until it is fixed. ## Limits - A skill's name: at most 64 characters. - A profile step: at most 8 documents written in one run. - A skill in the shared library: at most 32 files, none larger than 512 KB. The app leaves a bigger one out of **Shared skills**. ## Share it in the library The shared library is a public repository on GitHub, [github.com/samuraiscribe/skills](https://github.com/samuraiscribe/skills), under the MIT license. The **Share a skill on GitHub** card, at the end of **Shared skills** on the Skills page, opens it. 1. Try the skill on at least three real meetings of different lengths, until it is right every time. 2. Make sure it says what it works on with `accepts`. If you checked it on the built-in model, on short, medium and long meetings, add `tested_with: "local"`. 3. Copy its folder from your vault's `Skills/` into the repository's `skills/` folder, and open a pull request. The pull request is checked automatically, and a maintainer reads every skill before it is published. The repository's CONTRIBUTING file has the details. Once it is merged, the skill appears under **Shared skills** for everyone. ## Skills from other apps A skill written for another app in the Agent Skills format can go in your vault's `Skills/` folder as it is. Copy its folder there, and it appears on the Skills page. Check three things: - **The folder's name matches its `name`.** - **`metadata` is one level of `key: "value"` lines.** Other shapes are kept as written, but the skill shows **Needs fixing:** and no automation runs it. - **The tools it names are Samurai Scribe's**, as listed on this page. Instructions written for another app's tools won't find them here. A Claude Code skill's `argument-hint` and `$ARGUMENTS` work here as they are, even with the hint at the top of the header, where Claude Code writes it. Write it under `metadata` in a new skill, since the Agent Skills format has no such key. An `allowed-tools` key is kept but not read: what a skill may change without asking is your setting, never the skill's. List the tools a skill uses under `metadata` as `tools` instead. Skills written for older versions of Samurai Scribe may carry `trigger`, `schedule`, `minutes_before` or `title_contains` keys. The app doesn't act on them: make an [automation](https://samuraiscribe.com/docs/automations/) instead, and leave them out of new skills. --- # Automations > Have a skill run by itself after each meeting is processed, before calendar meetings, or on a schedule. Automations need Pro and run while Samurai Scribe is open. - Page: https://samuraiscribe.com/docs/automations/ - Checked with Samurai Scribe 0.65.0 - Plan: needs Pro An [automation](https://samuraiscribe.com/docs/glossary/#automation) runs one of your [skills](https://samuraiscribe.com/docs/skills/) by itself: after each meeting is processed, a few minutes before calendar meetings, or on a schedule. The skill says what to do; the automation says when, and for which meetings. Automations need Pro, and they run only while Samurai Scribe is open. Without Pro, you can still run any skill by hand. ## Make an automation On the **Skills** page, open the **Automations** tab and press **New automation**. You need at least one skill first. There are two shortcuts: - Hover over a skill's card and press **Run it by itself…**. The new automation is filled in from the skill's suggestion, if it has one. - After you install a shared skill whose author suggests when to run it, the app asks **Run it automatically?**. **Make an automation** opens a new automation for it, filled in. The automation has these fields: - **Run**: the skill. - **When**: **After each meeting is processed**, **Before calendar meetings** or **On a schedule**. - For a schedule: **How often** (**Every day**, **Weekdays**, **Every week** or **Every hour**), a **Day** for a weekly one, and **At**, a time written as HH:MM in your computer's local time, such as 08:00 or 17:30. - For calendar meetings: **How long before**, 5, 10, 15, 30 or 60 minutes. 10 is the default. - For the two kinds about meetings: **Only meetings titled with (optional)**. See [Only some meetings](#only-some-meetings). - For a skill that takes an argument, a field named after it, such as **Language**: "What the skill is given each time it runs." See [Arguments](https://samuraiscribe.com/docs/skills/writing/#arguments). - For a schedule and a skill that works on notes: **Choose a note…**, the note each run is on. Until you choose one, the editor says "Runs on no note yet". - **Its meeting**, for **After each meeting is processed**, and **Elsewhere**: what the skill may change without asking. See [What it may change](#what-it-may-change). Press **Save**. One skill can have several automations, and the skill's card shows when it runs, such as "After each meeting" or "Every day at 08:00". ## When each one runs ![Around a calendar meeting, Before calendar meetings runs 5 to 60 minutes before the meeting starts, 10 by default, and hands the skill the calendar event with its time, people and invite. After each meeting is processed runs when the meeting's run finishes, and hands the skill the meeting with its transcript, notes and documents. On a schedule runs every hour, every day, on weekdays or once a week at a time you choose, and hands the skill nothing, so the skill looks up what it needs. All of them run only with Pro and while Samurai Scribe is open, and a scheduled time missed by more than an hour is skipped.](https://samuraiscribe.com/images/docs/automations/when-they-run.svg "What starts each kind of automation, and what it hands the skill.") ### After each meeting is processed It runs when a meeting's [run](https://samuraiscribe.com/docs/glossary/#run) finishes, and hands the skill that meeting: its transcript, notes and documents. - **Any finished run counts**: one you start with **Run**, one that starts when a recording stops (**Settings → Mic & Audio → Process automatically when a recording stops**), and each meeting of a bulk import while **Run after-meeting automations** is ticked, as it is to begin with. - **A meeting nobody runs never triggers it.** By default (**Calendar meetings**), a recording started from a calendar meeting is processed when it stops; any other recording, such as a Quick Record, waits for you to press **Run**. - **Once per meeting.** Running the meeting again doesn't run the automation again. - **Not twice.** If the meeting's [processing profile](https://samuraiscribe.com/docs/profiles/) already ran the same skill as a step, the automation leaves it. - A run that fails or that you stop doesn't trigger it. - **A run waiting for your review** triggers it once you have kept or discarded what a step left waiting (see [Processing profiles](https://samuraiscribe.com/docs/profiles/#when-a-step-waits-for-your-review)). ### Before calendar meetings It runs the chosen number of minutes before a calendar meeting starts, and hands the skill the calendar event: its title, time, attendees and invite. - It needs a connected calendar. - It skips all-day events, cancelled ones and ones you declined. Each occurrence of a repeating meeting counts on its own. - Samurai Scribe has to be open in the minutes before the meeting. Once the meeting has started, that occasion is gone. ### On a schedule It runs at the time you set, and hands the skill the note you chose for it, or nothing. A skill handed nothing looks up what it needs itself, such as last week's meetings, so it should be one that works on nothing in particular (**WORKS ON** with nothing ticked, or **Also without one**). - **Every hour** runs once an hour, at the start of the hour. - **If the app wasn't open** at the time, or the computer was asleep, the automation still runs as long as Samurai Scribe is running again within an hour of that time. Later than that, the time is skipped rather than caught up, and the next one runs as usual. - **Saving waits for the next time.** An automation saved, or switched back on, after its time has passed first runs at its next time: tomorrow for a daily one, next week for a weekly one. ## Only some meetings **Only meetings titled with** limits an automation about meetings to those whose title contains what you type, ignoring capitals. With `Acme`, it runs for "Acme weekly sync" and "Call with ACME", and for no other meeting. For **After each meeting is processed**, the title is the meeting's title when its run finishes. Leave it empty to run for every meeting. ## What the skill is handed, and what it expects What an automation hands a skill follows from when it runs: the meeting that just ended, the calendar meeting about to start, or nothing. A skill says what it works on under **WORKS ON** in its editor. If the two don't match, the automation editor warns that the skill may not know what to do with it, but saves the automation anyway. [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#make-a-skill-in-the-app) explains **WORKS ON**. ## Where the results go Each run is a conversation in the assistant, named after the skill and what it ran on. - **The Log tab** on the Skills page lists every run. An automation's runs that you haven't opened yet are in bold, with a dot, and hovering the assistant's button says "A skill ran — see what it did". Click a run to open its conversation and see what the skill did. - **What it changes follows the automation's two settings**, not the assistant's mode: see [What it may change](#what-it-may-change). A change that waits shows in a card at the bottom right of the window, with **Review…**, **Discard** and **Keep**, and a change to a meeting is listed under that meeting's **All changes**. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/). ## What it may change A skill run by an automation may change notes wherever **Settings → AI Apps → Folder Access** lets AI edit. Two settings in the automation's editor say what applies without asking. Each has an ⓘ that explains it. ### Its meeting **Its meeting**, only for **After each meeting is processed**, covers what the skill changes in the meeting it runs on: its documents, its transcript and its notes. | Setting | What happens | |---|---| | **Auto**, the default | Changes are made as it runs, with undo. | | **Accept edits** | The same, but moving or deleting the meeting's documents waits for you. | | **Review** | Every change waits for you. | ### Elsewhere **Elsewhere** covers every other note in the vault. | Setting | What happens | |---|---| | **Ask** | Reads other notes, changes none. | | **Review**, the default | Changes wait for you; you review them afterwards. | | **Accept edits** | Edits and new notes are made as it runs, with undo. | Choosing **Accept edits** for **Elsewhere** asks first (**Change notes without asking?**): the automation will then change notes every time it runs, with nobody reading the change first. Moves and deletes outside the meeting always wait, and so does anything in your Skills, Scripts and Dictionary folders. > [!TIP] > To have a skill write a document into every meeting, such as a recap, add it as a step of your [processing profile](https://samuraiscribe.com/docs/profiles/) instead. A profile step is free, and writes its document straight into the meeting when you run it. Automations suit work outside the meeting: a running log, a weekly review, a brief before a call, issues in a tracker. ## Connections in automatic runs A skill can work in a service such as Linear or Notion through a [connection](https://samuraiscribe.com/docs/glossary/#connection). In a run nobody is watching, each of the service's actions does what its permission on the **Connections** tab says: - **Off**: never used. - **Ask**: waits for you. - **Allow**: runs if it only reads. An action that changes something waits for you. - **Allow in automatic runs**: runs with nobody watching. The app asks you to confirm first. It is never a default, and a skill can't set it. An action that waits shows as a card at the bottom right: "An automation wants to act in Linear", with what it would send. **Approve** runs it; **Deny** doesn't. If a skill needs a connection you haven't connected, its automations don't run until you connect it. ## Switch one off, change it or delete it Each automation on the **Automations** tab has: - **a switch**, to turn it off and on without losing it; - **Edit**, to change any field; - **Delete**. The skill itself is kept. Deleting or renaming a skill leaves its automations in place. Their cards then say **Will not run:** and why: edit them to choose a skill, or delete them. If two automations would run the same skill for the same meeting, or the same calendar meeting, it runs once. ## With and without Pro Automations need Pro. A Pro trial that was already running when you updated to 0.65 includes them until it ends; new installs start without a trial. Without Pro, the **Automations** tab and each automation's card carry the Pro mark; the automations are kept as they are, and nothing runs by itself. You can still run their skills by hand, from the Skills page or the assistant. When Pro starts again, they run again, with no restart. ## Several computers Automations are saved in the vault's hidden `.samurai/` folder, so they travel with a synced vault (Obsidian Sync skips that folder; see [The vault](https://samuraiscribe.com/docs/vault/#syncing-and-backing-up)). Each computer runs them while Samurai Scribe is open there: - **On a schedule** and **Before calendar meetings** run on every computer where the app is open at the time. With the app open on two computers, a weekly review runs twice. - **After each meeting is processed** runs on the computer that processed the meeting. ## Why didn't my automation run? Check these, in order: 1. **Pro.** Is Pro active? A Pro badge on the automation's card means automations aren't running. 2. **The app was open.** Samurai Scribe has to be running at the time, with the computer awake. A scheduled time missed by more than an hour is skipped. A calendar meeting's automation needs the app open before the meeting starts. 3. **The switch.** Is the automation switched on? 4. **Its card says Will not run:** The skill was deleted or renamed, the skill needs fixing, or the schedule can't be read. The message says which. 5. **The title filter.** Does the meeting's title contain the words in **Only meetings titled with**? 6. **After a meeting:** did the meeting's run finish, or is it waiting for your review? Only recordings started from a calendar meeting run by themselves, unless you changed **Process automatically when a recording stops**; others wait for **Run**. Was **Run after-meeting automations** unticked in a bulk import? Did the profile already run the same skill as a step? Has the automation already run once for this meeting? 7. **Before a calendar meeting:** is the calendar connected, and is the meeting a timed one you haven't declined? 8. **A connection.** Does the skill need a service you haven't connected? 9. **Just saved.** A scheduled automation saved after today's time waits for the next one. If the **Automations** tab says "Automations could not be read, so none are running", the file that holds them is damaged, for example by a sync conflict. The message says where it is. Restore it from your sync tool's history, or move it aside and make the automations again. If the run happened but nothing seems to have changed, open it from the **Log** tab: what it wrote is probably waiting for your review, as the automation's **Elsewhere** setting starts on **Review**. --- # Processing profiles > A profile is the recipe a run follows, from transcribing and telling voices apart to the steps that write the meeting up. Choosing, changing and making them. - Page: https://samuraiscribe.com/docs/profiles/ - Checked with Samurai Scribe 0.65.0 A [processing profile](https://samuraiscribe.com/docs/glossary/#processing-profile) holds the settings for a [run](https://samuraiscribe.com/docs/glossary/#run): whether to transcribe the audio, how many voices to expect, whether to recognise people by voice, and which [steps](https://samuraiscribe.com/docs/glossary/#step) write the meeting up afterwards. You pick one that fits a kind of meeting, such as a call, a meeting in a room or a voice memo, instead of adjusting settings every time. Profiles are free. A profile doesn't choose models or languages. Every run transcribes, tells voices apart and writes with the models set in **Settings → AI Models**, whichever profile it follows. ## The built-in profiles Samurai Scribe comes with six profiles. They are templates: use them as they are, or start your own from one. - **General Meeting**, the one new meetings start with. It suits any meeting, on a call, in a room or both, and works out how many people are on each side by itself. - **Remote 1-on-1**: you on a call with one other person. Each side is labelled by the device that recorded it. - **In-Person 1-on-1**: you and one other person in the same room, on one microphone. - **Remote Meeting**: you on a call with several other people. Your side is you; the call side is split into speakers. - **Solo Voice Memo**: just you, thinking out loud. One voice, no call audio. - **Summarize-Only**: writes up a meeting you have already transcribed, without transcribing it again. Each of them writes a summary with the built-in script, which also names the meeting, unless you have named it yourself or its name comes from your calendar. ## Choosing a profile for a meeting The profile button is at the left end of the bar under the meeting's card, before the two stages and **Run**. Click it for the list of profiles: - Click a profile to use it for this meeting. - The star beside a profile (**Use this profile for new meetings**) makes it the one new meetings start with. Each computer remembers its own default. - **⋯** (**Profile options**) has **Rename**, **Edit description**, **Duplicate** and **Delete** for a profile of your own, and **Duplicate** for a template. - **Manage** opens the Profile Manager, below. The two stages beside the button, **Transcribe** and **Summarize**, show what the profile will do: - Click a stage's name to switch it off or on for this meeting, for example to write a meeting up again without transcribing it. - Click its ▾ (**Open Transcribe settings**, **Open Summarize settings**) to open the Profile Manager at that stage's settings. - For a meeting transcribed as you spoke, **Transcribe** reads **Done**: a run keeps that transcript, speakers and all, and writes the summary. Click it to transcribe the meeting again from its audio when you run it. Whatever you change, here or in the manager, applies to this meeting only until you save it to a profile. A changed setting shows a **Revert to the profile** button, and the profile button's ↺ (**Discard All changes**) puts every setting back. Unsaved changes stay with their meeting while the app is open: you can open another meeting and come back to them. Picking another profile for the same meeting asks first: **Unsaved changes** offers **Save** (not for a template), **Save as New**, **Discard** or **Cancel**. [Import Bulk Recordings](https://samuraiscribe.com/docs/how-it-works/#running-the-meeting) asks which profile to run the imported meetings with. ## Making and changing profiles **Manage** opens **Manage Processing Profiles**. On the left, under the profile button, is a card with the profiles; on the right, a panel for each stage. The card, from the top: - **Search profiles…** filters the list, and **+** (**New profile**) makes a profile from the settings you have now. It asks for a name, starting with "Untitled Profile", and **Create** saves it. - **Save** saves your changes into the profile you have open. For a template it reads **Save as New** and asks for a name, since a template can't be changed in place. A name another profile already has is refused. - The ↶ button (**Discard all changes**), shown only when something has changed, puts every setting back as the profile has it. × closes the manager. - **Show profiles** unfolds the list: your own under **YOUR PROFILES**, the built-in ones under **TEMPLATES**. It is folded each time the manager opens. Each profile in the list has: - the star (**Set as default for new meetings**), as in the profile button's list; - **⋯** with **Rename**, **Edit description**, **Duplicate** and **Delete**. Templates can only be duplicated. **Duplicate** asks for the copy's name, starting with "… copy". A description says what the profile is for. It shows under the name in the profile button's list. ## The settings in a profile The manager has two panels, **Transcription** and **Summarization**. Each has a switch on its title row that turns that stage on or off. ### Transcription Turned off, a run keeps the transcript the meeting already has, which is what **Summarize-Only** does. A meeting without a transcript can't be run that way. - **As you speak** or **When you finish**: how meetings are transcribed. It is saved for the whole app, not per profile ("Applies to every meeting"). - **As you speak** transcribes the meeting while it is recorded; **Run** then writes it up. - **When you finish** only records, and the transcript is made when you press **Run**. - A file you import is always transcribed when you press **Run**. - The model lines (**Model**, and **Captions** for what shows on screen while recording) show which models will transcribe. **Change in Settings** opens **Settings → AI Models**; [Transcription](https://samuraiscribe.com/docs/transcription/) explains the models, languages and modes there. - **Number of voices** helps the run tell voices apart: - **On your mic**: the people in the room with you, when your mic and the call are recorded as two tracks. - **On the call**: everyone joining remotely, heard through your computer's sound. These first two need **Source isolation**. - **In uploads**: everyone on an uploaded file, or on a recording of the mic alone. Each is **Auto** or a number from 1 to 10. Leave it on **Auto** unless you know the number. With 1, everyone on that recording, or on that side of it, is one voice. - **Advanced** holds three switches. It opens by itself while one of them differs from the profile. - **Source isolation** keeps the mic and the system audio on separate tracks. - **Echo removal** removes the other side of the call where your mic picks it up from your speakers. It acts only where there is echo, so headphones are unaffected. - **Recognise people by voice**: voices are always told apart, as "Speaker 2" and so on. With this on, the people the app knows are also named by their [voice](https://samuraiscribe.com/docs/glossary/#voice-print). ### Summarization Turned off, nothing is written after the transcript. - **Model** shows the model that writes, set in **Settings → AI Models**. - **Steps** is the list of what writes the meeting up, in order. The next section explains them. ## Steps The summarization stage runs its steps in order, and each step can read what the steps before it wrote. A follow-up email can start from the summary, for example. ![A run, top to bottom. Transcription comes first: what was said, and who spoke. Then the Summarization stage runs its steps in order. Step 1, a script, writes Summary. Step 2, a skill, reads Summary and writes Follow-up Email. Step 3, Name the meeting, reads what both wrote and names the meeting.](https://samuraiscribe.com/images/docs/profiles/steps.svg "Each step can read what the steps before it wrote.") There are three kinds of step: - **Script** runs a [script](https://samuraiscribe.com/docs/glossary/#script): the built-in one (**Built-in default**), or one of yours from the vault's `Scripts/` folder. The button inside the step picks which, and **Edit** opens it. See [Scripting](https://samuraiscribe.com/docs/scripting/). - **A skill** from your Skills folder, run on the meeting. Click its card to open it in the skill editor. See [Skills](https://samuraiscribe.com/docs/skills/). - **Name the meeting** names the meeting from what the steps before it wrote. It does nothing when you have named the meeting yourself, or when its name comes from your calendar. **Adding and ordering.** **Add a step**, at the end of the list, offers **Script**, each skill in your Skills folder under **SKILLS**, **Name the meeting**, and **New skill…** to write one. Each can be in the list once; one already there is greyed and marked **Added**. A new step goes in before **Name the meeting**, so the name comes from everything written. Drag a step's ≡ handle to move it, and **Remove step** (×) takes it out. With no steps, nothing is written. **A skill that takes an argument**, such as a language, has a field on its card, named after what it takes. What you type there is given to the skill every time the step runs. See [Writing a skill](https://samuraiscribe.com/docs/skills/writing/#arguments). **What each step writes.** - A script writes the documents it creates, under the names it gives them, and can name the meeting. It reads what earlier steps wrote by name. - A skill writes documents into the meeting, up to 8 in one step, and can name the meeting. It never writes over your own documents, such as your notes. Running it again replaces what it wrote last time. It can also change the transcript, for example to polish or translate it. - Running a script again writes its documents again. A document it no longer writes is left as it was. - Scripts and skills can also read and change notes elsewhere in the vault, as the step's settings allow. Running a meeting that already has a transcript or summary asks first: see [Running a meeting again](https://samuraiscribe.com/docs/how-it-works/#running-a-meeting-again). ### What a step may change A script or skill step has two settings, in two columns beside the steps (under the step's name when the panel is narrow). Each column's ⓘ explains it. They are your choice; a script may ask for more review, never less, and a skill can't change them. #### This meeting **This meeting** covers what the step writes into the meeting: its documents, like the Summary, its changes to the transcript, and changes to the meeting's own notes. | Setting | What happens | |---|---| | **Auto**, the default | Written as it runs, as a run always has been. Changes to the meeting's notes can be undone. | | **Accept edits** | The same, but moving or deleting the meeting's documents waits for you. | | **Review** | Nothing in the meeting is written until you keep it, the Summary included, and the steps after it wait for you. | #### Elsewhere **Elsewhere** covers every other note in the vault, and only in folders AI may edit (**Settings → AI Apps → Folder Access**). | Setting | What happens | |---|---| | **Ask** | Reads other notes, changes none. | | **Review**, the default | Changes wait for you, and so do the steps after it. | | **Accept edits** | Edits and new notes are made as it runs, with undo. | Choosing **Accept edits** for **Elsewhere** asks first (**Change notes without asking?**): the step will then change notes outside the meeting for every meeting the profile processes, automatic runs included, from what anyone in a meeting said. Moves and deletes outside the meeting always wait, and so does anything in your Skills, Scripts and Dictionary folders. ### When a step waits for your review When a step leaves something waiting, the run waits with it: the steps after it, and the [automations](https://samuraiscribe.com/docs/automations/) that follow a meeting's processing, run once you have kept or discarded what waits. Everything up to that step is saved. - The meeting shows **Waiting for your review** in the sidebar. - A bar above the meeting's tabs says "Processing waits for you:" and what the step wants to change, with **Review…**, **Discard**, **Keep** and **All changes ›**. - Once you decide, the run goes on. When a step applied changes by itself, the same bar says what it changed, with **Review** and **Undo**. **All changes** in the meeting's title bar lists everything changed from the meeting: see [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/#all-changes-to-a-meeting). ### When a step fails The run stops there and keeps the documents from the steps before it. With more than one step, the message names the step, such as "The skill "Follow-up email" failed: … Documents from the steps before it were kept." Two warnings can show on a step's card in the **Steps** list: - "Not in your Skills folder — this step will fail." The skill was renamed or removed. - "Unknown step": a newer version of Samurai Scribe, on another computer that shares the vault, saved a kind of step this one doesn't know. It is kept as it is, and a run stops when it reaches it. Update the app on this computer. ## Where profiles are kept - A profile of your own is a file in the vault's `Profiles/` folder, named after it, such as `Profiles/Client Calls.json`. It goes wherever the vault goes, so a synced vault has the same profiles on every computer. You can move the folder in **Settings → Vault → Folders**. - The templates aren't files. They come with the app, and an update can improve them. - A profile's name can be up to 100 bytes (fewer characters in some languages). It can't start with a dot, end with a dot or a space, contain any of `/ \ : * ? " < > |`, or be a name Windows reserves, such as `CON` or `NUL`. --- # Scripting > Scripts decide exactly how a profile writes up a meeting, and can update notes across your vault. Where they live, the editor, the step's settings, and a first script. - Page: https://samuraiscribe.com/docs/scripting/ - Checked with Samurai Scribe 0.65.0 A [script](https://samuraiscribe.com/docs/glossary/#script) is a short program that writes up a meeting after it is transcribed. It runs as the **Script** step of a [processing profile](https://samuraiscribe.com/docs/profiles/), and it decides exactly what gets written: which documents, what the model is asked for each, in what order, and whether the meeting gets a new name. It can also read your other notes, and add to or change notes elsewhere in your vault, such as your daily note, as far as you allow. Scripts are written in [Rhai](https://rhai.rs/book/), a small scripting language that reads much like JavaScript. Every built-in profile runs the built-in script, which writes `Summary.md` and names the meeting. You write your own when you want different documents, or exact control over them. Writing, testing and running scripts is free. The [scripting reference](https://samuraiscribe.com/docs/scripting/reference/) lists everything a script can use, and the [cookbook](https://samuraiscribe.com/docs/scripting/cookbook/) has complete scripts to start from. ![A script reads the transcript, who said what and when; the meeting's attachments, such as your notes, PDFs, slide decks and images; its calendar invite; and the documents earlier steps wrote. Its run function asks the model, in the order the script says. It writes documents into the meeting's folder, such as Summary.md and Action Items.md, and can rename the meeting, unless you named it yourself or its name comes from your calendar.](https://samuraiscribe.com/images/docs/scripting/what-a-script-uses.svg "What a script works from, and what it leaves in the meeting.") ## Script or skill? A profile's steps can be a script, [skills](https://samuraiscribe.com/docs/skills/), or both. Each suits different work: - **A skill** is plain-English instructions. The model follows them and decides for itself which of your other meetings and notes to look through. Pick a skill when the task needs judgement. - **A script** is a program. It sends the model exactly the requests you write, and writes exactly the documents and notes you name. Pick a script when you want the same shape of output every time, need long meetings handled in parts, want a note elsewhere updated the same way after every meeting, or want something worked out without the model at all, such as who spoke most. A profile runs one script. To get the built-in summary and something more, write a script that makes both, or add a skill step after the script. ## Where scripts live - **Your scripts** are files in the vault's `Scripts/` folder, one `.rhai` file each, named after the script: `Scripts/Action items.rhai`. They go wherever the vault goes, so a synced vault has them on every computer. You can move the folder in **Settings → Vault → Folders**. - **The built-in script** isn't a file. It comes with the app and improves with it. You can open it and read it in the editor, and a new script starts as a copy of it. The app reads the `Scripts/` folder when it starts, and again when you save, rename, delete or import a script in the app, or move the folder. A run uses the copy the app last read, so a `.rhai` file you add or edit outside the app is used after one of those, or the next time Samurai Scribe starts. ## Choosing a script for a profile Open the [profile manager](https://samuraiscribe.com/docs/profiles/#making-and-changing-profiles) and find the **Script** step in the **Summarization** panel. If the profile has none, add it with **Add a step → Script**. On the step: - **The script button**, beside **Script**, shows which script runs: **Built-in default** or a script's name. Click it for the list: - **Built-in default**, which "Ships with the app". - Your scripts. **…** (**Script options**) beside one has **Rename** and **Delete**. Deleting removes the file and can't be undone. - **Open**, on each row, chooses that script and opens it in the editor. - **Search or name a new script…**: type a name that isn't taken and press **New** to make a script. It starts as a copy of the built-in script, so it runs before you change anything. - **Import .rhai…** copies a script file into your scripts and asks what to call it. - **Clicking the step** (**Open the script**) opens the chosen script in the editor. - **This meeting** and **Elsewhere** say what the script's changes may do by themselves: in this meeting's folder, and in the rest of your vault. See [Notes outside the meeting](#notes-outside-the-meeting). Then save the profile (**Save**, or **Save as New** for a template) so it keeps running that script. ## The script editor Clicking the step, or **Open** in the script list, opens **Edit Script**: the script, with a toolbar above it. A console opens below for results when you press **Validate** or **Test**. - **Validate** checks the script without using the model: it compiles it and tries it on a short sample meeting, so a part of the script that only long meetings or real answers reach isn't checked. The console's **Problems** tab says "✓ Script is valid", or shows the first error with its line and position. - **Test** runs the script on the meeting you have open, with the real model, the meeting's attachments and its calendar details. Each document the script writes gets a tab in the console and fills as the model writes it; **Title** shows a new name if the script gives one. Test saves nothing to the meeting. It reads your vault for real but changes nothing in it: what the script would change elsewhere is listed in a **Vault** tab. It needs a meeting with a transcript. - **print** and **debug** in a script show in **Problems**, under "script output", while you test. - **Cmd+R** on a Mac or **Ctrl+R** on Windows opens find and replace. - **Open in VS Code** saves a copy of the script to a file you choose and opens it in VS Code, or shows the file's folder if VS Code's `code` command isn't installed. Bring your changes back with **Import .rhai…**. When you close the editor, your edits stay with this meeting's settings, and the script's name on the script button turns orange ("Unsaved script" in place of **Built-in default**). Icon buttons at the right end of the script button then offer: - **Save script**, which saves the edits into the script's file. For edits to the built-in script it asks for a name and saves a new script. - **Save as new script**, which saves them under a new name. - **Discard edits**, which goes back to the saved script. ## What happens when a script runs - **Progress.** While the script runs, the **Summarize** stage fills and the run's status shows the messages the script reports, such as "Finding action items…". - **What is saved.** Each note the script writes becomes a document in the meeting's folder and a tab in the meeting: a note called `Action Items` is saved as `Action Items.md`. A name starting with a dot, such as `.Working`, makes a hidden document. Writing an empty note leaves an empty document: a script can't delete one. With the step's **This meeting** set to **Review**, the documents wait for you to keep them, the Summary included, and the steps after it wait too. - **Notes elsewhere.** What the script changes outside the meeting is made, or waits for you, when its step ends, as the step's **Elsewhere** setting says. See [Notes outside the meeting](#notes-outside-the-meeting). - **The meeting's name.** A script can rename the meeting. It is never renamed when you named it yourself, or when its name comes from your calendar. - **If the script fails** partway, from a mistake in it or a model error it doesn't catch, nothing it wrote is saved, in the meeting or elsewhere. The run stops with an error that says why; a mistake in the script reads "Summary generation failed: Script run() error: …". In a profile with more than one step, the message also names the step. - **If the script doesn't compile**, the run uses the built-in script for that meeting instead, and says so: "Your script could not be compiled (…). The built-in default script was used instead — fix the script in the script editor." The message gives the compiler's error, with its line and position. Validate before you save, so this doesn't catch you out. - **If it declares an API version this app doesn't run**, the run uses the built-in script and says so. See [API versions](https://samuraiscribe.com/docs/scripting/reference/#api-versions). - **If you stop the run**, nothing the script wrote is saved. > [!TIP] > A script runs again whenever its meeting is run again, and rewrites the documents it writes. Write the documents a script makes as its own, and keep your notes in documents it doesn't touch. ## Notes outside the meeting A script can read any note in your vault, and add to or change notes outside its meeting: put a link to each meeting in your daily note, keep a running list of action items, or file flashcards in a deck. It reaches them through `ctx.vault`; the [reference](https://samuraiscribe.com/docs/scripting/reference/#vault) has every function, and the [cookbook](https://samuraiscribe.com/docs/scripting/cookbook/#a-line-in-your-daily-note) has a complete script. What it may change is your choice, made on the step's row in the [profile manager](https://samuraiscribe.com/docs/profiles/#what-a-step-may-change), not in the script. **Elsewhere** has three settings: - **Ask**: the step reads other notes and changes none. - **Review**, the default: its changes wait for you, and so do the steps after it. The meeting's run reads **Waiting for your review** until you keep or discard them. - **Accept edits**: edits and new notes are made as the step ends, and can be undone. Moving or deleting a note still waits for you. The app asks before you turn this on, because notes then change for every meeting the profile runs on, automatic runs included. **This meeting** is about the documents the script writes into its own meeting: **Auto** (the default) and **Accept edits** save them as the step ends, and **Review** holds them, the Summary included, until you keep them. Whatever the settings, a script reads only what [folder access](https://samuraiscribe.com/docs/folder-access/) lets AI see, changes only Markdown notes in folders AI may edit, and its changes to the Scripts, Skills and Dictionary folders always wait for you. The **All changes** button in the meeting's title bar lists the changes made from the meeting, each opening its review, where an applied change can be undone and a waiting one decided. ## A first script This script writes `Action Items.md`: one checkbox per task, with who owns it, in the language the meeting was held in. ```rhai // Action items: one checkbox per task, with who owns it. const API_VERSION = "1.6"; const TEMPERATURE = 0.2; // What to ask the model. Rhai functions can't see variables from outside // them, so the text lives in a function that is handed what it needs. fn instructions(language) { let rule = if language == "" { "Write in the same language as the transcript." } else { "Write in " + language + "." }; "List every task someone agreed to do in this meeting.\n" + "Write one Markdown checkbox per task: - [ ] **Owner** — the task.\n" + "Add a due date only if one was said. Use only what the transcript says.\n" + "If nobody agreed to do anything, write: No action items.\n" + rule } fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; // Nothing was said: write nothing. if transcript.word_count == 0 { return; } let items = meeting.create_note("Action Items"); ctx.progress(0.1, "Finding action items…"); meeting.llm.write(items, instructions(transcript.language) + "\n\nTranscript:\n" + transcript.text()); } ``` What each part does: - `const API_VERSION = "1.6";` says which version of the scripting API the script is written for. - `const TEMPERATURE = 0.2;` asks the model for steady rather than varied wording. Write it with a decimal point. - `fn run(ctx)` is where every script starts. `ctx.meeting` is the meeting being written up. - `transcript.language` is the language most of the meeting was in, such as "Spanish", or empty when it can't tell. - `meeting.create_note("Action Items")` opens the document the script writes to. - `meeting.llm.write(...)` asks the meeting's model and writes its answer into the note as it arrives. To try it: 1. Open a meeting that has a transcript, and open the profile manager with **Manage**. 2. Click **Show profiles**, then **⋯** (**Profile options**) beside **General Meeting**, and choose **Duplicate**. Type a new name, such as "Action items", and press **Duplicate**. 3. In the **Script** step, click the script button, type `Action items` and press **New**. 4. Click the **Script** step to open the script, select everything, and paste the script above in its place. 5. Press **Validate**. **Problems** should say "✓ Script is valid". 6. Press **Test** and watch the **Action Items** tab fill. 7. Close the editor and press the **Save script** icon at the right end of the script button. Then press **Save**. Meetings run with the new profile now get `Action Items.md`. This profile no longer writes the built-in summary, and the script doesn't name the meeting: add a **Name the meeting** step after it if you want that (see [Steps](https://samuraiscribe.com/docs/profiles/#steps)). For the summary as well, the [cookbook](https://samuraiscribe.com/docs/scripting/cookbook/#several-documents-from-one-run) shows a script that writes several documents. A transcript too long for the model in one go needs handling in parts: see [Long meetings](https://samuraiscribe.com/docs/scripting/cookbook/#long-meetings). ## Rhai, briefly Rhai's own guide is the [Rhai book](https://rhai.rs/book/). A few things catch people out: - **Functions can't see variables from outside them.** Pass values in as arguments. A constant defined at the top of the script can be read inside a function as `global::NAME`. - **`trim()` and `replace()` change a string in place** and return nothing. Write `text.trim();` on its own line, then use `text`. - **Backtick strings** can span lines and fill in `${name}`, but they keep `\n` as the two characters. Use `"…"` for a string with `\n` new lines. - **`transcript.text()` is a function, `note.text` is not.** Write the brackets on one and not the other. - **`meeting.llm` gives a fresh copy each time.** To change its settings, keep one: `let llm = meeting.llm;`, then `llm.temperature = 0.1;`. - **Maps** are written `#{ key: value }`, and **errors** can be caught with `try { … } catch (err) { … }`. --- # Scripting reference > Everything a Samurai Scribe script can use in scripting API 1.6: the meeting, transcript, notes, model, your vault, calendar, standard library, limits and versions. - Page: https://samuraiscribe.com/docs/scripting/reference/ - Checked with Samurai Scribe 0.65.0 This page lists everything a [script](https://samuraiscribe.com/docs/glossary/#script) can use in Samurai Scribe 0.65.0, which runs **scripting API 1.6**. For what scripts are and how to make one, start with [Scripting](https://samuraiscribe.com/docs/scripting/); for complete examples, see the [cookbook](https://samuraiscribe.com/docs/scripting/cookbook/). Scripts are written in [Rhai](https://rhai.rs/book/). Rhai's own built-in functions for strings, numbers, arrays and maps all work. Beyond them, a script reaches the meeting and your vault only through the objects on this page: it can't reach the network by itself, and beyond its own meeting it sees only what [folder access](https://samuraiscribe.com/docs/folder-access/) lets AI see. Rhai's `eval` is turned off. Members added after API 1.4 are marked with the version that added them. ## A script's shape ```rhai const API_VERSION = "1.6"; // the scripting API this script is written for const TEMPERATURE = 0.3; // optional: 0.0 (steady) to 1.0 (varied) fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; let summary = meeting.create_note("Summary"); meeting.llm.write(summary, "Summarize this meeting.\n\n" + transcript.text()); } ``` - A script must define `fn run(ctx)`. Without it, Validate reports "Function run(context) is required but not defined". - `run` is called once per run. What it returns is ignored; what it writes to notes is what's saved. - A script can define as many other functions as it likes. A function can't see variables from outside it; pass them in. A top-level constant can be read inside a function as `global::NAME`. ## Constants A script sets these at its top level with `const`. All are optional except that every script should declare `API_VERSION`. - **`API_VERSION`** (text): the scripting API the script is written for, such as `"1.6"`. See [API versions](#api-versions). - **`TEMPERATURE`** (decimal number): how varied the model's wording is, from `0.0` to `1.0`. Without it, scripts use `0.4`. Write it with a decimal point: a whole number such as `1` is ignored. - **`CONTEXT_SIZE`** (whole number): how many tokens of text the model may be given at once. Without it, scripts use the context window set in **Settings → AI Models** for the summary model, even when the script sets `MODEL`, so a script with `MODEL` should set `CONTEXT_SIZE` too. It decides `llm.context_window`, and so what `llm.fits` and the chunking functions allow. - **`MODEL`** (text): a model for this script to use instead of the one in **Settings → AI Models**, written `provider/model`, such as `"ollama/llama3.1:8b"`. A name without a provider is an Ollama model. The model must be set up on this computer. Leave `MODEL` out unless you need it: a profile is often used on several computers. A hosted model sends what the script asks it to that service. ## RunContext `ctx`, what `run(ctx)` receives: the run. - **`ctx.meeting`** (Meeting): the meeting being written up. - **`ctx.meetings`** (array of Meeting): the meetings in this run. It holds one meeting, the same one as `ctx.meeting`. - **`ctx.vault`** (Vault, since 1.6): your whole vault, beyond the meeting's folder. Reading is always allowed; changing is up to the step's settings. See [Vault](#vault). - **`ctx.progress(fraction, message)`**: reports how far the script has got. `fraction` runs from `0.0` to `1.0` over the script's own work, written with a decimal point (a whole number such as `1` is an error); `message` shows with the run's progress, such as `"Writing the summary…"`. A script that never calls it still shows progress, estimated as it writes. ## Meeting - **`transcript`** (Transcript, read-only): what was said. - **`attachments`** (array of Note): the documents and files attached to the meeting under "Add optional meeting notes & attachments…", in the order you put them in. A meeting you have never attached anything to gives its `Notes` document, if it has one. Each arrives as text: - a document, as its text; - a PDF, Word (`.docx`), PowerPoint (`.pptx`) or text file, as the text read from it; - an image, as the text read out of it. Pictures inside attached files, and images pasted into an attached note, are read too. An image is read only when something can read it: the built-in model's image reading, an Ollama or LM Studio model that can see images, or a hosted model you have allowed to read images. Otherwise its text says why it wasn't read. Attached files can be read but not written. - **`create_note(name)`** (Note): opens the note called `name`, creating it the first time. The same name gives the same note, so a script can reach it from anywhere. A new note starts empty, with one exception: the name of an attached document gives that document, with its text, and writing to it changes your document. See [Note](#note) for the rules on names. - **`read_note(name)`** (text): the text of the document called `name` as the meeting's folder held it when this step started, including what earlier steps of the run wrote. `""` when there is none. Reading never opens or changes the document. - **`title`** (Note): the meeting's name. Write to it to rename the meeting. The new name is ignored while `title_locked` is true. - **`title_locked`** (true or false): true when you renamed the meeting yourself, or when it is linked to a calendar event. A script shouldn't rename it then. - **`llm`** (Llm): the meeting's model, ready to use. Each read gives a fresh copy, so keep one with `let llm = meeting.llm;` to change its settings. - **`calendar`** (CalendarEvent): the calendar event the meeting is linked to. Always present; check `calendar.is_linked`. - **`created_at`** (text): when the meeting happened, in local time, such as `2026-10-28 14:05:09`: its calendar event's start, else when its recording began. Up to 0.64.1 it was the time the run started, so a meeting run on a later day was dated that day. - **`date`** (text, since 1.6): the day the meeting is filed under, such as `2026-10-28`. With a calendar event, it is the event's day. Daily notes are usually named this way. - **`folder`** (text, since 1.6): the meeting's folder, from the top of the vault, such as `Meetings/2026-10-28 Design Review`, wherever it is filed. - **`link`** (text, since 1.6): a link to the meeting's own note, such as `[[2026-10-28 Design Review]]`, ready to write into another note. Obsidian follows it to the meeting. - **`dictionary`** (array of maps, since 1.5): how you spell your words, from the [Dictionary](https://samuraiscribe.com/docs/dictionary/), your lists of names, products and jargon in the vault's Dictionary folder: each entry as `#{ written, heard }`, the term as it should be written and an array of what a transcript may have instead (often empty). The Dictionary's entries come first (on the free version, the first ten), then this meeting's names, yours and the invitees', when the Dictionary's **Add each meeting's names** is on. Empty when you have no Dictionary. The transcript already uses these spellings when the run transcribed it; the list is for what the model writes. See [dictionary_block](#dictionary_block). ## Transcript - **`text()`** (text): the whole transcript, one line per turn: `Speaker: what they said`. - **`text(options)`** (text): the same, shaped by a map of options: - `speakers` (true or false, default true): start each line with the speaker's name; - `timestamps` (true or false, default false): start each line with its time, such as `[12:30]`; - `from` and `to` (seconds): only the turns that start in that range. For example, `transcript.text(#{ timestamps: true, to: 600 })` is the first ten minutes, with times. - **`turns`** (array of maps): each turn as `#{ speaker, text, start, end }`, with `start` and `end` in seconds. - **`speakers`** (array of text): each speaker's name, in the order they first spoke. A speaker you haven't named has a placeholder name, such as **Mic Speaker** or **Speaker 2**. - **`speaker_stats`** (array of maps): each speaker as `#{ name, speaking_percentage }`, how much of the meeting they spent speaking. With people talking over each other, the percentages can add up to more than 100. - **`word_count`** (whole number): the words spoken, counted between spaces, so Chinese and Japanese give very low counts. - **`token_count`** (whole number): an estimate of the transcript's length in tokens. - **`duration_minutes`** (decimal number): minutes from the start to the end of the last thing said, not the length of the recording. - **`language`** (text): the language most of what was said is in, by its English name, such as `"Japanese"`. `""` when the transcript is too short or too mixed to tell. `text` here is a function: write `transcript.text()`, with the brackets. ## Note A note is named text that a script reads or writes: a document of the meeting, an attached file, the meeting's name, or, since 1.6, a note anywhere in your vault opened with [`ctx.vault.note`](#vault). - **`text`** (text, read and write): the note's text. Setting it replaces the whole note, and the meeting shows the new text straight away. - **`append(text)`**: adds to the end of the note, shown as it is added. - **`title`** (text, read-only): the note's name. For the meeting's name it is `"Title"`. - **`hidden`** (true or false): whether the name starts with a dot. - **`kind`** (text): `"markdown"` for a document, `"pdf"`, `"word"`, `"powerpoint"`, `"text"` or `"image"` for an attached file, and `"title"` for the meeting's name. - **`writable`** (true or false, since 1.6): whether the script may write to the note. For the meeting's documents and its name, true unless it is an attached file. For a note from the vault, see [A note from the vault](#a-note-from-the-vault). **What is saved.** When the script finishes, each note it wrote is saved as a document in the meeting's folder, named after the note: a note called `Summary` becomes `Summary.md`. When the step's **This meeting** setting is **Review**, they wait for you to keep them instead (see [What a step may change](#what-a-step-may-change)). Notes the script only read are left alone. Setting a note's text to `""` leaves the document there, empty: a script can't delete a document. A name that starts with a dot, such as `.Working`, makes a hidden document: it has no tab in the meeting once the run ends, and Obsidian doesn't show it. **Names.** `create_note` refuses: - names starting with `_`, which belong to the app's own files, and `Notes` in any capitals, which is your own document (read it through `attachments`); - names containing `/` or `\`, or any of `< > : " | ? *`; - names ending with a dot. Spaces at either end are trimmed first. Give the name without `.md`: `create_note("Summary.md")` writes `Summary.md.md`. A name ending in the extension of a file the app reads, such as `.txt`, `.csv`, `.pdf` or `.png`, gives a note that can be read but not written. A refused name is an error at that line, so a script can catch it. ## Llm The model a script writes with. `meeting.llm` is set up with the summary model from **Settings → AI Models**, or the script's `MODEL`. A script uses one model. - **`write(note, prompt)`** (text): sends `prompt` to the model and appends the answer to `note` as it arrives, so the meeting shows it being written. Returns the whole answer. It can't write to an attached file. - **`query(prompt)`** (text): sends `prompt` and returns the whole answer, without showing it anywhere. Use it for answers the script works with before writing. - **`fits(text)`** (true or false): whether `text` fits comfortably in the model's context window, with room left for instructions and the answer. True whenever the window isn't known. - **`model`** (text, read-only): the model's name exactly as given: `MODEL` as the script writes it, or the summary model from **Settings → AI Models**. - **`temperature`** (decimal number, read and write): the script's `TEMPERATURE`, or `0.4`. Set it with a decimal point: `llm.temperature = 1` is an error. - **`context_window`** (whole number, read and write): the tokens the model may be given at once, from `CONTEXT_SIZE` or the model's setting. - **`keep_alive`** (whole number, read and write): seconds the model stays loaded after a request. `-1` keeps it loaded; `0` lets it go straight away. It starts at your setting for the model. - **`unload()`**: frees the model's memory now, when `keep_alive` is `0`. Otherwise the model stays for its `keep_alive` time. The prompt goes to the model exactly as the script writes it. If the run is stopped, `write` and `query` return what had arrived so far, and nothing the script wrote is saved. If the model fails, they raise an error, which stops the script unless it catches it. An answer with no text is an error too. `write` raises one whenever the model answers with nothing, such as "… answered with no text.", so a blank document is never saved. `query` raises one only when the model spent its whole answer thinking and wrote nothing; otherwise an empty answer comes back as `""`, for prompts that may rightly have nothing to say. ## CalendarEvent `meeting.calendar`: the calendar event the meeting is linked to. - **`is_linked`** (true or false): whether there is one. When false, everything below is empty. - **`title`**, **`location`**, **`organizer`** (text). - **`description`** (text): the invite's description, up to about its first 2,000 bytes (fewer characters in Chinese or Japanese). - **`attendees`** (array of text): everyone invited, by name, or by email address where there is no name. Being invited doesn't mean they came. - **`starts_at`**, **`ends_at`** (text): date and time with its offset, such as `2026-10-28T10:00:00+01:00`. ## Vault `ctx.vault`, since 1.6: your whole vault, beyond the meeting's folder. A script can add a line to your daily note, keep a running list of action items across meetings, update a project's page, or file flashcards in a deck. ```rhai const API_VERSION = "1.6"; fn run(ctx) { let meeting = ctx.meeting; // Today's daily note gets a link to the meeting. let daily = ctx.vault.note("Daily/" + meeting.date); if daily.writable { daily.append("- " + meeting.link + "\n"); } } ``` **Reading is always allowed**, under the [folder access](https://samuraiscribe.com/docs/folder-access/) rules you set for AI: a Hidden folder reads as if it weren't there. A PDF, Word file or slide deck reads as its text. **Changing is your choice, not the script's**, made on the step's row in the profile manager. The person running a script isn't always the one who wrote it, so a script can only ask for more review, never less. ### Members - **`note(path)`** (Note): a note anywhere in the vault, opened to read and, when the step allows, to change. The same path gives the same note, and nothing is written until the script writes. A note that isn't there yet opens empty, with `exists` false, and writing to it creates it. Keep the note in a variable before writing to it: `let n = ctx.vault.note(p); n.text = "…";`. - **`note(path, #{ review: true })`** (Note): the same, and every change through it waits for you, whatever the step allows. Use it for a note whose path the model chose. - **`list(folder)`** (array of maps): what is in a folder, as `#{ path, name, kind }`. `kind` is `"folder"`, `"markdown"`, or a file's kind, such as `"pdf"`. `""` is the top of the vault. A missing or Hidden folder lists nothing. - **`list(folder, #{ recursive: true })`** (array of maps): everything below the folder too, up to 5,000 entries. - **`search(query)`** (array of maps): your notes and meetings that match, best first, as `#{ path, title, excerpt, kind, meeting_id }`, at most 20. `meeting_id` is empty for a note outside a meeting. - **`search(query, #{ limit: 10, folder: "Projects" })`** (array of maps): the same, at most `limit` results (up to 100), and only within `folder`. - **`folders`** (map): the app's folders, wherever you moved them: `meetings`, `notebooks`, `unfiled`, `people`, `skills`, `dictionary`, `scripts` and `profiles`. Empty for one that isn't set up yet. Use these rather than spelling the folders' names. - **`write_mode`** (text): what the step's **Elsewhere** setting allows: `"ask"`, `"review"` or `"accept_edits"`. An option a call doesn't take, such as a misspelt one, is an error. ### Paths A path is relative to the top of the vault, with `/` between folders: `"Daily/2026-10-28"`. `.md` is added when the name has no extension, or one the app doesn't read. `"../People/Ana"` is in the folder your vault sits in, which a script reaches only while **Include Parent Folder** is on in **Settings → AI Apps → Folder Access**. A path that starts at the root of the computer, or uses `..` anywhere else, is refused. ### A note from the vault A note from `ctx.vault.note` works like the meeting's documents: `text`, `text =`, `append` and `llm.write` all work on it. Its `text` is the note's body. Its frontmatter is its `properties`, changed one key at a time, so rewriting a note's body never drops its tags. It also has: - **`path`** (text): where it is, from the top of the vault, with its extension: `"Daily/2026-10-28.md"`. - **`exists`** (true or false): whether it was there when opened, or has been written by this run. False once this run moved or deleted it. - **`writable`** (true or false): whether this run may change it: the step allows changes, AI may edit its folder, it is a Markdown note outside this meeting's folder, and the run hasn't reached its limit. - **`properties`** (map): the frontmatter, as text, numbers, true or false, and arrays of text. An empty value is `()`. It is a copy: change it with the functions below. - **`set_property(key, value)`**: sets one key to text, a number, true or false, or an array of text, leaving the rest of the frontmatter as written. Keys are letters, digits, `_` and `-`, starting with a letter. Keys starting with `samurai_`, and the keys the app writes into its own files, can't be changed. - **`remove_property(key)`**: takes one key out. Nothing happens when the note doesn't have it. - **`move_to(path)`**: moves the note. A move always waits for you. - **`delete()`**: deletes the note, to the trash. A delete always waits for you. A note can be changed, moved or deleted in one run, not two of these. On the meeting's own documents and its name, these members raise an error, except `writable`. ### What a step may change Each Script and skill step in a profile has two settings, **This meeting** and **Elsewhere**, on its row in the **Summarization** panel of the profile manager. **Elsewhere** decides what happens to the script's changes to other notes in the vault: - **Ask**: the step reads other notes and changes none. A change is refused at the line that makes it. - **Review**, the default: changes wait for you, and so do the steps after this one. - **Accept edits**: edits and new notes are made, and can be undone. Moves and deletes still wait for you. Choosing it asks first. **This meeting** decides what happens to the documents the script writes into its meeting with `create_note`: - **Auto**, the default, and **Accept edits**: they are saved as the step ends. - **Review**: nothing in the meeting is written until you keep it, the Summary included, and the steps after this one wait for you. While a run waits for you, its status reads **Waiting for your review**. See [Changes, modes and undo](https://samuraiscribe.com/docs/assistant/changes/) for keeping and undoing changes. Whatever the settings: - **Only folders AI may edit can be changed**, as set in [folder access](https://samuraiscribe.com/docs/folder-access/), and only Markdown notes. A file whose name starts with `_` can't be changed. - **Changes to the Scripts, Skills and Dictionary folders always wait for you.** - **The meeting's own folder isn't changed through `ctx.vault`.** Write its documents with `meeting.create_note(name)`. - **A new note can't go loose at the top of the Meetings or Skills folder.** Put it in a meeting's folder, a skill's folder, or anywhere else. **Changes are made when the step ends, not as the script runs.** Each one is checked at the line that makes it, so a refused change is an error the script can catch with `try`. Until the step ends, the script reads back what it changed: `text`, `exists` and `list` all see it. A run that fails or is stopped changes nothing outside its meeting. Running the step again on the same meeting replaces what its last run left waiting. **In the script editor**, **Test** reads your vault for real and changes nothing: what the script would change outside the meeting is listed in the console's **Vault** tab, checked as a step set to **Review** would check it. **Validate** has no vault: `note` opens empty notes and `list` and `search` find nothing. ## Modules Since 1.6, functions you use in several scripts can go in a module: a `.rhai` file in your Scripts folder, brought in with `import`. ```rhai // Scripts/lib/cards.rhai fn card(question, answer) { "#flashcards\n" + question + "\n?\n" + answer } ``` ```rhai // Scripts/Flashcards.rhai const API_VERSION = "1.6"; import "lib/cards" as cards; fn run(ctx) { let note = ctx.meeting.create_note("Flashcards"); note.text = cards::card("What is the retry budget?", "Three attempts."); } ``` - **The path is relative to the file that imports it**: the Scripts folder for a script, the module's own folder for a module. Use `/` between folders and leave out `.rhai`. `..` moves up a folder. - **Modules come from the Scripts folder and nowhere else**: not from above it, not from a folder whose name starts with a dot, and not from elsewhere on the computer. Changes AI makes to the Scripts folder always wait for you, so a module can't be changed behind your back. - **Keep modules in a subfolder**, such as `Scripts/lib/`. The script picker lists the files at the top of the Scripts folder, so a module there would show up as a script. - A module isn't a script and has no `run`, so check it with **Validate** from a script that imports it. - A module can use everything a script can, including the standard library. Call its functions as `alias::name(…)`. A module that imports itself, through other modules, is refused. ## Other functions - **`estimate_tokens(text)`** (whole number): an estimate of the tokens in `text`, worked out the same way as `token_count` and `fits`. - **`print(value)`** and **`debug(value)`**: show a value in the editor's **Problems** tab while you test. `debug` adds where in the script it was called. ## Standard library These functions are part of every script, with nothing to import. Call them as functions, with the data first: `chunk_to_fit(transcript, llm)`, not `transcript.chunk_to_fit(llm)`. To change how one works, define a function with the same name in your script: yours is used instead. ### chunk_to_fit `chunk_to_fit(transcript, llm)` → array of text. Splits the transcript into chunks that each fit `llm`, as `llm.fits` judges. Each cut is made at the longest pause near the end of a chunk, rather than mid-thought, and the last few turns before a cut are repeated at the start of the next chunk. A short meeting gives one chunk. Each chunk is `Speaker: text` lines. A single turn too long for the model becomes a chunk of its own, still too long, and a short chunk carries nothing over into the next. ### reduce_notes `reduce_notes(llm, parts, condense_prompt)` → text. Joins an array of notes on the parts of a meeting into one text that fits `llm`. When they don't fit together, it asks the model to condense them in batches, with `condense_prompt` as the instruction, round after round until they fit or several rounds have passed, so the result can still be too long. A single part comes back unchanged. It uses `llm.query`, so nothing is shown while it works. Use it to prepare notes, then `llm.write` the final document from them. ### attachments_text `attachments_text(meeting)` → text. Everything attached to the meeting, in your order, as one text. With several attachments, each is under a `## name` heading; one attachment has no heading. Empty attachments are left out. ### calendar_block `calendar_block(meeting)` → text. What the calendar invite says, ready to add to a prompt: the event's title, who was invited, and its description. It is labelled so the model doesn't read the invitations as a list of who attended. `""` when no event is linked. ### dictionary_block `dictionary_block(meeting)` → text. Since 1.5. Your Dictionary as lines for a prompt, each term with what the transcript may have written instead, under a line asking the model to spell them as written. It stops at about 1,500 characters, ending with how many more there are. `""` when `meeting.dictionary` is empty. The built-in script adds it to what it tells the model. ### build_notes_block `build_notes_block(notes)` → text. Wraps `notes` in a block that asks the model to treat them as your priorities, and to trust them over the transcript on names and facts. `""` when `notes` is empty. ### clean_summary `clean_summary(text)` → text. Removes every `## ` section whose body is empty or only placeholders, as [is_placeholder_line](#is_placeholder_line) judges each line, and trims the text. That includes a section of only very short lines with no digits, such as `- Budget approved`. Text without `## ` headings comes back unchanged. Table rows count as content. ### chunk_turns `chunk_turns(turns, max_chars)` → array of text. Splits `transcript.turns` into `Speaker: text` chunks of at most `max_chars` characters, always between turns. A simpler `chunk_to_fit`, sized by characters instead of by the model. ### filter_turns `filter_turns(turns, speaker_name)` → array of maps. The turns spoken by one speaker: `filter_turns(transcript.turns, "Ana Lopez")`. ### best_pause_cut `best_pause_cut(turns, start, end)` → whole number. Where `chunk_to_fit` cuts: the index of the turn with the longest silence before it, searched in the later part of the range from `start` to `end`. When the turns there run straight on, it is still a turn in that part of the range. ### format_time `format_time(seconds)` → text. Seconds as `M:SS`, or `H:MM:SS` from an hour: `format_time(75)` is `1:15`. ### join_lines `join_lines(parts, separator)` → text. An array of text joined with `separator` between each. ### join_notes `join_notes(parts)` → text. An array of text joined with a blank line between each. ### is_heading `is_heading(line)` → true or false. Whether a line is a `## ` heading. ### is_placeholder_line `is_placeholder_line(line)` → true or false. Whether a line carries no content: blank, a placeholder such as "None" or "N/A", or a very short line with no digits. ### contains_digit `contains_digit(text)` → true or false. Whether `text` contains a digit from 0 to 9. ## Errors - **Catching.** `try { … } catch (err) { … }` catches an error so the script can carry on. An error raised by Samurai Scribe, such as a refused note name or a failed model request, arrives as text. Rhai's own errors arrive as a map with a `message`. - **An error the script doesn't catch** ends it. Nothing it wrote is saved, and the run stops with an error, such as "Summary generation failed: Script run() error: …". In a profile with several steps, the documents from the steps before it are kept. - **A refused change to the vault**, such as a change the step doesn't allow or one in a Read only folder, is an error at that line, with the reason, so a script can catch it. - **A script that doesn't compile** isn't run. The meeting is written up with the built-in script instead, and the run says so, with the compiler's error and where it is. - **Validate** catches compile errors, and errors on the way through a small sample meeting. It can't catch an error that only real meetings reach, such as a long meeting's chunking path. ## Limits - **Notes:** a run can open at most 24 notes of its own. The attached documents it reads don't count toward them. - **Vault:** a run can change at most 200 notes outside its meeting. `list` gives at most 5,000 entries, and `search` at most 100 results. - **Attachments:** the text of an attached file is read up to its first 200,000 characters. A run reads 12 images among its attachments, attached image files first, and says how many it skipped. - **Calendar:** about the first 2,000 bytes of an invite's description. - **Work:** a script stops with an error after 10,000,000 operations, a likely endless loop. - **Size:** a text value can hold up to 10,000,000 bytes (fewer characters in Chinese or Japanese), and an array or map up to 1,000,000 items. - **Nesting:** expressions nest up to 128 levels deep, and 64 inside functions. ## API versions A script says which version of the scripting API it is written for with `API_VERSION`. Samurai Scribe 0.65.0 runs **API 1.6**. - A version is `MAJOR.MINOR`. A third part, as in `"1.6.0"`, is ignored. - A new minor version adds to the API, so a script written for an older one still runs. Samurai Scribe 0.65.0 runs scripts that declare **1.2, 1.3, 1.4, 1.5 or 1.6**. - **1.0 and 1.1** are no longer run: they used parts of the API that were taken away in 1.2. - A script that declares no version is run as it is. - A script that declares a version this app doesn't run, such as 1.1, or 1.7 from a newer app, isn't run. The meeting is written up with the built-in script instead, and the app says why: "Your script declares scripting API 1.7; this app runs 1.6. The built-in default script was used instead — update the script's API_VERSION…" To fix that, update Samurai Scribe if the script came from a newer version, or check the script against this page and set its `API_VERSION` to `"1.6"`. **What each version added:** - **1.6** (Samurai Scribe 0.65.0): [`ctx.vault`](#vault), for reading and changing notes anywhere in the vault; on a note, `path`, `exists`, `writable`, `properties`, `set_property`, `remove_property`, `move_to` and `delete`; on the meeting, `folder`, `link` and `date`. [Modules](#modules): `import` reads `.rhai` files from your Scripts folder, and from nowhere else. - **1.5** (Samurai Scribe 0.65.0): `meeting.dictionary`, and the standard library's [`dictionary_block`](#dictionary_block). - **1.4:** `transcript.language`. - **1.3:** `note.kind`, and attached files (PDF, Word, PowerPoint, text and images) in `meeting.attachments`, as notes that can be read but not written. --- # Scripting cookbook > Complete Samurai Scribe scripts to copy and change, each checked with Validate in 0.65.0: languages, long meetings, notes in your vault, stats and more. - Page: https://samuraiscribe.com/docs/scripting/cookbook/ - Checked with Samurai Scribe 0.65.0 Each recipe on this page is a complete [script](https://samuraiscribe.com/docs/glossary/#script) for scripting API 1.6, and each passes **Validate** in Samurai Scribe 0.65.0. To use one: 1. Make a new script: in the profile manager's **Script** step, click the script button, type a name and press **New**. See [Choosing a script for a profile](https://samuraiscribe.com/docs/scripting/#choosing-a-script-for-a-profile). 2. Click the **Script** step to open the script, replace everything with the recipe, and change it to suit you. 3. Press **Validate**, then **Test** on a meeting with a transcript. 4. Close the editor, press the **Save script** icon at the right end of the script button, and save the profile. What each function and property does is in the [scripting reference](https://samuraiscribe.com/docs/scripting/reference/). ## A summary in the meeting's language For meetings held in more than one language. `transcript.language` names the language most of the meeting was in, so the script can ask for that language by name. It is empty when the transcript is too short or too mixed to tell, and the script then asks for the transcript's own language. ```rhai // A summary written in the language the meeting was held in. const API_VERSION = "1.6"; const TEMPERATURE = 0.3; fn language_rule(language) { if language == "" { return "Write in the same language as the transcript."; } "The meeting is in " + language + ". Write everything in " + language + "." } fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } let rule = language_rule(transcript.language); let summary = meeting.create_note("Summary"); // Say the language at the start and again at the end: on a long // transcript, the last instruction is the one a model keeps to. meeting.llm.write(summary, rule + "\nWrite short meeting notes in Markdown: an overview, then the main points as bullets.\n\n" + "Transcript:\n" + transcript.text() + "\n\n" + rule); } ``` ## Several documents from one run For when one meeting should give several documents. Each `create_note` makes a document, and a later request can start from what an earlier one wrote: here the email is drafted from the summary rather than from the whole transcript. ```rhai // Three documents from one run: a summary, the decisions, and a draft // follow-up email that starts from the summary. const API_VERSION = "1.6"; const TEMPERATURE = 0.3; fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } let llm = meeting.llm; let said = "\n\nTranscript:\n" + transcript.text(); ctx.progress(0.05, "Writing the summary…"); let summary = meeting.create_note("Summary"); llm.write(summary, "Summarize this meeting in five bullet points." + said); ctx.progress(0.4, "Listing decisions…"); let decisions = meeting.create_note("Decisions"); llm.write(decisions, "List each decision made in this meeting as a bullet. " + "If none were made, write: No decisions." + said); ctx.progress(0.7, "Drafting the follow-up email…"); let email = meeting.create_note("Follow-up Email"); llm.write(email, "Draft a short, friendly follow-up email to the attendees, " + "based on these meeting notes. Plain text, no subject line.\n\nNotes:\n" + summary.text); } ``` A run can open up to 24 notes. `ctx.progress` keeps the run's progress moving between documents. ## Long meetings For meetings too long for the model to read in one go. `chunk_to_fit` splits the transcript into parts that each fit the model, cutting at pauses. The script takes notes on each part, `reduce_notes` folds those notes down until they fit, or as close as several rounds get, and the summary is written from them. A short meeting skips straight to the summary. ```rhai // A summary that works however long the meeting is: notes on each part // first, then one summary from those notes. const API_VERSION = "1.6"; const TEMPERATURE = 0.3; fn part_instruction() { "Take concise bullet-point notes on this part of a longer meeting. " + "Keep names, numbers, dates, decisions and who owns each task." } fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } let llm = meeting.llm; let summary = meeting.create_note("Summary"); let ask = "Write meeting notes in Markdown: an overview, the main points, " + "decisions, and action items with owners."; // One chunk when the meeting fits the model, several when it doesn't. let chunks = chunk_to_fit(transcript, llm); if chunks.len() <= 1 { llm.write(summary, ask + "\n\nTranscript:\n" + transcript.text()); return; } // A hidden note (its name starts with a dot) keeps the working notes // out of the way. It is still saved in the meeting's folder. let working = meeting.create_note(".Parts"); let parts = []; for i in 0..chunks.len() { ctx.progress(0.05 + 0.6 * i / chunks.len(), "Reading part " + (i + 1) + " of " + chunks.len() + "…"); working.append("## Part " + (i + 1) + "\n"); parts.push(llm.write(working, part_instruction() + "\n\nTranscript:\n" + chunks[i])); working.append("\n\n"); } // Fold the part notes down until they fit, then write the summary. ctx.progress(0.7, "Combining the parts…"); let notes = reduce_notes(llm, parts, part_instruction()); ctx.progress(0.8, "Writing the summary…"); llm.write(summary, ask + " The notes below cover consecutive parts of one meeting.\n\nNotes:\n" + notes); } ``` The part notes go in a hidden document, `.Parts`, so you can see what the model took from each part without it getting in the way. To make every part smaller, add `const CONTEXT_SIZE = 8000;` at the top: the parts are sized to it, when the model's own window is larger. ## Using your notes, attachments and calendar For a briefing that checks the meeting against an agenda. `attachments_text` gives everything attached to the meeting, in your order: your notes, an agenda, a PDF or a slide deck. `calendar_block` gives what the calendar invite says, including who was invited. ```rhai // A briefing that uses what you attached to the meeting and what its // calendar invite says, as well as the transcript. const API_VERSION = "1.6"; const TEMPERATURE = 0.3; fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } // Everything attached, in your order, each under its own name. let attached = attachments_text(meeting); // List what was attached, by kind, for the record. let sources = meeting.create_note("Sources"); for doc in meeting.attachments { sources.append("- " + doc.title + " (" + doc.kind + ")\n"); } // The invite: title, attendees, and the start of its description. let invite = calendar_block(meeting); let prompt = "Write a one-page briefing on this meeting. Check the transcript " + "against the agenda and notes below, and say which agenda items were not covered."; if attached != "" { prompt += "\n\nAgenda and notes:\n" + attached; } if invite != "" { prompt += "\n" + invite; } let briefing = meeting.create_note("Briefing"); meeting.llm.write(briefing, prompt + "\n\nTranscript:\n" + transcript.text()); } ``` `doc.kind` tells a document (`markdown`) from an attached file (`pdf`, `word`, `powerpoint`, `text` or `image`). Attached files can be read but not written. ## Chapters with times For long recordings you go back to. `text(#{ timestamps: true })` starts each line of the transcript with its time, so the model can say where each topic begins. ```rhai // Chapters: the topics of the meeting, each with the time it starts. const API_VERSION = "1.6"; const TEMPERATURE = 0.2; fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } // Each line starts with its time, such as [12:30]. let timed = transcript.text(#{ timestamps: true }); let chapters = meeting.create_note("Chapters"); meeting.llm.write(chapters, "Split this meeting into chapters by topic. For each chapter write one line: " + "the start time in square brackets as it appears in the transcript, then a short title. " + "No other text.\n\nTranscript:\n" + timed); } ``` ## Meeting stats, without the model For numbers you want exact. Nothing here asks the model: the script works out the meeting's length, its words, how long each person spoke as a share of the meeting (the shares needn't add up to 100%) and their longest turn, so it runs in a moment. ```rhai // Meeting statistics, worked out without the model: length, words, and // how much each person spoke. const API_VERSION = "1.6"; fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; let stats = meeting.create_note("Stats"); stats.append("# Meeting stats\n\n"); stats.append("- Length: " + format_time(transcript.duration_minutes * 60.0) + "\n"); stats.append("- Words: " + transcript.word_count + "\n"); stats.append("- Speakers: " + transcript.speakers.len() + "\n\n"); stats.append("## Speaking time\n\n"); for s in transcript.speaker_stats { let pct = s.speaking_percentage.round(); stats.append("- " + s.name + ": " + pct.to_int() + "%\n"); } // Each person's longest turn, with when it started. stats.append("\n## Longest turn\n\n"); for name in transcript.speakers { let longest = #{ text: "", start: 0.0 }; for turn in filter_turns(transcript.turns, name) { if turn.text.len() > longest.text.len() { longest = turn; } } stats.append("- " + name + " at " + format_time(longest.start) + ": " + longest.text + "\n"); } } ``` `filter_turns` picks one speaker's turns, and `format_time` turns seconds into `M:SS`. ## Building on an earlier step For a profile whose script runs after a skill. `read_note` reads what is in the meeting's folder when the script's step starts, including what the steps before it wrote. This script writes an English copy of a summary a skill wrote. Put the **Script** step after the skill in the profile. ```rhai // Runs after a step that wrote "Summary" (a skill, say), and writes an // English version of it. Put it after that step in the profile. const API_VERSION = "1.6"; const TEMPERATURE = 0.2; fn run(ctx) { let meeting = ctx.meeting; // What the meeting's folder held when this step started, including // what the steps before it wrote. "" if there is no such document. let summary = meeting.read_note("Summary"); if summary == "" { print("No Summary to translate."); return; } if meeting.transcript.language == "English" { return; } let english = meeting.create_note("Summary (English)"); meeting.llm.write(english, "Translate these meeting notes into English. " + "Keep the Markdown formatting.\n\n" + summary); } ``` `print` shows its message in the editor's **Problems** tab when you test. ## A line in your daily note For a daily note that lists the day's meetings. `ctx.vault.note` opens a note anywhere in your vault, here the daily note named after the meeting's day, and creates it when there isn't one. `meeting.link` is a link to the meeting that Obsidian follows. Change `Daily/` to the folder your daily notes are in. ```rhai // Adds a link to the meeting to that day's daily note. const API_VERSION = "1.6"; fn run(ctx) { let meeting = ctx.meeting; if meeting.link == "" { return; } let daily = ctx.vault.note("Daily/" + meeting.date); if !daily.writable { print(daily.path + " can't be changed: check the step's Elsewhere setting and folder access."); return; } // Run again, the meeting isn't added twice. if daily.text.contains(meeting.link) { return; } let line = "- " + meeting.link + "\n"; if daily.text != "" && !daily.text.ends_with("\n") { line = "\n" + line; } daily.append(line); } ``` With the step's **Elsewhere** on **Review**, the line waits for you to keep it, and so do the steps after this one; on **Accept edits** it is added when the step ends. On **Ask**, `daily.writable` is false and the script says so in the editor's **Problems** tab when you test. **Test** lists the change in the console's **Vault** tab without making it. ## A running list of action items For one list of open tasks across all your meetings. The script writes the meeting's own `Action Items` document, then adds the same tasks to `Tasks/Open tasks.md` under a link to the meeting, and records in the list's properties when it was last added to. ```rhai // The meeting's action items, in the meeting and in one running list. const API_VERSION = "1.6"; const TEMPERATURE = 0.2; fn instructions() { "List every task someone agreed to do in this meeting.\n" + "Write one Markdown checkbox per task: - [ ] **Owner** — the task.\n" + "Use only what the transcript says. If nobody agreed to do anything, reply with nothing at all." } fn run(ctx) { let meeting = ctx.meeting; let transcript = meeting.transcript; if transcript.word_count == 0 { return; } ctx.progress(0.1, "Finding action items…"); let found = meeting.llm.query(instructions() + "\n\nTranscript:\n" + transcript.text()); found.trim(); let items = meeting.create_note("Action Items"); if found == "" { items.text = "No action items."; return; } items.text = found; // The running list, outside the meeting. let list = ctx.vault.note("Tasks/Open tasks"); if !list.writable || meeting.link == "" || list.text.contains(meeting.link) { return; } list.append("\n## " + meeting.link + "\n\n" + found + "\n"); list.set_property("updated", meeting.date); } ``` `llm.query` is used rather than `llm.write` because the answer may rightly be empty: `write` treats an empty answer as an error. `set_property` changes one key of the list's frontmatter and leaves the rest, tags included, as they were. ## Naming the meeting For a name taken from how the meeting opened. Writing to `meeting.title` renames the meeting. Check `meeting.title_locked` first: it is true when you named the meeting yourself, or when its name comes from your calendar, and a new name is ignored then. ```rhai // Names the meeting from its transcript, unless you named it yourself or // it came from your calendar. const API_VERSION = "1.6"; const TEMPERATURE = 0.2; fn run(ctx) { let meeting = ctx.meeting; if meeting.title_locked || meeting.transcript.word_count == 0 { return; } let opening = meeting.transcript.text(#{ to: 600 }); let title = meeting.llm.query("Give this meeting a title of three to six words. " + "Reply with the title only, no quotes.\n\nTranscript (first ten minutes):\n" + opening); title.trim(); if title != "" { meeting.title.text = title; } } ``` `llm.query` returns the answer without showing it, so the script can tidy it before using it. `title.trim();` changes `title` in place. ## When the model fails For a script that should still leave something behind. A failed model request raises an error that ends the script, and nothing it wrote is saved. Catch the error to write something else instead. ```rhai const API_VERSION = "1.6"; fn run(ctx) { let meeting = ctx.meeting; let summary = meeting.create_note("Summary"); try { meeting.llm.write(summary, "Summarize this meeting.\n\n" + meeting.transcript.text()); } catch (err) { print("The model failed: " + err); summary.text = "The summary could not be written this time."; } } ``` ## Who spoke The smallest useful script: a list of the speakers. It shows how `print` helps while you write a script: press **Test**, and the values appear in **Problems**. ```rhai // The smallest useful script: a note listing who spoke. Uses print to show // values in the editor while you test. const API_VERSION = "1.6"; fn run(ctx) { let meeting = ctx.meeting; print("Speakers: " + meeting.transcript.speakers); print("Attachments: " + meeting.attachments.len()); let note = meeting.create_note("Who Spoke"); for name in meeting.transcript.speakers { note.append("- " + name + "\n"); } } ```