<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Rewiri-Thorsen</title>
    <description>The latest articles on DEV Community by Michael Rewiri-Thorsen (@mikeartee).</description>
    <link>https://dev.to/mikeartee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3632397%2F36568aa6-f78a-40fd-8e86-3299886c587c.jpeg</url>
      <title>DEV Community: Michael Rewiri-Thorsen</title>
      <link>https://dev.to/mikeartee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mikeartee"/>
    <language>en</language>
    <item>
      <title>The MCP Server of You: Building a Personal Knowledge Power for Kiro IDE</title>
      <dc:creator>Michael Rewiri-Thorsen</dc:creator>
      <pubDate>Fri, 20 Mar 2026 05:49:32 +0000</pubDate>
      <link>https://dev.to/mikeartee/the-mcp-server-of-you-building-a-personal-knowledge-power-for-kiro-ide-159j</link>
      <guid>https://dev.to/mikeartee/the-mcp-server-of-you-building-a-personal-knowledge-power-for-kiro-ide-159j</guid>
      <description>&lt;p&gt;&lt;strong&gt;In this post I'm going to walk you through how I built kiro-recall, &lt;br&gt;
a Kiro IDE Power that loads your personal knowledge vault into every &lt;br&gt;
session before you type a single word.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We'll cover why I built it, how it works, and how you can install &lt;br&gt;
and test it yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm getting old, and as I get older, I find my brain races faster than it ever has, because I have gained more and more knowledge as the years have dragged on ceaselessly.&lt;/p&gt;

&lt;p&gt;I needed to go back to filing my thoughts.&lt;/p&gt;

&lt;p&gt;I started with a notepad with way too many unsaved tabs. Great. Now I can't remember what I wrote on every single tab, let alone find them on my PC if I closed them down.&lt;/p&gt;

&lt;p&gt;I needed a solution - a digital &lt;a href="https://zettelkasten.de/introduction/" rel="noopener noreferrer"&gt;Zettelkasten&lt;/a&gt; folder or "second brain" vault seemed to solve that problem, so I built one in &lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;During the development of the Power though, I discovered all I needed&lt;br&gt;
Obsidian for was the inspiration. I needed to see the shape of how&lt;br&gt;
these things were constructed.&lt;/p&gt;

&lt;p&gt;Turns out a vault is just a folder. Plain markdown files on your own disk,&lt;br&gt;
organised in a way that makes sense to you. No app required to read&lt;br&gt;
them, no proprietary format locking you in, no cloud sync needed.&lt;br&gt;
Any text editor can open them. Any MCP server can read them.&lt;/p&gt;

&lt;p&gt;That realisation is what made kiro-recall possible. If the vault is&lt;br&gt;
just a folder, you can point an MCP server at it, read the files&lt;br&gt;
directly, and inject them into a Kiro session without Obsidian ever&lt;br&gt;
being involved. Obsidian is still great for browsing your notes&lt;br&gt;
visually, the graph view, backlinks, and plugin ecosystem are&lt;br&gt;
genuinely useful. But it's optional. The vault works without it.&lt;/p&gt;
&lt;h2&gt;
  
  
  What we're building
&lt;/h2&gt;

&lt;p&gt;kiro-recall is the MCP Server of You.&lt;/p&gt;

&lt;p&gt;Your decisions, your knowledge, your project context, loaded from your&lt;br&gt;
own machine into every Kiro session automatically before your first&lt;br&gt;
prompt reaches the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro's steering files are unreliable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I found this out the hard way. I had steering files configured with&lt;br&gt;
&lt;code&gt;inclusion: always&lt;/code&gt;, the mode that's supposed to load them into every&lt;br&gt;
single interaction. They still got ignored. Kiro would generate code&lt;br&gt;
in broken language causing syntax errors, forget architectural decisions&lt;br&gt;
I'd documented, and ask me to re-explain context I'd already written down.&lt;/p&gt;

&lt;p&gt;After a Kiro update introduced Agent Skills, the problem got worse. Users&lt;br&gt;
started reporting on GitHub that project steering files were failing&lt;br&gt;
to load entirely, with the AI ignoring &lt;code&gt;inclusion: always&lt;/code&gt; in favour&lt;br&gt;
of generic task instructions.&lt;/p&gt;

&lt;p&gt;Every new session I was back to re-establishing who I am, what the&lt;br&gt;
project is, what decisions were already made.&lt;/p&gt;

&lt;p&gt;kiro-recall replaces that with a hook-based context injection system.&lt;/p&gt;

&lt;p&gt;A session start hook fires on your first prompt. Before your message&lt;br&gt;
reaches the model, it reads your personal knowledge vault from disk&lt;br&gt;
via MCP and injects the relevant notes as context. Not steering files.&lt;br&gt;
Not a prompt you paste in every session. Your actual notes, loaded&lt;br&gt;
automatically, every time.&lt;/p&gt;

&lt;p&gt;You do nothing. It just happens.&lt;/p&gt;

&lt;p&gt;The difference is architectural. Steering files sit in your workspace&lt;br&gt;
and hope the model reads them. kiro-recall uses a hook - it fires on&lt;br&gt;
the &lt;code&gt;promptSubmit&lt;/code&gt; event, which means it runs before Kiro can ignore&lt;br&gt;
anything. The context is already in the session before your first word.&lt;/p&gt;

&lt;p&gt;The vault is plain markdown files. No cloud dependency for reading your&lt;br&gt;
own notes. No data leaving your machine.&lt;br&gt;
v0.1.0 ships four hooks:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hook&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Session Start&lt;/td&gt;
&lt;td&gt;Every first prompt&lt;/td&gt;
&lt;td&gt;Reads vault, injects context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/recall&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User triggered&lt;/td&gt;
&lt;td&gt;Writes a structured note to &lt;code&gt;00-inbox/&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vault Scaffold&lt;/td&gt;
&lt;td&gt;User triggered&lt;/td&gt;
&lt;td&gt;Creates the standard folder structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/promote&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User triggered&lt;/td&gt;
&lt;td&gt;Reformats an inbox note as a Zettelkasten permanent note&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The architecture is intentionally minimal. No compiled code. No runtime&lt;br&gt;
dependencies beyond the MCP server. Every hook is a JSON file with an&lt;br&gt;
&lt;code&gt;askAgent&lt;/code&gt; prompt that instructs the model to execute a numbered&lt;br&gt;
procedure using MCP tool calls.&lt;/p&gt;

&lt;p&gt;This isn't a new idea. Developers have been pointing Claude Code at &lt;br&gt;
Obsidian vaults for months, and the consensus is consistent: targeted &lt;br&gt;
context beats re-explaining everything from scratch every time.&lt;/p&gt;

&lt;p&gt;And apparently, it saves you tokens and credits.&lt;/p&gt;

&lt;p&gt;That might seem counterintuitive. You're adding context, so shouldn't &lt;br&gt;
that cost more? The saving comes from what you stop doing.&lt;/p&gt;

&lt;p&gt;Before I built kiro-recall, every Kiro session started the same way. &lt;br&gt;
I'd open a workspace, type my first prompt, and immediately hit a wall. &lt;br&gt;
Kiro didn't know what I was building, what decisions I'd already made, &lt;br&gt;
or what stack I was using. So I'd spend the first few exchanges just &lt;br&gt;
getting it up to speed. Sometimes I'd paste in background. Sometimes &lt;br&gt;
I'd answer clarifying questions. Sometimes I'd just watch it confidently &lt;br&gt;
do the wrong thing because it had no context to work from.&lt;/p&gt;

&lt;p&gt;That re-establishment isn't free. Every clarification, every correction, &lt;br&gt;
every "no, I already decided to use X not Y" costs tokens. It happens &lt;br&gt;
at the start of every session, every day, across every project.&lt;/p&gt;

&lt;p&gt;kiro-recall front-loads a small, targeted context injection once per &lt;br&gt;
session. Atomic permanent notes are concise by design, one idea per &lt;br&gt;
note. The session hook runs once and stops. What it replaces is &lt;br&gt;
typically far more expensive in both credits and time, but that's &lt;br&gt;
one of the things I want testers to actually measure and report back on. I will be conducting my own A/B testing in regards to this.&lt;/p&gt;

&lt;p&gt;The difference with kiro-recall specifically is the hook. Every other &lt;br&gt;
approach still requires you to remember to load the context. &lt;br&gt;
kiro-recall makes it impossible to forget.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The vault structure
&lt;/h3&gt;

&lt;p&gt;The scaffold hook creates this structure on first run, wherever you&lt;br&gt;
point it. Your vault can live anywhere on your machine, a dedicated&lt;br&gt;
folder in Documents, alongside your dev projects, wherever makes sense&lt;br&gt;
for you. You configure the path once in &lt;code&gt;mcp.json&lt;/code&gt; and that's it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault/
├── 00-inbox/          # /recall writes here
├── 01-projects/       # one file or subfolder per active project
├── 02-job-search/
├── 03-learning/
├── 04-knowledge/
├── 05-community/
├── 06-permanent/      # atomic Zettelkasten notes — loaded every session
└── 07-templates/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structure is opinionated. It's based on my own workflow as an&lt;br&gt;
AWS Community Builder juggling job applications, learning, and community&lt;br&gt;
work alongside dev projects. The folders that actually drive kiro-recall's&lt;br&gt;
behaviour are only three: &lt;code&gt;00-inbox/&lt;/code&gt;, &lt;code&gt;01-projects/&lt;/code&gt;, and &lt;code&gt;06-permanent/&lt;/code&gt;.&lt;br&gt;
The rest is suggested organisation. Rename them, ignore them, add your own.&lt;br&gt;
The vault is just a folder, it's yours.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fktn53r3lp4nfku3x78nz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fktn53r3lp4nfku3x78nz.png" alt="Session start flow" width="532" height="650"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Relevance detection
&lt;/h3&gt;

&lt;p&gt;The session start hook runs a four-stage Relevance Detector before injecting anything:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w7uvwr301vwtidbw5n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w7uvwr301vwtidbw5n3.png" alt="Relevance Detection" width="699" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 1 - Primary signal.&lt;/strong&gt; The hook extracts the workspace folder&lt;br&gt;
name (e.g. &lt;code&gt;kiro-recall&lt;/code&gt; from &lt;code&gt;C:\Dev\kiro-recall&lt;/code&gt; or&lt;br&gt;
&lt;code&gt;/Users/mike/projects/kiro-recall&lt;/code&gt;) and checks whether a matching file&lt;br&gt;
or subfolder exists in &lt;code&gt;01-projects/&lt;/code&gt;. If it finds one, it loads that&lt;br&gt;
project note plus all permanent notes and stops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2 - Secondary signal.&lt;/strong&gt; If no primary match, it scans the paths&lt;br&gt;
of all open files in the workspace. Any path segment that matches a&lt;br&gt;
project folder name in &lt;code&gt;01-projects/&lt;/code&gt; resolves the project. It also&lt;br&gt;
checks &lt;code&gt;.kiro/steering/&lt;/code&gt; for a &lt;code&gt;project&lt;/code&gt; field as a fallback within&lt;br&gt;
this stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 3 - Fallback.&lt;/strong&gt; No project match found. Load all permanent notes&lt;br&gt;
from &lt;code&gt;06-permanent/&lt;/code&gt; and inject those.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 4 - Cold vault.&lt;/strong&gt; If &lt;code&gt;06-permanent/&lt;/code&gt; and &lt;code&gt;00-inbox/&lt;/code&gt; are both&lt;br&gt;
empty, skip injection entirely and show a warm onboarding message&lt;br&gt;
instead of an error.&lt;/p&gt;

&lt;p&gt;A generic name guard runs before Stage 1. Workspace names like &lt;code&gt;src&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;app&lt;/code&gt;, &lt;code&gt;repo&lt;/code&gt; skip primary matching entirely and go straight to&lt;br&gt;
secondary signals. This prevents false matches on common folder names.&lt;/p&gt;
&lt;h3&gt;
  
  
  The hook files
&lt;/h3&gt;

&lt;p&gt;Each hook is a &lt;code&gt;.kiro.hook&lt;/code&gt; JSON file. Here's the structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"kiro-recall: Session Start"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"when"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"promptSubmit"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"then"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"askAgent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;promptSubmit&lt;/code&gt; event fires on every prompt, so the session start&lt;br&gt;
hook includes a once-per-session guard. On the first prompt it runs&lt;br&gt;
the full Relevance Detector and injects context. On every subsequent&lt;br&gt;
prompt in the same session it exits immediately. You get context once,&lt;br&gt;
cleanly, at the start.&lt;/p&gt;

&lt;p&gt;The capture and promote hooks use &lt;code&gt;userTriggered&lt;/code&gt; instead. They sit&lt;br&gt;
quietly until you need them, type &lt;code&gt;/recall&lt;/code&gt; mid-session to capture&lt;br&gt;
a note, or &lt;code&gt;/promote&lt;/code&gt; to move an inbox note into your permanent&lt;br&gt;
knowledge base.&lt;/p&gt;
&lt;h3&gt;
  
  
  The MCP dependency
&lt;/h3&gt;

&lt;p&gt;kiro-recall wraps &lt;a href="https://github.com/bitbonsai/mcpvault" rel="noopener noreferrer"&gt;@bitbonsai/mcpvault&lt;/a&gt;&lt;br&gt;
for vault access.&lt;/p&gt;

&lt;p&gt;The original choice was smithery-ai/mcp-obsidian, but it only exposed&lt;br&gt;
two tools and had no active maintenance. mcpvault ships 14 tools&lt;br&gt;
including &lt;code&gt;write_note&lt;/code&gt;, &lt;code&gt;search_notes&lt;/code&gt;, &lt;code&gt;read_multiple_notes&lt;/code&gt;, and&lt;br&gt;
&lt;code&gt;move_note&lt;/code&gt;, everything the hooks need to read, write, and reorganise&lt;br&gt;
your vault. It reads any directory of markdown files directly from disk,&lt;br&gt;
which means no Obsidian install required and no dependency on any&lt;br&gt;
proprietary format.&lt;/p&gt;

&lt;p&gt;One configuration line is all it needs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mcpvault"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@bitbonsai/mcpvault"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_VAULT_PATH_HERE"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;YOUR_VAULT_PATH_HERE&lt;/code&gt; with the path to your vault folder and&lt;br&gt;
you're connected. The vault path is the only configuration required.&lt;br&gt;
Everything else is derived from the folder structure at runtime.&lt;/p&gt;
&lt;h3&gt;
  
  
  The promote flow
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/promote&lt;/code&gt; hook is the most interesting piece of v0.1.0.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/recall&lt;/code&gt; is fast and low-friction by design. You dump a rough note&lt;br&gt;
into &lt;code&gt;00-inbox/&lt;/code&gt; and move on. But rough notes don't load well as&lt;br&gt;
context, they're messy, multi-topic, and hard for the model to use.&lt;br&gt;
Permanent notes need to be atomic. One idea, clearly stated, with&lt;br&gt;
connections to related concepts.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/promote&lt;/code&gt; does that reformatting for you. It lists your inbox notes,&lt;br&gt;
you pick one, and the hook rewrites it as a proper Zettelkasten permanent&lt;br&gt;
note with a fixed structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# {Idea Title}&lt;/span&gt;

&lt;span class="gu"&gt;## The idea&lt;/span&gt;
{single atomic statement, 1-2 sentences}

&lt;span class="gu"&gt;## Why it matters&lt;/span&gt;
{significance or future relevance, 1-2 sentences}

&lt;span class="gu"&gt;## Connected to&lt;/span&gt;
{[[wikilink]] references}

&lt;span class="gu"&gt;## Source&lt;/span&gt;
{project}, {session description}, {YYYY-MM-DD}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The filename is derived from the idea title using &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Kebab_case" rel="noopener noreferrer"&gt;kebab-case&lt;/a&gt; with no&lt;br&gt;
date prefix. Permanent notes are evergreen, the filename reflects the&lt;br&gt;
idea, not when it was written. A note called&lt;br&gt;
&lt;code&gt;relevance-detection-via-workspace-name.md&lt;/code&gt; is still findable and&lt;br&gt;
meaningful in two years. A note called &lt;code&gt;2026-03-20-session-notes.md&lt;/code&gt;&lt;br&gt;
is not.&lt;/p&gt;

&lt;p&gt;After writing to &lt;code&gt;06-permanent/&lt;/code&gt;, the hook deletes the original from&lt;br&gt;
&lt;code&gt;00-inbox/&lt;/code&gt;. If the write fails, it surfaces the full reformatted note&lt;br&gt;
in a code block so nothing is lost. If the delete fails after a&lt;br&gt;
successful write, it warns you but doesn't roll back. The promoted&lt;br&gt;
note already exists in permanent, so the worst case is a duplicate&lt;br&gt;
in your inbox that you can delete manually.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7i3pmptt49rpu50cj7bh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7i3pmptt49rpu50cj7bh.png" alt="Promote Flow" width="505" height="780"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Installing it
&lt;/h3&gt;

&lt;p&gt;kiro-recall ships as a Kiro Power and is installable right now directly &lt;br&gt;
from GitHub.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Kiro IDE and go to the Powers panel&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add power from GitHub&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste &lt;code&gt;https://github.com/mikeartee/kiro-recall&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Once installed, open the Powers config and update the 
&lt;code&gt;power-kiro-recall-mcp-obsidian&lt;/code&gt; entry - replace &lt;code&gt;YOUR_VAULT_PATH_HERE&lt;/code&gt; 
with the full path to your vault folder&lt;/li&gt;
&lt;li&gt;Restart Kiro or reconnect the MCP server from the MCP Servers panel&lt;/li&gt;
&lt;li&gt;Trigger the Vault Scaffold hook once from the Hooks panel to create 
your folder structure&lt;/li&gt;
&lt;li&gt;Start a new session - the session start hook fires automatically on 
your first prompt&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From the next session onwards, context loads automatically.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it produces
&lt;/h2&gt;

&lt;p&gt;After the session start hook runs, you see exactly one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loaded kiro-recall note (primary match) + 3 permanent notes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No file paths. No diagnostic output. Just a confirmation of what was loaded and how it was matched.&lt;/p&gt;

&lt;p&gt;After &lt;code&gt;/recall&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Note saved: 2026-03-20-kiro-recall-promote-flow-decision.md. It's in your inbox whenever you're ready to review it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After &lt;code&gt;/promote&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Promoted to `06-permanent/relevance-detection-via-workspace-name.md`.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The vault fills itself as a side effect of your normal dev workflow. Over time it becomes a searchable record of every decision, pattern, and insight across all your projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I need testers. Windows and Mac both welcome.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some things I want feedback on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does it work on your machine?&lt;/li&gt;
&lt;li&gt;Does the vault context actually change how your sessions feel?&lt;/li&gt;
&lt;li&gt;Does it use less credits in Kiro IDE on tasks?&lt;/li&gt;
&lt;li&gt;What would you add or change?&lt;/li&gt;
&lt;li&gt;Was it easy to install?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Install via Add Power from GitHub in Kiro IDE:&lt;br&gt;
&lt;a href="https://github.com/mikeartee/kiro-recall" rel="noopener noreferrer"&gt;https://github.com/mikeartee/kiro-recall&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About the author
&lt;/h2&gt;

&lt;p&gt;Mike Rewiri-Thorsen is an AWS Community Builder in the AI Engineering &lt;br&gt;
track, based in Palmerston North, Aotearoa New Zealand. He builds agentic AI tooling and cloud infrastructure, and shares the work publicly as he goes.&lt;/p&gt;

&lt;p&gt;Follow along on &lt;a href="https://github.com/mikeartee" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/michaelrewirithorsen/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;bitbonsai. (2026). &lt;em&gt;mcpvault: MCP server for markdown vaults&lt;/em&gt;. GitHub. &lt;a href="https://github.com/bitbonsai/mcpvault" rel="noopener noreferrer"&gt;https://github.com/bitbonsai/mcpvault&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>kiro</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
