Two kinds of Obsidian export
Session-memory export
Export AI coding-session summaries into AgentMemory/. This is the existing, opt-in session-export --obsidian workflow.
Plan and Today projections
Publish a glanceable Today note, active plans, and learning records into Study/. StudyLoop replaces only files carrying its own marker, so it refuses to overwrite a note you wrote by hand — it will tell you and stop rather than take a guess.
One source, useful views, explicit notes back
This is deliberately not two-way sync. A projection can always be rebuilt from the StudyLoop plan, so an Obsidian edit cannot silently change what your next study session follows.
Six steps, all of them on your own disk
The diagram above is the data model: one source, views of it, one explicit way back. This is what you actually do.
- Point StudyLoop at a vault
studyloop brain enable obsidian --vault ~/MyVaultA missing folder is refused unless you add --create. - See what it would write
studyloop brain publish --dry-runLists every file, writes nothing. - Notes appear in your vault
studyloop brain publishToday's note plus every active plan. - Read it in ObsidianStudy/Today.md and Study/Plans/<plan-id>.md
- Write in your own fileStudy/Plans/<plan-id>.notes.md is yours. StudyLoop never writes it.
- Your notes come back to you
studyloop brain pull <plan-id>Not to the plan. You decide what belongs in it.
What StudyLoop refuses to do
Publishing is designed to be safe to run repeatedly and safe to run into a vault you already use. Four refusals, all of them checked in code rather than promised in prose:
- A note you wrote by hand at a path StudyLoop wants is refused by name, and nothing is written. StudyLoop replaces only files carrying its own
studyloop:frontmatter marker. - A projection belonging to a different plan is refused too, so renaming a plan cannot silently consume the old plan’s note.
- A symbolic link at the target is refused. Replacing it would destroy something you created and StudyLoop cannot rebuild.
- Anything outside the folder you named is refused before a byte is written, including paths that try to climb out with
..and folders that are symlinks pointing elsewhere.
Republishing a plan that has not changed writes nothing at all and leaves the file’s timestamp alone, so a synced vault sees no churn. Publishing also never deletes: if you remove a plan, its projection stays until you remove it too.
Four keys, and it is off until you set one
With no second_brain section StudyLoop imports no provider code, writes nothing, and offers nothing.
second_brain:
provider: obsidian # none (default) | obsidian | xtiles
vault_path: ~/Documents/MyVault
folder: Study # the folder inside the vault StudyLoop owns
backlinks: true # [[wikilinks]] to your own notes, when availableEarlier development builds had four more keys — use_cli, vault_name, template and daily_note — for an Obsidian command-line adapter that was withdrawn before release. If any of them is still in your config, StudyLoop now says so and stops rather than ignoring it.
Preview first, then publish
These commands are not in StudyLoop 0.1.0
Use a checkout containing the v0.2.0 changes. Run studyloop brain --help to check that your installation has these commands before changing configuration.
- 1
Check what is configured
Status is read-only. It reports the provider, destination, and whether publishing is available.
- 2
Preview before writing
Use a dry run to see the exact vault-relative files StudyLoop would create.
- 3
Publish the useful subset
The default is Today plus active plans. Draft and finished plans stay out unless you explicitly include them.
- 4
Keep your own notes separate
Write beside a plan in its .notes.md file, then pull those notes only when you want to fold them back into the source plan.
studyloop brain status
studyloop brain enable obsidian --vault ~/Documents/MyVault
studyloop brain publish --today --dry-run
studyloop brain publish
studyloop brain template --installbrain enable preserves the rest of your StudyLoop configuration. A missing vault is refused unless you deliberately add --create.
A small, predictable folder
The default destination is Study/ inside the chosen vault. Today stays short: one next action, a few alternatives, due reviews, and active topics.
MyVault/
└── Study/
├── Today.md
├── Plans/
│ ├── python-decorators.md
│ └── python-decorators.notes.md
└── Learning Records/
└── python-decorators/
└── LR-0001.mdGenerated files identify themselves
StudyLoop only replaces a file carrying its matching studyloop: ownership marker. If a target is unmarked or belongs to another plan, publishing stops rather than overwriting it.
Pull notes; do not synchronise them silently
Put personal observations beside the generated plan using the same plan ID and a .notes.md suffix. The pull command prints that file without changing either it or the source plan.
studyloop brain pull python-decorators
# Then decide what, if anything, belongs in the real plan.
studyloop plan show python-decorators --markdownServed by your assistant, not by StudyLoop
xTiles is a visual planner many people already live in. StudyLoop does not talk to it, and that is the design rather than a gap: you connect both StudyLoop’s MCP server and xTiles’ hosted connector to your assistant, then ask the assistant to move today’s study into your planner. No xTiles credential ever enters StudyLoop, so there is none for it to lose.
The source documentation includes planner, project, and wind-down prompts. A recorded Kiro run validated planner and wind-down writes; it did not validate a complete project board. The connector cannot create a board view, and created pages may not be visible from the project home. Start with one planner tile and check it in xTiles.
Where the boundary is, and when your study text crosses it
This is the diagram worth reading closely, because it answers the question the prose can only assert: StudyLoop is not on the arrow that leaves your machine.
xtiles server from your assistant’s own MCP settings rather than with a StudyLoop command.- Record the choice
studyloop brain enable xtilesNo vault, no path, no credential. Stays on your machine. - Install the wind-down skill
studyloop install agentsSilent unless the provider is xtiles and an xtiles server is connected. - Attach the connector, and authorise it
claude mcp add --transport http xtiles …Setup traffic: this reaches xTiles to sign in. No study content yet. - You run one of the three promptsNo study content has left your machine until this moment.
- Your study content crossesWhatever that prompt includes or fetches — to the model service, then xTiles.
- You open xTiles and see itStudyLoop cannot see what was sent, and cannot verify what arrived.